[PATCH 5.19 168/207] blk-mq: fix error handling in __blk_mq_alloc_disk

From: Greg Kroah-Hartman
Date: Mon Sep 26 2022 - 08:00:53 EST


From: Christoph Hellwig <hch@xxxxxx>

commit 0a3e5cc7bbfcd571a2e53779ef7d7aa3c57d5432 upstream.

To fully clean up the queue if the disk allocation fails we need to
call blk_mq_destroy_queue and not just blk_put_queue.

Fixes: 6f8191fdf41d ("block: simplify disk shutdown")
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx>
Link: https://lore.kernel.org/r/20220720130541.1323531-1-hch@xxxxxx
Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
block/blk-mq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3949,7 +3949,7 @@ struct gendisk *__blk_mq_alloc_disk(stru

disk = __alloc_disk_node(q, set->numa_node, lkclass);
if (!disk) {
- blk_put_queue(q);
+ blk_mq_destroy_queue(q);
return ERR_PTR(-ENOMEM);
}
set_bit(GD_OWNS_QUEUE, &disk->state);