scsi: sg: Consolidate compat ioctl handling
[linux-2.6-microblaze.git] / drivers / scsi / sg.c
index 91e2221..0a6655b 100644 (file)
@@ -1166,28 +1166,11 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
        if (ret != -ENOIOCTLCMD)
                return ret;
 
+       if (in_compat_syscall())
+               return scsi_compat_ioctl(sdp->device, cmd_in, p);
        return scsi_ioctl(sdp->device, cmd_in, p);
 }
 
-#ifdef CONFIG_COMPAT
-static long sg_compat_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
-{
-       void __user *p = compat_ptr(arg);
-       Sg_device *sdp;
-       Sg_fd *sfp;
-       int ret;
-
-       if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
-               return -ENXIO;
-
-       ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
-       if (ret != -ENOIOCTLCMD)
-               return ret;
-
-       return scsi_compat_ioctl(sdp->device, cmd_in, p);
-}
-#endif
-
 static __poll_t
 sg_poll(struct file *filp, poll_table * wait)
 {
@@ -1441,9 +1424,7 @@ static const struct file_operations sg_fops = {
        .write = sg_write,
        .poll = sg_poll,
        .unlocked_ioctl = sg_ioctl,
-#ifdef CONFIG_COMPAT
-       .compat_ioctl = sg_compat_ioctl,
-#endif
+       .compat_ioctl = compat_ptr_ioctl,
        .open = sg_open,
        .mmap = sg_mmap,
        .release = sg_release,