From 95e278bdc87adbc5aa3aeb960a78ac85de1fe160 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 16 May 2022 23:05:51 +0200 Subject: [PATCH] UPSTREAM: io_uring: always use original task when preparing req identity If the ring is setup with IORING_SETUP_IOPOLL and we have more than one task doing submissions on a ring, we can up in a situation where we assign the context from the current task rather than the request originator. Always use req->task rather than assume it's the same as current. No upstream patch exists for this issue, as only older kernels with the non-native workers have this problem. Bug: 233078742 Reported-by: Kyle Zeng Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman Signed-off-by: Akilesh Kailash (cherry picked from commit 29f077d070519a88a793fbc70f1e6484dc6d9e35 from linux-5.10.y stable branch) Change-Id: I4cc543950a95e1df201fa9867c5e9c272fd54b6f --- fs/io_uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 5959b0359524..af4295673613 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -1156,7 +1156,7 @@ static inline void __io_req_init_async(struct io_kiocb *req) */ static inline void io_req_init_async(struct io_kiocb *req) { - struct io_uring_task *tctx = current->io_uring; + struct io_uring_task *tctx = req->task->io_uring; if (req->flags & REQ_F_WORK_INITIALIZED) return;