
hulk inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IBWSWQ -------------------------------- When elevator registration via elv_register_queue() fails in blk_register_queue(), we were not calling blk_mq_unregister_dev() to clean up multi-queue resources that were registered by __blk_mq_register_dev(). This omission could lead to kobject leaks and disk->queue remaining in memory when device registration ultimately fails. Add the missing blk_mq_unregister_dev() call in the error path to ensure complete cleanup of all resources in the failure case. Fixes: 320ae51feed5 ("blk-mq: new multi-queue block IO queueing mechanism") Signed-off-by: Zheng Qixing <zhengqixing@huawei.com> --- block/blk-sysfs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 078aace75204..5ff510a13b68 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -990,6 +990,8 @@ int blk_register_queue(struct gendisk *disk) if (ret) { mutex_unlock(&q->sysfs_lock); mutex_unlock(&q->sysfs_dir_lock); + if (queue_is_mq(q)) + blk_mq_unregister_dev(dev, q); kobject_del(&q->kobj); blk_trace_remove_sysfs(dev); kobject_put(&dev->kobj); -- 2.39.2