Commit 407e9ef7 authored by Arnd Bergmann's avatar Arnd Bergmann

compat_ioctl: move drivers to compat_ptr_ioctl

Each of these drivers has a copy of the same trivial helper function to
convert the pointer argument and then call the native ioctl handler.

We now have a generic implementation of that, so use it.
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
Acked-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Reviewed-by: default avatarJiri Kosina <jkosina@suse.cz>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 076ff658
...@@ -670,14 +670,6 @@ static long pp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -670,14 +670,6 @@ static long pp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
return ret; return ret;
} }
#ifdef CONFIG_COMPAT
static long pp_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
return pp_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
}
#endif
static int pp_open(struct inode *inode, struct file *file) static int pp_open(struct inode *inode, struct file *file)
{ {
unsigned int minor = iminor(inode); unsigned int minor = iminor(inode);
...@@ -786,9 +778,7 @@ static const struct file_operations pp_fops = { ...@@ -786,9 +778,7 @@ static const struct file_operations pp_fops = {
.write = pp_write, .write = pp_write,
.poll = pp_poll, .poll = pp_poll,
.unlocked_ioctl = pp_ioctl, .unlocked_ioctl = pp_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = pp_compat_ioctl,
#endif
.open = pp_open, .open = pp_open,
.release = pp_release, .release = pp_release,
}; };
......
...@@ -670,20 +670,10 @@ static long vtpmx_fops_ioctl(struct file *f, unsigned int ioctl, ...@@ -670,20 +670,10 @@ static long vtpmx_fops_ioctl(struct file *f, unsigned int ioctl,
} }
} }
#ifdef CONFIG_COMPAT
static long vtpmx_fops_compat_ioctl(struct file *f, unsigned int ioctl,
unsigned long arg)
{
return vtpmx_fops_ioctl(f, ioctl, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations vtpmx_fops = { static const struct file_operations vtpmx_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.unlocked_ioctl = vtpmx_fops_ioctl, .unlocked_ioctl = vtpmx_fops_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vtpmx_fops_compat_ioctl,
#endif
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -1646,14 +1646,6 @@ static long fw_device_op_ioctl(struct file *file, ...@@ -1646,14 +1646,6 @@ static long fw_device_op_ioctl(struct file *file,
return dispatch_ioctl(file->private_data, cmd, (void __user *)arg); return dispatch_ioctl(file->private_data, cmd, (void __user *)arg);
} }
#ifdef CONFIG_COMPAT
static long fw_device_op_compat_ioctl(struct file *file,
unsigned int cmd, unsigned long arg)
{
return dispatch_ioctl(file->private_data, cmd, compat_ptr(arg));
}
#endif
static int fw_device_op_mmap(struct file *file, struct vm_area_struct *vma) static int fw_device_op_mmap(struct file *file, struct vm_area_struct *vma)
{ {
struct client *client = file->private_data; struct client *client = file->private_data;
...@@ -1795,7 +1787,5 @@ const struct file_operations fw_device_ops = { ...@@ -1795,7 +1787,5 @@ const struct file_operations fw_device_ops = {
.mmap = fw_device_op_mmap, .mmap = fw_device_op_mmap,
.release = fw_device_op_release, .release = fw_device_op_release,
.poll = fw_device_op_poll, .poll = fw_device_op_poll,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = fw_device_op_compat_ioctl,
#endif
}; };
...@@ -854,13 +854,6 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -854,13 +854,6 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
return r; return r;
} }
#ifdef CONFIG_COMPAT
static long hiddev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
return hiddev_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations hiddev_fops = { static const struct file_operations hiddev_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.read = hiddev_read, .read = hiddev_read,
...@@ -870,9 +863,7 @@ static const struct file_operations hiddev_fops = { ...@@ -870,9 +863,7 @@ static const struct file_operations hiddev_fops = {
.release = hiddev_release, .release = hiddev_release,
.unlocked_ioctl = hiddev_ioctl, .unlocked_ioctl = hiddev_ioctl,
.fasync = hiddev_fasync, .fasync = hiddev_fasync,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = hiddev_compat_ioctl,
#endif
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -832,23 +832,13 @@ stm_char_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -832,23 +832,13 @@ stm_char_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
return err; return err;
} }
#ifdef CONFIG_COMPAT
static long
stm_char_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
return stm_char_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
}
#else
#define stm_char_compat_ioctl NULL
#endif
static const struct file_operations stm_fops = { static const struct file_operations stm_fops = {
.open = stm_char_open, .open = stm_char_open,
.release = stm_char_release, .release = stm_char_release,
.write = stm_char_write, .write = stm_char_write,
.mmap = stm_char_mmap, .mmap = stm_char_mmap,
.unlocked_ioctl = stm_char_ioctl, .unlocked_ioctl = stm_char_ioctl,
.compat_ioctl = stm_char_compat_ioctl, .compat_ioctl = compat_ptr_ioctl,
.llseek = no_llseek, .llseek = no_llseek,
}; };
......
...@@ -532,24 +532,6 @@ static long mei_ioctl(struct file *file, unsigned int cmd, unsigned long data) ...@@ -532,24 +532,6 @@ static long mei_ioctl(struct file *file, unsigned int cmd, unsigned long data)
return rets; return rets;
} }
/**
* mei_compat_ioctl - the compat IOCTL function
*
* @file: pointer to file structure
* @cmd: ioctl command
* @data: pointer to mei message structure
*
* Return: 0 on success , <0 on error
*/
#ifdef CONFIG_COMPAT
static long mei_compat_ioctl(struct file *file,
unsigned int cmd, unsigned long data)
{
return mei_ioctl(file, cmd, (unsigned long)compat_ptr(data));
}
#endif
/** /**
* mei_poll - the poll function * mei_poll - the poll function
* *
...@@ -898,9 +880,7 @@ static const struct file_operations mei_fops = { ...@@ -898,9 +880,7 @@ static const struct file_operations mei_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.read = mei_read, .read = mei_read,
.unlocked_ioctl = mei_ioctl, .unlocked_ioctl = mei_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = mei_compat_ioctl,
#endif
.open = mei_open, .open = mei_open,
.release = mei_release, .release = mei_release,
.write = mei_write, .write = mei_write,
......
...@@ -1078,36 +1078,6 @@ static long ctrl_cdev_ioctl(struct file *file, unsigned int cmd, ...@@ -1078,36 +1078,6 @@ static long ctrl_cdev_ioctl(struct file *file, unsigned int cmd,
return err; return err;
} }
#ifdef CONFIG_COMPAT
static long vol_cdev_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
unsigned long translated_arg = (unsigned long)compat_ptr(arg);
return vol_cdev_ioctl(file, cmd, translated_arg);
}
static long ubi_cdev_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
unsigned long translated_arg = (unsigned long)compat_ptr(arg);
return ubi_cdev_ioctl(file, cmd, translated_arg);
}
static long ctrl_cdev_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
unsigned long translated_arg = (unsigned long)compat_ptr(arg);
return ctrl_cdev_ioctl(file, cmd, translated_arg);
}
#else
#define vol_cdev_compat_ioctl NULL
#define ubi_cdev_compat_ioctl NULL
#define ctrl_cdev_compat_ioctl NULL
#endif
/* UBI volume character device operations */ /* UBI volume character device operations */
const struct file_operations ubi_vol_cdev_operations = { const struct file_operations ubi_vol_cdev_operations = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -1118,7 +1088,7 @@ const struct file_operations ubi_vol_cdev_operations = { ...@@ -1118,7 +1088,7 @@ const struct file_operations ubi_vol_cdev_operations = {
.write = vol_cdev_write, .write = vol_cdev_write,
.fsync = vol_cdev_fsync, .fsync = vol_cdev_fsync,
.unlocked_ioctl = vol_cdev_ioctl, .unlocked_ioctl = vol_cdev_ioctl,
.compat_ioctl = vol_cdev_compat_ioctl, .compat_ioctl = compat_ptr_ioctl,
}; };
/* UBI character device operations */ /* UBI character device operations */
...@@ -1126,13 +1096,13 @@ const struct file_operations ubi_cdev_operations = { ...@@ -1126,13 +1096,13 @@ const struct file_operations ubi_cdev_operations = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.llseek = no_llseek, .llseek = no_llseek,
.unlocked_ioctl = ubi_cdev_ioctl, .unlocked_ioctl = ubi_cdev_ioctl,
.compat_ioctl = ubi_cdev_compat_ioctl, .compat_ioctl = compat_ptr_ioctl,
}; };
/* UBI control character device operations */ /* UBI control character device operations */
const struct file_operations ubi_ctrl_cdev_operations = { const struct file_operations ubi_ctrl_cdev_operations = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.unlocked_ioctl = ctrl_cdev_ioctl, .unlocked_ioctl = ctrl_cdev_ioctl,
.compat_ioctl = ctrl_cdev_compat_ioctl, .compat_ioctl = compat_ptr_ioctl,
.llseek = no_llseek, .llseek = no_llseek,
}; };
...@@ -1123,14 +1123,6 @@ static long tap_ioctl(struct file *file, unsigned int cmd, ...@@ -1123,14 +1123,6 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
} }
} }
#ifdef CONFIG_COMPAT
static long tap_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
return tap_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations tap_fops = { static const struct file_operations tap_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = tap_open, .open = tap_open,
...@@ -1140,9 +1132,7 @@ static const struct file_operations tap_fops = { ...@@ -1140,9 +1132,7 @@ static const struct file_operations tap_fops = {
.poll = tap_poll, .poll = tap_poll,
.llseek = no_llseek, .llseek = no_llseek,
.unlocked_ioctl = tap_ioctl, .unlocked_ioctl = tap_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = tap_compat_ioctl,
#endif
}; };
static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp) static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp)
......
...@@ -928,16 +928,6 @@ pi433_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -928,16 +928,6 @@ pi433_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
return 0; return 0;
} }
#ifdef CONFIG_COMPAT
static long
pi433_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
return pi433_ioctl(filp, cmd, (unsigned long)compat_ptr(arg));
}
#else
#define pi433_compat_ioctl NULL
#endif /* CONFIG_COMPAT */
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
static int pi433_open(struct inode *inode, struct file *filp) static int pi433_open(struct inode *inode, struct file *filp)
...@@ -1094,7 +1084,7 @@ static const struct file_operations pi433_fops = { ...@@ -1094,7 +1084,7 @@ static const struct file_operations pi433_fops = {
.write = pi433_write, .write = pi433_write,
.read = pi433_read, .read = pi433_read,
.unlocked_ioctl = pi433_ioctl, .unlocked_ioctl = pi433_ioctl,
.compat_ioctl = pi433_compat_ioctl, .compat_ioctl = compat_ptr_ioctl,
.open = pi433_open, .open = pi433_open,
.release = pi433_release, .release = pi433_release,
.llseek = no_llseek, .llseek = no_llseek,
......
...@@ -2685,18 +2685,6 @@ static long usbdev_ioctl(struct file *file, unsigned int cmd, ...@@ -2685,18 +2685,6 @@ static long usbdev_ioctl(struct file *file, unsigned int cmd,
return ret; return ret;
} }
#ifdef CONFIG_COMPAT
static long usbdev_compat_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{
int ret;
ret = usbdev_do_ioctl(file, cmd, compat_ptr(arg));
return ret;
}
#endif
/* No kernel lock - fine */ /* No kernel lock - fine */
static __poll_t usbdev_poll(struct file *file, static __poll_t usbdev_poll(struct file *file,
struct poll_table_struct *wait) struct poll_table_struct *wait)
...@@ -2720,9 +2708,7 @@ const struct file_operations usbdev_file_operations = { ...@@ -2720,9 +2708,7 @@ const struct file_operations usbdev_file_operations = {
.read = usbdev_read, .read = usbdev_read,
.poll = usbdev_poll, .poll = usbdev_poll,
.unlocked_ioctl = usbdev_ioctl, .unlocked_ioctl = usbdev_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = usbdev_compat_ioctl,
#endif
.mmap = usbdev_mmap, .mmap = usbdev_mmap,
.open = usbdev_open, .open = usbdev_open,
.release = usbdev_release, .release = usbdev_release,
......
...@@ -1184,15 +1184,6 @@ static long vfio_fops_unl_ioctl(struct file *filep, ...@@ -1184,15 +1184,6 @@ static long vfio_fops_unl_ioctl(struct file *filep,
return ret; return ret;
} }
#ifdef CONFIG_COMPAT
static long vfio_fops_compat_ioctl(struct file *filep,
unsigned int cmd, unsigned long arg)
{
arg = (unsigned long)compat_ptr(arg);
return vfio_fops_unl_ioctl(filep, cmd, arg);
}
#endif /* CONFIG_COMPAT */
static int vfio_fops_open(struct inode *inode, struct file *filep) static int vfio_fops_open(struct inode *inode, struct file *filep)
{ {
struct vfio_container *container; struct vfio_container *container;
...@@ -1275,9 +1266,7 @@ static const struct file_operations vfio_fops = { ...@@ -1275,9 +1266,7 @@ static const struct file_operations vfio_fops = {
.read = vfio_fops_read, .read = vfio_fops_read,
.write = vfio_fops_write, .write = vfio_fops_write,
.unlocked_ioctl = vfio_fops_unl_ioctl, .unlocked_ioctl = vfio_fops_unl_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vfio_fops_compat_ioctl,
#endif
.mmap = vfio_fops_mmap, .mmap = vfio_fops_mmap,
}; };
...@@ -1556,15 +1545,6 @@ static long vfio_group_fops_unl_ioctl(struct file *filep, ...@@ -1556,15 +1545,6 @@ static long vfio_group_fops_unl_ioctl(struct file *filep,
return ret; return ret;
} }
#ifdef CONFIG_COMPAT
static long vfio_group_fops_compat_ioctl(struct file *filep,
unsigned int cmd, unsigned long arg)
{
arg = (unsigned long)compat_ptr(arg);
return vfio_group_fops_unl_ioctl(filep, cmd, arg);
}
#endif /* CONFIG_COMPAT */
static int vfio_group_fops_open(struct inode *inode, struct file *filep) static int vfio_group_fops_open(struct inode *inode, struct file *filep)
{ {
struct vfio_group *group; struct vfio_group *group;
...@@ -1620,9 +1600,7 @@ static int vfio_group_fops_release(struct inode *inode, struct file *filep) ...@@ -1620,9 +1600,7 @@ static int vfio_group_fops_release(struct inode *inode, struct file *filep)
static const struct file_operations vfio_group_fops = { static const struct file_operations vfio_group_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.unlocked_ioctl = vfio_group_fops_unl_ioctl, .unlocked_ioctl = vfio_group_fops_unl_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vfio_group_fops_compat_ioctl,
#endif
.open = vfio_group_fops_open, .open = vfio_group_fops_open,
.release = vfio_group_fops_release, .release = vfio_group_fops_release,
}; };
...@@ -1687,24 +1665,13 @@ static int vfio_device_fops_mmap(struct file *filep, struct vm_area_struct *vma) ...@@ -1687,24 +1665,13 @@ static int vfio_device_fops_mmap(struct file *filep, struct vm_area_struct *vma)
return device->ops->mmap(device->device_data, vma); return device->ops->mmap(device->device_data, vma);
} }
#ifdef CONFIG_COMPAT
static long vfio_device_fops_compat_ioctl(struct file *filep,
unsigned int cmd, unsigned long arg)
{
arg = (unsigned long)compat_ptr(arg);
return vfio_device_fops_unl_ioctl(filep, cmd, arg);
}
#endif /* CONFIG_COMPAT */
static const struct file_operations vfio_device_fops = { static const struct file_operations vfio_device_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = vfio_device_fops_release, .release = vfio_device_fops_release,
.read = vfio_device_fops_read, .read = vfio_device_fops_read,
.write = vfio_device_fops_write, .write = vfio_device_fops_write,
.unlocked_ioctl = vfio_device_fops_unl_ioctl, .unlocked_ioctl = vfio_device_fops_unl_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vfio_device_fops_compat_ioctl,
#endif
.mmap = vfio_device_fops_mmap, .mmap = vfio_device_fops_mmap,
}; };
......
...@@ -1751,14 +1751,6 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl, ...@@ -1751,14 +1751,6 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
} }
} }
#ifdef CONFIG_COMPAT
static long vhost_net_compat_ioctl(struct file *f, unsigned int ioctl,
unsigned long arg)
{
return vhost_net_ioctl(f, ioctl, (unsigned long)compat_ptr(arg));
}
#endif
static ssize_t vhost_net_chr_read_iter(struct kiocb *iocb, struct iov_iter *to) static ssize_t vhost_net_chr_read_iter(struct kiocb *iocb, struct iov_iter *to)
{ {
struct file *file = iocb->ki_filp; struct file *file = iocb->ki_filp;
...@@ -1794,9 +1786,7 @@ static const struct file_operations vhost_net_fops = { ...@@ -1794,9 +1786,7 @@ static const struct file_operations vhost_net_fops = {
.write_iter = vhost_net_chr_write_iter, .write_iter = vhost_net_chr_write_iter,
.poll = vhost_net_chr_poll, .poll = vhost_net_chr_poll,
.unlocked_ioctl = vhost_net_ioctl, .unlocked_ioctl = vhost_net_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vhost_net_compat_ioctl,
#endif
.open = vhost_net_open, .open = vhost_net_open,
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -1727,21 +1727,11 @@ vhost_scsi_ioctl(struct file *f, ...@@ -1727,21 +1727,11 @@ vhost_scsi_ioctl(struct file *f,
} }
} }
#ifdef CONFIG_COMPAT
static long vhost_scsi_compat_ioctl(struct file *f, unsigned int ioctl,
unsigned long arg)
{
return vhost_scsi_ioctl(f, ioctl, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations vhost_scsi_fops = { static const struct file_operations vhost_scsi_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = vhost_scsi_release, .release = vhost_scsi_release,
.unlocked_ioctl = vhost_scsi_ioctl, .unlocked_ioctl = vhost_scsi_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vhost_scsi_compat_ioctl,
#endif
.open = vhost_scsi_open, .open = vhost_scsi_open,
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -302,21 +302,11 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl, ...@@ -302,21 +302,11 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl,
} }
} }
#ifdef CONFIG_COMPAT
static long vhost_test_compat_ioctl(struct file *f, unsigned int ioctl,
unsigned long arg)
{
return vhost_test_ioctl(f, ioctl, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations vhost_test_fops = { static const struct file_operations vhost_test_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = vhost_test_release, .release = vhost_test_release,
.unlocked_ioctl = vhost_test_ioctl, .unlocked_ioctl = vhost_test_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vhost_test_compat_ioctl,
#endif
.open = vhost_test_open, .open = vhost_test_open,
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -761,23 +761,13 @@ static long vhost_vsock_dev_ioctl(struct file *f, unsigned int ioctl, ...@@ -761,23 +761,13 @@ static long vhost_vsock_dev_ioctl(struct file *f, unsigned int ioctl,
} }
} }
#ifdef CONFIG_COMPAT
static long vhost_vsock_dev_compat_ioctl(struct file *f, unsigned int ioctl,
unsigned long arg)
{
return vhost_vsock_dev_ioctl(f, ioctl, (unsigned long)compat_ptr(arg));
}
#endif
static const struct file_operations vhost_vsock_fops = { static const struct file_operations vhost_vsock_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = vhost_vsock_dev_open, .open = vhost_vsock_dev_open,
.release = vhost_vsock_dev_release, .release = vhost_vsock_dev_release,
.llseek = noop_llseek, .llseek = noop_llseek,
.unlocked_ioctl = vhost_vsock_dev_ioctl, .unlocked_ioctl = vhost_vsock_dev_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = vhost_vsock_dev_compat_ioctl,
#endif
}; };
static struct miscdevice vhost_vsock_misc = { static struct miscdevice vhost_vsock_misc = {
......
...@@ -172,15 +172,6 @@ long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -172,15 +172,6 @@ long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
} }
} }
#ifdef CONFIG_COMPAT
static long fat_generic_compat_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg)
{
return fat_generic_ioctl(filp, cmd, (unsigned long)compat_ptr(arg));
}
#endif
static int fat_file_release(struct inode *inode, struct file *filp) static int fat_file_release(struct inode *inode, struct file *filp)
{ {
if ((filp->f_mode & FMODE_WRITE) && if ((filp->f_mode & FMODE_WRITE) &&
...@@ -215,9 +206,7 @@ const struct file_operations fat_file_operations = { ...@@ -215,9 +206,7 @@ const struct file_operations fat_file_operations = {
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.release = fat_file_release, .release = fat_file_release,
.unlocked_ioctl = fat_generic_ioctl, .unlocked_ioctl = fat_generic_ioctl,
#ifdef CONFIG_COMPAT .compat_ioctl = compat_ptr_ioctl,
.compat_ioctl = fat_generic_compat_ioctl,
#endif
.fsync = fat_file_fsync, .fsync = fat_file_fsync,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
.splice_write = iter_file_splice_write, .splice_write = iter_file_splice_write,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment