]> www.infradead.org Git - nvme.git/commit
ublk: detach gendisk from ublk device if add_disk() fails
authorMing Lei <ming.lei@redhat.com>
Wed, 25 Dec 2024 11:06:40 +0000 (19:06 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 26 Dec 2024 13:42:55 +0000 (06:42 -0700)
commit75cd4005da5492129917a4a4ee45e81660556104
treea74812e05a2ad1a767e955e691696980ca3940c5
parent85672ca9ceeaa1dcf2777a7048af5f4aee3fd02b
ublk: detach gendisk from ublk device if add_disk() fails

Inside ublk_abort_requests(), gendisk is grabbed for aborting all
inflight requests. And ublk_abort_requests() is called when exiting
the uring context or handling timeout.

If add_disk() fails, the gendisk may have been freed when calling
ublk_abort_requests(), so use-after-free can be caused when getting
disk's reference in ublk_abort_requests().

Fixes the bug by detaching gendisk from ublk device if add_disk() fails.

Fixes: bd23f6c2c2d0 ("ublk: quiesce request queue when aborting queue")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20241225110640.351531-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c