]> www.infradead.org Git - nvme.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)
committerKeith Busch <kbusch@kernel.org>
Mon, 31 Mar 2025 15:48:24 +0000 (08:48 -0700)
commitba07d47830f52e5469c6fb3df1a5ef98ea4bc805
tree0c22122cb049fc8010340e0f2ea67457647dae54
parent1c58f14ac2e701c79601a714e864f8a331695601
ublk: make sure ubq->canceling is set when queue is frozen

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>
drivers/block/ublk_drv.c