xtensa/platforms/iss/simdisk: add error handling support for add_disk()
authorLuis Chamberlain <mcgrof@kernel.org>
Mon, 27 Sep 2021 22:01:01 +0000 (15:01 -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>
Acked-by: Max Filippov <jcmvbkbc@gmail.com>
Link: https://lore.kernel.org/r/20210927220110.1066271-7-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
arch/xtensa/platforms/iss/simdisk.c

index ddd1fe3..07b642c 100644 (file)
@@ -258,6 +258,7 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
                struct proc_dir_entry *procdir)
 {
        char tmp[2] = { '0' + which, 0 };
+       int err = -ENOMEM;
 
        dev->fd = -1;
        dev->filename = NULL;
@@ -266,7 +267,7 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
 
        dev->gd = blk_alloc_disk(NUMA_NO_NODE);
        if (!dev->gd)
-               return -ENOMEM;
+               goto out;
        dev->gd->major = simdisk_major;
        dev->gd->first_minor = which;
        dev->gd->minors = SIMDISK_MINORS;
@@ -274,10 +275,18 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
        dev->gd->private_data = dev;
        snprintf(dev->gd->disk_name, 32, "simdisk%d", which);
        set_capacity(dev->gd, 0);
-       add_disk(dev->gd);
+       err = add_disk(dev->gd);
+       if (err)
+               goto out_cleanup_disk;
 
        dev->procfile = proc_create_data(tmp, 0644, procdir, &simdisk_proc_ops, dev);
+
        return 0;
+
+out_cleanup_disk:
+       blk_cleanup_disk(dev->gd);
+out:
+       return err;
 }
 
 static int __init simdisk_init(void)