rbd: add add_disk() error handling
authorLuis Chamberlain <mcgrof@kernel.org>
Mon, 27 Sep 2021 22:02:28 +0000 (15:02 -0700)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Oct 2021 20:41:37 +0000 (14:41 -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>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/rbd.c

index bf60aebd0cfbe7606cbd79f068a107d7c909fc9b..953fa134cd3db78cff006ce37931fd6a089fe8ba 100644 (file)
@@ -7054,7 +7054,9 @@ static ssize_t do_rbd_add(struct bus_type *bus,
        if (rc)
                goto err_out_image_lock;
 
-       device_add_disk(&rbd_dev->dev, rbd_dev->disk, NULL);
+       rc = device_add_disk(&rbd_dev->dev, rbd_dev->disk, NULL);
+       if (rc)
+               goto err_out_cleanup_disk;
 
        spin_lock(&rbd_dev_list_lock);
        list_add_tail(&rbd_dev->node, &rbd_dev_list);
@@ -7068,6 +7070,8 @@ out:
        module_put(THIS_MODULE);
        return rc;
 
+err_out_cleanup_disk:
+       rbd_free_disk(rbd_dev);
 err_out_image_lock:
        rbd_dev_image_unlock(rbd_dev);
        rbd_dev_device_release(rbd_dev);