Skip to content

Commit 2192bba

Browse files
Benjamin Segallakpm00
authored andcommitted
epoll: ep_autoremove_wake_function should use list_del_init_careful
autoremove_wake_function uses list_del_init_careful, so should epoll's more aggressive variant. It only doesn't because it was copied from an older wait.c rather than the most recent. [[email protected]: add comment] Link: https://lkml.kernel.org/r/[email protected] Link: https://lkml.kernel.org/r/[email protected] Fixes: a16ceb1 ("epoll: autoremove wakers even more aggressively") Signed-off-by: Ben Segall <[email protected]> Cc: Al Viro <[email protected]> Cc: Christian Brauner <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 4f572f0 commit 2192bba

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

fs/eventpoll.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1805,7 +1805,11 @@ static int ep_autoremove_wake_function(struct wait_queue_entry *wq_entry,
18051805
{
18061806
int ret = default_wake_function(wq_entry, mode, sync, key);
18071807

1808-
list_del_init(&wq_entry->entry);
1808+
/*
1809+
* Pairs with list_empty_careful in ep_poll, and ensures future loop
1810+
* iterations see the cause of this wakeup.
1811+
*/
1812+
list_del_init_careful(&wq_entry->entry);
18091813
return ret;
18101814
}
18111815

0 commit comments

Comments
 (0)