fuse: fix io-uring list corruption for terminated non-committed requests
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: c090c8abae ("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>
This commit is contained in:
committed by
Miklos Szeredi
parent
28fec8b95e
commit
95c39eef7c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user