block/brd: add error handling support for add_disk()
authorLuis Chamberlain <mcgrof@kernel.org>
Fri, 15 Oct 2021 23:52:07 +0000 (16:52 -0700)
committerJens Axboe <axboe@kernel.dk>
Sat, 30 Oct 2021 17:07:40 +0000 (11:07 -0600)
We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20211015235219.2191207-2-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/brd.c

index aa04727..a896ee1 100644 (file)
@@ -370,6 +370,7 @@ static int brd_alloc(int i)
        struct brd_device *brd;
        struct gendisk *disk;
        char buf[DISK_NAME_LEN];
+       int err = -ENOMEM;
 
        mutex_lock(&brd_devices_mutex);
        list_for_each_entry(brd, &brd_devices, brd_list) {
@@ -420,16 +421,20 @@ static int brd_alloc(int i)
        /* Tell the block layer that this is not a rotational device */
        blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
        blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
-       add_disk(disk);
+       err = add_disk(disk);
+       if (err)
+               goto out_cleanup_disk;
 
        return 0;
 
+out_cleanup_disk:
+       blk_cleanup_disk(disk);
 out_free_dev:
        mutex_lock(&brd_devices_mutex);
        list_del(&brd->brd_list);
        mutex_unlock(&brd_devices_mutex);
        kfree(brd);
-       return -ENOMEM;
+       return err;
 }
 
 static void brd_probe(dev_t dev)