diff options
| -rw-r--r-- | block/blk-core.c | 2 | ||||
| -rw-r--r-- | block/genhd.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 4162327d8804..500447be3db4 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -609,8 +609,6 @@ void blk_cleanup_queue(struct request_queue *q) q->queue_lock = &q->__queue_lock; spin_unlock_irq(lock); - bdi_unregister(&q->backing_dev_info); - /* @q is and will stay empty, shutdown and put */ blk_put_queue(q); } diff --git a/block/genhd.c b/block/genhd.c index fad9db981675..dae7c9ed87e5 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -656,6 +656,11 @@ void del_gendisk(struct gendisk *disk) disk->flags &= ~GENHD_FL_UP; sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi"); + /* + * Unregister bdi before releasing device numbers (as they can get + * reused and we'd get clashes in sysfs). + */ + bdi_unregister(&disk->queue->backing_dev_info); blk_unregister_queue(disk); blk_unregister_region(disk_devt(disk), disk->minors); |
