diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 078aace75204946f89d464975c8813be382837ea..522ad742ed45d1be083611c7f2b006e94e1f0f5e 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -989,10 +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; } }