Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd59943e authored by Sahitya Tummala's avatar Sahitya Tummala
Browse files

block: Handle error case when bdi_register_owner() fails



Fix the below issue observed when bdi_register_owner() fails
in device_add_disk().

Unable to handle kernel paging request at virtual address
pc : sysfs_do_create_link_sd+0x50/0x100
lr : sysfs_do_create_link_sd+0x40/0x100
...
Call trace:
 sysfs_do_create_link_sd+0x50/0x100
 sysfs_do_create_link+0x78/0x90
 sysfs_create_link+0x38/0x48
 device_add_disk+0x5b8/0xad8
 loop_add+0x4a0/0x6cc
 loop_control_ioctl+0x164/0x2b8
 vfs_ioctl+0x7c/0xb4
 do_vfs_ioctl+0x868/0x1384
 SyS_ioctl+0x6c/0xa4

Change-Id: Ibd814b207047537dacdca73a75299cbac3c361b7
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
parent 4e009b46
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -672,7 +672,8 @@ void device_add_disk(struct device *parent, struct gendisk *disk)

	/* Register BDI before referencing it from bdev */
	bdi = disk->queue->backing_dev_info;
	bdi_register_owner(bdi, disk_to_dev(disk));
	retval = bdi_register_owner(bdi, disk_to_dev(disk));
	WARN_ON(retval);

	blk_register_region(disk_devt(disk), disk->minors, NULL,
			    exact_match, exact_lock, disk);
@@ -685,9 +686,11 @@ void device_add_disk(struct device *parent, struct gendisk *disk)
	 */
	WARN_ON_ONCE(!blk_get_queue(disk->queue));

	retval = sysfs_create_link(&disk_to_dev(disk)->kobj, &bdi->dev->kobj,
				   "bdi");
	if (!retval) {
		retval = sysfs_create_link(&disk_to_dev(disk)->kobj,
				&bdi->dev->kobj, "bdi");
		WARN_ON(retval);
	}

	disk_add_events(disk);
	blk_integrity_add(disk);