Commit e0339f03 authored by David Howells's avatar David Howells Committed by Linus Torvalds

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: c73be61c ("pipe: Add general notification queue support")
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6e7765cb
...@@ -494,7 +494,7 @@ int add_watch_to_object(struct watch *watch, struct watch_list *wlist) ...@@ -494,7 +494,7 @@ int add_watch_to_object(struct watch *watch, struct watch_list *wlist)
unlock_wqueue(wqueue); unlock_wqueue(wqueue);
} }
hlist_add_head(&watch->list_node, &wlist->watchers); hlist_add_head_rcu(&watch->list_node, &wlist->watchers);
return 0; return 0;
} }
EXPORT_SYMBOL(add_watch_to_object); EXPORT_SYMBOL(add_watch_to_object);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment