diff options
Diffstat (limited to 'block/compat_ioctl.c')
-rw-r--r-- | block/compat_ioctl.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c index 1e559fba7bdf..576c4fd15463 100644 --- a/block/compat_ioctl.c +++ b/block/compat_ioctl.c | |||
@@ -708,17 +708,17 @@ static int compat_blkdev_driver_ioctl(struct inode *inode, struct file *file, | |||
708 | return -ENOIOCTLCMD; | 708 | return -ENOIOCTLCMD; |
709 | } | 709 | } |
710 | 710 | ||
711 | if (disk->fops->unlocked_ioctl) | 711 | if (disk->fops->__unlocked_ioctl) |
712 | return disk->fops->unlocked_ioctl(file, cmd, arg); | 712 | return disk->fops->__unlocked_ioctl(file, cmd, arg); |
713 | 713 | ||
714 | if (disk->fops->ioctl) { | 714 | if (disk->fops->__ioctl) { |
715 | lock_kernel(); | 715 | lock_kernel(); |
716 | ret = disk->fops->ioctl(inode, file, cmd, arg); | 716 | ret = disk->fops->__ioctl(inode, file, cmd, arg); |
717 | unlock_kernel(); | 717 | unlock_kernel(); |
718 | return ret; | 718 | return ret; |
719 | } | 719 | } |
720 | 720 | ||
721 | return -ENOTTY; | 721 | return __blkdev_driver_ioctl(inode->i_bdev, file->f_mode, cmd, arg); |
722 | } | 722 | } |
723 | 723 | ||
724 | static int compat_blkdev_locked_ioctl(struct inode *inode, struct file *file, | 724 | static int compat_blkdev_locked_ioctl(struct inode *inode, struct file *file, |
@@ -805,10 +805,11 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
805 | 805 | ||
806 | lock_kernel(); | 806 | lock_kernel(); |
807 | ret = compat_blkdev_locked_ioctl(inode, file, bdev, cmd, arg); | 807 | ret = compat_blkdev_locked_ioctl(inode, file, bdev, cmd, arg); |
808 | /* FIXME: why do we assume -> compat_ioctl needs the BKL? */ | 808 | if (ret == -ENOIOCTLCMD && disk->fops->__compat_ioctl) |
809 | if (ret == -ENOIOCTLCMD && disk->fops->compat_ioctl) | 809 | ret = disk->fops->__compat_ioctl(file, cmd, arg); |
810 | ret = disk->fops->compat_ioctl(file, cmd, arg); | ||
811 | unlock_kernel(); | 810 | unlock_kernel(); |
811 | if (ret == -ENOIOCTLCMD && disk->fops->compat_ioctl) | ||
812 | ret = disk->fops->compat_ioctl(bdev, file->f_mode, cmd, arg); | ||
812 | 813 | ||
813 | if (ret != -ENOIOCTLCMD) | 814 | if (ret != -ENOIOCTLCMD) |
814 | return ret; | 815 | return ret; |