Skip to content

Commit fe7d064

Browse files
mcgrofaxboe
authored andcommitted
block: fix device_add_disk() kobject_create_and_add() error handling
Commit 83cbce9 ("block: add error handling for device_add_disk / add_disk") added error handling to device_add_disk(), however the goto label for the kobject_create_and_add() failure did not set the return value correctly, and so we can end up in a situation where kobject_create_and_add() fails but we report success. Fixes: 83cbce9 ("block: add error handling for device_add_disk / add_disk") Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Luis Chamberlain <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Link: https://lore.kernel.org/r/[email protected] [axboe: fold in followup fix from Wu Bo <[email protected]>] Signed-off-by: Jens Axboe <[email protected]>
1 parent 10c4787 commit fe7d064

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

block/genhd.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,11 +468,15 @@ int device_add_disk(struct device *parent, struct gendisk *disk,
468468

469469
disk->part0->bd_holder_dir =
470470
kobject_create_and_add("holders", &ddev->kobj);
471-
if (!disk->part0->bd_holder_dir)
471+
if (!disk->part0->bd_holder_dir) {
472+
ret = -ENOMEM;
472473
goto out_del_integrity;
474+
}
473475
disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj);
474-
if (!disk->slave_dir)
476+
if (!disk->slave_dir) {
477+
ret = -ENOMEM;
475478
goto out_put_holder_dir;
479+
}
476480

477481
ret = bd_register_pending_holders(disk);
478482
if (ret < 0)

0 commit comments

Comments
 (0)