watch_queue: Fix missing rcu annotation

commit e0339f036e upstream.

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: c73be61ced ("pipe: Add general notification queue support")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
David Howells 2022-07-28 10:31:06 +01:00 коммит произвёл Greg Kroah-Hartman
Родитель 11c1cc3f6e
Коммит 093610f216
1 изменённых файлов: 1 добавлений и 1 удалений

Просмотреть файл

@ -497,7 +497,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);