]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ublk: make sure ubq->canceling is set when queue is frozen
authorMing Lei <ming.lei@redhat.com>
Thu, 27 Mar 2025 09:51:10 +0000 (17:51 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:39:32 +0000 (14:39 +0200)
commit7e3497d7dacb5aee69dd9be842b778083cae0e75
treec697e2780a9d7de9e48229e22df1ed8acc61c871
parentefd101b1f0f5144ffe422b01a7cce823201a5e08
ublk: make sure ubq->canceling is set when queue is frozen

[ Upstream commit 8741d0737921ec1c03cf59aebf4d01400c2b461a ]

Now ublk driver depends on `ubq->canceling` for deciding if the request
can be dispatched via uring_cmd & io_uring_cmd_complete_in_task().

Once ubq->canceling is set, the uring_cmd can be done via ublk_cancel_cmd()
and io_uring_cmd_done().

So set ubq->canceling when queue is frozen, this way makes sure that the
flag can be observed from ublk_queue_rq() reliably, and avoids
use-after-free on uring_cmd.

Fixes: 216c8f5ef0f2 ("ublk: replace monitor with cancelable uring_cmd")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250327095123.179113-2-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/block/ublk_drv.c