]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
eventpoll: use hlist_is_singular_node() in __ep_remove()
authorChristian Brauner <brauner@kernel.org>
Thu, 23 Apr 2026 09:56:04 +0000 (11:56 +0200)
committerChristian Brauner <brauner@kernel.org>
Thu, 23 Apr 2026 22:35:41 +0000 (00:35 +0200)
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) <brauner@kernel.org>
fs/eventpoll.c

index 23f3c6ac0badf1cf21678f42fdf74a3a0bb32c1f..4e8440994277da1f92eaf305439818591dc374b8 100644 (file)
@@ -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)) {