FAILED: patch "[PATCH] io_uring: synchronise IOPOLL on task_submit fail" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 81b6d05ccad4f3d8a9dfb091fb46ad6978ee40e4 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <[email protected]>
Date: Mon, 4 Jan 2021 20:36:35 +0000
Subject: [PATCH] io_uring: synchronise IOPOLL on task_submit fail
io_req_task_submit() might be called for IOPOLL, do the fail path under uring_lock to comply with IOPOLL synchronisation based solely on it.
Cc [email protected] # 5.5+
Signed-off-by Pavel Begunkov <[email protected]>
Signed-off-by Jens Axboe <[email protected]>
fs/io_uring.c +7 -6
@@ -2126,15 +2126,16 @@ static void io_req_task_cancel(struct callback_head *cb)static void __io_req_task_submit (struct io_kiocb *req) {struct io_ring_ctx *ctx = req->ctx; +bool fail; -if (!__io_sq_thread_acquire_mm (ctx) && - !__io_sq_thread_acquire_files (ctx)) { -mutex_lock (&ctx->uring_lock); + fail =__io_sq_thread_acquire_mm (ctx) || +__io_sq_thread_acquire_files (ctx); +mutex_lock (&ctx->uring_lock); +if (!fail)__io_queue_sqe (req,NULL ); -mutex_unlock (&ctx->uring_lock); - }else { +else __io_req_task_cancel (req, -EFAULT ); - } +mutex_unlock (&ctx->uring_lock); }static void io_req_task_submit (struct callback_head *cb)