]> 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)
committerJens Axboe <axboe@kernel.dk>
Fri, 28 Mar 2025 22:15:42 +0000 (16:15 -0600)
commit8741d0737921ec1c03cf59aebf4d01400c2b461a
treeb1e5053956732c56ca141e82c1903387fdf1297d
parent04491732fc996305e1de80255d64ed6d1c472df5
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