Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e14e9cc5 authored by Benjamin Segall's avatar Benjamin Segall Committed by Greg Kroah-Hartman
Browse files

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@google.com: add comment]
  Link: https://lkml.kernel.org/r/xm26bki0ulsr.fsf_-_@google.com
Link: https://lkml.kernel.org/r/xm26pm6hvfer.fsf@google.com


Fixes: a16ceb139610 ("epoll: autoremove wakers even more aggressively")
Signed-off-by: default avatarBen Segall <bsegall@google.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent e77e5481
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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;
}