summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-04-04 20:07:24 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-04 20:07:24 -0700
commit8df5bc2d7eb7cdd80fdb87bc00551287b9b201c2 (patch)
tree93595f5903dd1f61d3aa458e70b06cdfd339120f
parent0802e8d62ffdb7d708cf9da75fd5a4ec441f7e95 (diff)
parent70c8d6d632f886ef3a59cb9afa36f0af1df1a7eb (diff)
Merge "block: Make del_gendisk() safer for disks without queues"
-rw-r--r--block/genhd.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/block/genhd.c b/block/genhd.c
index dae7c9ed87e5..7f1e8f81ceb4 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -656,12 +656,16 @@ 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);
+ if (disk->queue) {
+ /*
+ * 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);
+ } else {
+ WARN_ON(1);
+ }
blk_unregister_region(disk_devt(disk), disk->minors);
part_stat_set_all(&disk->part0, 0);