Skip to content

Commit 22c17e2

Browse files
Christoph Hellwigaxboe
authored andcommitted
blk-mq: fix queue reference leak on blk_mq_alloc_disk_for_queue failure
Drop the request queue reference just acquired when __alloc_disk_node failed. Fixes: 6f8191f ("block: simplify disk shutdown") Reported-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Link: https://lore.kernel.org/r/20221122072753.426077-1-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 5c59789 commit 22c17e2

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

block/blk-mq.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4045,9 +4045,14 @@ EXPORT_SYMBOL(__blk_mq_alloc_disk);
40454045
struct gendisk *blk_mq_alloc_disk_for_queue(struct request_queue *q,
40464046
struct lock_class_key *lkclass)
40474047
{
4048+
struct gendisk *disk;
4049+
40484050
if (!blk_get_queue(q))
40494051
return NULL;
4050-
return __alloc_disk_node(q, NUMA_NO_NODE, lkclass);
4052+
disk = __alloc_disk_node(q, NUMA_NO_NODE, lkclass);
4053+
if (!disk)
4054+
blk_put_queue(q);
4055+
return disk;
40514056
}
40524057
EXPORT_SYMBOL(blk_mq_alloc_disk_for_queue);
40534058

0 commit comments

Comments
 (0)