| From e0339f036ef4beb9b20f0b6532a1e0ece7f594c6 Mon Sep 17 00:00:00 2001 |
| From: David Howells <dhowells@redhat.com> |
| Date: Thu, 28 Jul 2022 10:31:06 +0100 |
| Subject: watch_queue: Fix missing rcu annotation |
| |
| From: David Howells <dhowells@redhat.com> |
| |
| commit e0339f036ef4beb9b20f0b6532a1e0ece7f594c6 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: c73be61cede5 ("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> |
| --- |
| kernel/watch_queue.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/kernel/watch_queue.c |
| +++ b/kernel/watch_queue.c |
| @@ -497,7 +497,7 @@ int add_watch_to_object(struct watch *wa |
| 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); |