]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fuse: fix io-uring list corruption for terminated non-committed requests
authorJoanne Koong <joannelkoong@gmail.com>
Tue, 25 Nov 2025 18:13:47 +0000 (10:13 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Jan 2026 11:57:31 +0000 (12:57 +0100)
commit 95c39eef7c2b666026c69ab5b30471da94ea2874 upstream.

When a request is terminated before it has been committed, the request
is not removed from the queue's list. This leaves a dangling list entry
that leads to list corruption and use-after-free issues.

Remove the request from the queue's list for terminated non-committed
requests.

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Fixes: c090c8abae4b ("fuse: Add io-uring sqe commit and fetch support")
Cc: stable@vger.kernel.org
Reviewed-by: Bernd Schubert <bschubert@ddn.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/fuse/dev_uring.c

index f6b12aebb8bbe7d255980593b75b5fb5af9c669e..d2bc05a8b3d10911b9dd09f6c5fea8cf025f1bd9 100644 (file)
@@ -86,6 +86,7 @@ static void fuse_uring_req_end(struct fuse_ring_ent *ent, struct fuse_req *req,
        lockdep_assert_not_held(&queue->lock);
        spin_lock(&queue->lock);
        ent->fuse_req = NULL;
+       list_del_init(&req->list);
        if (test_bit(FR_BACKGROUND, &req->flags)) {
                queue->active_background--;
                spin_lock(&fc->bg_lock);