diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c index 170dd193cef6..de8c3785899a 100644 --- a/drivers/block/ataflop.c +++ b/drivers/block/ataflop.c @@ -2018,12 +2018,18 @@ static void ataflop_probe(dev_t dev) if (drive >= FD_MAX_UNITS || type >= NUM_DISK_MINORS) return; - if (!unit[drive].disk[type]) { - if (ataflop_alloc_disk(drive, type) == 0) { - add_disk(unit[drive].disk[type]); - unit[drive].registered[type] = true; - } - } + if (unit[drive].disk[type]) + return + if (ataflop_alloc_disk(drive, type)) + return; + if (add_disk(unit[drive].disk[type])) + goto cleanup_disk; + unit[drive].registered[type] = true; + return; + +cleanup_disk: + blk_cleanup_disk(unit[drive].disk[type]); + unit[drive].disk[type] = NULL; } static void atari_floppy_cleanup(void)