From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1636E2112B1D3 for ; Wed, 12 Sep 2018 08:11:54 -0700 (PDT) From: Arnd Bergmann Subject: [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Date: Wed, 12 Sep 2018 17:08:52 +0200 Message-Id: <20180912151134.436719-1-arnd@arndb.de> In-Reply-To: <20180912150142.157913-1-arnd@arndb.de> References: <20180912150142.157913-1-arnd@arndb.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: viro@zeniv.linux.org.uk Cc: linux-fbdev@vger.kernel.org, linux-iio@vger.kernel.org, linux-pci@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-nvme@lists.infradead.org, platform-driver-x86@vger.kernel.org, sparclinux@vger.kernel.org, devel@driverdev.osuosl.org, linux-scsi@vger.kernel.org, linux-nvdimm@lists.01.org, linux-rdma@vger.kernel.org, qat-linux@intel.com, amd-gfx@lists.freedesktop.org, linux-input@vger.kernel.org, linux-media@vger.kernel.org, Arnd Bergmann , linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org, ceph-devel@vger.kernel.org, Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org, netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "David S. Miller" , linux-btrfs@vger.kernel.org List-ID: The .ioctl and .compat_ioctl file operations have the same prototype so they can both point to the same function, which works great almost all the time when all the commands are compatible. One exception is the s390 architecture, where a compat pointer is only 31 bit wide, and converting it into a 64-bit pointer requires calling compat_ptr(). Most drivers here will ever run in s390, but since we now have a generic helper for it, it's easy enough to use it consistently. I double-checked all these drivers to ensure that all ioctl arguments are used as pointers or are ignored, but are not interpreted as integer values. Signed-off-by: Arnd Bergmann --- drivers/android/binder.c | 2 +- drivers/crypto/qat/qat_common/adf_ctl_drv.c | 2 +- drivers/dma-buf/dma-buf.c | 4 +--- drivers/dma-buf/sw_sync.c | 2 +- drivers/dma-buf/sync_file.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/hid/hidraw.c | 4 +--- drivers/iio/industrialio-core.c | 2 +- drivers/infiniband/core/uverbs_main.c | 4 ++-- drivers/media/rc/lirc_dev.c | 4 +--- drivers/mfd/cros_ec_dev.c | 4 +--- drivers/misc/vmw_vmci/vmci_host.c | 2 +- drivers/nvdimm/bus.c | 4 ++-- drivers/nvme/host/core.c | 2 +- drivers/pci/switch/switchtec.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/rpmsg/rpmsg_char.c | 4 ++-- drivers/sbus/char/display7seg.c | 2 +- drivers/sbus/char/envctrl.c | 4 +--- drivers/scsi/3w-xxxx.c | 4 +--- drivers/scsi/cxlflash/main.c | 2 +- drivers/scsi/esas2r/esas2r_main.c | 2 +- drivers/scsi/pmcraid.c | 4 +--- drivers/staging/android/ion/ion.c | 4 +--- drivers/staging/vme/devices/vme_user.c | 2 +- drivers/tee/tee_core.c | 2 +- drivers/usb/class/cdc-wdm.c | 2 +- drivers/usb/class/usbtmc.c | 4 +--- drivers/video/fbdev/ps3fb.c | 2 +- drivers/virt/fsl_hypervisor.c | 2 +- fs/btrfs/super.c | 2 +- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 2 +- fs/fuse/dev.c | 2 +- fs/notify/fanotify/fanotify_user.c | 2 +- fs/userfaultfd.c | 2 +- net/rfkill/core.c | 2 +- 37 files changed, 40 insertions(+), 58 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index d58763b6b009..d2464f5759f8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -5576,7 +5576,7 @@ static const struct file_operations binder_fops = { .owner = THIS_MODULE, .poll = binder_poll, .unlocked_ioctl = binder_ioctl, - .compat_ioctl = binder_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = binder_mmap, .open = binder_open, .flush = binder_flush, diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c index abc7a7f64d64..8ff77a70addc 100644 --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c @@ -68,7 +68,7 @@ static long adf_ctl_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); static const struct file_operations adf_ctl_ops = { .owner = THIS_MODULE, .unlocked_ioctl = adf_ctl_ioctl, - .compat_ioctl = adf_ctl_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; struct adf_ctl_drv_info { diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 13884474d158..a6d7dc4cf7e9 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -325,9 +325,7 @@ static const struct file_operations dma_buf_fops = { .llseek = dma_buf_llseek, .poll = dma_buf_poll, .unlocked_ioctl = dma_buf_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = dma_buf_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /* diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 53c1d6d36a64..bc810506d487 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -419,5 +419,5 @@ const struct file_operations sw_sync_debugfs_fops = { .open = sw_sync_debugfs_open, .release = sw_sync_debugfs_release, .unlocked_ioctl = sw_sync_ioctl, - .compat_ioctl = sw_sync_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 35dd06479867..1c64ed60c658 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -488,5 +488,5 @@ static const struct file_operations sync_file_fops = { .release = sync_file_release, .poll = sync_file_poll, .unlocked_ioctl = sync_file_ioctl, - .compat_ioctl = sync_file_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 297b36c26a05..1d7b1e3c3ebe 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -47,7 +47,7 @@ static const char kfd_dev_name[] = "kfd"; static const struct file_operations kfd_fops = { .owner = THIS_MODULE, .unlocked_ioctl = kfd_ioctl, - .compat_ioctl = kfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = kfd_open, .mmap = kfd_mmap, }; diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 4a44e48e08b2..e44b64812850 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -476,9 +476,7 @@ static const struct file_operations hidraw_ops = { .release = hidraw_release, .unlocked_ioctl = hidraw_ioctl, .fasync = hidraw_fasync, -#ifdef CONFIG_COMPAT - .compat_ioctl = hidraw_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index a062cfddc5af..22844b94b0e9 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1630,7 +1630,7 @@ static const struct file_operations iio_buffer_fileops = { .owner = THIS_MODULE, .llseek = noop_llseek, .unlocked_ioctl = iio_ioctl, - .compat_ioctl = iio_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int iio_check_unique_scan_index(struct iio_dev *indio_dev) diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 823beca448e1..f4755c1c9cfa 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -930,7 +930,7 @@ static const struct file_operations uverbs_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct file_operations uverbs_mmap_fops = { @@ -941,7 +941,7 @@ static const struct file_operations uverbs_mmap_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct ib_client uverbs_client = { diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index f862f1b7f996..077209f414ed 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -730,9 +730,7 @@ static const struct file_operations lirc_fops = { .owner = THIS_MODULE, .write = ir_lirc_transmit_ir, .unlocked_ioctl = ir_lirc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ir_lirc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .read = ir_lirc_read, .poll = ir_lirc_poll, .open = ir_lirc_open, diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 999dac752bcc..35a04bcf55da 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -258,9 +258,7 @@ static const struct file_operations fops = { .release = ec_device_release, .read = ec_device_read, .unlocked_ioctl = ec_device_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ec_device_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void cros_ec_sensors_register(struct cros_ec_dev *ec) diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c index 83e0c95d20a4..1308f889e53b 100644 --- a/drivers/misc/vmw_vmci/vmci_host.c +++ b/drivers/misc/vmw_vmci/vmci_host.c @@ -983,7 +983,7 @@ static const struct file_operations vmuser_fops = { .release = vmci_host_close, .poll = vmci_host_poll, .unlocked_ioctl = vmci_host_unlocked_ioctl, - .compat_ioctl = vmci_host_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice vmci_host_miscdev = { diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 8aae6dcc839f..7449cbc55df7 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -1133,7 +1133,7 @@ static const struct file_operations nvdimm_bus_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nd_ioctl, - .compat_ioctl = nd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; @@ -1141,7 +1141,7 @@ static const struct file_operations nvdimm_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nvdimm_ioctl, - .compat_ioctl = nvdimm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index dd8ec1dd9219..2d986f573a29 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2579,7 +2579,7 @@ static const struct file_operations nvme_dev_fops = { .owner = THIS_MODULE, .open = nvme_dev_open, .unlocked_ioctl = nvme_dev_ioctl, - .compat_ioctl = nvme_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t nvme_sysfs_reset(struct device *dev, diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 9940cc70f38b..4296919c784e 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -967,7 +967,7 @@ static const struct file_operations switchtec_fops = { .read = switchtec_dev_read, .poll = switchtec_dev_poll, .unlocked_ioctl = switchtec_dev_ioctl, - .compat_ioctl = switchtec_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void link_event_work(struct work_struct *work) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 04791ea5d97b..e4d0697e07d6 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -886,7 +886,7 @@ static const struct file_operations wmi_fops = { .read = wmi_char_read, .open = wmi_char_open, .unlocked_ioctl = wmi_ioctl, - .compat_ioctl = wmi_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int wmi_dev_probe(struct device *dev) diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a76b963a7e50..02aefb2b2d47 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -285,7 +285,7 @@ static const struct file_operations rpmsg_eptdev_fops = { .write = rpmsg_eptdev_write, .poll = rpmsg_eptdev_poll, .unlocked_ioctl = rpmsg_eptdev_ioctl, - .compat_ioctl = rpmsg_eptdev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t name_show(struct device *dev, struct device_attribute *attr, @@ -446,7 +446,7 @@ static const struct file_operations rpmsg_ctrldev_fops = { .open = rpmsg_ctrldev_open, .release = rpmsg_ctrldev_release, .unlocked_ioctl = rpmsg_ctrldev_ioctl, - .compat_ioctl = rpmsg_ctrldev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void rpmsg_ctrldev_release_device(struct device *dev) diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index 5c8ed7350a04..064fe7247eb2 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c @@ -155,7 +155,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static const struct file_operations d7s_fops = { .owner = THIS_MODULE, .unlocked_ioctl = d7s_ioctl, - .compat_ioctl = d7s_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = d7s_open, .release = d7s_release, .llseek = noop_llseek, diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index 56e962a01493..a26665ccea56 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -714,9 +714,7 @@ static const struct file_operations envctrl_fops = { .owner = THIS_MODULE, .read = envctrl_read, .unlocked_ioctl = envctrl_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = envctrl_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = envctrl_open, .release = envctrl_release, .llseek = noop_llseek, diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 471366945bd4..86c9f22a152f 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c @@ -1047,9 +1047,7 @@ static int tw_chrdev_open(struct inode *inode, struct file *file) static const struct file_operations tw_fops = { .owner = THIS_MODULE, .unlocked_ioctl = tw_chrdev_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = tw_chrdev_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = tw_chrdev_open, .release = NULL, .llseek = noop_llseek, diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 6637116529aa..d968efeb50e8 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -3596,7 +3596,7 @@ static const struct file_operations cxlflash_chr_fops = { .owner = THIS_MODULE, .open = cxlflash_chr_open, .unlocked_ioctl = cxlflash_chr_ioctl, - .compat_ioctl = cxlflash_chr_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /** diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c index c07118617d89..95142292e702 100644 --- a/drivers/scsi/esas2r/esas2r_main.c +++ b/drivers/scsi/esas2r/esas2r_main.c @@ -614,7 +614,7 @@ static int __init esas2r_init(void) /* Handle ioctl calls to "/proc/scsi/esas2r/ATTOnode" */ static const struct file_operations esas2r_proc_fops = { - .compat_ioctl = esas2r_proc_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .unlocked_ioctl = esas2r_proc_ioctl, }; diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 4e86994e10e8..8a8c73d3bdad 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -3999,9 +3999,7 @@ static const struct file_operations pmcraid_fops = { .open = pmcraid_chr_open, .fasync = pmcraid_chr_fasync, .unlocked_ioctl = pmcraid_chr_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = pmcraid_chr_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 99073325b0c0..ef727c235392 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -484,9 +484,7 @@ int ion_query_heaps(struct ion_heap_query *query) static const struct file_operations ion_fops = { .owner = THIS_MODULE, .unlocked_ioctl = ion_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ion_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int debug_shrink_set(void *data, u64 val) diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c index 6a33aaa1a49f..568700ffd2f2 100644 --- a/drivers/staging/vme/devices/vme_user.c +++ b/drivers/staging/vme/devices/vme_user.c @@ -494,7 +494,7 @@ static const struct file_operations vme_user_fops = { .write = vme_user_write, .llseek = vme_user_llseek, .unlocked_ioctl = vme_user_unlocked_ioctl, - .compat_ioctl = vme_user_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = vme_user_mmap, }; diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index dd46b758852a..cb79f28be894 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -670,7 +670,7 @@ static const struct file_operations tee_fops = { .open = tee_open, .release = tee_release, .unlocked_ioctl = tee_ioctl, - .compat_ioctl = tee_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void tee_release_device(struct device *dev) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index bec581fb7c63..6e4998c8e64f 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -724,7 +724,7 @@ static const struct file_operations wdm_fops = { .release = wdm_release, .poll = wdm_poll, .unlocked_ioctl = wdm_ioctl, - .compat_ioctl = wdm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 83ffa5a14c3d..d5da47c4c462 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -1460,9 +1460,7 @@ static const struct file_operations fops = { .open = usbtmc_open, .release = usbtmc_release, .unlocked_ioctl = usbtmc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = usbtmc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .fasync = usbtmc_fasync, .poll = usbtmc_poll, .llseek = default_llseek, diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c index 5ed2db39d823..f9f8ffaf1c4a 100644 --- a/drivers/video/fbdev/ps3fb.c +++ b/drivers/video/fbdev/ps3fb.c @@ -949,7 +949,7 @@ static struct fb_ops ps3fb_ops = { .fb_mmap = ps3fb_mmap, .fb_blank = ps3fb_blank, .fb_ioctl = ps3fb_ioctl, - .fb_compat_ioctl = ps3fb_ioctl + .fb_compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct fb_fix_screeninfo ps3fb_fix = { diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index 8ba726e600e9..406b7e492214 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c @@ -703,7 +703,7 @@ static const struct file_operations fsl_hv_fops = { .poll = fsl_hv_poll, .read = fsl_hv_read, .unlocked_ioctl = fsl_hv_ioctl, - .compat_ioctl = fsl_hv_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice fsl_hv_misc_dev = { diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 6601c9aa5e35..2b5a8ad86305 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2352,7 +2352,7 @@ static const struct super_operations btrfs_super_ops = { static const struct file_operations btrfs_ctl_fops = { .open = btrfs_control_open, .unlocked_ioctl = btrfs_control_ioctl, - .compat_ioctl = btrfs_control_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .owner = THIS_MODULE, .llseek = noop_llseek, }; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index da73f29d7faa..eb869fe6774d 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1489,7 +1489,7 @@ const struct file_operations ceph_dir_fops = { .open = ceph_open, .release = ceph_release, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fsync = ceph_fsync, .lock = ceph_lock, .flock = ceph_flock, diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 92ab20433682..85094042cfac 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1842,7 +1842,7 @@ const struct file_operations ceph_file_fops = { .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fallocate = ceph_fallocate, }; diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 11ea2c4a38ab..a6d4a24963ed 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -2258,7 +2258,7 @@ const struct file_operations fuse_dev_operations = { .release = fuse_dev_release, .fasync = fuse_dev_fasync, .unlocked_ioctl = fuse_dev_ioctl, - .compat_ioctl = fuse_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; EXPORT_SYMBOL_GPL(fuse_dev_operations); diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 69054886915b..fc4193b384cf 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -447,7 +447,7 @@ static const struct file_operations fanotify_fops = { .fasync = NULL, .release = fanotify_release, .unlocked_ioctl = fanotify_ioctl, - .compat_ioctl = fanotify_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index bfa0ec69f924..bc9118b58a8a 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1878,7 +1878,7 @@ static const struct file_operations userfaultfd_fops = { .poll = userfaultfd_poll, .read = userfaultfd_read, .unlocked_ioctl = userfaultfd_ioctl, - .compat_ioctl = userfaultfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 1355f5ca8d22..ba68b53f58ab 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c @@ -1323,7 +1323,7 @@ static const struct file_operations rfkill_fops = { .release = rfkill_fop_release, #ifdef CONFIG_RFKILL_INPUT .unlocked_ioctl = rfkill_fop_ioctl, - .compat_ioctl = rfkill_fop_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, #endif .llseek = no_llseek, }; -- 2.18.0 _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Arnd Bergmann Subject: [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Date: Wed, 12 Sep 2018 17:08:52 +0200 Message-Id: <20180912151134.436719-1-arnd@arndb.de> In-Reply-To: <20180912150142.157913-1-arnd@arndb.de> References: <20180912150142.157913-1-arnd@arndb.de> Sender: netdev-owner@vger.kernel.org To: viro@zeniv.linux.org.uk Cc: linux-fsdevel@vger.kernel.org, Arnd Bergmann , Greg Kroah-Hartman , "David S. Miller" , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, qat-linux@intel.com, linux-crypto@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, amd-gfx@lists.freedesktop.org, linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-rdma@vger.kernel.org, linux-nvdimm@lists.01.org, linux-nvme@lists.infradead.org, linux-pci@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-remoteproc@vger.kernel.org, sparclinux@vger.kernel.org, linux-scsi@vger.kernel.org, linux-usb@vger.kernel.org, linux-fbdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org List-ID: The .ioctl and .compat_ioctl file operations have the same prototype so they can both point to the same function, which works great almost all the time when all the commands are compatible. One exception is the s390 architecture, where a compat pointer is only 31 bit wide, and converting it into a 64-bit pointer requires calling compat_ptr(). Most drivers here will ever run in s390, but since we now have a generic helper for it, it's easy enough to use it consistently. I double-checked all these drivers to ensure that all ioctl arguments are used as pointers or are ignored, but are not interpreted as integer values. Signed-off-by: Arnd Bergmann --- drivers/android/binder.c | 2 +- drivers/crypto/qat/qat_common/adf_ctl_drv.c | 2 +- drivers/dma-buf/dma-buf.c | 4 +--- drivers/dma-buf/sw_sync.c | 2 +- drivers/dma-buf/sync_file.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/hid/hidraw.c | 4 +--- drivers/iio/industrialio-core.c | 2 +- drivers/infiniband/core/uverbs_main.c | 4 ++-- drivers/media/rc/lirc_dev.c | 4 +--- drivers/mfd/cros_ec_dev.c | 4 +--- drivers/misc/vmw_vmci/vmci_host.c | 2 +- drivers/nvdimm/bus.c | 4 ++-- drivers/nvme/host/core.c | 2 +- drivers/pci/switch/switchtec.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/rpmsg/rpmsg_char.c | 4 ++-- drivers/sbus/char/display7seg.c | 2 +- drivers/sbus/char/envctrl.c | 4 +--- drivers/scsi/3w-xxxx.c | 4 +--- drivers/scsi/cxlflash/main.c | 2 +- drivers/scsi/esas2r/esas2r_main.c | 2 +- drivers/scsi/pmcraid.c | 4 +--- drivers/staging/android/ion/ion.c | 4 +--- drivers/staging/vme/devices/vme_user.c | 2 +- drivers/tee/tee_core.c | 2 +- drivers/usb/class/cdc-wdm.c | 2 +- drivers/usb/class/usbtmc.c | 4 +--- drivers/video/fbdev/ps3fb.c | 2 +- drivers/virt/fsl_hypervisor.c | 2 +- fs/btrfs/super.c | 2 +- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 2 +- fs/fuse/dev.c | 2 +- fs/notify/fanotify/fanotify_user.c | 2 +- fs/userfaultfd.c | 2 +- net/rfkill/core.c | 2 +- 37 files changed, 40 insertions(+), 58 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index d58763b6b009..d2464f5759f8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -5576,7 +5576,7 @@ static const struct file_operations binder_fops = { .owner = THIS_MODULE, .poll = binder_poll, .unlocked_ioctl = binder_ioctl, - .compat_ioctl = binder_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = binder_mmap, .open = binder_open, .flush = binder_flush, diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c index abc7a7f64d64..8ff77a70addc 100644 --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c @@ -68,7 +68,7 @@ static long adf_ctl_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); static const struct file_operations adf_ctl_ops = { .owner = THIS_MODULE, .unlocked_ioctl = adf_ctl_ioctl, - .compat_ioctl = adf_ctl_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; struct adf_ctl_drv_info { diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 13884474d158..a6d7dc4cf7e9 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -325,9 +325,7 @@ static const struct file_operations dma_buf_fops = { .llseek = dma_buf_llseek, .poll = dma_buf_poll, .unlocked_ioctl = dma_buf_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = dma_buf_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /* diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 53c1d6d36a64..bc810506d487 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -419,5 +419,5 @@ const struct file_operations sw_sync_debugfs_fops = { .open = sw_sync_debugfs_open, .release = sw_sync_debugfs_release, .unlocked_ioctl = sw_sync_ioctl, - .compat_ioctl = sw_sync_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 35dd06479867..1c64ed60c658 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -488,5 +488,5 @@ static const struct file_operations sync_file_fops = { .release = sync_file_release, .poll = sync_file_poll, .unlocked_ioctl = sync_file_ioctl, - .compat_ioctl = sync_file_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 297b36c26a05..1d7b1e3c3ebe 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -47,7 +47,7 @@ static const char kfd_dev_name[] = "kfd"; static const struct file_operations kfd_fops = { .owner = THIS_MODULE, .unlocked_ioctl = kfd_ioctl, - .compat_ioctl = kfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = kfd_open, .mmap = kfd_mmap, }; diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 4a44e48e08b2..e44b64812850 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -476,9 +476,7 @@ static const struct file_operations hidraw_ops = { .release = hidraw_release, .unlocked_ioctl = hidraw_ioctl, .fasync = hidraw_fasync, -#ifdef CONFIG_COMPAT - .compat_ioctl = hidraw_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index a062cfddc5af..22844b94b0e9 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1630,7 +1630,7 @@ static const struct file_operations iio_buffer_fileops = { .owner = THIS_MODULE, .llseek = noop_llseek, .unlocked_ioctl = iio_ioctl, - .compat_ioctl = iio_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int iio_check_unique_scan_index(struct iio_dev *indio_dev) diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 823beca448e1..f4755c1c9cfa 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -930,7 +930,7 @@ static const struct file_operations uverbs_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct file_operations uverbs_mmap_fops = { @@ -941,7 +941,7 @@ static const struct file_operations uverbs_mmap_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct ib_client uverbs_client = { diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index f862f1b7f996..077209f414ed 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -730,9 +730,7 @@ static const struct file_operations lirc_fops = { .owner = THIS_MODULE, .write = ir_lirc_transmit_ir, .unlocked_ioctl = ir_lirc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ir_lirc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .read = ir_lirc_read, .poll = ir_lirc_poll, .open = ir_lirc_open, diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 999dac752bcc..35a04bcf55da 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -258,9 +258,7 @@ static const struct file_operations fops = { .release = ec_device_release, .read = ec_device_read, .unlocked_ioctl = ec_device_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ec_device_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void cros_ec_sensors_register(struct cros_ec_dev *ec) diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c index 83e0c95d20a4..1308f889e53b 100644 --- a/drivers/misc/vmw_vmci/vmci_host.c +++ b/drivers/misc/vmw_vmci/vmci_host.c @@ -983,7 +983,7 @@ static const struct file_operations vmuser_fops = { .release = vmci_host_close, .poll = vmci_host_poll, .unlocked_ioctl = vmci_host_unlocked_ioctl, - .compat_ioctl = vmci_host_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice vmci_host_miscdev = { diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 8aae6dcc839f..7449cbc55df7 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -1133,7 +1133,7 @@ static const struct file_operations nvdimm_bus_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nd_ioctl, - .compat_ioctl = nd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; @@ -1141,7 +1141,7 @@ static const struct file_operations nvdimm_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nvdimm_ioctl, - .compat_ioctl = nvdimm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index dd8ec1dd9219..2d986f573a29 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2579,7 +2579,7 @@ static const struct file_operations nvme_dev_fops = { .owner = THIS_MODULE, .open = nvme_dev_open, .unlocked_ioctl = nvme_dev_ioctl, - .compat_ioctl = nvme_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t nvme_sysfs_reset(struct device *dev, diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 9940cc70f38b..4296919c784e 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -967,7 +967,7 @@ static const struct file_operations switchtec_fops = { .read = switchtec_dev_read, .poll = switchtec_dev_poll, .unlocked_ioctl = switchtec_dev_ioctl, - .compat_ioctl = switchtec_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void link_event_work(struct work_struct *work) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 04791ea5d97b..e4d0697e07d6 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -886,7 +886,7 @@ static const struct file_operations wmi_fops = { .read = wmi_char_read, .open = wmi_char_open, .unlocked_ioctl = wmi_ioctl, - .compat_ioctl = wmi_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int wmi_dev_probe(struct device *dev) diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a76b963a7e50..02aefb2b2d47 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -285,7 +285,7 @@ static const struct file_operations rpmsg_eptdev_fops = { .write = rpmsg_eptdev_write, .poll = rpmsg_eptdev_poll, .unlocked_ioctl = rpmsg_eptdev_ioctl, - .compat_ioctl = rpmsg_eptdev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t name_show(struct device *dev, struct device_attribute *attr, @@ -446,7 +446,7 @@ static const struct file_operations rpmsg_ctrldev_fops = { .open = rpmsg_ctrldev_open, .release = rpmsg_ctrldev_release, .unlocked_ioctl = rpmsg_ctrldev_ioctl, - .compat_ioctl = rpmsg_ctrldev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void rpmsg_ctrldev_release_device(struct device *dev) diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index 5c8ed7350a04..064fe7247eb2 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c @@ -155,7 +155,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static const struct file_operations d7s_fops = { .owner = THIS_MODULE, .unlocked_ioctl = d7s_ioctl, - .compat_ioctl = d7s_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = d7s_open, .release = d7s_release, .llseek = noop_llseek, diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index 56e962a01493..a26665ccea56 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -714,9 +714,7 @@ static const struct file_operations envctrl_fops = { .owner = THIS_MODULE, .read = envctrl_read, .unlocked_ioctl = envctrl_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = envctrl_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = envctrl_open, .release = envctrl_release, .llseek = noop_llseek, diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 471366945bd4..86c9f22a152f 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c @@ -1047,9 +1047,7 @@ static int tw_chrdev_open(struct inode *inode, struct file *file) static const struct file_operations tw_fops = { .owner = THIS_MODULE, .unlocked_ioctl = tw_chrdev_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = tw_chrdev_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = tw_chrdev_open, .release = NULL, .llseek = noop_llseek, diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 6637116529aa..d968efeb50e8 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -3596,7 +3596,7 @@ static const struct file_operations cxlflash_chr_fops = { .owner = THIS_MODULE, .open = cxlflash_chr_open, .unlocked_ioctl = cxlflash_chr_ioctl, - .compat_ioctl = cxlflash_chr_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /** diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c index c07118617d89..95142292e702 100644 --- a/drivers/scsi/esas2r/esas2r_main.c +++ b/drivers/scsi/esas2r/esas2r_main.c @@ -614,7 +614,7 @@ static int __init esas2r_init(void) /* Handle ioctl calls to "/proc/scsi/esas2r/ATTOnode" */ static const struct file_operations esas2r_proc_fops = { - .compat_ioctl = esas2r_proc_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .unlocked_ioctl = esas2r_proc_ioctl, }; diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 4e86994e10e8..8a8c73d3bdad 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -3999,9 +3999,7 @@ static const struct file_operations pmcraid_fops = { .open = pmcraid_chr_open, .fasync = pmcraid_chr_fasync, .unlocked_ioctl = pmcraid_chr_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = pmcraid_chr_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 99073325b0c0..ef727c235392 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -484,9 +484,7 @@ int ion_query_heaps(struct ion_heap_query *query) static const struct file_operations ion_fops = { .owner = THIS_MODULE, .unlocked_ioctl = ion_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ion_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int debug_shrink_set(void *data, u64 val) diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c index 6a33aaa1a49f..568700ffd2f2 100644 --- a/drivers/staging/vme/devices/vme_user.c +++ b/drivers/staging/vme/devices/vme_user.c @@ -494,7 +494,7 @@ static const struct file_operations vme_user_fops = { .write = vme_user_write, .llseek = vme_user_llseek, .unlocked_ioctl = vme_user_unlocked_ioctl, - .compat_ioctl = vme_user_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = vme_user_mmap, }; diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index dd46b758852a..cb79f28be894 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -670,7 +670,7 @@ static const struct file_operations tee_fops = { .open = tee_open, .release = tee_release, .unlocked_ioctl = tee_ioctl, - .compat_ioctl = tee_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void tee_release_device(struct device *dev) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index bec581fb7c63..6e4998c8e64f 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -724,7 +724,7 @@ static const struct file_operations wdm_fops = { .release = wdm_release, .poll = wdm_poll, .unlocked_ioctl = wdm_ioctl, - .compat_ioctl = wdm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 83ffa5a14c3d..d5da47c4c462 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -1460,9 +1460,7 @@ static const struct file_operations fops = { .open = usbtmc_open, .release = usbtmc_release, .unlocked_ioctl = usbtmc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = usbtmc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .fasync = usbtmc_fasync, .poll = usbtmc_poll, .llseek = default_llseek, diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c index 5ed2db39d823..f9f8ffaf1c4a 100644 --- a/drivers/video/fbdev/ps3fb.c +++ b/drivers/video/fbdev/ps3fb.c @@ -949,7 +949,7 @@ static struct fb_ops ps3fb_ops = { .fb_mmap = ps3fb_mmap, .fb_blank = ps3fb_blank, .fb_ioctl = ps3fb_ioctl, - .fb_compat_ioctl = ps3fb_ioctl + .fb_compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct fb_fix_screeninfo ps3fb_fix = { diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index 8ba726e600e9..406b7e492214 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c @@ -703,7 +703,7 @@ static const struct file_operations fsl_hv_fops = { .poll = fsl_hv_poll, .read = fsl_hv_read, .unlocked_ioctl = fsl_hv_ioctl, - .compat_ioctl = fsl_hv_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice fsl_hv_misc_dev = { diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 6601c9aa5e35..2b5a8ad86305 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2352,7 +2352,7 @@ static const struct super_operations btrfs_super_ops = { static const struct file_operations btrfs_ctl_fops = { .open = btrfs_control_open, .unlocked_ioctl = btrfs_control_ioctl, - .compat_ioctl = btrfs_control_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .owner = THIS_MODULE, .llseek = noop_llseek, }; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index da73f29d7faa..eb869fe6774d 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1489,7 +1489,7 @@ const struct file_operations ceph_dir_fops = { .open = ceph_open, .release = ceph_release, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fsync = ceph_fsync, .lock = ceph_lock, .flock = ceph_flock, diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 92ab20433682..85094042cfac 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1842,7 +1842,7 @@ const struct file_operations ceph_file_fops = { .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fallocate = ceph_fallocate, }; diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 11ea2c4a38ab..a6d4a24963ed 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -2258,7 +2258,7 @@ const struct file_operations fuse_dev_operations = { .release = fuse_dev_release, .fasync = fuse_dev_fasync, .unlocked_ioctl = fuse_dev_ioctl, - .compat_ioctl = fuse_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; EXPORT_SYMBOL_GPL(fuse_dev_operations); diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 69054886915b..fc4193b384cf 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -447,7 +447,7 @@ static const struct file_operations fanotify_fops = { .fasync = NULL, .release = fanotify_release, .unlocked_ioctl = fanotify_ioctl, - .compat_ioctl = fanotify_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index bfa0ec69f924..bc9118b58a8a 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1878,7 +1878,7 @@ static const struct file_operations userfaultfd_fops = { .poll = userfaultfd_poll, .read = userfaultfd_read, .unlocked_ioctl = userfaultfd_ioctl, - .compat_ioctl = userfaultfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 1355f5ca8d22..ba68b53f58ab 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c @@ -1323,7 +1323,7 @@ static const struct file_operations rfkill_fops = { .release = rfkill_fop_release, #ifdef CONFIG_RFKILL_INPUT .unlocked_ioctl = rfkill_fop_ioctl, - .compat_ioctl = rfkill_fop_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, #endif .llseek = no_llseek, }; -- 2.18.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Date: Wed, 12 Sep 2018 17:08:52 +0200 Message-ID: <20180912151134.436719-1-arnd@arndb.de> References: <20180912150142.157913-1-arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-remoteproc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, platform-driver-x86-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sparclinux-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org, linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, qat-linux-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Arnd Bergmann , linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Greg Kroah-Hartman , linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, "David S. Miller" , linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org Return-path: In-Reply-To: <20180912150142.157913-1-arnd-r2nGTMty4D4@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-nvdimm-bounces-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org Sender: "Linux-nvdimm" List-Id: linux-crypto.vger.kernel.org The .ioctl and .compat_ioctl file operations have the same prototype so they can both point to the same function, which works great almost all the time when all the commands are compatible. One exception is the s390 architecture, where a compat pointer is only 31 bit wide, and converting it into a 64-bit pointer requires calling compat_ptr(). Most drivers here will ever run in s390, but since we now have a generic helper for it, it's easy enough to use it consistently. I double-checked all these drivers to ensure that all ioctl arguments are used as pointers or are ignored, but are not interpreted as integer values. Signed-off-by: Arnd Bergmann --- drivers/android/binder.c | 2 +- drivers/crypto/qat/qat_common/adf_ctl_drv.c | 2 +- drivers/dma-buf/dma-buf.c | 4 +--- drivers/dma-buf/sw_sync.c | 2 +- drivers/dma-buf/sync_file.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/hid/hidraw.c | 4 +--- drivers/iio/industrialio-core.c | 2 +- drivers/infiniband/core/uverbs_main.c | 4 ++-- drivers/media/rc/lirc_dev.c | 4 +--- drivers/mfd/cros_ec_dev.c | 4 +--- drivers/misc/vmw_vmci/vmci_host.c | 2 +- drivers/nvdimm/bus.c | 4 ++-- drivers/nvme/host/core.c | 2 +- drivers/pci/switch/switchtec.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/rpmsg/rpmsg_char.c | 4 ++-- drivers/sbus/char/display7seg.c | 2 +- drivers/sbus/char/envctrl.c | 4 +--- drivers/scsi/3w-xxxx.c | 4 +--- drivers/scsi/cxlflash/main.c | 2 +- drivers/scsi/esas2r/esas2r_main.c | 2 +- drivers/scsi/pmcraid.c | 4 +--- drivers/staging/android/ion/ion.c | 4 +--- drivers/staging/vme/devices/vme_user.c | 2 +- drivers/tee/tee_core.c | 2 +- drivers/usb/class/cdc-wdm.c | 2 +- drivers/usb/class/usbtmc.c | 4 +--- drivers/video/fbdev/ps3fb.c | 2 +- drivers/virt/fsl_hypervisor.c | 2 +- fs/btrfs/super.c | 2 +- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 2 +- fs/fuse/dev.c | 2 +- fs/notify/fanotify/fanotify_user.c | 2 +- fs/userfaultfd.c | 2 +- net/rfkill/core.c | 2 +- 37 files changed, 40 insertions(+), 58 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index d58763b6b009..d2464f5759f8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -5576,7 +5576,7 @@ static const struct file_operations binder_fops = { .owner = THIS_MODULE, .poll = binder_poll, .unlocked_ioctl = binder_ioctl, - .compat_ioctl = binder_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = binder_mmap, .open = binder_open, .flush = binder_flush, diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c index abc7a7f64d64..8ff77a70addc 100644 --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c @@ -68,7 +68,7 @@ static long adf_ctl_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); static const struct file_operations adf_ctl_ops = { .owner = THIS_MODULE, .unlocked_ioctl = adf_ctl_ioctl, - .compat_ioctl = adf_ctl_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; struct adf_ctl_drv_info { diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 13884474d158..a6d7dc4cf7e9 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -325,9 +325,7 @@ static const struct file_operations dma_buf_fops = { .llseek = dma_buf_llseek, .poll = dma_buf_poll, .unlocked_ioctl = dma_buf_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = dma_buf_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /* diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 53c1d6d36a64..bc810506d487 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -419,5 +419,5 @@ const struct file_operations sw_sync_debugfs_fops = { .open = sw_sync_debugfs_open, .release = sw_sync_debugfs_release, .unlocked_ioctl = sw_sync_ioctl, - .compat_ioctl = sw_sync_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 35dd06479867..1c64ed60c658 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -488,5 +488,5 @@ static const struct file_operations sync_file_fops = { .release = sync_file_release, .poll = sync_file_poll, .unlocked_ioctl = sync_file_ioctl, - .compat_ioctl = sync_file_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 297b36c26a05..1d7b1e3c3ebe 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -47,7 +47,7 @@ static const char kfd_dev_name[] = "kfd"; static const struct file_operations kfd_fops = { .owner = THIS_MODULE, .unlocked_ioctl = kfd_ioctl, - .compat_ioctl = kfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = kfd_open, .mmap = kfd_mmap, }; diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 4a44e48e08b2..e44b64812850 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -476,9 +476,7 @@ static const struct file_operations hidraw_ops = { .release = hidraw_release, .unlocked_ioctl = hidraw_ioctl, .fasync = hidraw_fasync, -#ifdef CONFIG_COMPAT - .compat_ioctl = hidraw_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index a062cfddc5af..22844b94b0e9 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1630,7 +1630,7 @@ static const struct file_operations iio_buffer_fileops = { .owner = THIS_MODULE, .llseek = noop_llseek, .unlocked_ioctl = iio_ioctl, - .compat_ioctl = iio_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int iio_check_unique_scan_index(struct iio_dev *indio_dev) diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 823beca448e1..f4755c1c9cfa 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -930,7 +930,7 @@ static const struct file_operations uverbs_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct file_operations uverbs_mmap_fops = { @@ -941,7 +941,7 @@ static const struct file_operations uverbs_mmap_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct ib_client uverbs_client = { diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index f862f1b7f996..077209f414ed 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -730,9 +730,7 @@ static const struct file_operations lirc_fops = { .owner = THIS_MODULE, .write = ir_lirc_transmit_ir, .unlocked_ioctl = ir_lirc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ir_lirc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .read = ir_lirc_read, .poll = ir_lirc_poll, .open = ir_lirc_open, diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 999dac752bcc..35a04bcf55da 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -258,9 +258,7 @@ static const struct file_operations fops = { .release = ec_device_release, .read = ec_device_read, .unlocked_ioctl = ec_device_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ec_device_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void cros_ec_sensors_register(struct cros_ec_dev *ec) diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c index 83e0c95d20a4..1308f889e53b 100644 --- a/drivers/misc/vmw_vmci/vmci_host.c +++ b/drivers/misc/vmw_vmci/vmci_host.c @@ -983,7 +983,7 @@ static const struct file_operations vmuser_fops = { .release = vmci_host_close, .poll = vmci_host_poll, .unlocked_ioctl = vmci_host_unlocked_ioctl, - .compat_ioctl = vmci_host_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice vmci_host_miscdev = { diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 8aae6dcc839f..7449cbc55df7 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -1133,7 +1133,7 @@ static const struct file_operations nvdimm_bus_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nd_ioctl, - .compat_ioctl = nd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; @@ -1141,7 +1141,7 @@ static const struct file_operations nvdimm_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nvdimm_ioctl, - .compat_ioctl = nvdimm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index dd8ec1dd9219..2d986f573a29 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2579,7 +2579,7 @@ static const struct file_operations nvme_dev_fops = { .owner = THIS_MODULE, .open = nvme_dev_open, .unlocked_ioctl = nvme_dev_ioctl, - .compat_ioctl = nvme_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t nvme_sysfs_reset(struct device *dev, diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 9940cc70f38b..4296919c784e 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -967,7 +967,7 @@ static const struct file_operations switchtec_fops = { .read = switchtec_dev_read, .poll = switchtec_dev_poll, .unlocked_ioctl = switchtec_dev_ioctl, - .compat_ioctl = switchtec_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void link_event_work(struct work_struct *work) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 04791ea5d97b..e4d0697e07d6 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -886,7 +886,7 @@ static const struct file_operations wmi_fops = { .read = wmi_char_read, .open = wmi_char_open, .unlocked_ioctl = wmi_ioctl, - .compat_ioctl = wmi_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int wmi_dev_probe(struct device *dev) diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a76b963a7e50..02aefb2b2d47 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -285,7 +285,7 @@ static const struct file_operations rpmsg_eptdev_fops = { .write = rpmsg_eptdev_write, .poll = rpmsg_eptdev_poll, .unlocked_ioctl = rpmsg_eptdev_ioctl, - .compat_ioctl = rpmsg_eptdev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t name_show(struct device *dev, struct device_attribute *attr, @@ -446,7 +446,7 @@ static const struct file_operations rpmsg_ctrldev_fops = { .open = rpmsg_ctrldev_open, .release = rpmsg_ctrldev_release, .unlocked_ioctl = rpmsg_ctrldev_ioctl, - .compat_ioctl = rpmsg_ctrldev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void rpmsg_ctrldev_release_device(struct device *dev) diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index 5c8ed7350a04..064fe7247eb2 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c @@ -155,7 +155,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static const struct file_operations d7s_fops = { .owner = THIS_MODULE, .unlocked_ioctl = d7s_ioctl, - .compat_ioctl = d7s_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = d7s_open, .release = d7s_release, .llseek = noop_llseek, diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index 56e962a01493..a26665ccea56 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -714,9 +714,7 @@ static const struct file_operations envctrl_fops = { .owner = THIS_MODULE, .read = envctrl_read, .unlocked_ioctl = envctrl_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = envctrl_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = envctrl_open, .release = envctrl_release, .llseek = noop_llseek, diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 471366945bd4..86c9f22a152f 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c @@ -1047,9 +1047,7 @@ static int tw_chrdev_open(struct inode *inode, struct file *file) static const struct file_operations tw_fops = { .owner = THIS_MODULE, .unlocked_ioctl = tw_chrdev_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = tw_chrdev_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = tw_chrdev_open, .release = NULL, .llseek = noop_llseek, diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 6637116529aa..d968efeb50e8 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -3596,7 +3596,7 @@ static const struct file_operations cxlflash_chr_fops = { .owner = THIS_MODULE, .open = cxlflash_chr_open, .unlocked_ioctl = cxlflash_chr_ioctl, - .compat_ioctl = cxlflash_chr_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /** diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c index c07118617d89..95142292e702 100644 --- a/drivers/scsi/esas2r/esas2r_main.c +++ b/drivers/scsi/esas2r/esas2r_main.c @@ -614,7 +614,7 @@ static int __init esas2r_init(void) /* Handle ioctl calls to "/proc/scsi/esas2r/ATTOnode" */ static const struct file_operations esas2r_proc_fops = { - .compat_ioctl = esas2r_proc_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .unlocked_ioctl = esas2r_proc_ioctl, }; diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 4e86994e10e8..8a8c73d3bdad 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -3999,9 +3999,7 @@ static const struct file_operations pmcraid_fops = { .open = pmcraid_chr_open, .fasync = pmcraid_chr_fasync, .unlocked_ioctl = pmcraid_chr_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = pmcraid_chr_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 99073325b0c0..ef727c235392 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -484,9 +484,7 @@ int ion_query_heaps(struct ion_heap_query *query) static const struct file_operations ion_fops = { .owner = THIS_MODULE, .unlocked_ioctl = ion_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ion_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int debug_shrink_set(void *data, u64 val) diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c index 6a33aaa1a49f..568700ffd2f2 100644 --- a/drivers/staging/vme/devices/vme_user.c +++ b/drivers/staging/vme/devices/vme_user.c @@ -494,7 +494,7 @@ static const struct file_operations vme_user_fops = { .write = vme_user_write, .llseek = vme_user_llseek, .unlocked_ioctl = vme_user_unlocked_ioctl, - .compat_ioctl = vme_user_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = vme_user_mmap, }; diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index dd46b758852a..cb79f28be894 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -670,7 +670,7 @@ static const struct file_operations tee_fops = { .open = tee_open, .release = tee_release, .unlocked_ioctl = tee_ioctl, - .compat_ioctl = tee_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void tee_release_device(struct device *dev) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index bec581fb7c63..6e4998c8e64f 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -724,7 +724,7 @@ static const struct file_operations wdm_fops = { .release = wdm_release, .poll = wdm_poll, .unlocked_ioctl = wdm_ioctl, - .compat_ioctl = wdm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 83ffa5a14c3d..d5da47c4c462 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -1460,9 +1460,7 @@ static const struct file_operations fops = { .open = usbtmc_open, .release = usbtmc_release, .unlocked_ioctl = usbtmc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = usbtmc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .fasync = usbtmc_fasync, .poll = usbtmc_poll, .llseek = default_llseek, diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c index 5ed2db39d823..f9f8ffaf1c4a 100644 --- a/drivers/video/fbdev/ps3fb.c +++ b/drivers/video/fbdev/ps3fb.c @@ -949,7 +949,7 @@ static struct fb_ops ps3fb_ops = { .fb_mmap = ps3fb_mmap, .fb_blank = ps3fb_blank, .fb_ioctl = ps3fb_ioctl, - .fb_compat_ioctl = ps3fb_ioctl + .fb_compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct fb_fix_screeninfo ps3fb_fix = { diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index 8ba726e600e9..406b7e492214 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c @@ -703,7 +703,7 @@ static const struct file_operations fsl_hv_fops = { .poll = fsl_hv_poll, .read = fsl_hv_read, .unlocked_ioctl = fsl_hv_ioctl, - .compat_ioctl = fsl_hv_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice fsl_hv_misc_dev = { diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 6601c9aa5e35..2b5a8ad86305 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2352,7 +2352,7 @@ static const struct super_operations btrfs_super_ops = { static const struct file_operations btrfs_ctl_fops = { .open = btrfs_control_open, .unlocked_ioctl = btrfs_control_ioctl, - .compat_ioctl = btrfs_control_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .owner = THIS_MODULE, .llseek = noop_llseek, }; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index da73f29d7faa..eb869fe6774d 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1489,7 +1489,7 @@ const struct file_operations ceph_dir_fops = { .open = ceph_open, .release = ceph_release, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fsync = ceph_fsync, .lock = ceph_lock, .flock = ceph_flock, diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 92ab20433682..85094042cfac 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1842,7 +1842,7 @@ const struct file_operations ceph_file_fops = { .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fallocate = ceph_fallocate, }; diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 11ea2c4a38ab..a6d4a24963ed 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -2258,7 +2258,7 @@ const struct file_operations fuse_dev_operations = { .release = fuse_dev_release, .fasync = fuse_dev_fasync, .unlocked_ioctl = fuse_dev_ioctl, - .compat_ioctl = fuse_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; EXPORT_SYMBOL_GPL(fuse_dev_operations); diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 69054886915b..fc4193b384cf 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -447,7 +447,7 @@ static const struct file_operations fanotify_fops = { .fasync = NULL, .release = fanotify_release, .unlocked_ioctl = fanotify_ioctl, - .compat_ioctl = fanotify_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index bfa0ec69f924..bc9118b58a8a 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1878,7 +1878,7 @@ static const struct file_operations userfaultfd_fops = { .poll = userfaultfd_poll, .read = userfaultfd_read, .unlocked_ioctl = userfaultfd_ioctl, - .compat_ioctl = userfaultfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 1355f5ca8d22..ba68b53f58ab 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c @@ -1323,7 +1323,7 @@ static const struct file_operations rfkill_fops = { .release = rfkill_fop_release, #ifdef CONFIG_RFKILL_INPUT .unlocked_ioctl = rfkill_fop_ioctl, - .compat_ioctl = rfkill_fop_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, #endif .llseek = no_llseek, }; -- 2.18.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg From: Arnd Bergmann Message-Id: <20180912151134.436719-1-arnd@arndb.de> Date: Wed, 12 Sep 2018 17:08:52 +0200 To: viro@zeniv.linux.org.uk Cc: linux-fsdevel@vger.kernel.org, Arnd Bergmann , Greg Kroah-Hartman , "David S. Miller" , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, qat-linux@intel.com, linux-crypto@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, amd-gfx@lists.freedesktop.org, linux-input@vger.kernel.org, linux-iio@vger.kernel.org, linux-rdma@vger.kernel.org, linux-nvdimm@lists.01.org, linux-nvme@lists.infradead.org, linux-pci@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-remoteproc@vger.kernel.org, sparclinux@vger.kernel.org, linux-scsi@vger.kernel.org, linux-usb@vger.kernel.org, linux-fbdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org List-ID: VGhlIC5pb2N0bCBhbmQgLmNvbXBhdF9pb2N0bCBmaWxlIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2Ft ZSBwcm90b3R5cGUgc28KdGhleSBjYW4gYm90aCBwb2ludCB0byB0aGUgc2FtZSBmdW5jdGlvbiwg d2hpY2ggd29ya3MgZ3JlYXQgYWxtb3N0IGFsbAp0aGUgdGltZSB3aGVuIGFsbCB0aGUgY29tbWFu ZHMgYXJlIGNvbXBhdGlibGUuCgpPbmUgZXhjZXB0aW9uIGlzIHRoZSBzMzkwIGFyY2hpdGVjdHVy ZSwgd2hlcmUgYSBjb21wYXQgcG9pbnRlciBpcyBvbmx5CjMxIGJpdCB3aWRlLCBhbmQgY29udmVy dGluZyBpdCBpbnRvIGEgNjQtYml0IHBvaW50ZXIgcmVxdWlyZXMgY2FsbGluZwpjb21wYXRfcHRy KCkuIE1vc3QgZHJpdmVycyBoZXJlIHdpbGwgZXZlciBydW4gaW4gczM5MCwgYnV0IHNpbmNlIHdl IG5vdwpoYXZlIGEgZ2VuZXJpYyBoZWxwZXIgZm9yIGl0LCBpdCdzIGVhc3kgZW5vdWdoIHRvIHVz ZSBpdCBjb25zaXN0ZW50bHkuCgpJIGRvdWJsZS1jaGVja2VkIGFsbCB0aGVzZSBkcml2ZXJzIHRv IGVuc3VyZSB0aGF0IGFsbCBpb2N0bCBhcmd1bWVudHMKYXJlIHVzZWQgYXMgcG9pbnRlcnMgb3Ig YXJlIGlnbm9yZWQsIGJ1dCBhcmUgbm90IGludGVycHJldGVkIGFzIGludGVnZXIKdmFsdWVzLgoK U2lnbmVkLW9mZi1ieTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KLS0tCiBkcml2ZXJz L2FuZHJvaWQvYmluZGVyLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9jcnlw dG8vcWF0L3FhdF9jb21tb24vYWRmX2N0bF9kcnYuYyB8IDIgKy0KIGRyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KIGRyaXZlcnMvZG1hLWJ1Zi9zd19z eW5jLmMgICAgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2RtYS1idWYvc3luY19maWxl LmMgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X2NoYXJkZXYuYyAgICB8IDIgKy0KIGRyaXZlcnMvaGlkL2hpZHJhdy5jICAgICAgICAgICAgICAg ICAgICAgICAgfCA0ICstLS0KIGRyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMgICAgICAg ICAgICAgfCAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jICAgICAg IHwgNCArKy0tCiBkcml2ZXJzL21lZGlhL3JjL2xpcmNfZGV2LmMgICAgICAgICAgICAgICAgIHwg NCArLS0tCiBkcml2ZXJzL21mZC9jcm9zX2VjX2Rldi5jICAgICAgICAgICAgICAgICAgIHwgNCAr LS0tCiBkcml2ZXJzL21pc2Mvdm13X3ZtY2kvdm1jaV9ob3N0LmMgICAgICAgICAgIHwgMiArLQog ZHJpdmVycy9udmRpbW0vYnVzLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQogZHJp dmVycy9udm1lL2hvc3QvY29yZS5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIGRyaXZlcnMv cGNpL3N3aXRjaC9zd2l0Y2h0ZWMuYyAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL3BsYXRm b3JtL3g4Ni93bWkuYyAgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9ycG1zZy9ycG1z Z19jaGFyLmMgICAgICAgICAgICAgICAgICB8IDQgKystLQogZHJpdmVycy9zYnVzL2NoYXIvZGlz cGxheTdzZWcuYyAgICAgICAgICAgICB8IDIgKy0KIGRyaXZlcnMvc2J1cy9jaGFyL2VudmN0cmwu YyAgICAgICAgICAgICAgICAgfCA0ICstLS0KIGRyaXZlcnMvc2NzaS8zdy14eHh4LmMgICAgICAg ICAgICAgICAgICAgICAgfCA0ICstLS0KIGRyaXZlcnMvc2NzaS9jeGxmbGFzaC9tYWluLmMgICAg ICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL3Njc2kvZXNhczJyL2VzYXMycl9tYWluLmMgICAg ICAgICAgIHwgMiArLQogZHJpdmVycy9zY3NpL3BtY3JhaWQuYyAgICAgICAgICAgICAgICAgICAg ICB8IDQgKy0tLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jICAgICAgICAgICB8 IDQgKy0tLQogZHJpdmVycy9zdGFnaW5nL3ZtZS9kZXZpY2VzL3ZtZV91c2VyLmMgICAgICB8IDIg Ky0KIGRyaXZlcnMvdGVlL3RlZV9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiBk cml2ZXJzL3VzYi9jbGFzcy9jZGMtd2RtLmMgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVy cy91c2IvY2xhc3MvdXNidG1jLmMgICAgICAgICAgICAgICAgICB8IDQgKy0tLQogZHJpdmVycy92 aWRlby9mYmRldi9wczNmYi5jICAgICAgICAgICAgICAgICB8IDIgKy0KIGRyaXZlcnMvdmlydC9m c2xfaHlwZXJ2aXNvci5jICAgICAgICAgICAgICAgfCAyICstCiBmcy9idHJmcy9zdXBlci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQogZnMvY2VwaC9kaXIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIGZzL2NlcGgvZmlsZS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyICstCiBmcy9mdXNlL2Rldi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMiArLQogZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYyAgICAg ICAgICB8IDIgKy0KIGZzL3VzZXJmYXVsdGZkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyICstCiBuZXQvcmZraWxsL2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAr LQogMzcgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jIGIvZHJpdmVycy9hbmRyb2lkL2Jp bmRlci5jCmluZGV4IGQ1ODc2M2I2YjAwOS4uZDI0NjRmNTc1OWY4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2FuZHJvaWQvYmluZGVyLmMKKysrIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jCkBAIC01 NTc2LDcgKzU1NzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBiaW5k ZXJfZm9wcyA9IHsKIAkub3duZXIgPSBUSElTX01PRFVMRSwKIAkucG9sbCA9IGJpbmRlcl9wb2xs LAogCS51bmxvY2tlZF9pb2N0bCA9IGJpbmRlcl9pb2N0bCwKLQkuY29tcGF0X2lvY3RsID0gYmlu ZGVyX2lvY3RsLAorCS5jb21wYXRfaW9jdGwgPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcs CiAJLm1tYXAgPSBiaW5kZXJfbW1hcCwKIAkub3BlbiA9IGJpbmRlcl9vcGVuLAogCS5mbHVzaCA9 IGJpbmRlcl9mbHVzaCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL3FhdC9xYXRfY29tbW9u L2FkZl9jdGxfZHJ2LmMgYi9kcml2ZXJzL2NyeXB0by9xYXQvcWF0X2NvbW1vbi9hZGZfY3RsX2Ry di5jCmluZGV4IGFiYzdhN2Y2NGQ2NC4uOGZmNzdhNzBhZGRjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2NyeXB0by9xYXQvcWF0X2NvbW1vbi9hZGZfY3RsX2Rydi5jCisrKyBiL2RyaXZlcnMvY3J5cHRv L3FhdC9xYXRfY29tbW9uL2FkZl9jdGxfZHJ2LmMKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGxv bmcgYWRmX2N0bF9pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJnKTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGFkZl9j dGxfb3BzID0gewogCS5vd25lciA9IFRISVNfTU9EVUxFLAogCS51bmxvY2tlZF9pb2N0bCA9IGFk Zl9jdGxfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bCA9IGFkZl9jdGxfaW9jdGwsCisJLmNvbXBhdF9p b2N0bCA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIH07CiAKIHN0cnVjdCBhZGZfY3Rs X2Rydl9pbmZvIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgYi9kcml2 ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCmluZGV4IDEzODg0NDc0ZDE1OC4uYTZkN2RjNGNmN2U5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtYnVmLmMKQEAgLTMyNSw5ICszMjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVf b3BlcmF0aW9ucyBkbWFfYnVmX2ZvcHMgPSB7CiAJLmxsc2VlawkJPSBkbWFfYnVmX2xsc2VlaywK IAkucG9sbAkJPSBkbWFfYnVmX3BvbGwsCiAJLnVubG9ja2VkX2lvY3RsCT0gZG1hX2J1Zl9pb2N0 bCwKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bAk9IGRtYV9idWZfaW9jdGws Ci0jZW5kaWYKKwkuY29tcGF0X2lvY3RsCT0gZ2VuZXJpY19jb21wYXRfaW9jdGxfcHRyYXJnLAog fTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMgYi9kcml2ZXJz L2RtYS1idWYvc3dfc3luYy5jCmluZGV4IDUzYzFkNmQzNmE2NC4uYmM4MTA1MDZkNDg3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9z d19zeW5jLmMKQEAgLTQxOSw1ICs0MTksNSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHN3X3N5bmNfZGVidWdmc19mb3BzID0gewogCS5vcGVuICAgICAgICAgICA9IHN3X3N5bmNfZGVi dWdmc19vcGVuLAogCS5yZWxlYXNlICAgICAgICA9IHN3X3N5bmNfZGVidWdmc19yZWxlYXNlLAog CS51bmxvY2tlZF9pb2N0bCA9IHN3X3N5bmNfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bAk9IHN3X3N5 bmNfaW9jdGwsCisJLmNvbXBhdF9pb2N0bAk9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywK IH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMgYi9kcml2ZXJzL2Rt YS1idWYvc3luY19maWxlLmMKaW5kZXggMzVkZDA2NDc5ODY3Li4xYzY0ZWQ2MGM2NTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9zeW5jX2ZpbGUuYworKysgYi9kcml2ZXJzL2RtYS1idWYv c3luY19maWxlLmMKQEAgLTQ4OCw1ICs0ODgsNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVf b3BlcmF0aW9ucyBzeW5jX2ZpbGVfZm9wcyA9IHsKIAkucmVsZWFzZSA9IHN5bmNfZmlsZV9yZWxl YXNlLAogCS5wb2xsID0gc3luY19maWxlX3BvbGwsCiAJLnVubG9ja2VkX2lvY3RsID0gc3luY19m aWxlX2lvY3RsLAotCS5jb21wYXRfaW9jdGwgPSBzeW5jX2ZpbGVfaW9jdGwsCisJLmNvbXBhdF9p b2N0bCA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIH07CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwppbmRleCAyOTdiMzZjMjZhMDUuLjFkN2IxZTNjM2ViZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jCkBAIC00Nyw3ICs0Nyw3 IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtmZF9kZXZfbmFtZVtdID0gImtmZCI7CiBzdGF0aWMgY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBrZmRfZm9wcyA9IHsKIAkub3duZXIgPSBUSElTX01P RFVMRSwKIAkudW5sb2NrZWRfaW9jdGwgPSBrZmRfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bCA9IGtm ZF9pb2N0bCwKKwkuY29tcGF0X2lvY3RsID0gZ2VuZXJpY19jb21wYXRfaW9jdGxfcHRyYXJnLAog CS5vcGVuID0ga2ZkX29wZW4sCiAJLm1tYXAgPSBrZmRfbW1hcCwKIH07CmRpZmYgLS1naXQgYS9k cml2ZXJzL2hpZC9oaWRyYXcuYyBiL2RyaXZlcnMvaGlkL2hpZHJhdy5jCmluZGV4IDRhNDRlNDhl MDhiMi4uZTQ0YjY0ODEyODUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWRyYXcuYworKysg Yi9kcml2ZXJzL2hpZC9oaWRyYXcuYwpAQCAtNDc2LDkgKzQ3Niw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhpZHJhd19vcHMgPSB7CiAJLnJlbGVhc2UgPSAgICAgIGhp ZHJhd19yZWxlYXNlLAogCS51bmxvY2tlZF9pb2N0bCA9IGhpZHJhd19pb2N0bCwKIAkuZmFzeW5j ID0JaGlkcmF3X2Zhc3luYywKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bCAg ID0gaGlkcmF3X2lvY3RsLAotI2VuZGlmCisJLmNvbXBhdF9pb2N0bCAgID0gZ2VuZXJpY19jb21w YXRfaW9jdGxfcHRyYXJnLAogCS5sbHNlZWsgPQlub29wX2xsc2VlaywKIH07CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMgYi9kcml2ZXJzL2lpby9pbmR1c3Ry aWFsaW8tY29yZS5jCmluZGV4IGEwNjJjZmRkYzVhZi4uMjI4NDRiOTRiMGU5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCisrKyBiL2RyaXZlcnMvaWlvL2luZHVz dHJpYWxpby1jb3JlLmMKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmlsZV9vcGVyYXRpb25zIGlpb19idWZmZXJfZmlsZW9wcyA9IHsKIAkub3duZXIgPSBUSElTX01P RFVMRSwKIAkubGxzZWVrID0gbm9vcF9sbHNlZWssCiAJLnVubG9ja2VkX2lvY3RsID0gaWlvX2lv Y3RsLAotCS5jb21wYXRfaW9jdGwgPSBpaW9faW9jdGwsCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVy aWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIH07CiAKIHN0YXRpYyBpbnQgaWlvX2NoZWNrX3VuaXF1 ZV9zY2FuX2luZGV4KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2Nv cmUvdXZlcmJzX21haW4uYwppbmRleCA4MjNiZWNhNDQ4ZTEuLmY0NzU1YzFjOWNmYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYworKysgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jCkBAIC05MzAsNyArOTMwLDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdXZlcmJzX2ZvcHMgPSB7CiAJLnJlbGVhc2Ug PSBpYl91dmVyYnNfY2xvc2UsCiAJLmxsc2VlawkgPSBub19sbHNlZWssCiAJLnVubG9ja2VkX2lv Y3RsID0gaWJfdXZlcmJzX2lvY3RsLAotCS5jb21wYXRfaW9jdGwgPSBpYl91dmVyYnNfaW9jdGws CisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHV2ZXJic19tbWFwX2ZvcHMgPSB7CkBA IC05NDEsNyArOTQxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdXZl cmJzX21tYXBfZm9wcyA9IHsKIAkucmVsZWFzZSA9IGliX3V2ZXJic19jbG9zZSwKIAkubGxzZWVr CSA9IG5vX2xsc2VlaywKIAkudW5sb2NrZWRfaW9jdGwgPSBpYl91dmVyYnNfaW9jdGwsCi0JLmNv bXBhdF9pb2N0bCA9IGliX3V2ZXJic19pb2N0bCwKKwkuY29tcGF0X2lvY3RsID0gZ2VuZXJpY19j b21wYXRfaW9jdGxfcHRyYXJnLAogfTsKIAogc3RhdGljIHN0cnVjdCBpYl9jbGllbnQgdXZlcmJz X2NsaWVudCA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvbGlyY19kZXYuYyBiL2Ry aXZlcnMvbWVkaWEvcmMvbGlyY19kZXYuYwppbmRleCBmODYyZjFiN2Y5OTYuLjA3NzIwOWY0MTRl ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9saXJjX2Rldi5jCisrKyBiL2RyaXZlcnMv bWVkaWEvcmMvbGlyY19kZXYuYwpAQCAtNzMwLDkgKzczMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGxpcmNfZm9wcyA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUs CiAJLndyaXRlCQk9IGlyX2xpcmNfdHJhbnNtaXRfaXIsCiAJLnVubG9ja2VkX2lvY3RsCT0gaXJf bGlyY19pb2N0bCwKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bAk9IGlyX2xp cmNfaW9jdGwsCi0jZW5kaWYKKwkuY29tcGF0X2lvY3RsCT0gZ2VuZXJpY19jb21wYXRfaW9jdGxf cHRyYXJnLAogCS5yZWFkCQk9IGlyX2xpcmNfcmVhZCwKIAkucG9sbAkJPSBpcl9saXJjX3BvbGws CiAJLm9wZW4JCT0gaXJfbGlyY19vcGVuLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvY3Jvc19l Y19kZXYuYyBiL2RyaXZlcnMvbWZkL2Nyb3NfZWNfZGV2LmMKaW5kZXggOTk5ZGFjNzUyYmNjLi4z NWEwNGJjZjU1ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWZkL2Nyb3NfZWNfZGV2LmMKKysrIGIv ZHJpdmVycy9tZmQvY3Jvc19lY19kZXYuYwpAQCAtMjU4LDkgKzI1OCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7CiAJLnJlbGVhc2UgPSBlY19kZXZpY2Vf cmVsZWFzZSwKIAkucmVhZCA9IGVjX2RldmljZV9yZWFkLAogCS51bmxvY2tlZF9pb2N0bCA9IGVj X2RldmljZV9pb2N0bCwKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bCA9IGVj X2RldmljZV9pb2N0bCwKLSNlbmRpZgorCS5jb21wYXRfaW9jdGwgPSBnZW5lcmljX2NvbXBhdF9p b2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgdm9pZCBjcm9zX2VjX3NlbnNvcnNfcmVnaXN0ZXIo c3RydWN0IGNyb3NfZWNfZGV2ICplYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy92bXdfdm1j aS92bWNpX2hvc3QuYyBiL2RyaXZlcnMvbWlzYy92bXdfdm1jaS92bWNpX2hvc3QuYwppbmRleCA4 M2UwYzk1ZDIwYTQuLjEzMDhmODg5ZTUzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL3Ztd192 bWNpL3ZtY2lfaG9zdC5jCisrKyBiL2RyaXZlcnMvbWlzYy92bXdfdm1jaS92bWNpX2hvc3QuYwpA QCAtOTgzLDcgKzk4Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZt dXNlcl9mb3BzID0gewogCS5yZWxlYXNlCT0gdm1jaV9ob3N0X2Nsb3NlLAogCS5wb2xsCQk9IHZt Y2lfaG9zdF9wb2xsLAogCS51bmxvY2tlZF9pb2N0bAk9IHZtY2lfaG9zdF91bmxvY2tlZF9pb2N0 bCwKLQkuY29tcGF0X2lvY3RsCT0gdm1jaV9ob3N0X3VubG9ja2VkX2lvY3RsLAorCS5jb21wYXRf aW9jdGwJPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgc3RydWN0 IG1pc2NkZXZpY2Ugdm1jaV9ob3N0X21pc2NkZXYgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL252 ZGltbS9idXMuYyBiL2RyaXZlcnMvbnZkaW1tL2J1cy5jCmluZGV4IDhhYWU2ZGNjODM5Zi4uNzQ0 OWNiYzU1ZGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9idXMuYworKysgYi9kcml2ZXJz L252ZGltbS9idXMuYwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgbnZkaW1tX2J1c19mb3BzID0gewogCS5vd25lciA9IFRISVNfTU9EVUxF LAogCS5vcGVuID0gbmRfb3BlbiwKIAkudW5sb2NrZWRfaW9jdGwgPSBuZF9pb2N0bCwKLQkuY29t cGF0X2lvY3RsID0gbmRfaW9jdGwsCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0X2lv Y3RsX3B0cmFyZywKIAkubGxzZWVrID0gbm9vcF9sbHNlZWssCiB9OwogCkBAIC0xMTQxLDcgKzEx NDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudmRpbW1fZm9wcyA9 IHsKIAkub3duZXIgPSBUSElTX01PRFVMRSwKIAkub3BlbiA9IG5kX29wZW4sCiAJLnVubG9ja2Vk X2lvY3RsID0gbnZkaW1tX2lvY3RsLAotCS5jb21wYXRfaW9jdGwgPSBudmRpbW1faW9jdGwsCisJ LmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIAkubGxzZWVrID0g bm9vcF9sbHNlZWssCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMg Yi9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMKaW5kZXggZGQ4ZWMxZGQ5MjE5Li4yZDk4NmY1NzNh MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYworKysgYi9kcml2ZXJzL252 bWUvaG9zdC9jb3JlLmMKQEAgLTI1NzksNyArMjU3OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmlsZV9vcGVyYXRpb25zIG52bWVfZGV2X2ZvcHMgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxF LAogCS5vcGVuCQk9IG52bWVfZGV2X29wZW4sCiAJLnVubG9ja2VkX2lvY3RsCT0gbnZtZV9kZXZf aW9jdGwsCi0JLmNvbXBhdF9pb2N0bAk9IG52bWVfZGV2X2lvY3RsLAorCS5jb21wYXRfaW9jdGwJ PSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgc3NpemVfdCBudm1l X3N5c2ZzX3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L3N3aXRjaC9zd2l0Y2h0ZWMuYyBiL2RyaXZlcnMvcGNpL3N3aXRjaC9zd2l0Y2h0ZWMuYwppbmRl eCA5OTQwY2M3MGYzOGIuLjQyOTY5MTljNzg0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc3dp dGNoL3N3aXRjaHRlYy5jCisrKyBiL2RyaXZlcnMvcGNpL3N3aXRjaC9zd2l0Y2h0ZWMuYwpAQCAt OTY3LDcgKzk2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHN3aXRj aHRlY19mb3BzID0gewogCS5yZWFkID0gc3dpdGNodGVjX2Rldl9yZWFkLAogCS5wb2xsID0gc3dp dGNodGVjX2Rldl9wb2xsLAogCS51bmxvY2tlZF9pb2N0bCA9IHN3aXRjaHRlY19kZXZfaW9jdGws Ci0JLmNvbXBhdF9pb2N0bCA9IHN3aXRjaHRlY19kZXZfaW9jdGwsCisJLmNvbXBhdF9pb2N0bCA9 IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIH07CiAKIHN0YXRpYyB2b2lkIGxpbmtfZXZl bnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bs YXRmb3JtL3g4Ni93bWkuYyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L3dtaS5jCmluZGV4IDA0Nzkx ZWE1ZDk3Yi4uZTRkMDY5N2UwN2Q2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni93 bWkuYworKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni93bWkuYwpAQCAtODg2LDcgKzg4Niw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdtaV9mb3BzID0gewogCS5yZWFk CQk9IHdtaV9jaGFyX3JlYWQsCiAJLm9wZW4JCT0gd21pX2NoYXJfb3BlbiwKIAkudW5sb2NrZWRf aW9jdGwJPSB3bWlfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bAk9IHdtaV9pb2N0bCwKKwkuY29tcGF0 X2lvY3RsCT0gZ2VuZXJpY19jb21wYXRfaW9jdGxfcHRyYXJnLAogfTsKIAogc3RhdGljIGludCB3 bWlfZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnBt c2cvcnBtc2dfY2hhci5jIGIvZHJpdmVycy9ycG1zZy9ycG1zZ19jaGFyLmMKaW5kZXggYTc2Yjk2 M2E3ZTUwLi4wMmFlZmIyYjJkNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnBtc2cvcnBtc2dfY2hh ci5jCisrKyBiL2RyaXZlcnMvcnBtc2cvcnBtc2dfY2hhci5jCkBAIC0yODUsNyArMjg1LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcnBtc2dfZXB0ZGV2X2ZvcHMgPSB7 CiAJLndyaXRlID0gcnBtc2dfZXB0ZGV2X3dyaXRlLAogCS5wb2xsID0gcnBtc2dfZXB0ZGV2X3Bv bGwsCiAJLnVubG9ja2VkX2lvY3RsID0gcnBtc2dfZXB0ZGV2X2lvY3RsLAotCS5jb21wYXRfaW9j dGwgPSBycG1zZ19lcHRkZXZfaW9jdGwsCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0 X2lvY3RsX3B0cmFyZywKIH07CiAKIHN0YXRpYyBzc2l6ZV90IG5hbWVfc2hvdyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLApAQCAtNDQ2LDcgKzQ0Niw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJwbXNnX2N0cmxkZXZfZm9w cyA9IHsKIAkub3BlbiA9IHJwbXNnX2N0cmxkZXZfb3BlbiwKIAkucmVsZWFzZSA9IHJwbXNnX2N0 cmxkZXZfcmVsZWFzZSwKIAkudW5sb2NrZWRfaW9jdGwgPSBycG1zZ19jdHJsZGV2X2lvY3RsLAot CS5jb21wYXRfaW9jdGwgPSBycG1zZ19jdHJsZGV2X2lvY3RsLAorCS5jb21wYXRfaW9jdGwgPSBn ZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgdm9pZCBycG1zZ19jdHJs ZGV2X3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc2J1cy9jaGFyL2Rpc3BsYXk3c2VnLmMgYi9kcml2ZXJzL3NidXMvY2hhci9kaXNwbGF5N3Nl Zy5jCmluZGV4IDVjOGVkNzM1MGEwNC4uMDY0ZmU3MjQ3ZWIyIDEwMDY0NAotLS0gYS9kcml2ZXJz L3NidXMvY2hhci9kaXNwbGF5N3NlZy5jCisrKyBiL2RyaXZlcnMvc2J1cy9jaGFyL2Rpc3BsYXk3 c2VnLmMKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgbG9uZyBkN3NfaW9jdGwoc3RydWN0IGZp bGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZDdzX2ZvcHMgPSB7CiAJLm93bmVyID0JCVRISVNf TU9EVUxFLAogCS51bmxvY2tlZF9pb2N0bCA9CWQ3c19pb2N0bCwKLQkuY29tcGF0X2lvY3RsID0J CWQ3c19pb2N0bCwKKwkuY29tcGF0X2lvY3RsID0JCWdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFy ZywKIAkub3BlbiA9CQkJZDdzX29wZW4sCiAJLnJlbGVhc2UgPQkJZDdzX3JlbGVhc2UsCiAJLmxs c2VlayA9IG5vb3BfbGxzZWVrLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zYnVzL2NoYXIvZW52Y3Ry bC5jIGIvZHJpdmVycy9zYnVzL2NoYXIvZW52Y3RybC5jCmluZGV4IDU2ZTk2MmEwMTQ5My4uYTI2 NjY1Y2NlYTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NidXMvY2hhci9lbnZjdHJsLmMKKysrIGIv ZHJpdmVycy9zYnVzL2NoYXIvZW52Y3RybC5jCkBAIC03MTQsOSArNzE0LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZW52Y3RybF9mb3BzID0gewogCS5vd25lciA9CQlU SElTX01PRFVMRSwKIAkucmVhZCA9CQkJZW52Y3RybF9yZWFkLAogCS51bmxvY2tlZF9pb2N0bCA9 CWVudmN0cmxfaW9jdGwsCi0jaWZkZWYgQ09ORklHX0NPTVBBVAotCS5jb21wYXRfaW9jdGwgPQkJ ZW52Y3RybF9pb2N0bCwKLSNlbmRpZgorCS5jb21wYXRfaW9jdGwgPQkJZ2VuZXJpY19jb21wYXRf aW9jdGxfcHRyYXJnLAogCS5vcGVuID0JCQllbnZjdHJsX29wZW4sCiAJLnJlbGVhc2UgPQkJZW52 Y3RybF9yZWxlYXNlLAogCS5sbHNlZWsgPQkJbm9vcF9sbHNlZWssCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3Njc2kvM3cteHh4eC5jIGIvZHJpdmVycy9zY3NpLzN3LXh4eHguYwppbmRleCA0NzEzNjY5 NDViZDQuLjg2YzlmMjJhMTUyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LXh4eHguYwor KysgYi9kcml2ZXJzL3Njc2kvM3cteHh4eC5jCkBAIC0xMDQ3LDkgKzEwNDcsNyBAQCBzdGF0aWMg aW50IHR3X2NocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl KQogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdHdfZm9wcyA9IHsKIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCiAJLnVubG9ja2VkX2lvY3RsCT0gdHdfY2hyZGV2X2lvY3RsLAot I2lmZGVmIENPTkZJR19DT01QQVQKLQkuY29tcGF0X2lvY3RsICAgPSB0d19jaHJkZXZfaW9jdGws Ci0jZW5kaWYKKwkuY29tcGF0X2lvY3RsICAgPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcs CiAJLm9wZW4JCT0gdHdfY2hyZGV2X29wZW4sCiAJLnJlbGVhc2UJPSBOVUxMLAogCS5sbHNlZWsJ CT0gbm9vcF9sbHNlZWssCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvY3hsZmxhc2gvbWFpbi5j IGIvZHJpdmVycy9zY3NpL2N4bGZsYXNoL21haW4uYwppbmRleCA2NjM3MTE2NTI5YWEuLmQ5Njhl ZmViNTBlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2N4bGZsYXNoL21haW4uYworKysgYi9k cml2ZXJzL3Njc2kvY3hsZmxhc2gvbWFpbi5jCkBAIC0zNTk2LDcgKzM1OTYsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBjeGxmbGFzaF9jaHJfZm9wcyA9IHsKIAkub3du ZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKIAkub3BlbiAgICAgICAgICAgPSBjeGxmbGFzaF9j aHJfb3BlbiwKIAkudW5sb2NrZWRfaW9jdGwJPSBjeGxmbGFzaF9jaHJfaW9jdGwsCi0JLmNvbXBh dF9pb2N0bAk9IGN4bGZsYXNoX2Nocl9pb2N0bCwKKwkuY29tcGF0X2lvY3RsCT0gZ2VuZXJpY19j b21wYXRfaW9jdGxfcHRyYXJnLAogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kv ZXNhczJyL2VzYXMycl9tYWluLmMgYi9kcml2ZXJzL3Njc2kvZXNhczJyL2VzYXMycl9tYWluLmMK aW5kZXggYzA3MTE4NjE3ZDg5Li45NTE0MjI5MmU3MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2Nz aS9lc2FzMnIvZXNhczJyX21haW4uYworKysgYi9kcml2ZXJzL3Njc2kvZXNhczJyL2VzYXMycl9t YWluLmMKQEAgLTYxNCw3ICs2MTQsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBlc2FzMnJfaW5pdCh2 b2lkKQogCiAvKiBIYW5kbGUgaW9jdGwgY2FsbHMgdG8gIi9wcm9jL3Njc2kvZXNhczJyL0FUVE9u b2RlIiAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXNhczJyX3Byb2Nf Zm9wcyA9IHsKLQkuY29tcGF0X2lvY3RsCT0gZXNhczJyX3Byb2NfaW9jdGwsCisJLmNvbXBhdF9p b2N0bAk9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIAkudW5sb2NrZWRfaW9jdGwgPSBl c2FzMnJfcHJvY19pb2N0bCwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbWNyYWlk LmMgYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCmluZGV4IDRlODY5OTRlMTBlOC4uOGE4YzczZDNi ZGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCisrKyBiL2RyaXZlcnMvc2Nz aS9wbWNyYWlkLmMKQEAgLTM5OTksOSArMzk5OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIHBtY3JhaWRfZm9wcyA9IHsKIAkub3BlbiA9IHBtY3JhaWRfY2hyX29wZW4s CiAJLmZhc3luYyA9IHBtY3JhaWRfY2hyX2Zhc3luYywKIAkudW5sb2NrZWRfaW9jdGwgPSBwbWNy YWlkX2Nocl9pb2N0bCwKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bCA9IHBt Y3JhaWRfY2hyX2lvY3RsLAotI2VuZGlmCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0 X2lvY3RsX3B0cmFyZywKIAkubGxzZWVrID0gbm9vcF9sbHNlZWssCiB9OwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvYW5k cm9pZC9pb24vaW9uLmMKaW5kZXggOTkwNzMzMjViMGMwLi5lZjcyN2MyMzUzOTIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYworKysgYi9kcml2ZXJzL3N0YWdp bmcvYW5kcm9pZC9pb24vaW9uLmMKQEAgLTQ4NCw5ICs0ODQsNyBAQCBpbnQgaW9uX3F1ZXJ5X2hl YXBzKHN0cnVjdCBpb25faGVhcF9xdWVyeSAqcXVlcnkpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBpb25fZm9wcyA9IHsKIAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVM RSwKIAkudW5sb2NrZWRfaW9jdGwgPSBpb25faW9jdGwsCi0jaWZkZWYgQ09ORklHX0NPTVBBVAot CS5jb21wYXRfaW9jdGwJPSBpb25faW9jdGwsCi0jZW5kaWYKKwkuY29tcGF0X2lvY3RsCT0gZ2Vu ZXJpY19jb21wYXRfaW9jdGxfcHRyYXJnLAogfTsKIAogc3RhdGljIGludCBkZWJ1Z19zaHJpbmtf c2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdm1l L2RldmljZXMvdm1lX3VzZXIuYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvZGV2aWNlcy92bWVfdXNl ci5jCmluZGV4IDZhMzNhYWExYTQ5Zi4uNTY4NzAwZmZkMmYyIDEwMDY0NAotLS0gYS9kcml2ZXJz L3N0YWdpbmcvdm1lL2RldmljZXMvdm1lX3VzZXIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1l L2RldmljZXMvdm1lX3VzZXIuYwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIHZtZV91c2VyX2ZvcHMgPSB7CiAJLndyaXRlID0gdm1lX3VzZXJf d3JpdGUsCiAJLmxsc2VlayA9IHZtZV91c2VyX2xsc2VlaywKIAkudW5sb2NrZWRfaW9jdGwgPSB2 bWVfdXNlcl91bmxvY2tlZF9pb2N0bCwKLQkuY29tcGF0X2lvY3RsID0gdm1lX3VzZXJfdW5sb2Nr ZWRfaW9jdGwsCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywK IAkubW1hcCA9IHZtZV91c2VyX21tYXAsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RlZS90 ZWVfY29yZS5jIGIvZHJpdmVycy90ZWUvdGVlX2NvcmUuYwppbmRleCBkZDQ2Yjc1ODg1MmEuLmNi NzlmMjhiZTg5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy90ZWUvdGVlX2NvcmUuYworKysgYi9kcml2 ZXJzL3RlZS90ZWVfY29yZS5jCkBAIC02NzAsNyArNjcwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgdGVlX2ZvcHMgPSB7CiAJLm9wZW4gPSB0ZWVfb3BlbiwKIAkucmVs ZWFzZSA9IHRlZV9yZWxlYXNlLAogCS51bmxvY2tlZF9pb2N0bCA9IHRlZV9pb2N0bCwKLQkuY29t cGF0X2lvY3RsID0gdGVlX2lvY3RsLAorCS5jb21wYXRfaW9jdGwgPSBnZW5lcmljX2NvbXBhdF9p b2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgdm9pZCB0ZWVfcmVsZWFzZV9kZXZpY2Uoc3RydWN0 IGRldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLXdkbS5jIGIv ZHJpdmVycy91c2IvY2xhc3MvY2RjLXdkbS5jCmluZGV4IGJlYzU4MWZiN2M2My4uNmU0OTk4Yzhl NjRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtd2RtLmMKKysrIGIvZHJpdmVy cy91c2IvY2xhc3MvY2RjLXdkbS5jCkBAIC03MjQsNyArNzI0LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgd2RtX2ZvcHMgPSB7CiAJLnJlbGVhc2UgPQl3ZG1fcmVsZWFz ZSwKIAkucG9sbCA9CQl3ZG1fcG9sbCwKIAkudW5sb2NrZWRfaW9jdGwgPSB3ZG1faW9jdGwsCi0J LmNvbXBhdF9pb2N0bCA9IHdkbV9pb2N0bCwKKwkuY29tcGF0X2lvY3RsID0gZ2VuZXJpY19jb21w YXRfaW9jdGxfcHRyYXJnLAogCS5sbHNlZWsgPQlub29wX2xsc2VlaywKIH07CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1j LmMKaW5kZXggODNmZmE1YTE0YzNkLi5kNWRhNDdjNGM0NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dXNiL2NsYXNzL3VzYnRtYy5jCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCkBAIC0x NDYwLDkgKzE0NjAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3Bz ID0gewogCS5vcGVuCQk9IHVzYnRtY19vcGVuLAogCS5yZWxlYXNlCT0gdXNidG1jX3JlbGVhc2Us CiAJLnVubG9ja2VkX2lvY3RsCT0gdXNidG1jX2lvY3RsLAotI2lmZGVmIENPTkZJR19DT01QQVQK LQkuY29tcGF0X2lvY3RsCT0gdXNidG1jX2lvY3RsLAotI2VuZGlmCisJLmNvbXBhdF9pb2N0bAk9 IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIAkuZmFzeW5jICAgICAgICAgPSB1c2J0bWNf ZmFzeW5jLAogCS5wb2xsICAgICAgICAgICA9IHVzYnRtY19wb2xsLAogCS5sbHNlZWsJCT0gZGVm YXVsdF9sbHNlZWssCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKaW5kZXggNWVkMmRiMzlkODIzLi5mOWY4ZmZhZjFj NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHMzZmIuYworKysgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3BzM2ZiLmMKQEAgLTk0OSw3ICs5NDksNyBAQCBzdGF0aWMgc3RydWN0IGZi X29wcyBwczNmYl9vcHMgPSB7CiAJLmZiX21tYXAJPSBwczNmYl9tbWFwLAogCS5mYl9ibGFuawk9 IHBzM2ZiX2JsYW5rLAogCS5mYl9pb2N0bAk9IHBzM2ZiX2lvY3RsLAotCS5mYl9jb21wYXRfaW9j dGwgPSBwczNmYl9pb2N0bAorCS5mYl9jb21wYXRfaW9jdGwgPSBnZW5lcmljX2NvbXBhdF9pb2N0 bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIHBz M2ZiX2ZpeCA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9mc2xfaHlwZXJ2aXNvci5jIGIv ZHJpdmVycy92aXJ0L2ZzbF9oeXBlcnZpc29yLmMKaW5kZXggOGJhNzI2ZTYwMGU5Li40MDZiN2U0 OTIyMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlydC9mc2xfaHlwZXJ2aXNvci5jCisrKyBiL2Ry aXZlcnMvdmlydC9mc2xfaHlwZXJ2aXNvci5jCkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2h2X2ZvcHMgPSB7CiAJLnBvbGwgPSBmc2xf aHZfcG9sbCwKIAkucmVhZCA9IGZzbF9odl9yZWFkLAogCS51bmxvY2tlZF9pb2N0bCA9IGZzbF9o dl9pb2N0bCwKLQkuY29tcGF0X2lvY3RsID0gZnNsX2h2X2lvY3RsLAorCS5jb21wYXRfaW9jdGwg PSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiB9OwogCiBzdGF0aWMgc3RydWN0IG1pc2Nk ZXZpY2UgZnNsX2h2X21pc2NfZGV2ID0gewpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvc3VwZXIuYyBi L2ZzL2J0cmZzL3N1cGVyLmMKaW5kZXggNjYwMWM5YWE1ZTM1Li4yYjVhOGFkODYzMDUgMTAwNjQ0 Ci0tLSBhL2ZzL2J0cmZzL3N1cGVyLmMKKysrIGIvZnMvYnRyZnMvc3VwZXIuYwpAQCAtMjM1Miw3 ICsyMzUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGJ0cmZzX3N1 cGVyX29wcyA9IHsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJ0cmZzX2N0 bF9mb3BzID0gewogCS5vcGVuID0gYnRyZnNfY29udHJvbF9vcGVuLAogCS51bmxvY2tlZF9pb2N0 bAkgPSBidHJmc19jb250cm9sX2lvY3RsLAotCS5jb21wYXRfaW9jdGwgPSBidHJmc19jb250cm9s X2lvY3RsLAorCS5jb21wYXRfaW9jdGwgPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiAJ Lm93bmVyCSA9IFRISVNfTU9EVUxFLAogCS5sbHNlZWsgPSBub29wX2xsc2VlaywKIH07CmRpZmYg LS1naXQgYS9mcy9jZXBoL2Rpci5jIGIvZnMvY2VwaC9kaXIuYwppbmRleCBkYTczZjI5ZDdmYWEu LmViODY5ZmU2Nzc0ZCAxMDA2NDQKLS0tIGEvZnMvY2VwaC9kaXIuYworKysgYi9mcy9jZXBoL2Rp ci5jCkBAIC0xNDg5LDcgKzE0ODksNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGNl cGhfZGlyX2ZvcHMgPSB7CiAJLm9wZW4gPSBjZXBoX29wZW4sCiAJLnJlbGVhc2UgPSBjZXBoX3Jl bGVhc2UsCiAJLnVubG9ja2VkX2lvY3RsID0gY2VwaF9pb2N0bCwKLQkuY29tcGF0X2lvY3RsID0g Y2VwaF9pb2N0bCwKKwkuY29tcGF0X2lvY3RsID0gZ2VuZXJpY19jb21wYXRfaW9jdGxfcHRyYXJn LAogCS5mc3luYyA9IGNlcGhfZnN5bmMsCiAJLmxvY2sgPSBjZXBoX2xvY2ssCiAJLmZsb2NrID0g Y2VwaF9mbG9jaywKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvZmlsZS5jIGIvZnMvY2VwaC9maWxlLmMK aW5kZXggOTJhYjIwNDMzNjgyLi44NTA5NDA0MmNmYWMgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvZmls ZS5jCisrKyBiL2ZzL2NlcGgvZmlsZS5jCkBAIC0xODQyLDcgKzE4NDIsNyBAQCBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGNlcGhfZmlsZV9mb3BzID0gewogCS5zcGxpY2VfcmVhZCA9IGdl bmVyaWNfZmlsZV9zcGxpY2VfcmVhZCwKIAkuc3BsaWNlX3dyaXRlID0gaXRlcl9maWxlX3NwbGlj ZV93cml0ZSwKIAkudW5sb2NrZWRfaW9jdGwgPSBjZXBoX2lvY3RsLAotCS5jb21wYXRfaW9jdGwJ PSBjZXBoX2lvY3RsLAorCS5jb21wYXRfaW9jdGwJPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJh cmcsCiAJLmZhbGxvY2F0ZQk9IGNlcGhfZmFsbG9jYXRlLAogfTsKIApkaWZmIC0tZ2l0IGEvZnMv ZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmMKaW5kZXggMTFlYTJjNGEzOGFiLi5hNmQ0YTI0OTYz ZWQgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZGV2LmMKKysrIGIvZnMvZnVzZS9kZXYuYwpAQCAtMjI1 OCw3ICsyMjU4LDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVy YXRpb25zID0gewogCS5yZWxlYXNlCT0gZnVzZV9kZXZfcmVsZWFzZSwKIAkuZmFzeW5jCQk9IGZ1 c2VfZGV2X2Zhc3luYywKIAkudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCwKLQkuY29t cGF0X2lvY3RsICAgPSBmdXNlX2Rldl9pb2N0bCwKKwkuY29tcGF0X2lvY3RsICAgPSBnZW5lcmlj X2NvbXBhdF9pb2N0bF9wdHJhcmcsCiB9OwogRVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9kZXZfb3Bl cmF0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2Vy LmMgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jCmluZGV4IDY5MDU0ODg2OTE1 Yi4uZmM0MTkzYjM4NGNmIDEwMDY0NAotLS0gYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlf dXNlci5jCisrKyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKQEAgLTQ0Nyw3 ICs0NDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYW5vdGlmeV9m b3BzID0gewogCS5mYXN5bmMJCT0gTlVMTCwKIAkucmVsZWFzZQk9IGZhbm90aWZ5X3JlbGVhc2Us CiAJLnVubG9ja2VkX2lvY3RsCT0gZmFub3RpZnlfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bAk9IGZh bm90aWZ5X2lvY3RsLAorCS5jb21wYXRfaW9jdGwJPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJh cmcsCiAJLmxsc2VlawkJPSBub29wX2xsc2VlaywKIH07CiAKZGlmZiAtLWdpdCBhL2ZzL3VzZXJm YXVsdGZkLmMgYi9mcy91c2VyZmF1bHRmZC5jCmluZGV4IGJmYTBlYzY5ZjkyNC4uYmM5MTE4YjU4 YThhIDEwMDY0NAotLS0gYS9mcy91c2VyZmF1bHRmZC5jCisrKyBiL2ZzL3VzZXJmYXVsdGZkLmMK QEAgLTE4NzgsNyArMTg3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHVzZXJmYXVsdGZkX2ZvcHMgPSB7CiAJLnBvbGwJCT0gdXNlcmZhdWx0ZmRfcG9sbCwKIAkucmVh ZAkJPSB1c2VyZmF1bHRmZF9yZWFkLAogCS51bmxvY2tlZF9pb2N0bCA9IHVzZXJmYXVsdGZkX2lv Y3RsLAotCS5jb21wYXRfaW9jdGwJPSB1c2VyZmF1bHRmZF9pb2N0bCwKKwkuY29tcGF0X2lvY3Rs CT0gZ2VuZXJpY19jb21wYXRfaW9jdGxfcHRyYXJnLAogCS5sbHNlZWsJCT0gbm9vcF9sbHNlZWss CiB9OwogCmRpZmYgLS1naXQgYS9uZXQvcmZraWxsL2NvcmUuYyBiL25ldC9yZmtpbGwvY29yZS5j CmluZGV4IDEzNTVmNWNhOGQyMi4uYmE2OGI1M2Y1OGFiIDEwMDY0NAotLS0gYS9uZXQvcmZraWxs L2NvcmUuYworKysgYi9uZXQvcmZraWxsL2NvcmUuYwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmZraWxsX2ZvcHMgPSB7CiAJLnJlbGVh c2UJPSByZmtpbGxfZm9wX3JlbGVhc2UsCiAjaWZkZWYgQ09ORklHX1JGS0lMTF9JTlBVVAogCS51 bmxvY2tlZF9pb2N0bAk9IHJma2lsbF9mb3BfaW9jdGwsCi0JLmNvbXBhdF9pb2N0bAk9IHJma2ls bF9mb3BfaW9jdGwsCisJLmNvbXBhdF9pb2N0bAk9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFy ZywKICNlbmRpZgogCS5sbHNlZWsJCT0gbm9fbGxzZWVrLAogfTsK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Date: Wed, 12 Sep 2018 15:08:52 +0000 Subject: [PATCH v2 05/17] compat_ioctl: move more drivers to generic_compat_ioctl_ptrarg Message-Id: <20180912151134.436719-1-arnd@arndb.de> List-Id: References: <20180912150142.157913-1-arnd@arndb.de> In-Reply-To: <20180912150142.157913-1-arnd-r2nGTMty4D4@public.gmane.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-remoteproc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, platform-driver-x86-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sparclinux-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org, linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, qat-linux-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Arnd Bergmann , linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Greg Kroah-Hartman , linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, "David S. Miller" , linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org The .ioctl and .compat_ioctl file operations have the same prototype so they can both point to the same function, which works great almost all the time when all the commands are compatible. One exception is the s390 architecture, where a compat pointer is only 31 bit wide, and converting it into a 64-bit pointer requires calling compat_ptr(). Most drivers here will ever run in s390, but since we now have a generic helper for it, it's easy enough to use it consistently. I double-checked all these drivers to ensure that all ioctl arguments are used as pointers or are ignored, but are not interpreted as integer values. Signed-off-by: Arnd Bergmann --- drivers/android/binder.c | 2 +- drivers/crypto/qat/qat_common/adf_ctl_drv.c | 2 +- drivers/dma-buf/dma-buf.c | 4 +--- drivers/dma-buf/sw_sync.c | 2 +- drivers/dma-buf/sync_file.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/hid/hidraw.c | 4 +--- drivers/iio/industrialio-core.c | 2 +- drivers/infiniband/core/uverbs_main.c | 4 ++-- drivers/media/rc/lirc_dev.c | 4 +--- drivers/mfd/cros_ec_dev.c | 4 +--- drivers/misc/vmw_vmci/vmci_host.c | 2 +- drivers/nvdimm/bus.c | 4 ++-- drivers/nvme/host/core.c | 2 +- drivers/pci/switch/switchtec.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/rpmsg/rpmsg_char.c | 4 ++-- drivers/sbus/char/display7seg.c | 2 +- drivers/sbus/char/envctrl.c | 4 +--- drivers/scsi/3w-xxxx.c | 4 +--- drivers/scsi/cxlflash/main.c | 2 +- drivers/scsi/esas2r/esas2r_main.c | 2 +- drivers/scsi/pmcraid.c | 4 +--- drivers/staging/android/ion/ion.c | 4 +--- drivers/staging/vme/devices/vme_user.c | 2 +- drivers/tee/tee_core.c | 2 +- drivers/usb/class/cdc-wdm.c | 2 +- drivers/usb/class/usbtmc.c | 4 +--- drivers/video/fbdev/ps3fb.c | 2 +- drivers/virt/fsl_hypervisor.c | 2 +- fs/btrfs/super.c | 2 +- fs/ceph/dir.c | 2 +- fs/ceph/file.c | 2 +- fs/fuse/dev.c | 2 +- fs/notify/fanotify/fanotify_user.c | 2 +- fs/userfaultfd.c | 2 +- net/rfkill/core.c | 2 +- 37 files changed, 40 insertions(+), 58 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index d58763b6b009..d2464f5759f8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -5576,7 +5576,7 @@ static const struct file_operations binder_fops = { .owner = THIS_MODULE, .poll = binder_poll, .unlocked_ioctl = binder_ioctl, - .compat_ioctl = binder_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = binder_mmap, .open = binder_open, .flush = binder_flush, diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c index abc7a7f64d64..8ff77a70addc 100644 --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c @@ -68,7 +68,7 @@ static long adf_ctl_ioctl(struct file *fp, unsigned int cmd, unsigned long arg); static const struct file_operations adf_ctl_ops = { .owner = THIS_MODULE, .unlocked_ioctl = adf_ctl_ioctl, - .compat_ioctl = adf_ctl_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; struct adf_ctl_drv_info { diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 13884474d158..a6d7dc4cf7e9 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -325,9 +325,7 @@ static const struct file_operations dma_buf_fops = { .llseek = dma_buf_llseek, .poll = dma_buf_poll, .unlocked_ioctl = dma_buf_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = dma_buf_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /* diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 53c1d6d36a64..bc810506d487 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -419,5 +419,5 @@ const struct file_operations sw_sync_debugfs_fops = { .open = sw_sync_debugfs_open, .release = sw_sync_debugfs_release, .unlocked_ioctl = sw_sync_ioctl, - .compat_ioctl = sw_sync_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 35dd06479867..1c64ed60c658 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -488,5 +488,5 @@ static const struct file_operations sync_file_fops = { .release = sync_file_release, .poll = sync_file_poll, .unlocked_ioctl = sync_file_ioctl, - .compat_ioctl = sync_file_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 297b36c26a05..1d7b1e3c3ebe 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -47,7 +47,7 @@ static const char kfd_dev_name[] = "kfd"; static const struct file_operations kfd_fops = { .owner = THIS_MODULE, .unlocked_ioctl = kfd_ioctl, - .compat_ioctl = kfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = kfd_open, .mmap = kfd_mmap, }; diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 4a44e48e08b2..e44b64812850 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -476,9 +476,7 @@ static const struct file_operations hidraw_ops = { .release = hidraw_release, .unlocked_ioctl = hidraw_ioctl, .fasync = hidraw_fasync, -#ifdef CONFIG_COMPAT - .compat_ioctl = hidraw_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index a062cfddc5af..22844b94b0e9 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1630,7 +1630,7 @@ static const struct file_operations iio_buffer_fileops = { .owner = THIS_MODULE, .llseek = noop_llseek, .unlocked_ioctl = iio_ioctl, - .compat_ioctl = iio_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int iio_check_unique_scan_index(struct iio_dev *indio_dev) diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 823beca448e1..f4755c1c9cfa 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -930,7 +930,7 @@ static const struct file_operations uverbs_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct file_operations uverbs_mmap_fops = { @@ -941,7 +941,7 @@ static const struct file_operations uverbs_mmap_fops = { .release = ib_uverbs_close, .llseek = no_llseek, .unlocked_ioctl = ib_uverbs_ioctl, - .compat_ioctl = ib_uverbs_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct ib_client uverbs_client = { diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index f862f1b7f996..077209f414ed 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -730,9 +730,7 @@ static const struct file_operations lirc_fops = { .owner = THIS_MODULE, .write = ir_lirc_transmit_ir, .unlocked_ioctl = ir_lirc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ir_lirc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .read = ir_lirc_read, .poll = ir_lirc_poll, .open = ir_lirc_open, diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 999dac752bcc..35a04bcf55da 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -258,9 +258,7 @@ static const struct file_operations fops = { .release = ec_device_release, .read = ec_device_read, .unlocked_ioctl = ec_device_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ec_device_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void cros_ec_sensors_register(struct cros_ec_dev *ec) diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c index 83e0c95d20a4..1308f889e53b 100644 --- a/drivers/misc/vmw_vmci/vmci_host.c +++ b/drivers/misc/vmw_vmci/vmci_host.c @@ -983,7 +983,7 @@ static const struct file_operations vmuser_fops = { .release = vmci_host_close, .poll = vmci_host_poll, .unlocked_ioctl = vmci_host_unlocked_ioctl, - .compat_ioctl = vmci_host_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice vmci_host_miscdev = { diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 8aae6dcc839f..7449cbc55df7 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -1133,7 +1133,7 @@ static const struct file_operations nvdimm_bus_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nd_ioctl, - .compat_ioctl = nd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; @@ -1141,7 +1141,7 @@ static const struct file_operations nvdimm_fops = { .owner = THIS_MODULE, .open = nd_open, .unlocked_ioctl = nvdimm_ioctl, - .compat_ioctl = nvdimm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index dd8ec1dd9219..2d986f573a29 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2579,7 +2579,7 @@ static const struct file_operations nvme_dev_fops = { .owner = THIS_MODULE, .open = nvme_dev_open, .unlocked_ioctl = nvme_dev_ioctl, - .compat_ioctl = nvme_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t nvme_sysfs_reset(struct device *dev, diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c index 9940cc70f38b..4296919c784e 100644 --- a/drivers/pci/switch/switchtec.c +++ b/drivers/pci/switch/switchtec.c @@ -967,7 +967,7 @@ static const struct file_operations switchtec_fops = { .read = switchtec_dev_read, .poll = switchtec_dev_poll, .unlocked_ioctl = switchtec_dev_ioctl, - .compat_ioctl = switchtec_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void link_event_work(struct work_struct *work) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 04791ea5d97b..e4d0697e07d6 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -886,7 +886,7 @@ static const struct file_operations wmi_fops = { .read = wmi_char_read, .open = wmi_char_open, .unlocked_ioctl = wmi_ioctl, - .compat_ioctl = wmi_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int wmi_dev_probe(struct device *dev) diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a76b963a7e50..02aefb2b2d47 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -285,7 +285,7 @@ static const struct file_operations rpmsg_eptdev_fops = { .write = rpmsg_eptdev_write, .poll = rpmsg_eptdev_poll, .unlocked_ioctl = rpmsg_eptdev_ioctl, - .compat_ioctl = rpmsg_eptdev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static ssize_t name_show(struct device *dev, struct device_attribute *attr, @@ -446,7 +446,7 @@ static const struct file_operations rpmsg_ctrldev_fops = { .open = rpmsg_ctrldev_open, .release = rpmsg_ctrldev_release, .unlocked_ioctl = rpmsg_ctrldev_ioctl, - .compat_ioctl = rpmsg_ctrldev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void rpmsg_ctrldev_release_device(struct device *dev) diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index 5c8ed7350a04..064fe7247eb2 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c @@ -155,7 +155,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static const struct file_operations d7s_fops = { .owner = THIS_MODULE, .unlocked_ioctl = d7s_ioctl, - .compat_ioctl = d7s_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = d7s_open, .release = d7s_release, .llseek = noop_llseek, diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index 56e962a01493..a26665ccea56 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -714,9 +714,7 @@ static const struct file_operations envctrl_fops = { .owner = THIS_MODULE, .read = envctrl_read, .unlocked_ioctl = envctrl_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = envctrl_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = envctrl_open, .release = envctrl_release, .llseek = noop_llseek, diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 471366945bd4..86c9f22a152f 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c @@ -1047,9 +1047,7 @@ static int tw_chrdev_open(struct inode *inode, struct file *file) static const struct file_operations tw_fops = { .owner = THIS_MODULE, .unlocked_ioctl = tw_chrdev_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = tw_chrdev_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .open = tw_chrdev_open, .release = NULL, .llseek = noop_llseek, diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 6637116529aa..d968efeb50e8 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -3596,7 +3596,7 @@ static const struct file_operations cxlflash_chr_fops = { .owner = THIS_MODULE, .open = cxlflash_chr_open, .unlocked_ioctl = cxlflash_chr_ioctl, - .compat_ioctl = cxlflash_chr_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; /** diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c index c07118617d89..95142292e702 100644 --- a/drivers/scsi/esas2r/esas2r_main.c +++ b/drivers/scsi/esas2r/esas2r_main.c @@ -614,7 +614,7 @@ static int __init esas2r_init(void) /* Handle ioctl calls to "/proc/scsi/esas2r/ATTOnode" */ static const struct file_operations esas2r_proc_fops = { - .compat_ioctl = esas2r_proc_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .unlocked_ioctl = esas2r_proc_ioctl, }; diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 4e86994e10e8..8a8c73d3bdad 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -3999,9 +3999,7 @@ static const struct file_operations pmcraid_fops = { .open = pmcraid_chr_open, .fasync = pmcraid_chr_fasync, .unlocked_ioctl = pmcraid_chr_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = pmcraid_chr_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 99073325b0c0..ef727c235392 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -484,9 +484,7 @@ int ion_query_heaps(struct ion_heap_query *query) static const struct file_operations ion_fops = { .owner = THIS_MODULE, .unlocked_ioctl = ion_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ion_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static int debug_shrink_set(void *data, u64 val) diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c index 6a33aaa1a49f..568700ffd2f2 100644 --- a/drivers/staging/vme/devices/vme_user.c +++ b/drivers/staging/vme/devices/vme_user.c @@ -494,7 +494,7 @@ static const struct file_operations vme_user_fops = { .write = vme_user_write, .llseek = vme_user_llseek, .unlocked_ioctl = vme_user_unlocked_ioctl, - .compat_ioctl = vme_user_unlocked_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .mmap = vme_user_mmap, }; diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index dd46b758852a..cb79f28be894 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -670,7 +670,7 @@ static const struct file_operations tee_fops = { .open = tee_open, .release = tee_release, .unlocked_ioctl = tee_ioctl, - .compat_ioctl = tee_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static void tee_release_device(struct device *dev) diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index bec581fb7c63..6e4998c8e64f 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c @@ -724,7 +724,7 @@ static const struct file_operations wdm_fops = { .release = wdm_release, .poll = wdm_poll, .unlocked_ioctl = wdm_ioctl, - .compat_ioctl = wdm_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 83ffa5a14c3d..d5da47c4c462 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -1460,9 +1460,7 @@ static const struct file_operations fops = { .open = usbtmc_open, .release = usbtmc_release, .unlocked_ioctl = usbtmc_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = usbtmc_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .fasync = usbtmc_fasync, .poll = usbtmc_poll, .llseek = default_llseek, diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c index 5ed2db39d823..f9f8ffaf1c4a 100644 --- a/drivers/video/fbdev/ps3fb.c +++ b/drivers/video/fbdev/ps3fb.c @@ -949,7 +949,7 @@ static struct fb_ops ps3fb_ops = { .fb_mmap = ps3fb_mmap, .fb_blank = ps3fb_blank, .fb_ioctl = ps3fb_ioctl, - .fb_compat_ioctl = ps3fb_ioctl + .fb_compat_ioctl = generic_compat_ioctl_ptrarg, }; static const struct fb_fix_screeninfo ps3fb_fix = { diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index 8ba726e600e9..406b7e492214 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c @@ -703,7 +703,7 @@ static const struct file_operations fsl_hv_fops = { .poll = fsl_hv_poll, .read = fsl_hv_read, .unlocked_ioctl = fsl_hv_ioctl, - .compat_ioctl = fsl_hv_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; static struct miscdevice fsl_hv_misc_dev = { diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 6601c9aa5e35..2b5a8ad86305 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2352,7 +2352,7 @@ static const struct super_operations btrfs_super_ops = { static const struct file_operations btrfs_ctl_fops = { .open = btrfs_control_open, .unlocked_ioctl = btrfs_control_ioctl, - .compat_ioctl = btrfs_control_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .owner = THIS_MODULE, .llseek = noop_llseek, }; diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index da73f29d7faa..eb869fe6774d 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1489,7 +1489,7 @@ const struct file_operations ceph_dir_fops = { .open = ceph_open, .release = ceph_release, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fsync = ceph_fsync, .lock = ceph_lock, .flock = ceph_flock, diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 92ab20433682..85094042cfac 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1842,7 +1842,7 @@ const struct file_operations ceph_file_fops = { .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, .unlocked_ioctl = ceph_ioctl, - .compat_ioctl = ceph_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .fallocate = ceph_fallocate, }; diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 11ea2c4a38ab..a6d4a24963ed 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -2258,7 +2258,7 @@ const struct file_operations fuse_dev_operations = { .release = fuse_dev_release, .fasync = fuse_dev_fasync, .unlocked_ioctl = fuse_dev_ioctl, - .compat_ioctl = fuse_dev_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, }; EXPORT_SYMBOL_GPL(fuse_dev_operations); diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 69054886915b..fc4193b384cf 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -447,7 +447,7 @@ static const struct file_operations fanotify_fops = { .fasync = NULL, .release = fanotify_release, .unlocked_ioctl = fanotify_ioctl, - .compat_ioctl = fanotify_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index bfa0ec69f924..bc9118b58a8a 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1878,7 +1878,7 @@ static const struct file_operations userfaultfd_fops = { .poll = userfaultfd_poll, .read = userfaultfd_read, .unlocked_ioctl = userfaultfd_ioctl, - .compat_ioctl = userfaultfd_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .llseek = noop_llseek, }; diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 1355f5ca8d22..ba68b53f58ab 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c @@ -1323,7 +1323,7 @@ static const struct file_operations rfkill_fops = { .release = rfkill_fop_release, #ifdef CONFIG_RFKILL_INPUT .unlocked_ioctl = rfkill_fop_ioctl, - .compat_ioctl = rfkill_fop_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, #endif .llseek = no_llseek, }; -- 2.18.0