diff options
author | Luis Chamberlain <mcgrof@kernel.org> | 2021-11-04 02:04:36 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-11-04 14:48:50 +0300 |
commit | ec28fcc6cfcd418d20038ad2c492e87bf3a9f026 (patch) | |
tree | 9d84b13468c6aac38d4a7546a7688af0503ea98b /drivers/block/floppy.c | |
parent | 46a7db492e7a27408bc164cbe6424683e79529b0 (diff) | |
download | linux-ec28fcc6cfcd418d20038ad2c492e87bf3a9f026.tar.xz |
floppy: address add_disk() error handling on probe
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>
Diffstat (limited to 'drivers/block/floppy.c')
-rw-r--r-- | drivers/block/floppy.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 3873e789478e..c4267da716fe 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -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); } |