From: Christian Brauner Date: Thu, 23 Apr 2026 09:56:04 +0000 (+0200) Subject: eventpoll: use hlist_is_singular_node() in __ep_remove() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3d9fd0abc94d8cd430cc7cd7d37ce5e5aae2cd2b;p=thirdparty%2Fkernel%2Fstable.git eventpoll: use hlist_is_singular_node() in __ep_remove() Replace the open-coded "epi is the only entry in file->f_ep" check with hlist_is_singular_node(). Same semantics, and the helper avoids the head-cacheline access in the common false case. Link: https://patch.msgid.link/20260423-work-epoll-uaf-v1-1-2470f9eec0f5@kernel.org Signed-off-by: Christian Brauner (Amutable) --- diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 23f3c6ac0bad..4e8440994277 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -856,7 +856,7 @@ static bool __ep_remove(struct eventpoll *ep, struct epitem *epi, bool force) to_free = NULL; head = file->f_ep; - if (head->first == &epi->fllink && !epi->fllink.next) { + if (hlist_is_singular_node(&epi->fllink, head)) { /* See eventpoll_release() for details. */ WRITE_ONCE(file->f_ep, NULL); if (!is_file_epoll(file)) {