aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2022-07-28 10:31:06 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2022-07-28 10:06:49 -0700
commite0339f036ef4beb9b20f0b6532a1e0ece7f594c6 (patch)
tree2d768f0d5ac77df7c883295ba1842ab09cb38c70
parentMerge tag 'asm-generic-fixes-5.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic (diff)
downloadwireguard-linux-e0339f036ef4beb9b20f0b6532a1e0ece7f594c6.tar.xz
wireguard-linux-e0339f036ef4beb9b20f0b6532a1e0ece7f594c6.zip
watch_queue: Fix missing rcu annotation
Since __post_watch_notification() walks wlist->watchers with only the RCU read lock held, we need to use RCU methods to add to the list (we already use RCU methods to remove from the list). Fix add_watch_to_object() to use hlist_add_head_rcu() instead of hlist_add_head() for that list. Fixes: c73be61cede5 ("pipe: Add general notification queue support") Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/watch_queue.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
index bb9962b33f95..2c351765c409 100644
--- a/kernel/watch_queue.c
+++ b/kernel/watch_queue.c
@@ -494,7 +494,7 @@ int add_watch_to_object(struct watch *watch, struct watch_list *wlist)
unlock_wqueue(wqueue);
}
- hlist_add_head(&watch->list_node, &wlist->watchers);
+ hlist_add_head_rcu(&watch->list_node, &wlist->watchers);
return 0;
}
EXPORT_SYMBOL(add_watch_to_object);