This is a note to let you know that I've just added the patch titled io_uring: fix tw losing poll events to the 6.0-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: io_uring-fix-tw-losing-poll-events.patch and it can be found in the queue-6.0 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 539bcb57da2f58886d7d5c17134236b0ec9cd15d Mon Sep 17 00:00:00 2001 From: Pavel Begunkov <asml.silence@xxxxxxxxx> Date: Thu, 17 Nov 2022 18:40:15 +0000 Subject: io_uring: fix tw losing poll events From: Pavel Begunkov <asml.silence@xxxxxxxxx> commit 539bcb57da2f58886d7d5c17134236b0ec9cd15d upstream. We may never try to process a poll wake and its mask if there was multiple wake ups racing for queueing up a tw. Force io_poll_check_events() to update the mask by vfs_poll(). Cc: stable@xxxxxxxxxxxxxxx Fixes: aa43477b04025 ("io_uring: poll rework") Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> Link: https://lore.kernel.org/r/00344d60f8b18907171178d7cf598de71d127b0b.1668710222.git.asml.silence@xxxxxxxxx Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- io_uring/poll.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/io_uring/poll.c +++ b/io_uring/poll.c @@ -226,6 +226,13 @@ static int io_poll_check_events(struct i return IOU_POLL_DONE; if (v & IO_POLL_CANCEL_FLAG) return -ECANCELED; + /* + * cqe.res contains only events of the first wake up + * and all others are be lost. Redo vfs_poll() to get + * up to date state. + */ + if ((v & IO_POLL_REF_MASK) != 1) + req->cqe.res = 0; /* the mask was stashed in __io_poll_execute */ if (!req->cqe.res) { Patches currently in stable-queue which might be from asml.silence@xxxxxxxxx are queue-6.0/io_uring-update-res-mask-in-io_poll_check_events.patch queue-6.0/io_uring-fix-multishot-recv-request-leaks.patch queue-6.0/io_uring-fix-tw-losing-poll-events.patch queue-6.0/io_uring-fix-multishot-accept-request-leaks.patch queue-6.0/io_uring-poll-fix-double-poll-req-flags-races.patch queue-6.0/io_uring-disallow-self-propelled-ring-polling.patch