FAILED: patch "[PATCH] io_uring/kbuf: check if target buffer list is still legacy on" failed to apply to 6.6-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.6.y
git checkout FETCH_HEAD
git cherry-pick -x c2c185be5c85d37215397c8e8781abf0a69bec1f
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026031701-humid-ultimate-853d@gregkh' --subject-prefix 'PATCH 6.6.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From c2c185be5c85d37215397c8e8781abf0a69bec1f Mon Sep 17 00:00:00 2001
From: Jens Axboe <[email protected]>
Date: Thu, 12 Mar 2026 08:59:25 -0600
Subject: [PATCH] io_uring/kbuf: check if target buffer list is still legacy on
recycle
There's a gap between when the buffer was grabbed and when it potentially gets recycled, where if the list is empty, someone could've upgraded it to a ring provided type. This can happen if the request is forced via io-wq. The legacy recycling is missing checking if the buffer_list still exists, and if it's of the correct type. Add those checks.
io_uring/kbuf.c +11 -2
@@ -111,9 +111,18 @@ bool io_kbuf_recycle_legacy(struct io_kiocb *req, unsigned issue_flags) buf = req->kbuf; bl =io_buffer_get_list (ctx, buf->bgid); -list_add (&buf->list, &bl->buf_list); - bl->nbufs++; +/* +* If the buffer list was upgraded to a ring-based one, or removed, +* while the request was in-flight in io-wq, drop it. +*/ +if (bl && !(bl->flags &IOBL_BUF_RING )) { +list_add (&buf->list, &bl->buf_list); + bl->nbufs++; + }else { +kfree (buf); + } req->flags &= ~REQ_F_BUFFER_SELECTED ; + req->kbuf =NULL ;io_ring_submit_unlock (ctx, issue_flags);return true;
Jens Axboe
maintainerQuoted 5 lines · On 3/17/26 6:55 AM, [email protected] wrote:
The patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Here's one for 6.6-stable.
Signature · 1 line
Jens Axboe
From e0dd02979a6f1ca378fb173d5e36dd591ee8ef3f Mon Sep 17 00:00:00 2001
From: Jens Axboe <[email protected]>
Date: Thu, 12 Mar 2026 08:59:25 -0600
Subject: [PATCH] io_uring/kbuf: check if target buffer list is still legacy on
recycle
Commit c2c185be5c85d37215397c8e8781abf0a69bec1f upstream.
There's a gap between when the buffer was grabbed and when it potentially gets recycled, where if the list is empty, someone could've upgraded it to a ring provided type. This can happen if the request is forced via io-wq. The legacy recycling is missing checking if the buffer_list still exists, and if it's of the correct type. Add those checks.
--- io_uring/kbuf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
io_uring/kbuf.c +7 -1
@@ -70,9 +70,15 @@ void io_kbuf_recycle_legacy(struct io_kiocb *req, unsigned issue_flags) buf = req->kbuf; bl =io_buffer_get_list (ctx, buf->bgid); -list_add (&buf->list, &bl->buf_list); +/* +* If the buffer list was upgraded to a ring-based one, or removed, +* while the request was in-flight in io-wq, drop it. +*/ +if (bl && !bl->is_mapped) +list_add (&buf->list, &bl->buf_list); req->flags &= ~REQ_F_BUFFER_SELECTED ; req->buf_index = buf->bgid; + req->kbuf =NULL ;io_ring_submit_unlock (ctx, issue_flags);return ;
Signature · 1 line
2.53.0
Greg KH
maintainerQuoted 8 lines · Jens Axboe
Quoted 5 lines · On 3/17/26 6:55 AM, [email protected] wrote:
The patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Here's one for 6.6-stable.
Now applied, thanks.
greg k-h