If __device_add_disk-->bdi_register_owner-->bdi_register-->
bdi_register_va-->device_create_vargs fails, bdi->dev is still
NULL, __device_add_disk-->register_disk will visit bdi->dev->kobj.
This patch fixes that.

Signed-off-by: zhengbin <[email protected]>
---
 block/genhd.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/block/genhd.c b/block/genhd.c
index 1dd8fd6..78b82d2 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -655,10 +655,12 @@ static void register_disk(struct device *parent, struct 
gendisk *disk,
                kobject_uevent(&part_to_dev(part)->kobj, KOBJ_ADD);
        disk_part_iter_exit(&piter);

-       err = sysfs_create_link(&ddev->kobj,
-                               &disk->queue->backing_dev_info->dev->kobj,
-                               "bdi");
-       WARN_ON(err);
+       if (disk->queue->backing_dev_info->dev) {
+               err = sysfs_create_link(&ddev->kobj,
+                         &disk->queue->backing_dev_info->dev->kobj,
+                         "bdi");
+               WARN_ON(err);
+       }
 }

 /**
--
2.7.4

Reply via email to