]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
io_uring/uring_cmd: fix hybrid polling initialization issue
authorhexue <xue01.he@samsung.com>
Mon, 12 May 2025 05:20:25 +0000 (13:20 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 12 May 2025 13:17:02 +0000 (07:17 -0600)
Modify the check for whether the timer is initialized during IO transfer
when passthrough is used with hybrid polling, to ensure that it's always
setup correctly.

Cc: stable@vger.kernel.org
Fixes: 01ee194d1aba ("io_uring: add support for hybrid IOPOLL")
Signed-off-by: hexue <xue01.he@samsung.com>
Link: https://lore.kernel.org/r/20250512052025.293031-1-xue01.he@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/uring_cmd.c

index a9ea7d29cdd978ec8f5c3dc8bf41607ca077f865..430ed620ddfe01daf3fb1cbfbbe4d496d7ca3df3 100644 (file)
@@ -254,6 +254,11 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
                        return -EOPNOTSUPP;
                issue_flags |= IO_URING_F_IOPOLL;
                req->iopoll_completed = 0;
+               if (ctx->flags & IORING_SETUP_HYBRID_IOPOLL) {
+                       /* make sure every req only blocks once */
+                       req->flags &= ~REQ_F_IOPOLL_STATE;
+                       req->iopoll_start = ktime_get_ns();
+               }
        }
 
        ret = file->f_op->uring_cmd(ioucmd, issue_flags);