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=-2.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 70AECC6778D for ; Wed, 12 Sep 2018 15:11:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1DAC02088E for ; Wed, 12 Sep 2018 15:11:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1DAC02088E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arndb.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727611AbeILUQS (ORCPT ); Wed, 12 Sep 2018 16:16:18 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:40949 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726640AbeILUQS (ORCPT ); Wed, 12 Sep 2018 16:16:18 -0400 Received: from wuerfel.lan ([109.193.40.16]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.129]) with ESMTPA (Nemesis) id 0LpCLN-1fNUgH3Q5F-00f8lu; Wed, 12 Sep 2018 17:04:24 +0200 From: Arnd Bergmann To: viro@zeniv.linux.org.uk Cc: linux-fsdevel@vger.kernel.org, Arnd Bergmann , Frederic Barrat , Andrew Donnellan , Greg Kroah-Hartman , Frank Haverkamp , "Guilherme G. Piccoli" , Kashyap Desai , Sumit Saxena , Shivasharan S , "James E.J. Bottomley" , "Martin K. Petersen" , Felipe Balbi , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, megaraidlinux.pdl@broadcom.com, linux-scsi@vger.kernel.org, linux-usb@vger.kernel.org Subject: [PATCH v2 03/17] compat_ioctl: use correct compat_ptr() translation in drivers Date: Wed, 12 Sep 2018 17:01:04 +0200 Message-Id: <20180912150142.157913-3-arnd@arndb.de> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180912150142.157913-1-arnd@arndb.de> References: <20180912150142.157913-1-arnd@arndb.de> X-Provags-ID: V03:K1:Z2CTzqEkt4HdLE2EjGa/Ika1rXYEIKdgR2bTCK0LQ9WjlxscpKT aNUhO8nKrgK/wJHTqtnR0VyEr8WZP3EQYU/Pg5ehH1deYUrKPYdbPQihCvwz/hI9AUQsClQ fmjXr9BhT+8ikXAHj96SZKAt0sfaCdDmLpWVI1Q/jzPRoBg7hbVMWVsxj6WVzgs4D1OkQO4 dJrjM+ckbo+nKRlWHz/6A== X-UI-Out-Filterresults: notjunk:1;V01:K0:TdSteWb+VTo=:I97HlKO/MRPUDbPzVoq7Dd hIQRC0gjyl56ZgE1pS1Xrgdu4ZegOkIaB4QGKl+9Ac+QxJxibUoysUTj9hwUJtW0TzFTOK2GE cC6KGuh2sIPBXj+1vne8lQrwW39Ef9MrrI9QGtzT6kXfnxgkmjKqpKMqdpKwNW6dirFznmGd2 Xj+aqJyGF+G7slTDBMIakfplzD4MQS+xvHLNNHHdqjhofdyMcZA/IDDVnotVpibctHkWKVV3y 6C7r4Zps9yvq5WbxPJOn/ynQaSBobMJJSlKMCTCs7LS6v/sS1dyEWt03dopXNgv1ziyhrVvBd /OAHVHpb6s5Nnu0TM38pev484Uhipza3VTQuc+AGrZKVZ0RToVKAkvxNV2M6x76dky0zsXzL4 z3Zq6UmAkpiwV+03Y9m7kpuT+CMu+yU7EqjAF9utjeMrifcSgZwKqa39+RRXLuJO9mug/FHHm w8blwzTi/U0zqzmDDpC0UzYf7eVPSzdU63CF9qvvvwjWezBx9keV8x07MdI06XQEk2mb4STVW nhTLj4pqy9j07d3GGtly3psG/W3PVydjt4GwionBNB8xDCqWPULUG+r1aXS5JVPg57xTArEYk 7KktqZXnoNiSj7X+6kKysSdWiZanAKoPnvqTowLUAeBNUcE3aLuhSNxWhaip4NEeMIBRg/sYx nq6H0imrl/X8x6U4J6pcqnwEOJ6ywhpO+hkjK83RblafMPS5bj1xWtOLnVfb86ihk42M= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A handful of drivers all have a trivial wrapper around their ioctl handler, but don't call the compat_ptr() conversion function at the moment. In practice this does not matter, since none of them are used on the s390 architecture and for all other architectures, compat_ptr() does not do anything, but using the new generic_compat_ioctl_ptrarg helper makes it more correct in theory, and simplifies the code. Signed-off-by: Arnd Bergmann --- drivers/misc/cxl/flash.c | 8 +------- drivers/misc/genwqe/card_dev.c | 23 +---------------------- drivers/scsi/megaraid/megaraid_mm.c | 28 +--------------------------- drivers/usb/gadget/function/f_fs.c | 12 +----------- 4 files changed, 4 insertions(+), 67 deletions(-) diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c index 43917898fb9a..acd362498f8c 100644 --- a/drivers/misc/cxl/flash.c +++ b/drivers/misc/cxl/flash.c @@ -473,12 +473,6 @@ static long device_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return -EINVAL; } -static long device_compat_ioctl(struct file *file, unsigned int cmd, - unsigned long arg) -{ - return device_ioctl(file, cmd, arg); -} - static int device_close(struct inode *inode, struct file *file) { struct cxl *adapter = file->private_data; @@ -514,7 +508,7 @@ static const struct file_operations fops = { .owner = THIS_MODULE, .open = device_open, .unlocked_ioctl = device_ioctl, - .compat_ioctl = device_compat_ioctl, + .compat_ioctl = generic_compat_ioctl_ptrarg, .release = device_close, }; diff --git a/drivers/misc/genwqe/card_dev.c b/drivers/misc/genwqe/card_dev.c index f453ab82f0d7..6e73df9b3788 100644 --- a/drivers/misc/genwqe/card_dev.c +++ b/drivers/misc/genwqe/card_dev.c @@ -1220,34 +1220,13 @@ static long genwqe_ioctl(struct file *filp, unsigned int cmd, return rc; } -#if defined(CONFIG_COMPAT) -/** - * genwqe_compat_ioctl() - Compatibility ioctl - * - * Called whenever a 32-bit process running under a 64-bit kernel - * performs an ioctl on /dev/genwqe_card. - * - * @filp: file pointer. - * @cmd: command. - * @arg: user argument. - * Return: zero on success or negative number on failure. - */ -static long genwqe_compat_ioctl(struct file *filp, unsigned int cmd, - unsigned long arg) -{ - return genwqe_ioctl(filp, cmd, arg); -} -#endif /* defined(CONFIG_COMPAT) */ - static const struct file_operations genwqe_fops = { .owner = THIS_MODULE, .open = genwqe_open, .fasync = genwqe_fasync, .mmap = genwqe_mmap, .unlocked_ioctl = genwqe_ioctl, -#if defined(CONFIG_COMPAT) - .compat_ioctl = genwqe_compat_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .release = genwqe_release, }; diff --git a/drivers/scsi/megaraid/megaraid_mm.c b/drivers/scsi/megaraid/megaraid_mm.c index 8428247015db..00daa1547783 100644 --- a/drivers/scsi/megaraid/megaraid_mm.c +++ b/drivers/scsi/megaraid/megaraid_mm.c @@ -45,10 +45,6 @@ static int mraid_mm_setup_dma_pools(mraid_mmadp_t *); static void mraid_mm_free_adp_resources(mraid_mmadp_t *); static void mraid_mm_teardown_dma_pools(mraid_mmadp_t *); -#ifdef CONFIG_COMPAT -static long mraid_mm_compat_ioctl(struct file *, unsigned int, unsigned long); -#endif - MODULE_AUTHOR("LSI Logic Corporation"); MODULE_DESCRIPTION("LSI Logic Management Module"); MODULE_LICENSE("GPL"); @@ -72,9 +68,7 @@ static wait_queue_head_t wait_q; static const struct file_operations lsi_fops = { .open = mraid_mm_open, .unlocked_ioctl = mraid_mm_unlocked_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = mraid_mm_compat_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, .owner = THIS_MODULE, .llseek = noop_llseek, }; @@ -228,7 +222,6 @@ mraid_mm_unlocked_ioctl(struct file *filep, unsigned int cmd, { int err; - /* inconsistent: mraid_mm_compat_ioctl doesn't take the BKL */ mutex_lock(&mraid_mm_mutex); err = mraid_mm_ioctl(filep, cmd, arg); mutex_unlock(&mraid_mm_mutex); @@ -1233,25 +1226,6 @@ mraid_mm_init(void) } -#ifdef CONFIG_COMPAT -/** - * mraid_mm_compat_ioctl - 32bit to 64bit ioctl conversion routine - * @filep : file operations pointer (ignored) - * @cmd : ioctl command - * @arg : user ioctl packet - */ -static long -mraid_mm_compat_ioctl(struct file *filep, unsigned int cmd, - unsigned long arg) -{ - int err; - - err = mraid_mm_ioctl(filep, cmd, arg); - - return err; -} -#endif - /** * mraid_mm_exit - Module exit point */ diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index 3ada83d81bda..f4af64b4cb36 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -1276,14 +1276,6 @@ static long ffs_epfile_ioctl(struct file *file, unsigned code, return ret; } -#ifdef CONFIG_COMPAT -static long ffs_epfile_compat_ioctl(struct file *file, unsigned code, - unsigned long value) -{ - return ffs_epfile_ioctl(file, code, value); -} -#endif - static const struct file_operations ffs_epfile_operations = { .llseek = no_llseek, @@ -1292,9 +1284,7 @@ static const struct file_operations ffs_epfile_operations = { .read_iter = ffs_epfile_read_iter, .release = ffs_epfile_release, .unlocked_ioctl = ffs_epfile_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = ffs_epfile_compat_ioctl, -#endif + .compat_ioctl = generic_compat_ioctl_ptrarg, }; -- 2.18.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,03/17] compat_ioctl: use correct compat_ptr() translation in drivers From: Arnd Bergmann Message-Id: <20180912150142.157913-3-arnd@arndb.de> Date: Wed, 12 Sep 2018 17:01:04 +0200 To: viro@zeniv.linux.org.uk Cc: linux-fsdevel@vger.kernel.org, Arnd Bergmann , Frederic Barrat , Andrew Donnellan , Greg Kroah-Hartman , Frank Haverkamp , "Guilherme G. Piccoli" , Kashyap Desai , Sumit Saxena , Shivasharan S , "James E.J. Bottomley" , "Martin K. Petersen" , Felipe Balbi , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, megaraidlinux.pdl@broadcom.com, linux-scsi@vger.kernel.org, linux-usb@vger.kernel.org List-ID: QSBoYW5kZnVsIG9mIGRyaXZlcnMgYWxsIGhhdmUgYSB0cml2aWFsIHdyYXBwZXIgYXJvdW5kIHRo ZWlyIGlvY3RsCmhhbmRsZXIsIGJ1dCBkb24ndCBjYWxsIHRoZSBjb21wYXRfcHRyKCkgY29udmVy c2lvbiBmdW5jdGlvbiBhdCB0aGUKbW9tZW50LiBJbiBwcmFjdGljZSB0aGlzIGRvZXMgbm90IG1h dHRlciwgc2luY2Ugbm9uZSBvZiB0aGVtIGFyZSB1c2VkCm9uIHRoZSBzMzkwIGFyY2hpdGVjdHVy ZSBhbmQgZm9yIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzLCBjb21wYXRfcHRyKCkKZG9lcyBub3Qg ZG8gYW55dGhpbmcsIGJ1dCB1c2luZyB0aGUgbmV3IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFy ZwpoZWxwZXIgbWFrZXMgaXQgbW9yZSBjb3JyZWN0IGluIHRoZW9yeSwgYW5kIHNpbXBsaWZpZXMg dGhlIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgot LS0KIGRyaXZlcnMvbWlzYy9jeGwvZmxhc2guYyAgICAgICAgICAgIHwgIDggKy0tLS0tLS0KIGRy aXZlcnMvbWlzYy9nZW53cWUvY2FyZF9kZXYuYyAgICAgIHwgMjMgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tbS5jIHwgMjggKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYyAg fCAxMiArLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2NyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY3hsL2ZsYXNoLmMgYi9kcml2 ZXJzL21pc2MvY3hsL2ZsYXNoLmMKaW5kZXggNDM5MTc4OThmYjlhLi5hY2QzNjI0OThmOGMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9jeGwvZmxhc2guYworKysgYi9kcml2ZXJzL21pc2MvY3hs L2ZsYXNoLmMKQEAgLTQ3MywxMiArNDczLDYgQEAgc3RhdGljIGxvbmcgZGV2aWNlX2lvY3RsKHN0 cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAkJ cmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBsb25nIGRldmljZV9jb21wYXRfaW9jdGwoc3Ry dWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCi0JCQkJdW5zaWduZWQgbG9uZyBhcmcp Ci17Ci0JcmV0dXJuIGRldmljZV9pb2N0bChmaWxlLCBjbWQsIGFyZyk7Ci19Ci0KIHN0YXRpYyBp bnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQog ewogCXN0cnVjdCBjeGwgKmFkYXB0ZXIgPSBmaWxlLT5wcml2YXRlX2RhdGE7CkBAIC01MTQsNyAr NTA4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wcyA9IHsKIAku b3duZXIJCT0gVEhJU19NT0RVTEUsCiAJLm9wZW4JCT0gZGV2aWNlX29wZW4sCiAJLnVubG9ja2Vk X2lvY3RsCT0gZGV2aWNlX2lvY3RsLAotCS5jb21wYXRfaW9jdGwJPSBkZXZpY2VfY29tcGF0X2lv Y3RsLAorCS5jb21wYXRfaW9jdGwJPSBnZW5lcmljX2NvbXBhdF9pb2N0bF9wdHJhcmcsCiAJLnJl bGVhc2UJPSBkZXZpY2VfY2xvc2UsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvZ2Vu d3FlL2NhcmRfZGV2LmMgYi9kcml2ZXJzL21pc2MvZ2Vud3FlL2NhcmRfZGV2LmMKaW5kZXggZjQ1 M2FiODJmMGQ3Li42ZTczZGY5YjM3ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9nZW53cWUv Y2FyZF9kZXYuYworKysgYi9kcml2ZXJzL21pc2MvZ2Vud3FlL2NhcmRfZGV2LmMKQEAgLTEyMjAs MzQgKzEyMjAsMTMgQEAgc3RhdGljIGxvbmcgZ2Vud3FlX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxw LCB1bnNpZ25lZCBpbnQgY21kLAogCXJldHVybiByYzsKIH0KIAotI2lmIGRlZmluZWQoQ09ORklH X0NPTVBBVCkKLS8qKgotICogZ2Vud3FlX2NvbXBhdF9pb2N0bCgpIC0gQ29tcGF0aWJpbGl0eSBp b2N0bAotICoKLSAqIENhbGxlZCB3aGVuZXZlciBhIDMyLWJpdCBwcm9jZXNzIHJ1bm5pbmcgdW5k ZXIgYSA2NC1iaXQga2VybmVsCi0gKiBwZXJmb3JtcyBhbiBpb2N0bCBvbiAvZGV2L2dlbndxZTxu Pl9jYXJkLgotICoKLSAqIEBmaWxwOiAgICAgICAgZmlsZSBwb2ludGVyLgotICogQGNtZDogICAg ICAgICBjb21tYW5kLgotICogQGFyZzogICAgICAgICB1c2VyIGFyZ3VtZW50LgotICogUmV0dXJu OiAgICAgICB6ZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgbnVtYmVyIG9uIGZhaWx1cmUuCi0g Ki8KLXN0YXRpYyBsb25nIGdlbndxZV9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVu c2lnbmVkIGludCBjbWQsCi0JCQkJdW5zaWduZWQgbG9uZyBhcmcpCi17Ci0JcmV0dXJuIGdlbndx ZV9pb2N0bChmaWxwLCBjbWQsIGFyZyk7Ci19Ci0jZW5kaWYgLyogZGVmaW5lZChDT05GSUdfQ09N UEFUKSAqLwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW53cWVfZm9w cyA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJLm9wZW4JCT0gZ2Vud3FlX29wZW4sCiAJ LmZhc3luYwkJPSBnZW53cWVfZmFzeW5jLAogCS5tbWFwCQk9IGdlbndxZV9tbWFwLAogCS51bmxv Y2tlZF9pb2N0bAk9IGdlbndxZV9pb2N0bCwKLSNpZiBkZWZpbmVkKENPTkZJR19DT01QQVQpCi0J LmNvbXBhdF9pb2N0bCAgID0gZ2Vud3FlX2NvbXBhdF9pb2N0bCwKLSNlbmRpZgorCS5jb21wYXRf aW9jdGwgICA9IGdlbmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIAkucmVsZWFzZQk9IGdlbndx ZV9yZWxlYXNlLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2Fy YWlkX21tLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbW0uYwppbmRleCA4NDI4 MjQ3MDE1ZGIuLjAwZGFhMTU0Nzc4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlk L21lZ2FyYWlkX21tLmMKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21tLmMK QEAgLTQ1LDEwICs0NSw2IEBAIHN0YXRpYyBpbnQgbXJhaWRfbW1fc2V0dXBfZG1hX3Bvb2xzKG1y YWlkX21tYWRwX3QgKik7CiBzdGF0aWMgdm9pZCBtcmFpZF9tbV9mcmVlX2FkcF9yZXNvdXJjZXMo bXJhaWRfbW1hZHBfdCAqKTsKIHN0YXRpYyB2b2lkIG1yYWlkX21tX3RlYXJkb3duX2RtYV9wb29s cyhtcmFpZF9tbWFkcF90ICopOwogCi0jaWZkZWYgQ09ORklHX0NPTVBBVAotc3RhdGljIGxvbmcg bXJhaWRfbW1fY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWdu ZWQgbG9uZyk7Ci0jZW5kaWYKLQogTU9EVUxFX0FVVEhPUigiTFNJIExvZ2ljIENvcnBvcmF0aW9u Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxTSSBMb2dpYyBNYW5hZ2VtZW50IE1vZHVsZSIpOwog TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpAQCAtNzIsOSArNjgsNyBAQCBzdGF0aWMgd2FpdF9xdWV1 ZV9oZWFkX3Qgd2FpdF9xOwogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbHNp X2ZvcHMgPSB7CiAJLm9wZW4JPSBtcmFpZF9tbV9vcGVuLAogCS51bmxvY2tlZF9pb2N0bCA9IG1y YWlkX21tX3VubG9ja2VkX2lvY3RsLAotI2lmZGVmIENPTkZJR19DT01QQVQKLQkuY29tcGF0X2lv Y3RsID0gbXJhaWRfbW1fY29tcGF0X2lvY3RsLAotI2VuZGlmCisJLmNvbXBhdF9pb2N0bCA9IGdl bmVyaWNfY29tcGF0X2lvY3RsX3B0cmFyZywKIAkub3duZXIJPSBUSElTX01PRFVMRSwKIAkubGxz ZWVrID0gbm9vcF9sbHNlZWssCiB9OwpAQCAtMjI4LDcgKzIyMiw2IEBAIG1yYWlkX21tX3VubG9j a2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlcCwgdW5zaWduZWQgaW50IGNtZCwKIHsKIAlpbnQg ZXJyOwogCi0JLyogaW5jb25zaXN0ZW50OiBtcmFpZF9tbV9jb21wYXRfaW9jdGwgZG9lc24ndCB0 YWtlIHRoZSBCS0wgKi8KIAltdXRleF9sb2NrKCZtcmFpZF9tbV9tdXRleCk7CiAJZXJyID0gbXJh aWRfbW1faW9jdGwoZmlsZXAsIGNtZCwgYXJnKTsKIAltdXRleF91bmxvY2soJm1yYWlkX21tX211 dGV4KTsKQEAgLTEyMzMsMjUgKzEyMjYsNiBAQCBtcmFpZF9tbV9pbml0KHZvaWQpCiB9CiAKIAot I2lmZGVmIENPTkZJR19DT01QQVQKLS8qKgotICogbXJhaWRfbW1fY29tcGF0X2lvY3RsCS0gMzJi aXQgdG8gNjRiaXQgaW9jdGwgY29udmVyc2lvbiByb3V0aW5lCi0gKiBAZmlsZXAJOiBmaWxlIG9w ZXJhdGlvbnMgcG9pbnRlciAoaWdub3JlZCkKLSAqIEBjbWQJCTogaW9jdGwgY29tbWFuZAotICog QGFyZwkJOiB1c2VyIGlvY3RsIHBhY2tldAotICovCi1zdGF0aWMgbG9uZwotbXJhaWRfbW1fY29t cGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlcCwgdW5zaWduZWQgaW50IGNtZCwKLQkJICAgICAg dW5zaWduZWQgbG9uZyBhcmcpCi17Ci0JaW50IGVycjsKLQotCWVyciA9IG1yYWlkX21tX2lvY3Rs KGZpbGVwLCBjbWQsIGFyZyk7Ci0KLQlyZXR1cm4gZXJyOwotfQotI2VuZGlmCi0KIC8qKgogICog bXJhaWRfbW1fZXhpdAktIE1vZHVsZSBleGl0IHBvaW50CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rp b24vZl9mcy5jCmluZGV4IDNhZGE4M2Q4MWJkYS4uZjRhZjY0YjRjYjM2IDEwMDY0NAotLS0gYS9k cml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdl dC9mdW5jdGlvbi9mX2ZzLmMKQEAgLTEyNzYsMTQgKzEyNzYsNiBAQCBzdGF0aWMgbG9uZyBmZnNf ZXBmaWxlX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBjb2RlLAogCXJldHVybiBy ZXQ7CiB9CiAKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi1zdGF0aWMgbG9uZyBmZnNfZXBmaWxlX2Nv bXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY29kZSwKLQkJdW5zaWduZWQg bG9uZyB2YWx1ZSkKLXsKLQlyZXR1cm4gZmZzX2VwZmlsZV9pb2N0bChmaWxlLCBjb2RlLCB2YWx1 ZSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmZz X2VwZmlsZV9vcGVyYXRpb25zID0gewogCS5sbHNlZWsgPQlub19sbHNlZWssCiAKQEAgLTEyOTIs OSArMTI4NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZmc19lcGZp bGVfb3BlcmF0aW9ucyA9IHsKIAkucmVhZF9pdGVyID0JZmZzX2VwZmlsZV9yZWFkX2l0ZXIsCiAJ LnJlbGVhc2UgPQlmZnNfZXBmaWxlX3JlbGVhc2UsCiAJLnVubG9ja2VkX2lvY3RsID0JZmZzX2Vw ZmlsZV9pb2N0bCwKLSNpZmRlZiBDT05GSUdfQ09NUEFUCi0JLmNvbXBhdF9pb2N0bCA9IGZmc19l cGZpbGVfY29tcGF0X2lvY3RsLAotI2VuZGlmCisJLmNvbXBhdF9pb2N0bCA9IGdlbmVyaWNfY29t cGF0X2lvY3RsX3B0cmFyZywKIH07CiAKIAo=