Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d60e7ec1 authored by Herton Ronaldo Krzesinski's avatar Herton Ronaldo Krzesinski Committed by Jens Axboe
Browse files

floppy: properly handle failure on add_disk loop



On floppy initialization, if something failed inside the loop we call
add_disk, there was no cleanup of previous iterations in the error
handling.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarHerton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 238ab784
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -4292,7 +4292,7 @@ static int __init do_floppy_init(void)

		err = platform_device_register(&floppy_device[drive]);
		if (err)
			goto out_release_dma;
			goto out_remove_drives;

		err = device_create_file(&floppy_device[drive].dev,
					 &dev_attr_cmos);
@@ -4310,6 +4310,15 @@ static int __init do_floppy_init(void)

out_unreg_platform_dev:
	platform_device_unregister(&floppy_device[drive]);
out_remove_drives:
	while (drive--) {
		if ((allowed_drive_mask & (1 << drive)) &&
		    fdc_state[FDC(drive)].version != FDC_NONE) {
			del_gendisk(disks[drive]);
			device_remove_file(&floppy_device[drive].dev, &dev_attr_cmos);
			platform_device_unregister(&floppy_device[drive]);
		}
	}
out_release_dma:
	if (atomic_read(&usage_count))
		floppy_release_irq_and_dma();