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 <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 5c59789 commit 22c17e2

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

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)