From 4765a218c19c66dbcf76a701a7de2b97cfbbd731 Mon Sep 17 00:00:00 2001 From: zhengbin Date: Mon, 11 Mar 2019 21:48:06 +0800 Subject: [PATCH] block: fix NULL pointer dereference in register_disk mainline inclusion from mainline-5.0 commit 4d7c1d3fd7c7eda7dea351f071945e843a46c145 category: bugfix bugzilla: 12063 CVE: NA --------------------------- 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 Signed-off-by: Jens Axboe Signed-off-by: zhengbin Reviewed-by: Yang Yingliang Signed-off-by: Yang Yingliang --- block/genhd.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/block/genhd.c b/block/genhd.c index be5bab20b2ab..2c9d1f5207c2 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -637,10 +637,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); + } } /** -- GitLab