
hulk inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IC0KIA -------------------------------- The error path in blk_register_queue() when elv_register_queue() fails was releasing q->sysfs_dir_lock too early, before calling blk_mq_unregister_dev() to release dev resources. This incorrect order caused lockdep warnings. Move the mutex_unlock(&q->sysfs_dir_lock) to the end of the error handling sequence to ensure the lock remains held during all cleanup operations, preventing potential race conditions. Fixes: 59ed4a531cc4 ("block: fix resource leak in elevator registration error path") Signed-off-by: Zheng Qixing <zhengqixing@huawei.com> --- block/blk-sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 5ff510a13b68..522ad742ed45 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -989,12 +989,12 @@ int blk_register_queue(struct gendisk *disk) ret = elv_register_queue(q, false); 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); + mutex_unlock(&q->sysfs_dir_lock); return ret; } } -- 2.39.2