diff --git a/block/genhd.c b/block/genhd.c index c26733f6324b..e8434d2e237f --- a/block/genhd.c +++ b/block/genhd.c @@ -740,7 +740,9 @@ static void __del_gendisk(struct gendisk *disk) bdi_unregister(disk->bdi); } + down_read(&set->update_nr_hwq_lock); blk_unregister_queue(disk); + up_read(&set->update_nr_hwq_lock); kobject_put(disk->part0->bd_holder_dir); kobject_put(disk->slave_dir); @@ -819,9 +821,7 @@ void del_gendisk(struct gendisk *disk) disable_elv_switch(disk->queue); memflags = memalloc_noio_save(); - down_read(&set->update_nr_hwq_lock); __del_gendisk(disk); - up_read(&set->update_nr_hwq_lock); memalloc_noio_restore(memflags); } }