diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2025-03-07 11:09:33 -1000 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2025-03-07 11:09:33 -1000 |
commit | d53276d2928345f68a3eb7722a849fb4a0aa2ad0 (patch) | |
tree | 4bec834d6fac93957ab0093eab381af4ed26ccab | |
parent | 1c5183aa6e74a0817c3a370e6a94e460dbb00098 (diff) | |
parent | bcb0fda3c2da9fe4721d3e73d80e778c038e7d27 (diff) |
Merge tag 'io_uring-6.14-20250306' of git://git.kernel.dk/linux
Pull io_uring fix from Jens Axboe:
"A single fix for a regression introduced in the 6.14 merge window,
causing stalls/hangs with IOPOLL reads or writes"
* tag 'io_uring-6.14-20250306' of git://git.kernel.dk/linux:
io_uring/rw: ensure reissue path is correctly handled for IOPOLL
-rw-r--r-- | io_uring/rw.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/io_uring/rw.c b/io_uring/rw.c index 9edc6baebd01..e5528cebcd06 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -560,11 +560,10 @@ static void io_complete_rw_iopoll(struct kiocb *kiocb, long res) if (kiocb->ki_flags & IOCB_WRITE) io_req_end_write(req); if (unlikely(res != req->cqe.res)) { - if (res == -EAGAIN && io_rw_should_reissue(req)) { + if (res == -EAGAIN && io_rw_should_reissue(req)) req->flags |= REQ_F_REISSUE | REQ_F_BL_NO_RECYCLE; - return; - } - req->cqe.res = res; + else + req->cqe.res = res; } /* order with io_iopoll_complete() checking ->iopoll_completed */ |