diff options
Diffstat (limited to 'drivers/ide/ide-cd.c')
-rw-r--r-- | drivers/ide/ide-cd.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index df13295189014..33a020faeabde 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c @@ -328,7 +328,8 @@ static DECLARE_MUTEX(idecd_ref_sem); #define to_ide_cd(obj) container_of(obj, struct cdrom_info, kref) -#define ide_cd_g(disk) ((disk)->private_data) +#define ide_cd_g(disk) \ + container_of((disk)->private_data, struct cdrom_info, driver) static struct cdrom_info *ide_cd_get(struct gendisk *disk) { @@ -3462,8 +3463,11 @@ static int ide_cdrom_attach (ide_drive_t *drive) kref_init(&info->kref); info->drive = drive; + info->driver = &ide_cdrom_driver; info->disk = g; + g->private_data = &info->driver; + drive->driver_data = info; DRIVER(drive)->busy++; @@ -3492,7 +3496,6 @@ static int ide_cdrom_attach (ide_drive_t *drive) cdrom_read_toc(drive, &sense); g->fops = &idecd_ops; - g->private_data = info; g->flags |= GENHD_FL_REMOVABLE; add_disk(g); return 0; |