This is a note to let you know that I've just added the patch titled epoll: ep_autoremove_wake_function should use list_del_init_careful to the 5.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: epoll-ep_autoremove_wake_function-should-use-list_de.patch and it can be found in the queue-5.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. commit dfb0850769b96ff66a480cf0d2982de5fd5d9122 Author: Benjamin Segall <bsegall@xxxxxxxxxx> Date: Tue May 30 11:32:28 2023 -0700 epoll: ep_autoremove_wake_function should use list_del_init_careful [ Upstream commit 2192bba03d80f829233bfa34506b428f71e531e7 ] 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. [bsegall@xxxxxxxxxx: add comment] Link: https://lkml.kernel.org/r/xm26bki0ulsr.fsf_-_@xxxxxxxxxx Link: https://lkml.kernel.org/r/xm26pm6hvfer.fsf@xxxxxxxxxx Fixes: a16ceb139610 ("epoll: autoremove wakers even more aggressively") Signed-off-by: Ben Segall <bsegall@xxxxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Christian Brauner <brauner@xxxxxxxxxx> Cc: <stable@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 877f9f61a4e8d..8c0e94183186f 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -1814,7 +1814,11 @@ static int ep_autoremove_wake_function(struct wait_queue_entry *wq_entry, { int ret = default_wake_function(wq_entry, mode, sync, key); - list_del_init(&wq_entry->entry); + /* + * Pairs with list_empty_careful in ep_poll, and ensures future loop + * iterations see the cause of this wakeup. + */ + list_del_init_careful(&wq_entry->entry); return ret; }