From: Mike Snitzer Date: Wed, 10 Jan 2018 01:46:49 +0000 (-0500) Subject: block: only bdi_unregister() in del_gendisk() if !GENHD_FL_HIDDEN X-Git-Tag: v4.16-rc1~184^2~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bc8d062c36e3525e81ea8237ff0ab3264c2317b6;p=thirdparty%2Fkernel%2Flinux.git block: only bdi_unregister() in del_gendisk() if !GENHD_FL_HIDDEN device_add_disk() will only call bdi_register_owner() if !GENHD_FL_HIDDEN, so it follows that del_gendisk() should only call bdi_unregister() if !GENHD_FL_HIDDEN. Found with code inspection. bdi_unregister() won't do any harm if bdi_register_owner() wasn't used but best to avoid the unnecessary call to bdi_unregister(). Fixes: 8ddcd65325 ("block: introduce GENHD_FL_HIDDEN") Signed-off-by: Mike Snitzer Reviewed-by: Ming Lei Reviewed-by: Hannes Reinecke Signed-off-by: Jens Axboe --- diff --git a/block/genhd.c b/block/genhd.c index 96a66f6717204..00620e01e043a 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -725,7 +725,8 @@ void del_gendisk(struct gendisk *disk) * 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); + if (!(disk->flags & GENHD_FL_HIDDEN)) + bdi_unregister(disk->queue->backing_dev_info); blk_unregister_queue(disk); } else { WARN_ON(1);