]> err.no Git - linux-2.6/blobdiff - drivers/cdrom/cdrom.c
Merge git://oss.sgi.com:8090/xfs-2.6
[linux-2.6] / drivers / cdrom / cdrom.c
index d6653fc03b926e9816e916106b5f3b579f32b537..3170eaa250873bf5f0dae15b88aacf66d2a3ef1e 100644 (file)
@@ -407,7 +407,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
        ENSURE(get_mcn, CDC_MCN);
        ENSURE(reset, CDC_RESET);
        ENSURE(audio_ioctl, CDC_PLAY_AUDIO);
-       ENSURE(dev_ioctl, CDC_IOCTLS);
        ENSURE(generic_packet, CDC_GENERIC_PACKET);
        cdi->mc_flags = 0;
        cdo->n_minors = 0;
@@ -1010,9 +1009,9 @@ int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
                if (fp->f_mode & FMODE_WRITE) {
                        ret = -EROFS;
                        if (cdrom_open_write(cdi))
-                               goto err;
+                               goto err_release;
                        if (!CDROM_CAN(CDC_RAM))
-                               goto err;
+                               goto err_release;
                        ret = 0;
                        cdi->media_written = 0;
                }
@@ -1027,6 +1026,8 @@ int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
            not be mounting, but opening with O_NONBLOCK */
        check_disk_change(ip->i_bdev);
        return 0;
+err_release:
+       cdi->ops->release(cdi);
 err:
        cdi->use_count--;
        return ret;
@@ -2776,12 +2777,6 @@ int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
                return cdrom_ioctl_audioctl(cdi, cmd);
        }
 
-       /*
-        * Finally, do the device specific ioctls
-        */
-       if (CDROM_CAN(CDC_IOCTLS))
-               return cdi->ops->dev_ioctl(cdi, cmd, arg);
-
        return -ENOSYS;
 }