floppy: address add_disk() error handling on probe
authorLuis Chamberlain <mcgrof@kernel.org>
Wed, 3 Nov 2021 23:04:36 +0000 (16:04 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 4 Nov 2021 11:48:50 +0000 (05:48 -0600)
We need to cleanup resources on the probe() callback registered
with __register_blkdev(), now that add_disk() error handling is
supported. Address this.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20211103230437.1639990-14-mcgrof@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/floppy.c

index 3873e789478e0b9f73930d1c6bac8306f881ff93..c4267da716fe621d3be21c23641a54532d6e6d10 100644 (file)
@@ -4528,10 +4528,19 @@ static void floppy_probe(dev_t dev)
                return;
 
        mutex_lock(&floppy_probe_lock);
-       if (!disks[drive][type]) {
-               if (floppy_alloc_disk(drive, type) == 0)
-                       add_disk(disks[drive][type]);
-       }
+       if (disks[drive][type])
+               goto out;
+       if (floppy_alloc_disk(drive, type))
+               goto out;
+       if (add_disk(disks[drive][type]))
+               goto cleanup_disk;
+out:
+       mutex_unlock(&floppy_probe_lock);
+       return;
+
+cleanup_disk:
+       blk_cleanup_disk(disks[drive][type]);
+       disks[drive][type] = NULL;
        mutex_unlock(&floppy_probe_lock);
 }