This is a note to let you know that I've just added the patch titled io_uring: always lock in io_apoll_task_func to the 5.10-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-always-lock-in-io_apoll_task_func.patch and it can be found in the queue-5.10 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From stable-owner@xxxxxxxxxxxxxxx Tue Sep 12 16:05:05 2023 From: Pavel Begunkov <asml.silence@xxxxxxxxx> Date: Tue, 12 Sep 2023 15:02:48 +0100 Subject: io_uring: always lock in io_apoll_task_func To: stable@xxxxxxxxxxxxxxx Cc: Jens Axboe <axboe@xxxxxxxxx>, asml.silence@xxxxxxxxx, Dylan Yudaken <dylany@xxxxxxxx> Message-ID: <9f8a30b981705fa8fef31ad76c9bf7192b8db2a4.1694524751.git.asml.silence@xxxxxxxxx> From: Pavel Begunkov <asml.silence@xxxxxxxxx> From: Dylan Yudaken <dylany@xxxxxxxx> [ upstream commit c06c6c5d276707e04cedbcc55625e984922118aa ] This is required for the failure case (io_req_complete_failed) and is missing. The alternative would be to only lock in the failure path, however all of the non-error paths in io_poll_check_events that do not do not return IOU_POLL_NO_ACTION end up locking anyway. The only extraneous lock would be for the multishot poll overflowing the CQE ring, however multishot poll would probably benefit from being locked as it will allow completions to be batched. So it seems reasonable to lock always. Signed-off-by: Dylan Yudaken <dylany@xxxxxxxx> Link: https://lore.kernel.org/r/20221124093559.3780686-3-dylany@xxxxxxxx Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- io_uring/io_uring.c | 1 + 1 file changed, 1 insertion(+) --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -5571,6 +5571,7 @@ static void io_apoll_task_func(struct io if (ret > 0) return; + io_tw_lock(req->ctx, locked); io_poll_remove_entries(req); spin_lock(&ctx->completion_lock); hash_del(&req->hash_node); Patches currently in stable-queue which might be from stable-owner@xxxxxxxxxxxxxxx are queue-5.10/io_uring-always-lock-in-io_apoll_task_func.patch queue-5.10/io_uring-break-out-of-iowq-iopoll-on-teardown.patch queue-5.10/io_uring-break-iopolling-on-signal.patch