]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.12-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jun 2026 15:33:57 +0000 (17:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jun 2026 15:33:57 +0000 (17:33 +0200)
added patches:
io_uring-kbuf-don-t-truncate-end-buffer-for-bundles.patch
io_uring-wait-fix-min_timeout-behavior.patch

queue-6.12/io_uring-kbuf-don-t-truncate-end-buffer-for-bundles.patch [new file with mode: 0644]
queue-6.12/io_uring-wait-fix-min_timeout-behavior.patch [new file with mode: 0644]
queue-6.12/series

diff --git a/queue-6.12/io_uring-kbuf-don-t-truncate-end-buffer-for-bundles.patch b/queue-6.12/io_uring-kbuf-don-t-truncate-end-buffer-for-bundles.patch
new file mode 100644 (file)
index 0000000..a62e7af
--- /dev/null
@@ -0,0 +1,43 @@
+From ca484a3b95420b2841539b9bc5143507929ead0a Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@kernel.dk>
+Date: Sun, 7 Jun 2026 16:05:47 -0600
+Subject: io_uring/kbuf: don't truncate end buffer for bundles
+
+From: Jens Axboe <axboe@kernel.dk>
+
+Commit 70f4886bcbb929e88038c8807f1daf7fc587ae7c upstream.
+
+If buffers have been peeked for a bundle receive, the kernel will
+truncate the end buffer, if the available length is shorter than the
+buffer itself. This is unnecessary, as applications iterating bundle
+receives must always use the minimum size of the buffer length and the
+remaining number of bytes in the bundle. The examples in liburing do
+that as well, eg examples/proxy.c.
+
+If the kernel does truncate this buffer AND the current transfer fails,
+then the buffer will be left with a smaller size than what is otherwise
+available.
+
+Just remove the buffer truncation, as it's not necessary in the first
+place.
+
+Link: https://lore.kernel.org/io-uring/CAAEr8jbY60noGj1fw_k91UJRBkyiRVoS6=nLhZ7Svwidjn4CAA@mail.gmail.com/
+Reported-by: Federico Brasili <federico.brasili@gmail.com>
+Cc: stable@vger.kernel.org
+Fixes: 35c8711c8fc4 ("io_uring/kbuf: add helpers for getting/peeking multiple buffers")
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ io_uring/kbuf.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/io_uring/kbuf.c
++++ b/io_uring/kbuf.c
+@@ -293,7 +293,6 @@ static int io_ring_buffers_peek(struct i
+                               arg->partial_map = 1;
+                               if (iov != arg->iovs)
+                                       break;
+-                              WRITE_ONCE(buf->len, len);
+                       }
+               }
diff --git a/queue-6.12/io_uring-wait-fix-min_timeout-behavior.patch b/queue-6.12/io_uring-wait-fix-min_timeout-behavior.patch
new file mode 100644 (file)
index 0000000..00938a9
--- /dev/null
@@ -0,0 +1,37 @@
+From e68b3e06b410a794322c65449e4357889a5e3e4f Mon Sep 17 00:00:00 2001
+From: "Christian A. Ehrhardt" <lk@c--e.de>
+Date: Sat, 6 Jun 2026 22:11:20 +0200
+Subject: io_uring/wait: fix min_timeout behavior
+
+From: "Christian A. Ehrhardt" <lk@c--e.de>
+
+Commit 29fe1bd01b99714f3136f922230a643c2742cda9 upstream.
+
+The wakeup condition if a min timeout is present and has expired is that
+at least _one_ CQE was posted. Thus set the cq_tail target to
+->cq_min_tail + 1. Without this commit a spurious wakeup can result in a
+premature wakeup because io_should_wake() will return true even if _no_
+CQE was posted at all.
+
+Cc: Tip ten Brink <tip@tenbrinkmeijs.com>
+Fixes: e15cb2200b93 ("io_uring: fix min_wait wakeups for SQPOLL")
+Cc: stable@vger.kernel.org
+Signed-off-by: Christian A. Ehrhardt <lk@c--e.de>
+Link: https://patch.msgid.link/20260606201120.1441447-1-lk@c--e.de
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ io_uring/io_uring.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/io_uring/io_uring.c
++++ b/io_uring/io_uring.c
+@@ -2414,7 +2414,7 @@ static enum hrtimer_restart io_cqring_mi
+       }
+       /* any generated CQE posted past this time should wake us up */
+-      iowq->cq_tail = iowq->cq_min_tail;
++      iowq->cq_tail = iowq->cq_min_tail + 1;
+       iowq->t.function = io_cqring_timer_wakeup;
+       hrtimer_set_expires(timer, iowq->timeout);
index 26aa688b8064ea946cccaf9cb21b68645781a2fa..f239b73be159d05f3dcae973a47dde0e65c2aafa 100644 (file)
@@ -186,3 +186,5 @@ net-rds-clear-i_sends-on-setup-unwind.patch
 nvmem-core-fix-use-after-free-bugs-in-error-paths.patch
 nvmem-layouts-onie-tlv-fix-hang-on-unknown-types.patch
 octeontx2-af-fix-memory-leak-in-rvu_setup_hw_resources.patch
+io_uring-kbuf-don-t-truncate-end-buffer-for-bundles.patch
+io_uring-wait-fix-min_timeout-behavior.patch