]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Feb 2025 10:21:26 +0000 (11:21 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Feb 2025 10:21:26 +0000 (11:21 +0100)
added patches:
io_uring-fix-io_req_prep_async-with-provided-buffers.patch
io_uring-fix-multishots-with-selected-buffers.patch
io_uring-rw-commit-provided-buffer-state-on-async.patch

queue-6.1/io_uring-fix-io_req_prep_async-with-provided-buffers.patch [new file with mode: 0644]
queue-6.1/io_uring-fix-multishots-with-selected-buffers.patch [new file with mode: 0644]
queue-6.1/io_uring-rw-commit-provided-buffer-state-on-async.patch [new file with mode: 0644]
queue-6.1/series

diff --git a/queue-6.1/io_uring-fix-io_req_prep_async-with-provided-buffers.patch b/queue-6.1/io_uring-fix-io_req_prep_async-with-provided-buffers.patch
new file mode 100644 (file)
index 0000000..c5f1d20
--- /dev/null
@@ -0,0 +1,44 @@
+From stable+bounces-114698-greg=kroah.com@vger.kernel.org Mon Feb 10 18:27:05 2025
+From: Pavel Begunkov <asml.silence@gmail.com>
+Date: Mon, 10 Feb 2025 17:27:55 +0000
+Subject: io_uring: fix io_req_prep_async with provided buffers
+To: stable@vger.kernel.org
+Cc: Muhammad Ramdhan <ramdhan@starlabs.sg>, Bing-Jhong Billy Jheng <billy@starlabs.sg>, Jacob Soo <jacob.soo@starlabs.sg>, Jens Axboe <axboe@kernel.dk>, Pavel Begunkov <asml.silence@gmail.com>
+Message-ID: <ecfd2314f89e04f39eca1b5642e34de82d6907ba.1739208415.git.asml.silence@gmail.com>
+
+From: Pavel Begunkov <asml.silence@gmail.com>
+
+io_req_prep_async() can import provided buffers, commit the ring state
+by giving up on that before, it'll be reimported later if needed.
+
+Reported-by: Muhammad Ramdhan <ramdhan@starlabs.sg>
+Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
+Reported-by: Jacob Soo <jacob.soo@starlabs.sg>
+Fixes: c7fb19428d67d ("io_uring: add support for ring mapped supplied buffers")
+Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ io_uring/io_uring.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/io_uring/io_uring.c
++++ b/io_uring/io_uring.c
+@@ -1624,6 +1624,7 @@ bool io_alloc_async_data(struct io_kiocb
+ int io_req_prep_async(struct io_kiocb *req)
+ {
+       const struct io_op_def *def = &io_op_defs[req->opcode];
++      int ret;
+       /* assign early for deferred execution for non-fixed file */
+       if (def->needs_file && !(req->flags & REQ_F_FIXED_FILE) && !req->file)
+@@ -1636,7 +1637,9 @@ int io_req_prep_async(struct io_kiocb *r
+               if (io_alloc_async_data(req))
+                       return -EAGAIN;
+       }
+-      return def->prep_async(req);
++      ret = def->prep_async(req);
++      io_kbuf_recycle(req, 0);
++      return ret;
+ }
+ static u32 io_get_sequence(struct io_kiocb *req)
diff --git a/queue-6.1/io_uring-fix-multishots-with-selected-buffers.patch b/queue-6.1/io_uring-fix-multishots-with-selected-buffers.patch
new file mode 100644 (file)
index 0000000..edce39a
--- /dev/null
@@ -0,0 +1,40 @@
+From stable+bounces-114699-greg=kroah.com@vger.kernel.org Mon Feb 10 18:27:05 2025
+From: Pavel Begunkov <asml.silence@gmail.com>
+Date: Mon, 10 Feb 2025 17:27:54 +0000
+Subject: io_uring: fix multishots with selected buffers
+To: stable@vger.kernel.org
+Cc: Muhammad Ramdhan <ramdhan@starlabs.sg>, Bing-Jhong Billy Jheng <billy@starlabs.sg>, Jacob Soo <jacob.soo@starlabs.sg>, Jens Axboe <axboe@kernel.dk>, Pavel Begunkov <asml.silence@gmail.com>
+Message-ID: <2c95a69708e1e7f94acedc6286160160b7650bbb.1739208415.git.asml.silence@gmail.com>
+
+From: Pavel Begunkov <asml.silence@gmail.com>
+
+[ upstream commit d63b0e8a628e62ca85a0f7915230186bb92f8bb4 ]
+
+We do io_kbuf_recycle() when arming a poll but every iteration of a
+multishot can grab more buffers, which is why we need to flush the kbuf
+ring state before continuing with waiting.
+
+Cc: stable@vger.kernel.org
+Fixes: b3fdea6ecb55c ("io_uring: multishot recv")
+Reported-by: Muhammad Ramdhan <ramdhan@starlabs.sg>
+Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
+Reported-by: Jacob Soo <jacob.soo@starlabs.sg>
+Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
+Link: https://lore.kernel.org/r/1bfc9990fe435f1fc6152ca9efeba5eb3e68339c.1738025570.git.asml.silence@gmail.com
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ io_uring/poll.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/io_uring/poll.c
++++ b/io_uring/poll.c
+@@ -307,6 +307,8 @@ static int io_poll_check_events(struct i
+                       }
+               } else {
+                       int ret = io_poll_issue(req, locked);
++                      io_kbuf_recycle(req, 0);
++
+                       if (ret == IOU_STOP_MULTISHOT)
+                               return IOU_POLL_REMOVE_POLL_USE_RES;
+                       if (ret < 0)
diff --git a/queue-6.1/io_uring-rw-commit-provided-buffer-state-on-async.patch b/queue-6.1/io_uring-rw-commit-provided-buffer-state-on-async.patch
new file mode 100644 (file)
index 0000000..fb9674d
--- /dev/null
@@ -0,0 +1,57 @@
+From stable+bounces-114700-greg=kroah.com@vger.kernel.org Mon Feb 10 18:27:18 2025
+From: Pavel Begunkov <asml.silence@gmail.com>
+Date: Mon, 10 Feb 2025 17:27:56 +0000
+Subject: io_uring/rw: commit provided buffer state on async
+To: stable@vger.kernel.org
+Cc: Muhammad Ramdhan <ramdhan@starlabs.sg>, Bing-Jhong Billy Jheng <billy@starlabs.sg>, Jacob Soo <jacob.soo@starlabs.sg>, Jens Axboe <axboe@kernel.dk>, Pavel Begunkov <asml.silence@gmail.com>
+Message-ID: <71404cdcc823638709aa44ee2137cd444fc708ad.1739208415.git.asml.silence@gmail.com>
+
+From: Pavel Begunkov <asml.silence@gmail.com>
+
+When we get -EIOCBQUEUED, we need to ensure that the buffer is consumed
+from the provided buffer ring, which can be done with io_kbuf_recycle()
++ REQ_F_PARTIAL_IO.
+
+Reported-by: Muhammad Ramdhan <ramdhan@starlabs.sg>
+Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
+Reported-by: Jacob Soo <jacob.soo@starlabs.sg>
+Fixes: c7fb19428d67d ("io_uring: add support for ring mapped supplied buffers")
+Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ io_uring/rw.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/io_uring/rw.c
++++ b/io_uring/rw.c
+@@ -772,6 +772,8 @@ static int __io_read(struct io_kiocb *re
+                       goto done;
+               ret = 0;
+       } else if (ret == -EIOCBQUEUED) {
++              req->flags |= REQ_F_PARTIAL_IO;
++              io_kbuf_recycle(req, issue_flags);
+               if (iovec)
+                       kfree(iovec);
+               return IOU_ISSUE_SKIP_COMPLETE;
+@@ -795,6 +797,9 @@ static int __io_read(struct io_kiocb *re
+               goto done;
+       }
++      req->flags |= REQ_F_PARTIAL_IO;
++      io_kbuf_recycle(req, issue_flags);
++
+       io = req->async_data;
+       s = &io->s;
+       /*
+@@ -935,6 +940,11 @@ int io_write(struct io_kiocb *req, unsig
+       else
+               ret2 = -EINVAL;
++      if (ret2 == -EIOCBQUEUED) {
++              req->flags |= REQ_F_PARTIAL_IO;
++              io_kbuf_recycle(req, issue_flags);
++      }
++
+       if (req->flags & REQ_F_REISSUE) {
+               req->flags &= ~REQ_F_REISSUE;
+               ret2 = -EAGAIN;
index d047e0aa32497b94f6566809a4448160f2f38927..1cdda4ac0890249cfa7552901201856b2a978af1 100644 (file)
@@ -446,3 +446,6 @@ rtla-timerlat_top-stop-timerlat-tracer-on-signal.patch
 pinctrl-samsung-fix-fwnode-refcount-cleanup-if-platform_get_irq_optional-fails.patch
 ptp-ensure-info-enable-callback-is-always-set.patch
 rtc-zynqmp-fix-optional-clock-name-property.patch
+io_uring-fix-multishots-with-selected-buffers.patch
+io_uring-fix-io_req_prep_async-with-provided-buffers.patch
+io_uring-rw-commit-provided-buffer-state-on-async.patch