ide-cd: use ide_cd_release() in ide_cd_probe()
PATCH 3/63 ide-cd: use ide_cd_release() in ide_cd_probe()
Use ide_cd_release() to do the cleanup if ide_cdrom_setup() fails.
It fixes:
- the default drive->dsc_overlap value not being restored
- the default drive->queue's prep_rq_fn not being restored
- struct gendisk 'g' not being freed
- wrong function name being reported on unregister_cdrom() error
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
---
-164 bytes
drivers/ide/ide-cd.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
drivers/ide/ide-cd.c +0 -6
@@ -3501,15 +3501,8 @@ static int ide_cd_probe(ide_drive_t *dri g->driverfs_dev = &drive->gendev; g->flags =GENHD_FL_CD |GENHD_FL_REMOVABLE ;if (ide_cdrom_setup (drive)) { - struct cdrom_device_info *devinfo = &info->devinfo;ide_proc_unregister_driver (drive, &ide_cdrom_driver); - kfree(info->buffer); - kfree(info->toc); - kfree(info->changer_info); - if (devinfo->handle == drive && unregister_cdrom(devinfo)) - printk (KERN_ERR "%s: ide_cdrom_cleanup failed to unregister device from the cdrom
driver.\n", drive->name);
- kfree(info);
- drive->driver_data = NULL;
+ ide_cd_release(&info->kref);
goto failed;
}