From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Carvalho Chehab Subject: Re: [PATCH v3 12/26] compat_ioctl: move more drivers to compat_ptr_ioctl Date: Thu, 25 Apr 2019 12:21:53 -0300 Message-ID: <20190425122153.450fc094@coco.lan> References: <20190416202013.4034148-1-arnd@arndb.de> <20190416202701.127745-1-arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20190416202701.127745-1-arnd@arndb.de> Sender: linux-kernel-owner@vger.kernel.org To: Arnd Bergmann Cc: Alexander Viro , linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , Greg Kroah-Hartman , David Sterba , Darren Hart , Jonathan Cameron , Bjorn Andersson , devel@driverdev.osuosl.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 List-Id: amd-gfx.lists.freedesktop.org Em Tue, 16 Apr 2019 22:25:33 +0200 Arnd Bergmann escreveu: > 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. > > Acked-by: Jason Gunthorpe > Acked-by: Daniel Vetter > Acked-by: Mauro Carvalho Chehab > Acked-by: Greg Kroah-Hartman > Acked-by: David Sterba > Acked-by: Darren Hart (VMware) > Acked-by: Jonathan Cameron > Acked-by: Bjorn Andersson > 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 +--- If I understand your patch description well, using compat_ptr_ioctl only works if the driver is not for s390, right? In thesis, nothing prevents to use LIRC API on s390 - as this isn't a driver but, instead, RC core feature to expose raw remote controller codes to userspace. Yet, lirc_dev will only work if the system has a remote controller driver. Well, we don't have any for s390. Despite we don't have such driver, I can't possible see why someone would use a remote controller for a mainframe :-p Anyway, if someone ever come with such driver/usecase, reverting this change (or adding an #ifdef to check if arch is 390) should be pretty straight forward. So: Acked-by: Mauro Carvalho Chehab > 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/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 +- > 36 files changed, 39 insertions(+), 57 deletions(-) > > diff --git a/drivers/android/binder.c b/drivers/android/binder.c > index 4b9c7ca492e6..48109ade7234 100644 > --- a/drivers/android/binder.c > +++ b/drivers/android/binder.c > @@ -5998,7 +5998,7 @@ const struct file_operations binder_fops = { > .owner = THIS_MODULE, > .poll = binder_poll, > .unlocked_ioctl = binder_ioctl, > - .compat_ioctl = binder_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .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..ef0e482ee04f 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 = compat_ptr_ioctl, > }; > > struct adf_ctl_drv_info { > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index 7c858020d14b..0cb336fe6324 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 = compat_ptr_ioctl, > }; > > /* > diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c > index 32dcf7b4c935..411de6a8a0ad 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 4f6305ca52c8..0949f91eb85f 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > index 083bd8114db1..5d6ac7885aa7 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > @@ -49,7 +49,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 = compat_ptr_ioctl, > .open = kfd_open, > .mmap = kfd_mmap, > }; > diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c > index 9fc51eff1079..e7284d38b66d 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index 4700fd5d8c90..eed1bea257b4 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1635,7 +1635,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 = compat_ptr_ioctl, > }; > > 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 70b7d80431a9..ac4321d7c800 100644 > --- a/drivers/infiniband/core/uverbs_main.c > +++ b/drivers/infiniband/core/uverbs_main.c > @@ -1120,7 +1120,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 = compat_ptr_ioctl, > }; > > static const struct file_operations uverbs_mmap_fops = { > @@ -1131,7 +1131,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 = compat_ptr_ioctl, > }; > > static struct ib_client uverbs_client = { > diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c > index f862f1b7f996..9ccc7e9cbc8e 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 = compat_ptr_ioctl, > .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 d275deaecb12..4a602a40d75c 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -251,9 +251,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 = compat_ptr_ioctl, > }; > > static void cros_ec_class_release(struct device *dev) > diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c > index 997f92543dd4..5bb406dabe85 100644 > --- a/drivers/misc/vmw_vmci/vmci_host.c > +++ b/drivers/misc/vmw_vmci/vmci_host.c > @@ -969,7 +969,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 = compat_ptr_ioctl, > }; > > static struct miscdevice vmci_host_miscdev = { > diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c > index 7bbff0af29b2..065ebd584482 100644 > --- a/drivers/nvdimm/bus.c > +++ b/drivers/nvdimm/bus.c > @@ -1167,7 +1167,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > @@ -1175,7 +1175,7 @@ static const struct file_operations nvdimm_fops = { > .owner = THIS_MODULE, > .open = nd_open, > .unlocked_ioctl = nvdimm_ioctl, > - .compat_ioctl = nvdimm_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 2c43e12b70af..560929bee5ce 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -2739,7 +2739,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 = compat_ptr_ioctl, > }; > > static ssize_t nvme_sysfs_reset(struct device *dev, > diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c > index e22766c79fe9..3a54b4b616e2 100644 > --- a/drivers/pci/switch/switchtec.c > +++ b/drivers/pci/switch/switchtec.c > @@ -1006,7 +1006,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 = compat_ptr_ioctl, > }; > > static void link_event_work(struct work_struct *work) > diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c > index 7b26b6ccf1a0..dded9cef42f4 100644 > --- a/drivers/platform/x86/wmi.c > +++ b/drivers/platform/x86/wmi.c > @@ -889,7 +889,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 = compat_ptr_ioctl, > }; > > static int wmi_dev_probe(struct device *dev) > diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c > index eea5ebbb5119..507bfe163883 100644 > --- a/drivers/rpmsg/rpmsg_char.c > +++ b/drivers/rpmsg/rpmsg_char.c > @@ -290,7 +290,7 @@ static const struct file_operations rpmsg_eptdev_fops = { > .write_iter = rpmsg_eptdev_write_iter, > .poll = rpmsg_eptdev_poll, > .unlocked_ioctl = rpmsg_eptdev_ioctl, > - .compat_ioctl = rpmsg_eptdev_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > static ssize_t name_show(struct device *dev, struct device_attribute *attr, > @@ -451,7 +451,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 = compat_ptr_ioctl, > }; > > static void rpmsg_ctrldev_release_device(struct device *dev) > diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c > index a36e4cf1841d..c9f60656f54d 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 = compat_ptr_ioctl, > .open = d7s_open, > .release = d7s_release, > .llseek = noop_llseek, > diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c > index 1a6e7224017c..dd2dfa85fc68 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 = compat_ptr_ioctl, > .open = envctrl_open, > .release = envctrl_release, > .llseek = noop_llseek, > diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c > index 2b1e0d503020..fb6444d0409c 100644 > --- a/drivers/scsi/3w-xxxx.c > +++ b/drivers/scsi/3w-xxxx.c > @@ -1049,9 +1049,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 = compat_ptr_ioctl, > .open = tw_chrdev_open, > .release = NULL, > .llseek = noop_llseek, > diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c > index 7096810fd222..e13d5de1d76e 100644 > --- a/drivers/scsi/cxlflash/main.c > +++ b/drivers/scsi/cxlflash/main.c > @@ -3589,7 +3589,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 = compat_ptr_ioctl, > }; > > /** > diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c > index fdbda5c05aa0..80c5a235d193 100644 > --- a/drivers/scsi/esas2r/esas2r_main.c > +++ b/drivers/scsi/esas2r/esas2r_main.c > @@ -613,7 +613,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 = compat_ptr_ioctl, > .unlocked_ioctl = esas2r_proc_ioctl, > }; > > diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c > index e338d7a4f571..c0a1a1218c56 100644 > --- a/drivers/scsi/pmcraid.c > +++ b/drivers/scsi/pmcraid.c > @@ -3988,9 +3988,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c > index 92c2914239e3..1663c163edca 100644 > --- a/drivers/staging/android/ion/ion.c > +++ b/drivers/staging/android/ion/ion.c > @@ -567,9 +567,7 @@ static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > static const struct file_operations ion_fops = { > .owner = THIS_MODULE, > .unlocked_ioctl = ion_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = ion_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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..fd0ea4dbcb91 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 = compat_ptr_ioctl, > .mmap = vme_user_mmap, > }; > > diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c > index 17c64fccbb10..eb97acf09868 100644 > --- a/drivers/tee/tee_core.c > +++ b/drivers/tee/tee_core.c > @@ -684,7 +684,7 @@ static const struct file_operations tee_fops = { > .open = tee_open, > .release = tee_release, > .unlocked_ioctl = tee_ioctl, > - .compat_ioctl = tee_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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 9e9caff905d5..d48c032580d0 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c > index 4942122b2346..bbd0308b13f5 100644 > --- a/drivers/usb/class/usbtmc.c > +++ b/drivers/usb/class/usbtmc.c > @@ -2220,9 +2220,7 @@ static const struct file_operations fops = { > .release = usbtmc_release, > .flush = usbtmc_flush, > .unlocked_ioctl = usbtmc_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = usbtmc_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > .fasync = usbtmc_fasync, > .poll = usbtmc_poll, > .llseek = default_llseek, > diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c > index 8ba726e600e9..fbf02bf60f62 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 = compat_ptr_ioctl, > }; > > static struct miscdevice fsl_hv_misc_dev = { > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index 120e4340792a..162ea4b6b417 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -2307,7 +2307,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 = compat_ptr_ioctl, > .owner = THIS_MODULE, > .llseek = noop_llseek, > }; > diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c > index 7c060cb22aa3..a493b957713f 100644 > --- a/fs/ceph/dir.c > +++ b/fs/ceph/dir.c > @@ -1785,7 +1785,7 @@ const struct file_operations ceph_dir_fops = { > .open = ceph_open, > .release = ceph_release, > .unlocked_ioctl = ceph_ioctl, > - .compat_ioctl = ceph_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .fsync = ceph_fsync, > .lock = ceph_lock, > .flock = ceph_flock, > diff --git a/fs/ceph/file.c b/fs/ceph/file.c > index 9f53c3d99304..9b5fe7eee3c1 100644 > --- a/fs/ceph/file.c > +++ b/fs/ceph/file.c > @@ -2112,7 +2112,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 = compat_ptr_ioctl, > .fallocate = ceph_fallocate, > .copy_file_range = ceph_copy_file_range, > }; > diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c > index 9971a35cf1ef..dcdb26068b71 100644 > --- a/fs/fuse/dev.c > +++ b/fs/fuse/dev.c > @@ -2354,7 +2354,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 = compat_ptr_ioctl, > }; > EXPORT_SYMBOL_GPL(fuse_dev_operations); > > diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c > index a90bb19dcfa2..a55aa029a308 100644 > --- a/fs/notify/fanotify/fanotify_user.c > +++ b/fs/notify/fanotify/fanotify_user.c > @@ -523,7 +523,7 @@ static const struct file_operations fanotify_fops = { > .fasync = NULL, > .release = fanotify_release, > .unlocked_ioctl = fanotify_ioctl, > - .compat_ioctl = fanotify_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c > index 89800fc7dc9d..f93dcf8c996f 100644 > --- a/fs/userfaultfd.c > +++ b/fs/userfaultfd.c > @@ -1901,7 +1901,7 @@ static const struct file_operations userfaultfd_fops = { > .poll = userfaultfd_poll, > .read = userfaultfd_read, > .unlocked_ioctl = userfaultfd_ioctl, > - .compat_ioctl = userfaultfd_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/net/rfkill/core.c b/net/rfkill/core.c > index abca57040f37..3b2f6ea44397 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 = compat_ptr_ioctl, > #endif > .llseek = no_llseek, > }; Thanks, Mauro From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DDA56C43218 for ; Thu, 25 Apr 2019 15:22:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F1748206C0 for ; Thu, 25 Apr 2019 15:22:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556205765; bh=6ZnIre0O7YmjkAPbXwHc9rDWwt+WnyIT47X5GvL8kg0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=yJxNX/0G0wY6IfTJOfPyZKU+r9d0qJstls5vd3YqObAaTj9YIEfEwv67Zt7ViG/FC otPVd28RzRAE6V3SkJ9ZYJ4XnOUPrDduaQub/GXBAUH/hdUNNBlQTzWhiR7yYl6OqR jozhhDX4OVI1gON3sS5yUYxpDunZVR1kHwIXoDV8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728313AbfDYPW3 (ORCPT ); Thu, 25 Apr 2019 11:22:29 -0400 Received: from casper.infradead.org ([85.118.1.10]:40264 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728227AbfDYPW3 (ORCPT ); Thu, 25 Apr 2019 11:22:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=cNAw/7UGGQa2EoejF9l6yeoqAMDHiwOHvJfQEJxe8PY=; b=o+YVGWxNREaDYeL3fsmouMJxHA ZCGPs2WL6CxdH8V/1uhgCIrM279IdhNxNs9MwX1aD6pKnR6JsCiUagilTv89BGzDy3nmGELVgRFtb c9l0wz9eLQLPOnmq7AKkpZ08FyHDyI1ZbqtHKVnde58ccMDBqdxNMXeqvtQXAzB/uPp/BLL1BZQrd MBdwTuGjPaNQg6Pn3WrOFRe6F6ZBz+Eam7DGUsSxgCX8Z5GxKUfxHcDREUxDOv8pFgO6kEHOldFFP 5VHEPJIvlerNJ2O/XnyojyaPjyhsOxMnMRfXnL6fR6OP9M0hC0zU8hiHJ5cMK+/aDIdB8c8rjyslX ftastdZw==; Received: from [179.95.39.209] (helo=coco.lan) by casper.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJgCT-0006Ou-7Y; Thu, 25 Apr 2019 15:22:14 +0000 Date: Thu, 25 Apr 2019 12:21:53 -0300 From: Mauro Carvalho Chehab To: Arnd Bergmann Cc: Alexander Viro , linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , Greg Kroah-Hartman , David Sterba , Darren Hart , Jonathan Cameron , Bjorn Andersson , devel@driverdev.osuosl.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-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Sean Young Subject: Re: [PATCH v3 12/26] compat_ioctl: move more drivers to compat_ptr_ioctl Message-ID: <20190425122153.450fc094@coco.lan> In-Reply-To: <20190416202701.127745-1-arnd@arndb.de> References: <20190416202013.4034148-1-arnd@arndb.de> <20190416202701.127745-1-arnd@arndb.de> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Em Tue, 16 Apr 2019 22:25:33 +0200 Arnd Bergmann escreveu: > 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. > > Acked-by: Jason Gunthorpe > Acked-by: Daniel Vetter > Acked-by: Mauro Carvalho Chehab > Acked-by: Greg Kroah-Hartman > Acked-by: David Sterba > Acked-by: Darren Hart (VMware) > Acked-by: Jonathan Cameron > Acked-by: Bjorn Andersson > 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 +--- If I understand your patch description well, using compat_ptr_ioctl only works if the driver is not for s390, right? In thesis, nothing prevents to use LIRC API on s390 - as this isn't a driver but, instead, RC core feature to expose raw remote controller codes to userspace. Yet, lirc_dev will only work if the system has a remote controller driver. Well, we don't have any for s390. Despite we don't have such driver, I can't possible see why someone would use a remote controller for a mainframe :-p Anyway, if someone ever come with such driver/usecase, reverting this change (or adding an #ifdef to check if arch is 390) should be pretty straight forward. So: Acked-by: Mauro Carvalho Chehab > 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/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 +- > 36 files changed, 39 insertions(+), 57 deletions(-) > > diff --git a/drivers/android/binder.c b/drivers/android/binder.c > index 4b9c7ca492e6..48109ade7234 100644 > --- a/drivers/android/binder.c > +++ b/drivers/android/binder.c > @@ -5998,7 +5998,7 @@ const struct file_operations binder_fops = { > .owner = THIS_MODULE, > .poll = binder_poll, > .unlocked_ioctl = binder_ioctl, > - .compat_ioctl = binder_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .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..ef0e482ee04f 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 = compat_ptr_ioctl, > }; > > struct adf_ctl_drv_info { > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index 7c858020d14b..0cb336fe6324 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 = compat_ptr_ioctl, > }; > > /* > diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c > index 32dcf7b4c935..411de6a8a0ad 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 4f6305ca52c8..0949f91eb85f 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > index 083bd8114db1..5d6ac7885aa7 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > @@ -49,7 +49,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 = compat_ptr_ioctl, > .open = kfd_open, > .mmap = kfd_mmap, > }; > diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c > index 9fc51eff1079..e7284d38b66d 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index 4700fd5d8c90..eed1bea257b4 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1635,7 +1635,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 = compat_ptr_ioctl, > }; > > 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 70b7d80431a9..ac4321d7c800 100644 > --- a/drivers/infiniband/core/uverbs_main.c > +++ b/drivers/infiniband/core/uverbs_main.c > @@ -1120,7 +1120,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 = compat_ptr_ioctl, > }; > > static const struct file_operations uverbs_mmap_fops = { > @@ -1131,7 +1131,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 = compat_ptr_ioctl, > }; > > static struct ib_client uverbs_client = { > diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c > index f862f1b7f996..9ccc7e9cbc8e 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 = compat_ptr_ioctl, > .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 d275deaecb12..4a602a40d75c 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -251,9 +251,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 = compat_ptr_ioctl, > }; > > static void cros_ec_class_release(struct device *dev) > diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c > index 997f92543dd4..5bb406dabe85 100644 > --- a/drivers/misc/vmw_vmci/vmci_host.c > +++ b/drivers/misc/vmw_vmci/vmci_host.c > @@ -969,7 +969,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 = compat_ptr_ioctl, > }; > > static struct miscdevice vmci_host_miscdev = { > diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c > index 7bbff0af29b2..065ebd584482 100644 > --- a/drivers/nvdimm/bus.c > +++ b/drivers/nvdimm/bus.c > @@ -1167,7 +1167,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > @@ -1175,7 +1175,7 @@ static const struct file_operations nvdimm_fops = { > .owner = THIS_MODULE, > .open = nd_open, > .unlocked_ioctl = nvdimm_ioctl, > - .compat_ioctl = nvdimm_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 2c43e12b70af..560929bee5ce 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -2739,7 +2739,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 = compat_ptr_ioctl, > }; > > static ssize_t nvme_sysfs_reset(struct device *dev, > diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c > index e22766c79fe9..3a54b4b616e2 100644 > --- a/drivers/pci/switch/switchtec.c > +++ b/drivers/pci/switch/switchtec.c > @@ -1006,7 +1006,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 = compat_ptr_ioctl, > }; > > static void link_event_work(struct work_struct *work) > diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c > index 7b26b6ccf1a0..dded9cef42f4 100644 > --- a/drivers/platform/x86/wmi.c > +++ b/drivers/platform/x86/wmi.c > @@ -889,7 +889,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 = compat_ptr_ioctl, > }; > > static int wmi_dev_probe(struct device *dev) > diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c > index eea5ebbb5119..507bfe163883 100644 > --- a/drivers/rpmsg/rpmsg_char.c > +++ b/drivers/rpmsg/rpmsg_char.c > @@ -290,7 +290,7 @@ static const struct file_operations rpmsg_eptdev_fops = { > .write_iter = rpmsg_eptdev_write_iter, > .poll = rpmsg_eptdev_poll, > .unlocked_ioctl = rpmsg_eptdev_ioctl, > - .compat_ioctl = rpmsg_eptdev_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > static ssize_t name_show(struct device *dev, struct device_attribute *attr, > @@ -451,7 +451,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 = compat_ptr_ioctl, > }; > > static void rpmsg_ctrldev_release_device(struct device *dev) > diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c > index a36e4cf1841d..c9f60656f54d 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 = compat_ptr_ioctl, > .open = d7s_open, > .release = d7s_release, > .llseek = noop_llseek, > diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c > index 1a6e7224017c..dd2dfa85fc68 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 = compat_ptr_ioctl, > .open = envctrl_open, > .release = envctrl_release, > .llseek = noop_llseek, > diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c > index 2b1e0d503020..fb6444d0409c 100644 > --- a/drivers/scsi/3w-xxxx.c > +++ b/drivers/scsi/3w-xxxx.c > @@ -1049,9 +1049,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 = compat_ptr_ioctl, > .open = tw_chrdev_open, > .release = NULL, > .llseek = noop_llseek, > diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c > index 7096810fd222..e13d5de1d76e 100644 > --- a/drivers/scsi/cxlflash/main.c > +++ b/drivers/scsi/cxlflash/main.c > @@ -3589,7 +3589,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 = compat_ptr_ioctl, > }; > > /** > diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c > index fdbda5c05aa0..80c5a235d193 100644 > --- a/drivers/scsi/esas2r/esas2r_main.c > +++ b/drivers/scsi/esas2r/esas2r_main.c > @@ -613,7 +613,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 = compat_ptr_ioctl, > .unlocked_ioctl = esas2r_proc_ioctl, > }; > > diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c > index e338d7a4f571..c0a1a1218c56 100644 > --- a/drivers/scsi/pmcraid.c > +++ b/drivers/scsi/pmcraid.c > @@ -3988,9 +3988,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c > index 92c2914239e3..1663c163edca 100644 > --- a/drivers/staging/android/ion/ion.c > +++ b/drivers/staging/android/ion/ion.c > @@ -567,9 +567,7 @@ static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > static const struct file_operations ion_fops = { > .owner = THIS_MODULE, > .unlocked_ioctl = ion_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = ion_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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..fd0ea4dbcb91 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 = compat_ptr_ioctl, > .mmap = vme_user_mmap, > }; > > diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c > index 17c64fccbb10..eb97acf09868 100644 > --- a/drivers/tee/tee_core.c > +++ b/drivers/tee/tee_core.c > @@ -684,7 +684,7 @@ static const struct file_operations tee_fops = { > .open = tee_open, > .release = tee_release, > .unlocked_ioctl = tee_ioctl, > - .compat_ioctl = tee_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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 9e9caff905d5..d48c032580d0 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c > index 4942122b2346..bbd0308b13f5 100644 > --- a/drivers/usb/class/usbtmc.c > +++ b/drivers/usb/class/usbtmc.c > @@ -2220,9 +2220,7 @@ static const struct file_operations fops = { > .release = usbtmc_release, > .flush = usbtmc_flush, > .unlocked_ioctl = usbtmc_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = usbtmc_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > .fasync = usbtmc_fasync, > .poll = usbtmc_poll, > .llseek = default_llseek, > diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c > index 8ba726e600e9..fbf02bf60f62 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 = compat_ptr_ioctl, > }; > > static struct miscdevice fsl_hv_misc_dev = { > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index 120e4340792a..162ea4b6b417 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -2307,7 +2307,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 = compat_ptr_ioctl, > .owner = THIS_MODULE, > .llseek = noop_llseek, > }; > diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c > index 7c060cb22aa3..a493b957713f 100644 > --- a/fs/ceph/dir.c > +++ b/fs/ceph/dir.c > @@ -1785,7 +1785,7 @@ const struct file_operations ceph_dir_fops = { > .open = ceph_open, > .release = ceph_release, > .unlocked_ioctl = ceph_ioctl, > - .compat_ioctl = ceph_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .fsync = ceph_fsync, > .lock = ceph_lock, > .flock = ceph_flock, > diff --git a/fs/ceph/file.c b/fs/ceph/file.c > index 9f53c3d99304..9b5fe7eee3c1 100644 > --- a/fs/ceph/file.c > +++ b/fs/ceph/file.c > @@ -2112,7 +2112,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 = compat_ptr_ioctl, > .fallocate = ceph_fallocate, > .copy_file_range = ceph_copy_file_range, > }; > diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c > index 9971a35cf1ef..dcdb26068b71 100644 > --- a/fs/fuse/dev.c > +++ b/fs/fuse/dev.c > @@ -2354,7 +2354,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 = compat_ptr_ioctl, > }; > EXPORT_SYMBOL_GPL(fuse_dev_operations); > > diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c > index a90bb19dcfa2..a55aa029a308 100644 > --- a/fs/notify/fanotify/fanotify_user.c > +++ b/fs/notify/fanotify/fanotify_user.c > @@ -523,7 +523,7 @@ static const struct file_operations fanotify_fops = { > .fasync = NULL, > .release = fanotify_release, > .unlocked_ioctl = fanotify_ioctl, > - .compat_ioctl = fanotify_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c > index 89800fc7dc9d..f93dcf8c996f 100644 > --- a/fs/userfaultfd.c > +++ b/fs/userfaultfd.c > @@ -1901,7 +1901,7 @@ static const struct file_operations userfaultfd_fops = { > .poll = userfaultfd_poll, > .read = userfaultfd_read, > .unlocked_ioctl = userfaultfd_ioctl, > - .compat_ioctl = userfaultfd_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/net/rfkill/core.c b/net/rfkill/core.c > index abca57040f37..3b2f6ea44397 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 = compat_ptr_ioctl, > #endif > .llseek = no_llseek, > }; Thanks, Mauro 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: [v3,12/26] compat_ioctl: move more drivers to compat_ptr_ioctl From: Mauro Carvalho Chehab Message-Id: <20190425122153.450fc094@coco.lan> Date: Thu, 25 Apr 2019 12:21:53 -0300 To: Arnd Bergmann Cc: Alexander Viro , linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , Greg Kroah-Hartman , David Sterba , Darren Hart , Jonathan Cameron , Bjorn Andersson , devel@driverdev.osuosl.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-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Sean Young List-ID: RW0gVHVlLCAxNiBBcHIgMjAxOSAyMjoyNTozMyArMDIwMApBcm5kIEJlcmdtYW5uIDxhcm5kQGFy bmRiLmRlPiBlc2NyZXZldToKCj4gVGhlIC5pb2N0bCBhbmQgLmNvbXBhdF9pb2N0bCBmaWxlIG9w ZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcm90b3R5cGUgc28KPiB0aGV5IGNhbiBib3RoIHBvaW50 IHRvIHRoZSBzYW1lIGZ1bmN0aW9uLCB3aGljaCB3b3JrcyBncmVhdCBhbG1vc3QgYWxsCj4gdGhl IHRpbWUgd2hlbiBhbGwgdGhlIGNvbW1hbmRzIGFyZSBjb21wYXRpYmxlLgo+IAo+IE9uZSBleGNl cHRpb24gaXMgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLCB3aGVyZSBhIGNvbXBhdCBwb2ludGVyIGlz IG9ubHkKPiAzMSBiaXQgd2lkZSwgYW5kIGNvbnZlcnRpbmcgaXQgaW50byBhIDY0LWJpdCBwb2lu dGVyIHJlcXVpcmVzIGNhbGxpbmcKPiBjb21wYXRfcHRyKCkuIE1vc3QgZHJpdmVycyBoZXJlIHdp bGwgZXZlciBydW4gaW4gczM5MCwgYnV0IHNpbmNlIHdlIG5vdwo+IGhhdmUgYSBnZW5lcmljIGhl bHBlciBmb3IgaXQsIGl0J3MgZWFzeSBlbm91Z2ggdG8gdXNlIGl0IGNvbnNpc3RlbnRseS4KPiAK PiBJIGRvdWJsZS1jaGVja2VkIGFsbCB0aGVzZSBkcml2ZXJzIHRvIGVuc3VyZSB0aGF0IGFsbCBp b2N0bCBhcmd1bWVudHMKPiBhcmUgdXNlZCBhcyBwb2ludGVycyBvciBhcmUgaWdub3JlZCwgYnV0 IGFyZSBub3QgaW50ZXJwcmV0ZWQgYXMgaW50ZWdlcgo+IHZhbHVlcy4KPiAKPiBBY2tlZC1ieTog SmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgo+IEFja2VkLWJ5OiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IEFja2VkLWJ5OiBNYXVybyBDYXJ2YWxobyBD aGVoYWIgPG1jaGVoYWIrc2Ftc3VuZ0BrZXJuZWwub3JnPgo+IEFja2VkLWJ5OiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgo+IEFja2VkLWJ5OiBEYXZpZCBT dGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+Cj4gQWNrZWQtYnk6IERhcnJlbiBIYXJ0IChWTXdhcmUp IDxkdmhhcnRAaW5mcmFkZWFkLm9yZz4KPiBBY2tlZC1ieTogSm9uYXRoYW4gQ2FtZXJvbiA8Sm9u YXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPgo+IEFja2VkLWJ5OiBCam9ybiBBbmRlcnNzb24gPGJq b3JuLmFuZGVyc3NvbkBsaW5hcm8ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IEFybmQgQmVyZ21hbm4g PGFybmRAYXJuZGIuZGU+Cj4gLS0tCj4gIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYyAgICAgICAg ICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfY29tbW9uL2FkZl9j dGxfZHJ2LmMgfCAyICstCj4gIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgICAgICAgICAgICAg ICAgICAgfCA0ICstLS0KPiAgZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuYyAgICAgICAgICAgICAg ICAgICB8IDIgKy0KPiAgZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jICAgICAgICAgICAgICAg ICB8IDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYyAgICB8 IDIgKy0KPiAgZHJpdmVycy9oaWQvaGlkcmF3LmMgICAgICAgICAgICAgICAgICAgICAgICB8IDQg Ky0tLQo+ICBkcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jICAgICAgICAgICAgIHwgMiAr LQo+ICBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jICAgICAgIHwgNCArKy0t Cj4gIGRyaXZlcnMvbWVkaWEvcmMvbGlyY19kZXYuYyAgICAgICAgICAgICAgICAgfCA0ICstLS0K CklmIEkgdW5kZXJzdGFuZCB5b3VyIHBhdGNoIGRlc2NyaXB0aW9uIHdlbGwsIHVzaW5nIGNvbXBh dF9wdHJfaW9jdGwKb25seSB3b3JrcyBpZiB0aGUgZHJpdmVyIGlzIG5vdCBmb3IgczM5MCwgcmln aHQ/CgpJbiB0aGVzaXMsIG5vdGhpbmcgcHJldmVudHMgdG8gdXNlIExJUkMgQVBJIG9uIHMzOTAg LSBhcyB0aGlzIGlzbid0CmEgZHJpdmVyIGJ1dCwgaW5zdGVhZCwgUkMgY29yZSBmZWF0dXJlIHRv IGV4cG9zZSByYXcgcmVtb3RlIGNvbnRyb2xsZXIKY29kZXMgdG8gdXNlcnNwYWNlLgoKWWV0LCBs aXJjX2RldiB3aWxsIG9ubHkgd29yayBpZiB0aGUgc3lzdGVtIGhhcyBhIHJlbW90ZSBjb250cm9s bGVyIGRyaXZlci4KCldlbGwsIHdlIGRvbid0IGhhdmUgYW55IGZvciBzMzkwLiBEZXNwaXRlIHdl IGRvbid0IGhhdmUgc3VjaCBkcml2ZXIsIApJIGNhbid0IHBvc3NpYmxlIHNlZSB3aHkgc29tZW9u ZSB3b3VsZCB1c2UgYSByZW1vdGUgY29udHJvbGxlciBmb3IgYQptYWluZnJhbWUgOi1wCgpBbnl3 YXksIGlmIHNvbWVvbmUgZXZlciBjb21lIHdpdGggc3VjaCBkcml2ZXIvdXNlY2FzZSwgcmV2ZXJ0 aW5nIHRoaXMKY2hhbmdlIChvciBhZGRpbmcgYW4gI2lmZGVmIHRvIGNoZWNrIGlmIGFyY2ggaXMg MzkwKSBzaG91bGQgYmUKcHJldHR5IHN0cmFpZ2h0IGZvcndhcmQuCgpTbzoKCkFja2VkLWJ5OiBN YXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWIrc2Ftc3VuZ0BrZXJuZWwub3JnPgoKCgo+ICBk cml2ZXJzL21mZC9jcm9zX2VjX2Rldi5jICAgICAgICAgICAgICAgICAgIHwgNCArLS0tCj4gIGRy aXZlcnMvbWlzYy92bXdfdm1jaS92bWNpX2hvc3QuYyAgICAgICAgICAgfCAyICstCj4gIGRyaXZl cnMvbnZkaW1tL2J1cy5jICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KPiAgZHJpdmVy cy9udm1lL2hvc3QvY29yZS5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9w Y2kvc3dpdGNoL3N3aXRjaHRlYy5jICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9wbGF0 Zm9ybS94ODYvd21pLmMgICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9ycG1zZy9y cG1zZ19jaGFyLmMgICAgICAgICAgICAgICAgICB8IDQgKystLQo+ICBkcml2ZXJzL3NidXMvY2hh ci9kaXNwbGF5N3NlZy5jICAgICAgICAgICAgIHwgMiArLQo+ICBkcml2ZXJzL3NidXMvY2hhci9l bnZjdHJsLmMgICAgICAgICAgICAgICAgIHwgNCArLS0tCj4gIGRyaXZlcnMvc2NzaS8zdy14eHh4 LmMgICAgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KPiAgZHJpdmVycy9zY3NpL2N4bGZsYXNo L21haW4uYyAgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9zY3NpL2VzYXMyci9lc2Fz MnJfbWFpbi5jICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9zY3NpL3BtY3JhaWQuYyAgICAg ICAgICAgICAgICAgICAgICB8IDQgKy0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24v aW9uLmMgICAgICAgICAgIHwgNCArLS0tCj4gIGRyaXZlcnMvc3RhZ2luZy92bWUvZGV2aWNlcy92 bWVfdXNlci5jICAgICAgfCAyICstCj4gIGRyaXZlcnMvdGVlL3RlZV9jb3JlLmMgICAgICAgICAg ICAgICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0uYyAgICAgICAg ICAgICAgICAgfCAyICstCj4gIGRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jICAgICAgICAgICAg ICAgICAgfCA0ICstLS0KPiAgZHJpdmVycy92aXJ0L2ZzbF9oeXBlcnZpc29yLmMgICAgICAgICAg ICAgICB8IDIgKy0KPiAgZnMvYnRyZnMvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDIgKy0KPiAgZnMvY2VwaC9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIgKy0KPiAgZnMvY2VwaC9maWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIg Ky0KPiAgZnMvZnVzZS9kZXYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0K PiAgZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYyAgICAgICAgICB8IDIgKy0KPiAg ZnMvdXNlcmZhdWx0ZmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgbmV0 L3Jma2lsbC9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KPiAgMzYgZmls ZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIu Ywo+IGluZGV4IDRiOWM3Y2E0OTJlNi4uNDgxMDlhZGU3MjM0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvYW5kcm9pZC9iaW5kZXIuYwo+ICsrKyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYwo+IEBA IC01OTk4LDcgKzU5OTgsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJpbmRlcl9m b3BzID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkucG9sbCA9IGJpbmRlcl9wb2xs LAo+ICAJLnVubG9ja2VkX2lvY3RsID0gYmluZGVyX2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bCA9 IGJpbmRlcl9pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwgPSBjb21wYXRfcHRyX2lvY3RsLAo+ICAJ Lm1tYXAgPSBiaW5kZXJfbW1hcCwKPiAgCS5vcGVuID0gYmluZGVyX29wZW4sCj4gIAkuZmx1c2gg PSBiaW5kZXJfZmx1c2gsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL3FhdC9xYXRfY29t bW9uL2FkZl9jdGxfZHJ2LmMgYi9kcml2ZXJzL2NyeXB0by9xYXQvcWF0X2NvbW1vbi9hZGZfY3Rs X2Rydi5jCj4gaW5kZXggYWJjN2E3ZjY0ZDY0Li5lZjBlNDgyZWUwNGYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9jb21tb24vYWRmX2N0bF9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvY3J5cHRvL3FhdC9xYXRfY29tbW9uL2FkZl9jdGxfZHJ2LmMKPiBAQCAtNjgsNyArNjgsNyBA QCBzdGF0aWMgbG9uZyBhZGZfY3RsX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdW5zaWduZWQgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBhZGZfY3RsX29wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ICAJLnVu bG9ja2VkX2lvY3RsID0gYWRmX2N0bF9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwgPSBhZGZfY3Rs X2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ ICBzdHJ1Y3QgYWRmX2N0bF9kcnZfaW5mbyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gaW5kZXggN2M4NTgwMjBk MTRiLi4wY2IzMzZmZTYzMjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYu Ywo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiBAQCAtMzI1LDkgKzMyNSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtYV9idWZfZm9wcyA9IHsKPiAg CS5sbHNlZWsJCT0gZG1hX2J1Zl9sbHNlZWssCj4gIAkucG9sbAkJPSBkbWFfYnVmX3BvbGwsCj4g IAkudW5sb2NrZWRfaW9jdGwJPSBkbWFfYnVmX2lvY3RsLAo+IC0jaWZkZWYgQ09ORklHX0NPTVBB VAo+IC0JLmNvbXBhdF9pb2N0bAk9IGRtYV9idWZfaW9jdGwsCj4gLSNlbmRpZgo+ICsJLmNvbXBh dF9pb2N0bAk9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ICAvKgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuYwo+ IGluZGV4IDMyZGNmN2I0YzkzNS4uNDExZGU2YThhMGFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv ZG1hLWJ1Zi9zd19zeW5jLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jCj4gQEAg LTQxOSw1ICs0MTksNSBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHN3X3N5bmNfZGVi dWdmc19mb3BzID0gewo+ICAJLm9wZW4gICAgICAgICAgID0gc3dfc3luY19kZWJ1Z2ZzX29wZW4s Cj4gIAkucmVsZWFzZSAgICAgICAgPSBzd19zeW5jX2RlYnVnZnNfcmVsZWFzZSwKPiAgCS51bmxv Y2tlZF9pb2N0bCA9IHN3X3N5bmNfaW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsCT0gc3dfc3luY19p b2N0bCwKPiArCS5jb21wYXRfaW9jdGwJPSBjb21wYXRfcHRyX2lvY3RsLAo+ICB9Owo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMgYi9kcml2ZXJzL2RtYS1idWYvc3lu Y19maWxlLmMKPiBpbmRleCA0ZjYzMDVjYTUyYzguLjA5NDlmOTFlYjg1ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvc3lu Y19maWxlLmMKPiBAQCAtNDg4LDUgKzQ4OCw1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHN5bmNfZmlsZV9mb3BzID0gewo+ICAJLnJlbGVhc2UgPSBzeW5jX2ZpbGVfcmVs ZWFzZSwKPiAgCS5wb2xsID0gc3luY19maWxlX3BvbGwsCj4gIAkudW5sb2NrZWRfaW9jdGwgPSBz eW5jX2ZpbGVfaW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsID0gc3luY19maWxlX2lvY3RsLAo+ICsJ LmNvbXBhdF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jCj4gaW5kZXggMDgzYmQ4MTE0ZGIxLi41ZDZhYzc4ODVh YTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMKPiBAQCAt NDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBrZmRfZGV2X25hbWVbXSA9ICJrZmQiOwo+ ICBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBrZmRfZm9wcyA9IHsKPiAgCS5v d25lciA9IFRISVNfTU9EVUxFLAo+ICAJLnVubG9ja2VkX2lvY3RsID0ga2ZkX2lvY3RsLAo+IC0J LmNvbXBhdF9pb2N0bCA9IGtmZF9pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwgPSBjb21wYXRfcHRy X2lvY3RsLAo+ICAJLm9wZW4gPSBrZmRfb3BlbiwKPiAgCS5tbWFwID0ga2ZkX21tYXAsCj4gIH07 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZHJhdy5jIGIvZHJpdmVycy9oaWQvaGlkcmF3 LmMKPiBpbmRleCA5ZmM1MWVmZjEwNzkuLmU3Mjg0ZDM4YjY2ZCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2hpZC9oaWRyYXcuYwo+ICsrKyBiL2RyaXZlcnMvaGlkL2hpZHJhdy5jCj4gQEAgLTQ3Niw5 ICs0NzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoaWRyYXdfb3Bz ID0gewo+ICAJLnJlbGVhc2UgPSAgICAgIGhpZHJhd19yZWxlYXNlLAo+ICAJLnVubG9ja2VkX2lv Y3RsID0gaGlkcmF3X2lvY3RsLAo+ICAJLmZhc3luYyA9CWhpZHJhd19mYXN5bmMsCj4gLSNpZmRl ZiBDT05GSUdfQ09NUEFUCj4gLQkuY29tcGF0X2lvY3RsICAgPSBoaWRyYXdfaW9jdGwsCj4gLSNl bmRpZgo+ICsJLmNvbXBhdF9pb2N0bCAgID0gY29tcGF0X3B0cl9pb2N0bCwKPiAgCS5sbHNlZWsg PQlub29wX2xsc2VlaywKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2luZHVz dHJpYWxpby1jb3JlLmMgYi9kcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCj4gaW5kZXgg NDcwMGZkNWQ4YzkwLi5lZWQxYmVhMjU3YjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vaW5k dXN0cmlhbGlvLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMK PiBAQCAtMTYzNSw3ICsxNjM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgaWlvX2J1ZmZlcl9maWxlb3BzID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAku bGxzZWVrID0gbm9vcF9sbHNlZWssCj4gIAkudW5sb2NrZWRfaW9jdGwgPSBpaW9faW9jdGwsCj4g LQkuY29tcGF0X2lvY3RsID0gaWlvX2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bCA9IGNvbXBhdF9w dHJfaW9jdGwsCj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IGlpb19jaGVja191bmlxdWVfc2Nhbl9p bmRleChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lu ZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZl cmJzX21haW4uYwo+IGluZGV4IDcwYjdkODA0MzFhOS4uYWM0MzIxZDdjODAwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMKPiArKysgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jCj4gQEAgLTExMjAsNyArMTEyMCw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHV2ZXJic19mb3BzID0gewo+ICAJLnJl bGVhc2UgPSBpYl91dmVyYnNfY2xvc2UsCj4gIAkubGxzZWVrCSA9IG5vX2xsc2VlaywKPiAgCS51 bmxvY2tlZF9pb2N0bCA9IGliX3V2ZXJic19pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwgPSBpYl91 dmVyYnNfaW9jdGwsCj4gKwkuY29tcGF0X2lvY3RsID0gY29tcGF0X3B0cl9pb2N0bCwKPiAgfTsK PiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHV2ZXJic19tbWFwX2Zv cHMgPSB7Cj4gQEAgLTExMzEsNyArMTEzMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHV2ZXJic19tbWFwX2ZvcHMgPSB7Cj4gIAkucmVsZWFzZSA9IGliX3V2ZXJic19j bG9zZSwKPiAgCS5sbHNlZWsJID0gbm9fbGxzZWVrLAo+ICAJLnVubG9ja2VkX2lvY3RsID0gaWJf dXZlcmJzX2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bCA9IGliX3V2ZXJic19pb2N0bCwKPiArCS5j b21wYXRfaW9jdGwgPSBjb21wYXRfcHRyX2lvY3RsLAo+ICB9Owo+ICAKPiAgc3RhdGljIHN0cnVj dCBpYl9jbGllbnQgdXZlcmJzX2NsaWVudCA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9yYy9saXJjX2Rldi5jIGIvZHJpdmVycy9tZWRpYS9yYy9saXJjX2Rldi5jCj4gaW5kZXggZjg2 MmYxYjdmOTk2Li45Y2NjN2U5Y2JjOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9s aXJjX2Rldi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9yYy9saXJjX2Rldi5jCj4gQEAgLTczMCw5 ICs3MzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBsaXJjX2ZvcHMg PSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkud3JpdGUJCT0gaXJfbGlyY190cmFu c21pdF9pciwKPiAgCS51bmxvY2tlZF9pb2N0bAk9IGlyX2xpcmNfaW9jdGwsCj4gLSNpZmRlZiBD T05GSUdfQ09NUEFUCj4gLQkuY29tcGF0X2lvY3RsCT0gaXJfbGlyY19pb2N0bCwKPiAtI2VuZGlm Cj4gKwkuY29tcGF0X2lvY3RsCT0gY29tcGF0X3B0cl9pb2N0bCwKPiAgCS5yZWFkCQk9IGlyX2xp cmNfcmVhZCwKPiAgCS5wb2xsCQk9IGlyX2xpcmNfcG9sbCwKPiAgCS5vcGVuCQk9IGlyX2xpcmNf b3BlbiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvY3Jvc19lY19kZXYuYyBiL2RyaXZlcnMv bWZkL2Nyb3NfZWNfZGV2LmMKPiBpbmRleCBkMjc1ZGVhZWNiMTIuLjRhNjAyYTQwZDc1YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9jcm9zX2VjX2Rldi5jCj4gKysrIGIvZHJpdmVycy9tZmQv Y3Jvc19lY19kZXYuYwo+IEBAIC0yNTEsOSArMjUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgZm9wcyA9IHsKPiAgCS5yZWxlYXNlID0gZWNfZGV2aWNlX3JlbGVhc2Us Cj4gIAkucmVhZCA9IGVjX2RldmljZV9yZWFkLAo+ICAJLnVubG9ja2VkX2lvY3RsID0gZWNfZGV2 aWNlX2lvY3RsLAo+IC0jaWZkZWYgQ09ORklHX0NPTVBBVAo+IC0JLmNvbXBhdF9pb2N0bCA9IGVj X2RldmljZV9pb2N0bCwKPiAtI2VuZGlmCj4gKwkuY29tcGF0X2lvY3RsID0gY29tcGF0X3B0cl9p b2N0bCwKPiAgfTsKPiAgCj4gIHN0YXRpYyB2b2lkIGNyb3NfZWNfY2xhc3NfcmVsZWFzZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy92bXdfdm1jaS92bWNp X2hvc3QuYyBiL2RyaXZlcnMvbWlzYy92bXdfdm1jaS92bWNpX2hvc3QuYwo+IGluZGV4IDk5N2Y5 MjU0M2RkNC4uNWJiNDA2ZGFiZTg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy92bXdfdm1j aS92bWNpX2hvc3QuYwo+ICsrKyBiL2RyaXZlcnMvbWlzYy92bXdfdm1jaS92bWNpX2hvc3QuYwo+ IEBAIC05NjksNyArOTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg dm11c2VyX2ZvcHMgPSB7Cj4gIAkucmVsZWFzZQk9IHZtY2lfaG9zdF9jbG9zZSwKPiAgCS5wb2xs CQk9IHZtY2lfaG9zdF9wb2xsLAo+ICAJLnVubG9ja2VkX2lvY3RsCT0gdm1jaV9ob3N0X3VubG9j a2VkX2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bAk9IHZtY2lfaG9zdF91bmxvY2tlZF9pb2N0bCwK PiArCS5jb21wYXRfaW9jdGwJPSBjb21wYXRfcHRyX2lvY3RsLAo+ICB9Owo+ICAKPiAgc3RhdGlj IHN0cnVjdCBtaXNjZGV2aWNlIHZtY2lfaG9zdF9taXNjZGV2ID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL252ZGltbS9idXMuYyBiL2RyaXZlcnMvbnZkaW1tL2J1cy5jCj4gaW5kZXggN2JiZmYw YWYyOWIyLi4wNjVlYmQ1ODQ0ODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9udmRpbW0vYnVzLmMK PiArKysgYi9kcml2ZXJzL252ZGltbS9idXMuYwo+IEBAIC0xMTY3LDcgKzExNjcsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudmRpbW1fYnVzX2ZvcHMgPSB7Cj4gIAku b3duZXIgPSBUSElTX01PRFVMRSwKPiAgCS5vcGVuID0gbmRfb3BlbiwKPiAgCS51bmxvY2tlZF9p b2N0bCA9IG5kX2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bCA9IG5kX2lvY3RsLAo+ICsJLmNvbXBh dF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIAkubGxzZWVrID0gbm9vcF9sbHNlZWssCj4g IH07Cj4gIAo+IEBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVf b3BlcmF0aW9ucyBudmRpbW1fZm9wcyA9IHsKPiAgCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ICAJ Lm9wZW4gPSBuZF9vcGVuLAo+ICAJLnVubG9ja2VkX2lvY3RsID0gbnZkaW1tX2lvY3RsLAo+IC0J LmNvbXBhdF9pb2N0bCA9IG52ZGltbV9pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwgPSBjb21wYXRf cHRyX2lvY3RsLAo+ICAJLmxsc2VlayA9IG5vb3BfbGxzZWVrLAo+ICB9Owo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jIGIvZHJpdmVycy9udm1lL2hvc3QvY29yZS5j Cj4gaW5kZXggMmM0M2UxMmI3MGFmLi41NjA5MjliZWU1Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9udm1lL2hvc3QvY29yZS5jCj4gKysrIGIvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCj4gQEAg LTI3MzksNyArMjczOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG52 bWVfZGV2X2ZvcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gIAkub3BlbgkJPSBu dm1lX2Rldl9vcGVuLAo+ICAJLnVubG9ja2VkX2lvY3RsCT0gbnZtZV9kZXZfaW9jdGwsCj4gLQku Y29tcGF0X2lvY3RsCT0gbnZtZV9kZXZfaW9jdGwsCj4gKwkuY29tcGF0X2lvY3RsCT0gY29tcGF0 X3B0cl9pb2N0bCwKPiAgfTsKPiAgCj4gIHN0YXRpYyBzc2l6ZV90IG52bWVfc3lzZnNfcmVzZXQo c3RydWN0IGRldmljZSAqZGV2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9zd2l0Y2gvc3dp dGNodGVjLmMgYi9kcml2ZXJzL3BjaS9zd2l0Y2gvc3dpdGNodGVjLmMKPiBpbmRleCBlMjI3NjZj NzlmZTkuLjNhNTRiNGI2MTZlMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9zd2l0Y2gvc3dp dGNodGVjLmMKPiArKysgYi9kcml2ZXJzL3BjaS9zd2l0Y2gvc3dpdGNodGVjLmMKPiBAQCAtMTAw Niw3ICsxMDA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc3dpdGNo dGVjX2ZvcHMgPSB7Cj4gIAkucmVhZCA9IHN3aXRjaHRlY19kZXZfcmVhZCwKPiAgCS5wb2xsID0g c3dpdGNodGVjX2Rldl9wb2xsLAo+ICAJLnVubG9ja2VkX2lvY3RsID0gc3dpdGNodGVjX2Rldl9p b2N0bCwKPiAtCS5jb21wYXRfaW9jdGwgPSBzd2l0Y2h0ZWNfZGV2X2lvY3RsLAo+ICsJLmNvbXBh dF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ICBzdGF0aWMgdm9pZCBsaW5r X2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BsYXRmb3JtL3g4Ni93bWkuYyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L3dtaS5jCj4gaW5k ZXggN2IyNmI2Y2NmMWEwLi5kZGVkOWNlZjQyZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wbGF0 Zm9ybS94ODYvd21pLmMKPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni93bWkuYwo+IEBAIC04 ODksNyArODg5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd21pX2Zv cHMgPSB7Cj4gIAkucmVhZAkJPSB3bWlfY2hhcl9yZWFkLAo+ICAJLm9wZW4JCT0gd21pX2NoYXJf b3BlbiwKPiAgCS51bmxvY2tlZF9pb2N0bAk9IHdtaV9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwJ PSB3bWlfaW9jdGwsCj4gKwkuY29tcGF0X2lvY3RsCT0gY29tcGF0X3B0cl9pb2N0bCwKPiAgfTsK PiAgCj4gIHN0YXRpYyBpbnQgd21pX2Rldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcnBtc2cvcnBtc2dfY2hhci5jIGIvZHJpdmVycy9ycG1zZy9ycG1z Z19jaGFyLmMKPiBpbmRleCBlZWE1ZWJiYjUxMTkuLjUwN2JmZTE2Mzg4MyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3JwbXNnL3JwbXNnX2NoYXIuYwo+ICsrKyBiL2RyaXZlcnMvcnBtc2cvcnBtc2df Y2hhci5jCj4gQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBycG1zZ19lcHRkZXZfZm9wcyA9IHsKPiAgCS53cml0ZV9pdGVyID0gcnBtc2dfZXB0 ZGV2X3dyaXRlX2l0ZXIsCj4gIAkucG9sbCA9IHJwbXNnX2VwdGRldl9wb2xsLAo+ICAJLnVubG9j a2VkX2lvY3RsID0gcnBtc2dfZXB0ZGV2X2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bCA9IHJwbXNn X2VwdGRldl9pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwgPSBjb21wYXRfcHRyX2lvY3RsLAo+ICB9 Owo+ICAKPiAgc3RhdGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBycG1zZ19jdHJsZGV2X2ZvcHMgPSB7Cj4gIAku b3BlbiA9IHJwbXNnX2N0cmxkZXZfb3BlbiwKPiAgCS5yZWxlYXNlID0gcnBtc2dfY3RybGRldl9y ZWxlYXNlLAo+ICAJLnVubG9ja2VkX2lvY3RsID0gcnBtc2dfY3RybGRldl9pb2N0bCwKPiAtCS5j b21wYXRfaW9jdGwgPSBycG1zZ19jdHJsZGV2X2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bCA9IGNv bXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ICBzdGF0aWMgdm9pZCBycG1zZ19jdHJsZGV2X3Jl bGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z YnVzL2NoYXIvZGlzcGxheTdzZWcuYyBiL2RyaXZlcnMvc2J1cy9jaGFyL2Rpc3BsYXk3c2VnLmMK PiBpbmRleCBhMzZlNGNmMTg0MWQuLmM5ZjYwNjU2ZjU0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3NidXMvY2hhci9kaXNwbGF5N3NlZy5jCj4gKysrIGIvZHJpdmVycy9zYnVzL2NoYXIvZGlzcGxh eTdzZWcuYwo+IEBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGxvbmcgZDdzX2lvY3RsKHN0cnVj dCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZDdzX2ZvcHMgPSB7Cj4gIAkub3duZXIg PQkJVEhJU19NT0RVTEUsCj4gIAkudW5sb2NrZWRfaW9jdGwgPQlkN3NfaW9jdGwsCj4gLQkuY29t cGF0X2lvY3RsID0JCWQ3c19pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwgPQkJY29tcGF0X3B0cl9p b2N0bCwKPiAgCS5vcGVuID0JCQlkN3Nfb3BlbiwKPiAgCS5yZWxlYXNlID0JCWQ3c19yZWxlYXNl LAo+ICAJLmxsc2VlayA9IG5vb3BfbGxzZWVrLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NidXMv Y2hhci9lbnZjdHJsLmMgYi9kcml2ZXJzL3NidXMvY2hhci9lbnZjdHJsLmMKPiBpbmRleCAxYTZl NzIyNDAxN2MuLmRkMmRmYTg1ZmM2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NidXMvY2hhci9l bnZjdHJsLmMKPiArKysgYi9kcml2ZXJzL3NidXMvY2hhci9lbnZjdHJsLmMKPiBAQCAtNzE0LDkg KzcxNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVudmN0cmxfZm9w cyA9IHsKPiAgCS5vd25lciA9CQlUSElTX01PRFVMRSwKPiAgCS5yZWFkID0JCQllbnZjdHJsX3Jl YWQsCj4gIAkudW5sb2NrZWRfaW9jdGwgPQllbnZjdHJsX2lvY3RsLAo+IC0jaWZkZWYgQ09ORklH X0NPTVBBVAo+IC0JLmNvbXBhdF9pb2N0bCA9CQllbnZjdHJsX2lvY3RsLAo+IC0jZW5kaWYKPiAr CS5jb21wYXRfaW9jdGwgPQkJY29tcGF0X3B0cl9pb2N0bCwKPiAgCS5vcGVuID0JCQllbnZjdHJs X29wZW4sCj4gIAkucmVsZWFzZSA9CQllbnZjdHJsX3JlbGVhc2UsCj4gIAkubGxzZWVrID0JCW5v b3BfbGxzZWVrLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvM3cteHh4eC5jIGIvZHJpdmVy cy9zY3NpLzN3LXh4eHguYwo+IGluZGV4IDJiMWUwZDUwMzAyMC4uZmI2NDQ0ZDA0MDljIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvc2NzaS8zdy14eHh4LmMKPiArKysgYi9kcml2ZXJzL3Njc2kvM3ct eHh4eC5jCj4gQEAgLTEwNDksOSArMTA0OSw3IEBAIHN0YXRpYyBpbnQgdHdfY2hyZGV2X29wZW4o c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHR3X2ZvcHMgPSB7Cj4gIAkub3duZXIJCT0gVEhJU19NT0RV TEUsCj4gIAkudW5sb2NrZWRfaW9jdGwJPSB0d19jaHJkZXZfaW9jdGwsCj4gLSNpZmRlZiBDT05G SUdfQ09NUEFUCj4gLQkuY29tcGF0X2lvY3RsICAgPSB0d19jaHJkZXZfaW9jdGwsCj4gLSNlbmRp Zgo+ICsJLmNvbXBhdF9pb2N0bCAgID0gY29tcGF0X3B0cl9pb2N0bCwKPiAgCS5vcGVuCQk9IHR3 X2NocmRldl9vcGVuLAo+ICAJLnJlbGVhc2UJPSBOVUxMLAo+ICAJLmxsc2VlawkJPSBub29wX2xs c2VlaywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2N4bGZsYXNoL21haW4uYyBiL2RyaXZl cnMvc2NzaS9jeGxmbGFzaC9tYWluLmMKPiBpbmRleCA3MDk2ODEwZmQyMjIuLmUxM2Q1ZGUxZDc2 ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Njc2kvY3hsZmxhc2gvbWFpbi5jCj4gKysrIGIvZHJp dmVycy9zY3NpL2N4bGZsYXNoL21haW4uYwo+IEBAIC0zNTg5LDcgKzM1ODksNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBjeGxmbGFzaF9jaHJfZm9wcyA9IHsKPiAgCS5v d25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLAo+ICAJLm9wZW4gICAgICAgICAgID0gY3hsZmxh c2hfY2hyX29wZW4sCj4gIAkudW5sb2NrZWRfaW9jdGwJPSBjeGxmbGFzaF9jaHJfaW9jdGwsCj4g LQkuY29tcGF0X2lvY3RsCT0gY3hsZmxhc2hfY2hyX2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bAk9 IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zY3NpL2VzYXMyci9lc2FzMnJfbWFpbi5jIGIvZHJpdmVycy9zY3NpL2VzYXMyci9lc2FzMnJf bWFpbi5jCj4gaW5kZXggZmRiZGE1YzA1YWEwLi44MGM1YTIzNWQxOTMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9zY3NpL2VzYXMyci9lc2FzMnJfbWFpbi5jCj4gKysrIGIvZHJpdmVycy9zY3NpL2Vz YXMyci9lc2FzMnJfbWFpbi5jCj4gQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgaW50IF9faW5p dCBlc2FzMnJfaW5pdCh2b2lkKQo+ICAKPiAgLyogSGFuZGxlIGlvY3RsIGNhbGxzIHRvICIvcHJv Yy9zY3NpL2VzYXMyci9BVFRPbm9kZSIgKi8KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgZXNhczJyX3Byb2NfZm9wcyA9IHsKPiAtCS5jb21wYXRfaW9jdGwJPSBlc2FzMnJf cHJvY19pb2N0bCwKPiArCS5jb21wYXRfaW9jdGwJPSBjb21wYXRfcHRyX2lvY3RsLAo+ICAJLnVu bG9ja2VkX2lvY3RsID0gZXNhczJyX3Byb2NfaW9jdGwsCj4gIH07Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jIGIvZHJpdmVycy9zY3NpL3BtY3JhaWQuYwo+IGluZGV4 IGUzMzhkN2E0ZjU3MS4uYzBhMWExMjE4YzU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc2NzaS9w bWNyYWlkLmMKPiArKysgYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCj4gQEAgLTM5ODgsOSArMzk4 OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHBtY3JhaWRfZm9wcyA9 IHsKPiAgCS5vcGVuID0gcG1jcmFpZF9jaHJfb3BlbiwKPiAgCS5mYXN5bmMgPSBwbWNyYWlkX2No cl9mYXN5bmMsCj4gIAkudW5sb2NrZWRfaW9jdGwgPSBwbWNyYWlkX2Nocl9pb2N0bCwKPiAtI2lm ZGVmIENPTkZJR19DT01QQVQKPiAtCS5jb21wYXRfaW9jdGwgPSBwbWNyYWlkX2Nocl9pb2N0bCwK PiAtI2VuZGlmCj4gKwkuY29tcGF0X2lvY3RsID0gY29tcGF0X3B0cl9pb2N0bCwKPiAgCS5sbHNl ZWsgPSBub29wX2xsc2VlaywKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9hbmRyb2lkL2lvbi9pb24uYyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+ IGluZGV4IDkyYzI5MTQyMzllMy4uMTY2M2MxNjNlZGNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv c3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lk L2lvbi9pb24uYwo+IEBAIC01NjcsOSArNTY3LDcgQEAgc3RhdGljIGxvbmcgaW9uX2lvY3RsKHN0 cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaW9uX2ZvcHMgPSB7Cj4gIAkub3du ZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiAgCS51bmxvY2tlZF9pb2N0bCA9IGlvbl9pb2N0 bCwKPiAtI2lmZGVmIENPTkZJR19DT01QQVQKPiAtCS5jb21wYXRfaW9jdGwJPSBpb25faW9jdGws Cj4gLSNlbmRpZgo+ICsJLmNvbXBhdF9pb2N0bAk9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4g IAo+ICBzdGF0aWMgaW50IGRlYnVnX3Nocmlua19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9kZXZpY2VzL3ZtZV91c2VyLmMgYi9kcml2 ZXJzL3N0YWdpbmcvdm1lL2RldmljZXMvdm1lX3VzZXIuYwo+IGluZGV4IDZhMzNhYWExYTQ5Zi4u ZmQwZWE0ZGJjYjkxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy92bWUvZGV2aWNlcy92 bWVfdXNlci5jCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL3ZtZS9kZXZpY2VzL3ZtZV91c2VyLmMK PiBAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHZtZV91c2VyX2ZvcHMgPSB7Cj4gIAkud3JpdGUgPSB2bWVfdXNlcl93cml0ZSwKPiAgCS5sbHNl ZWsgPSB2bWVfdXNlcl9sbHNlZWssCj4gIAkudW5sb2NrZWRfaW9jdGwgPSB2bWVfdXNlcl91bmxv Y2tlZF9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwgPSB2bWVfdXNlcl91bmxvY2tlZF9pb2N0bCwK PiArCS5jb21wYXRfaW9jdGwgPSBjb21wYXRfcHRyX2lvY3RsLAo+ICAJLm1tYXAgPSB2bWVfdXNl cl9tbWFwLAo+ICB9Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90ZWUvdGVlX2NvcmUuYyBi L2RyaXZlcnMvdGVlL3RlZV9jb3JlLmMKPiBpbmRleCAxN2M2NGZjY2JiMTAuLmViOTdhY2YwOTg2 OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3RlZS90ZWVfY29yZS5jCj4gKysrIGIvZHJpdmVycy90 ZWUvdGVlX2NvcmUuYwo+IEBAIC02ODQsNyArNjg0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgdGVlX2ZvcHMgPSB7Cj4gIAkub3BlbiA9IHRlZV9vcGVuLAo+ICAJLnJl bGVhc2UgPSB0ZWVfcmVsZWFzZSwKPiAgCS51bmxvY2tlZF9pb2N0bCA9IHRlZV9pb2N0bCwKPiAt CS5jb21wYXRfaW9jdGwgPSB0ZWVfaW9jdGwsCj4gKwkuY29tcGF0X2lvY3RsID0gY29tcGF0X3B0 cl9pb2N0bCwKPiAgfTsKPiAgCj4gIHN0YXRpYyB2b2lkIHRlZV9yZWxlYXNlX2RldmljZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0u YyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0uYwo+IGluZGV4IDllOWNhZmY5MDVkNS4uZDQ4 YzAzMjU4MGQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0uYwo+ICsr KyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy13ZG0uYwo+IEBAIC03MjQsNyArNzI0LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd2RtX2ZvcHMgPSB7Cj4gIAkucmVsZWFz ZSA9CXdkbV9yZWxlYXNlLAo+ICAJLnBvbGwgPQkJd2RtX3BvbGwsCj4gIAkudW5sb2NrZWRfaW9j dGwgPSB3ZG1faW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsID0gd2RtX2lvY3RsLAo+ICsJLmNvbXBh dF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIAkubGxzZWVrID0Jbm9vcF9sbHNlZWssCj4g IH07Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYyBiL2RyaXZl cnMvdXNiL2NsYXNzL3VzYnRtYy5jCj4gaW5kZXggNDk0MjEyMmIyMzQ2Li5iYmQwMzA4YjEzZjUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKPiArKysgYi9kcml2ZXJz L3VzYi9jbGFzcy91c2J0bWMuYwo+IEBAIC0yMjIwLDkgKzIyMjAsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0gewo+ICAJLnJlbGVhc2UJPSB1c2J0bWNfcmVs ZWFzZSwKPiAgCS5mbHVzaAkJPSB1c2J0bWNfZmx1c2gsCj4gIAkudW5sb2NrZWRfaW9jdGwJPSB1 c2J0bWNfaW9jdGwsCj4gLSNpZmRlZiBDT05GSUdfQ09NUEFUCj4gLQkuY29tcGF0X2lvY3RsCT0g dXNidG1jX2lvY3RsLAo+IC0jZW5kaWYKPiArCS5jb21wYXRfaW9jdGwJPSBjb21wYXRfcHRyX2lv Y3RsLAo+ICAJLmZhc3luYyAgICAgICAgID0gdXNidG1jX2Zhc3luYywKPiAgCS5wb2xsICAgICAg ICAgICA9IHVzYnRtY19wb2xsLAo+ICAJLmxsc2VlawkJPSBkZWZhdWx0X2xsc2VlaywKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy92aXJ0L2ZzbF9oeXBlcnZpc29yLmMgYi9kcml2ZXJzL3ZpcnQvZnNs X2h5cGVydmlzb3IuYwo+IGluZGV4IDhiYTcyNmU2MDBlOS4uZmJmMDJiZjYwZjYyIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmlydC9mc2xfaHlwZXJ2aXNvci5jCj4gKysrIGIvZHJpdmVycy92aXJ0 L2ZzbF9oeXBlcnZpc29yLmMKPiBAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGZzbF9odl9mb3BzID0gewo+ICAJLnBvbGwgPSBmc2xfaHZfcG9s bCwKPiAgCS5yZWFkID0gZnNsX2h2X3JlYWQsCj4gIAkudW5sb2NrZWRfaW9jdGwgPSBmc2xfaHZf aW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsID0gZnNsX2h2X2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0 bCA9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIH07Cj4gIAo+ICBzdGF0aWMgc3RydWN0IG1pc2NkZXZp Y2UgZnNsX2h2X21pc2NfZGV2ID0gewo+IGRpZmYgLS1naXQgYS9mcy9idHJmcy9zdXBlci5jIGIv ZnMvYnRyZnMvc3VwZXIuYwo+IGluZGV4IDEyMGU0MzQwNzkyYS4uMTYyZWE0YjZiNDE3IDEwMDY0 NAo+IC0tLSBhL2ZzL2J0cmZzL3N1cGVyLmMKPiArKysgYi9mcy9idHJmcy9zdXBlci5jCj4gQEAg LTIzMDcsNyArMjMwNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBi dHJmc19zdXBlcl9vcHMgPSB7Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGJ0cmZzX2N0bF9mb3BzID0gewo+ICAJLm9wZW4gPSBidHJmc19jb250cm9sX29wZW4sCj4gIAku dW5sb2NrZWRfaW9jdGwJID0gYnRyZnNfY29udHJvbF9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwg PSBidHJmc19jb250cm9sX2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bCA9IGNvbXBhdF9wdHJfaW9j dGwsCj4gIAkub3duZXIJID0gVEhJU19NT0RVTEUsCj4gIAkubGxzZWVrID0gbm9vcF9sbHNlZWss Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2ZzL2NlcGgvZGlyLmMgYi9mcy9jZXBoL2Rpci5jCj4gaW5k ZXggN2MwNjBjYjIyYWEzLi5hNDkzYjk1NzcxM2YgMTAwNjQ0Cj4gLS0tIGEvZnMvY2VwaC9kaXIu Ywo+ICsrKyBiL2ZzL2NlcGgvZGlyLmMKPiBAQCAtMTc4NSw3ICsxNzg1LDcgQEAgY29uc3Qgc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyBjZXBoX2Rpcl9mb3BzID0gewo+ICAJLm9wZW4gPSBjZXBoX29w ZW4sCj4gIAkucmVsZWFzZSA9IGNlcGhfcmVsZWFzZSwKPiAgCS51bmxvY2tlZF9pb2N0bCA9IGNl cGhfaW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsID0gY2VwaF9pb2N0bCwKPiArCS5jb21wYXRfaW9j dGwgPSBjb21wYXRfcHRyX2lvY3RsLAo+ICAJLmZzeW5jID0gY2VwaF9mc3luYywKPiAgCS5sb2Nr ID0gY2VwaF9sb2NrLAo+ICAJLmZsb2NrID0gY2VwaF9mbG9jaywKPiBkaWZmIC0tZ2l0IGEvZnMv Y2VwaC9maWxlLmMgYi9mcy9jZXBoL2ZpbGUuYwo+IGluZGV4IDlmNTNjM2Q5OTMwNC4uOWI1ZmU3 ZWVlM2MxIDEwMDY0NAo+IC0tLSBhL2ZzL2NlcGgvZmlsZS5jCj4gKysrIGIvZnMvY2VwaC9maWxl LmMKPiBAQCAtMjExMiw3ICsyMTEyLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBj ZXBoX2ZpbGVfZm9wcyA9IHsKPiAgCS5zcGxpY2VfcmVhZCA9IGdlbmVyaWNfZmlsZV9zcGxpY2Vf cmVhZCwKPiAgCS5zcGxpY2Vfd3JpdGUgPSBpdGVyX2ZpbGVfc3BsaWNlX3dyaXRlLAo+ICAJLnVu bG9ja2VkX2lvY3RsID0gY2VwaF9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwJPSBjZXBoX2lvY3Rs LAo+ICsJLmNvbXBhdF9pb2N0bAk9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIAkuZmFsbG9jYXRlCT0g Y2VwaF9mYWxsb2NhdGUsCj4gIAkuY29weV9maWxlX3JhbmdlID0gY2VwaF9jb3B5X2ZpbGVfcmFu Z2UsCj4gIH07Cj4gZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jCj4g aW5kZXggOTk3MWEzNWNmMWVmLi5kY2RiMjYwNjhiNzEgMTAwNjQ0Cj4gLS0tIGEvZnMvZnVzZS9k ZXYuYwo+ICsrKyBiL2ZzL2Z1c2UvZGV2LmMKPiBAQCAtMjM1NCw3ICsyMzU0LDcgQEAgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0gewo+ICAJLnJlbGVh c2UJPSBmdXNlX2Rldl9yZWxlYXNlLAo+ICAJLmZhc3luYwkJPSBmdXNlX2Rldl9mYXN5bmMsCj4g IAkudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCwKPiAtCS5jb21wYXRfaW9jdGwgICA9 IGZ1c2VfZGV2X2lvY3RsLAo+ICsJLmNvbXBhdF9pb2N0bCAgID0gY29tcGF0X3B0cl9pb2N0bCwK PiAgfTsKPiAgRVhQT1JUX1NZTUJPTF9HUEwoZnVzZV9kZXZfb3BlcmF0aW9ucyk7Cj4gIAo+IGRp ZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jIGIvZnMvbm90aWZ5 L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYwo+IGluZGV4IGE5MGJiMTlkY2ZhMi4uYTU1YWEwMjlh MzA4IDEwMDY0NAo+IC0tLSBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKPiAr KysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jCj4gQEAgLTUyMyw3ICs1MjMs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYW5vdGlmeV9mb3BzID0g ewo+ICAJLmZhc3luYwkJPSBOVUxMLAo+ICAJLnJlbGVhc2UJPSBmYW5vdGlmeV9yZWxlYXNlLAo+ ICAJLnVubG9ja2VkX2lvY3RsCT0gZmFub3RpZnlfaW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsCT0g ZmFub3RpZnlfaW9jdGwsCj4gKwkuY29tcGF0X2lvY3RsCT0gY29tcGF0X3B0cl9pb2N0bCwKPiAg CS5sbHNlZWsJCT0gbm9vcF9sbHNlZWssCj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9mcy91c2Vy ZmF1bHRmZC5jIGIvZnMvdXNlcmZhdWx0ZmQuYwo+IGluZGV4IDg5ODAwZmM3ZGM5ZC4uZjkzZGNm OGM5OTZmIDEwMDY0NAo+IC0tLSBhL2ZzL3VzZXJmYXVsdGZkLmMKPiArKysgYi9mcy91c2VyZmF1 bHRmZC5jCj4gQEAgLTE5MDEsNyArMTkwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHVzZXJmYXVsdGZkX2ZvcHMgPSB7Cj4gIAkucG9sbAkJPSB1c2VyZmF1bHRmZF9w b2xsLAo+ICAJLnJlYWQJCT0gdXNlcmZhdWx0ZmRfcmVhZCwKPiAgCS51bmxvY2tlZF9pb2N0bCA9 IHVzZXJmYXVsdGZkX2lvY3RsLAo+IC0JLmNvbXBhdF9pb2N0bAk9IHVzZXJmYXVsdGZkX2lvY3Rs LAo+ICsJLmNvbXBhdF9pb2N0bAk9IGNvbXBhdF9wdHJfaW9jdGwsCj4gIAkubGxzZWVrCQk9IG5v b3BfbGxzZWVrLAo+ICB9Owo+ICAKPiBkaWZmIC0tZ2l0IGEvbmV0L3Jma2lsbC9jb3JlLmMgYi9u ZXQvcmZraWxsL2NvcmUuYwo+IGluZGV4IGFiY2E1NzA0MGYzNy4uM2IyZjZlYTQ0Mzk3IDEwMDY0 NAo+IC0tLSBhL25ldC9yZmtpbGwvY29yZS5jCj4gKysrIGIvbmV0L3Jma2lsbC9jb3JlLmMKPiBA QCAtMTMyMyw3ICsxMzIzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg cmZraWxsX2ZvcHMgPSB7Cj4gIAkucmVsZWFzZQk9IHJma2lsbF9mb3BfcmVsZWFzZSwKPiAgI2lm ZGVmIENPTkZJR19SRktJTExfSU5QVVQKPiAgCS51bmxvY2tlZF9pb2N0bAk9IHJma2lsbF9mb3Bf aW9jdGwsCj4gLQkuY29tcGF0X2lvY3RsCT0gcmZraWxsX2ZvcF9pb2N0bCwKPiArCS5jb21wYXRf aW9jdGwJPSBjb21wYXRfcHRyX2lvY3RsLAo+ICAjZW5kaWYKPiAgCS5sbHNlZWsJCT0gbm9fbGxz ZWVrLAo+ICB9OwoKCgpUaGFua3MsCk1hdXJvCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Carvalho Chehab Date: Thu, 25 Apr 2019 15:21:53 +0000 Subject: Re: [PATCH v3 12/26] compat_ioctl: move more drivers to compat_ptr_ioctl Message-Id: <20190425122153.450fc094@coco.lan> List-Id: References: <20190416202013.4034148-1-arnd@arndb.de> <20190416202701.127745-1-arnd@arndb.de> In-Reply-To: <20190416202701.127745-1-arnd@arndb.de> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Arnd Bergmann Cc: Alexander Viro , linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , Greg Kroah-Hartman , David Sterba , Darren Hart , Jonathan Cameron , Bjorn Andersson , devel@driverdev.osuosl.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 Em Tue, 16 Apr 2019 22:25:33 +0200 Arnd Bergmann escreveu: > 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. > > Acked-by: Jason Gunthorpe > Acked-by: Daniel Vetter > Acked-by: Mauro Carvalho Chehab > Acked-by: Greg Kroah-Hartman > Acked-by: David Sterba > Acked-by: Darren Hart (VMware) > Acked-by: Jonathan Cameron > Acked-by: Bjorn Andersson > 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 +--- If I understand your patch description well, using compat_ptr_ioctl only works if the driver is not for s390, right? In thesis, nothing prevents to use LIRC API on s390 - as this isn't a driver but, instead, RC core feature to expose raw remote controller codes to userspace. Yet, lirc_dev will only work if the system has a remote controller driver. Well, we don't have any for s390. Despite we don't have such driver, I can't possible see why someone would use a remote controller for a mainframe :-p Anyway, if someone ever come with such driver/usecase, reverting this change (or adding an #ifdef to check if arch is 390) should be pretty straight forward. So: Acked-by: Mauro Carvalho Chehab > 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/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 +- > 36 files changed, 39 insertions(+), 57 deletions(-) > > diff --git a/drivers/android/binder.c b/drivers/android/binder.c > index 4b9c7ca492e6..48109ade7234 100644 > --- a/drivers/android/binder.c > +++ b/drivers/android/binder.c > @@ -5998,7 +5998,7 @@ const struct file_operations binder_fops = { > .owner = THIS_MODULE, > .poll = binder_poll, > .unlocked_ioctl = binder_ioctl, > - .compat_ioctl = binder_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .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..ef0e482ee04f 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 = compat_ptr_ioctl, > }; > > struct adf_ctl_drv_info { > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index 7c858020d14b..0cb336fe6324 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 = compat_ptr_ioctl, > }; > > /* > diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c > index 32dcf7b4c935..411de6a8a0ad 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 4f6305ca52c8..0949f91eb85f 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 = compat_ptr_ioctl, > }; > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > index 083bd8114db1..5d6ac7885aa7 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > @@ -49,7 +49,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 = compat_ptr_ioctl, > .open = kfd_open, > .mmap = kfd_mmap, > }; > diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c > index 9fc51eff1079..e7284d38b66d 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index 4700fd5d8c90..eed1bea257b4 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1635,7 +1635,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 = compat_ptr_ioctl, > }; > > 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 70b7d80431a9..ac4321d7c800 100644 > --- a/drivers/infiniband/core/uverbs_main.c > +++ b/drivers/infiniband/core/uverbs_main.c > @@ -1120,7 +1120,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 = compat_ptr_ioctl, > }; > > static const struct file_operations uverbs_mmap_fops = { > @@ -1131,7 +1131,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 = compat_ptr_ioctl, > }; > > static struct ib_client uverbs_client = { > diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c > index f862f1b7f996..9ccc7e9cbc8e 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 = compat_ptr_ioctl, > .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 d275deaecb12..4a602a40d75c 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -251,9 +251,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 = compat_ptr_ioctl, > }; > > static void cros_ec_class_release(struct device *dev) > diff --git a/drivers/misc/vmw_vmci/vmci_host.c b/drivers/misc/vmw_vmci/vmci_host.c > index 997f92543dd4..5bb406dabe85 100644 > --- a/drivers/misc/vmw_vmci/vmci_host.c > +++ b/drivers/misc/vmw_vmci/vmci_host.c > @@ -969,7 +969,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 = compat_ptr_ioctl, > }; > > static struct miscdevice vmci_host_miscdev = { > diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c > index 7bbff0af29b2..065ebd584482 100644 > --- a/drivers/nvdimm/bus.c > +++ b/drivers/nvdimm/bus.c > @@ -1167,7 +1167,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > @@ -1175,7 +1175,7 @@ static const struct file_operations nvdimm_fops = { > .owner = THIS_MODULE, > .open = nd_open, > .unlocked_ioctl = nvdimm_ioctl, > - .compat_ioctl = nvdimm_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 2c43e12b70af..560929bee5ce 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -2739,7 +2739,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 = compat_ptr_ioctl, > }; > > static ssize_t nvme_sysfs_reset(struct device *dev, > diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c > index e22766c79fe9..3a54b4b616e2 100644 > --- a/drivers/pci/switch/switchtec.c > +++ b/drivers/pci/switch/switchtec.c > @@ -1006,7 +1006,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 = compat_ptr_ioctl, > }; > > static void link_event_work(struct work_struct *work) > diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c > index 7b26b6ccf1a0..dded9cef42f4 100644 > --- a/drivers/platform/x86/wmi.c > +++ b/drivers/platform/x86/wmi.c > @@ -889,7 +889,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 = compat_ptr_ioctl, > }; > > static int wmi_dev_probe(struct device *dev) > diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c > index eea5ebbb5119..507bfe163883 100644 > --- a/drivers/rpmsg/rpmsg_char.c > +++ b/drivers/rpmsg/rpmsg_char.c > @@ -290,7 +290,7 @@ static const struct file_operations rpmsg_eptdev_fops = { > .write_iter = rpmsg_eptdev_write_iter, > .poll = rpmsg_eptdev_poll, > .unlocked_ioctl = rpmsg_eptdev_ioctl, > - .compat_ioctl = rpmsg_eptdev_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > static ssize_t name_show(struct device *dev, struct device_attribute *attr, > @@ -451,7 +451,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 = compat_ptr_ioctl, > }; > > static void rpmsg_ctrldev_release_device(struct device *dev) > diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c > index a36e4cf1841d..c9f60656f54d 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 = compat_ptr_ioctl, > .open = d7s_open, > .release = d7s_release, > .llseek = noop_llseek, > diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c > index 1a6e7224017c..dd2dfa85fc68 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 = compat_ptr_ioctl, > .open = envctrl_open, > .release = envctrl_release, > .llseek = noop_llseek, > diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c > index 2b1e0d503020..fb6444d0409c 100644 > --- a/drivers/scsi/3w-xxxx.c > +++ b/drivers/scsi/3w-xxxx.c > @@ -1049,9 +1049,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 = compat_ptr_ioctl, > .open = tw_chrdev_open, > .release = NULL, > .llseek = noop_llseek, > diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c > index 7096810fd222..e13d5de1d76e 100644 > --- a/drivers/scsi/cxlflash/main.c > +++ b/drivers/scsi/cxlflash/main.c > @@ -3589,7 +3589,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 = compat_ptr_ioctl, > }; > > /** > diff --git a/drivers/scsi/esas2r/esas2r_main.c b/drivers/scsi/esas2r/esas2r_main.c > index fdbda5c05aa0..80c5a235d193 100644 > --- a/drivers/scsi/esas2r/esas2r_main.c > +++ b/drivers/scsi/esas2r/esas2r_main.c > @@ -613,7 +613,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 = compat_ptr_ioctl, > .unlocked_ioctl = esas2r_proc_ioctl, > }; > > diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c > index e338d7a4f571..c0a1a1218c56 100644 > --- a/drivers/scsi/pmcraid.c > +++ b/drivers/scsi/pmcraid.c > @@ -3988,9 +3988,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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c > index 92c2914239e3..1663c163edca 100644 > --- a/drivers/staging/android/ion/ion.c > +++ b/drivers/staging/android/ion/ion.c > @@ -567,9 +567,7 @@ static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > static const struct file_operations ion_fops = { > .owner = THIS_MODULE, > .unlocked_ioctl = ion_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = ion_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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..fd0ea4dbcb91 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 = compat_ptr_ioctl, > .mmap = vme_user_mmap, > }; > > diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c > index 17c64fccbb10..eb97acf09868 100644 > --- a/drivers/tee/tee_core.c > +++ b/drivers/tee/tee_core.c > @@ -684,7 +684,7 @@ static const struct file_operations tee_fops = { > .open = tee_open, > .release = tee_release, > .unlocked_ioctl = tee_ioctl, > - .compat_ioctl = tee_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > }; > > 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 9e9caff905d5..d48c032580d0 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 = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c > index 4942122b2346..bbd0308b13f5 100644 > --- a/drivers/usb/class/usbtmc.c > +++ b/drivers/usb/class/usbtmc.c > @@ -2220,9 +2220,7 @@ static const struct file_operations fops = { > .release = usbtmc_release, > .flush = usbtmc_flush, > .unlocked_ioctl = usbtmc_ioctl, > -#ifdef CONFIG_COMPAT > - .compat_ioctl = usbtmc_ioctl, > -#endif > + .compat_ioctl = compat_ptr_ioctl, > .fasync = usbtmc_fasync, > .poll = usbtmc_poll, > .llseek = default_llseek, > diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c > index 8ba726e600e9..fbf02bf60f62 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 = compat_ptr_ioctl, > }; > > static struct miscdevice fsl_hv_misc_dev = { > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index 120e4340792a..162ea4b6b417 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -2307,7 +2307,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 = compat_ptr_ioctl, > .owner = THIS_MODULE, > .llseek = noop_llseek, > }; > diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c > index 7c060cb22aa3..a493b957713f 100644 > --- a/fs/ceph/dir.c > +++ b/fs/ceph/dir.c > @@ -1785,7 +1785,7 @@ const struct file_operations ceph_dir_fops = { > .open = ceph_open, > .release = ceph_release, > .unlocked_ioctl = ceph_ioctl, > - .compat_ioctl = ceph_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .fsync = ceph_fsync, > .lock = ceph_lock, > .flock = ceph_flock, > diff --git a/fs/ceph/file.c b/fs/ceph/file.c > index 9f53c3d99304..9b5fe7eee3c1 100644 > --- a/fs/ceph/file.c > +++ b/fs/ceph/file.c > @@ -2112,7 +2112,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 = compat_ptr_ioctl, > .fallocate = ceph_fallocate, > .copy_file_range = ceph_copy_file_range, > }; > diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c > index 9971a35cf1ef..dcdb26068b71 100644 > --- a/fs/fuse/dev.c > +++ b/fs/fuse/dev.c > @@ -2354,7 +2354,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 = compat_ptr_ioctl, > }; > EXPORT_SYMBOL_GPL(fuse_dev_operations); > > diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c > index a90bb19dcfa2..a55aa029a308 100644 > --- a/fs/notify/fanotify/fanotify_user.c > +++ b/fs/notify/fanotify/fanotify_user.c > @@ -523,7 +523,7 @@ static const struct file_operations fanotify_fops = { > .fasync = NULL, > .release = fanotify_release, > .unlocked_ioctl = fanotify_ioctl, > - .compat_ioctl = fanotify_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c > index 89800fc7dc9d..f93dcf8c996f 100644 > --- a/fs/userfaultfd.c > +++ b/fs/userfaultfd.c > @@ -1901,7 +1901,7 @@ static const struct file_operations userfaultfd_fops = { > .poll = userfaultfd_poll, > .read = userfaultfd_read, > .unlocked_ioctl = userfaultfd_ioctl, > - .compat_ioctl = userfaultfd_ioctl, > + .compat_ioctl = compat_ptr_ioctl, > .llseek = noop_llseek, > }; > > diff --git a/net/rfkill/core.c b/net/rfkill/core.c > index abca57040f37..3b2f6ea44397 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 = compat_ptr_ioctl, > #endif > .llseek = no_llseek, > }; Thanks, Mauro