Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 31E9CC433F5 for ; Thu, 13 Jan 2022 08:57:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233379AbiAMI5T (ORCPT ); Thu, 13 Jan 2022 03:57:19 -0500 Received: from mail-dm6nam11on2047.outbound.protection.outlook.com ([40.107.223.47]:10080 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S232165AbiAMI4h (ORCPT ); Thu, 13 Jan 2022 03:56:37 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XbovGewolGf0oAY50G/rkGkZCxQ9BMQj7WABDi02hF1kLzOl5a9jj9LzpSMn2p6VMwsqOnx4HOE86iS14N9Z845ZKsgPz52i0umIcU1phOR0Yqeir4NcalMSPp8u3r6q3z6IlR64222X9q0zGWZ3lD81szjgtMbqJF8AwdHs11q63TWUK8pO3LJQnOOamjRRY3pboJFG9Du2YJyLMsr+GMtOPrDJW5DK7Oi+Bv0gy/l9JFsUe44SaXzcpbCwPhb2+z50paaGWVptC1WSp/jv3J+tU4AYkVQepVwfV+AD7zKcMiy5WA+CQdnaCgtmxdVFxZaoyFBwmlHC5M1mqLG/dQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ri7pLd37JUQopau0sC4Z8DR/N6PptqvoJP9jQbfQQ1o=; b=jspO87mgV1E9mFtWqUfjAR+374I+gn4hojGSF6ML8xwrowCDkULqOiVvEXNIG1Ld/0WgF7lyEx5wEmTo+wXSde1c33sZR4zlTwdu+QrRUVQcZWC5AKMi4zR+hMFlgMKVC2HpaBUUXFPXEH3vP4dRzAbsOmwMJMA9+Dc5XNrvvFac3htt4nLROj8ByWizR2ktqWFUEWuqvgzeTQlqs8q1+F6+Bx8omhX0pAThaoi7HM726kA/n1BCSOwm/QBvV3QgaVcLi/SphJteN69pYyIJTOqwOG4xEP8ha0Ie1n9DHFzym4UIIlW6ryffNatqhvWoWJruBm3x7L9ZkaN8quel3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ri7pLd37JUQopau0sC4Z8DR/N6PptqvoJP9jQbfQQ1o=; b=StI27lIik4u0Pj2ClOoBL6u1thivUsI2mUjr61cOt6yagq8OF5fOZXIMUdFsU5apWreeR+ow78J9c3DtLzbPG2BPD5+Wzs+3CvMVW5l+TqamXdRT6TSDX1UKByb+URFR0QcjBC9IQQSkhOMlN1qEPOAd7vdq3pmAoRoM6OqPiuY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=silabs.com; Received: from PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) by CY4PR1101MB2071.namprd11.prod.outlook.com (2603:10b6:910:1a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Thu, 13 Jan 2022 08:56:17 +0000 Received: from PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::d031:da9e:71a:73e4]) by PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::d031:da9e:71a:73e4%5]) with mapi id 15.20.4888.011; Thu, 13 Jan 2022 08:56:17 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH 20/31] staging: wfx: reformat code on 100 columns Date: Thu, 13 Jan 2022 09:55:13 +0100 Message-Id: <20220113085524.1110708-21-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220113085524.1110708-1-Jerome.Pouiller@silabs.com> References: <20220113085524.1110708-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: SA0PR11CA0117.namprd11.prod.outlook.com (2603:10b6:806:d1::32) To PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 617a74e6-850c-4594-40b4-08d9d6728f81 X-MS-TrafficTypeDiagnostic: CY4PR1101MB2071:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:549; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8k7szEklvLZelFg/0iXo3KN4C+XSpSbMRgdTIymFq2FEeRKc42sw5Ed5Znj/IOc+EjxD/fEZ6cNCKS3AAg5F+PBB2bK0MyWv9lmvX0I3oLw7n5/kv3st6IBwBbUXcZMh9dwXqCd0fZ64tSAtnEV+ZjxzFlb0ttcI1ruXlJcIF3ba16uL2l+3gVOdwHQKWoq9nhFXsJR1zOjtpy5itczeuXL8F50xQHF8Y1DuHwsC0a47ft1P5RVUjY+yF6rq85rv8571I3IhcI06ZuLUcIydtGIrDe10vFFCNyiF0wS7vGWiddmdjsjgiyUCpabp5vkTKvPuQd5ChS3UhTuuG+2t7+muArb7+gUZQkUlKjMzmCMCopddRG3kNcZfd9ZMyEvG2+R1NYQgheBvDaEV56V3M00OhocOgY7W1Osd3DX5X4f2lwBGwuEs53wxINyNpRi04zKQ07/t77kmPMDyVfp1A1sf75PKlKTKS5d/lNESMM4PO/XZAAv0m8RcxBwTR1EGTgq2qm6R0OlQ7Qh814uBGtoEUJvqIdiY1xIPHt5RIhtkUyh+liBGUSebltalOuaC+mPF1eJK9NclX9sBJqrmOhus5cS0NNmZSyjLgq6cQGj6DhvhcmY7kYIbK6jmmDR4gvK5D20uWdG/VpRQlE7zBA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5657.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(2616005)(66476007)(52116002)(8676002)(6486002)(4326008)(66574015)(38100700002)(8936002)(83380400001)(6506007)(107886003)(66556008)(6666004)(36756003)(508600001)(2906002)(30864003)(5660300002)(6512007)(1076003)(86362001)(186003)(316002)(66946007)(54906003)(559001)(579004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dkUreUxEU3VIdzYxWWNyWHV1SGtXY3lEWUNBVjlDZnFqVE1zbTdZV3piMEZY?= =?utf-8?B?c0JBYitEeU8zekJLdnA2Ri9RakpveXc3OWdNTEJBb3dEcUoyUHpKRUVZbnZI?= =?utf-8?B?Um1xNVU0TW5mWG1yV2dwMmhNZkJMOXdiOFZHcjdjamxSL1BtM1VYZFF4R1RR?= =?utf-8?B?RkFSMlQxR0VkOXdORWIvKzlrZW5hVXZNS284R3ZMcEI3WkZmUC9uSXIwR1Qz?= =?utf-8?B?dGZQWDR4N1RvVkFyZEJmMWJWREtDajloLzAzWGcvWTJGa2NwcDF5NzI2MkdO?= =?utf-8?B?MlRBcU9DaE1CTDZyQnc3eDlsTmlWNDNBNTBTM3phWmVxblN4Ykcra01XM0hk?= =?utf-8?B?QXZxUFVTREhnVWFvUmY2Nk5QUTUrd0FER1plc2FqczlKZ2JlSEQ2VWJYV2Mz?= =?utf-8?B?VVdsZ2xHL2NYYWZTZVNIQ1pKRUVFQVFxUUpFdzZEQW9Ic05PUmIyQ3lxeUdR?= =?utf-8?B?SkgwKzlNdDFlZkxHc2dKYmZJMzI0eGZZVWRoUGdYMDAyZk5vZmpEVFUwa0tU?= =?utf-8?B?U3Rndis1NlA3SnhnWkdSY2dGRDFweTAwc3FmTmk0UnBDVTU1RnMvUHEydVdq?= =?utf-8?B?SmNpWUtaRDNnU0ovQWRIZDE0dmJCOWk4N0RsREdhbWdra2dBZFMwTWs3ZE9t?= =?utf-8?B?OC9SREE0RktYMlVSVUEybFRDQjdaRDd4U2haK2dxRjZzaHJIcVAyQlVsV00y?= =?utf-8?B?VWc1TDJZQmw2NVdqM2lBOGljY2NraENEZnVHMDJvWUhhMlN0UE4xZC9NUWx0?= =?utf-8?B?Kzk0ZCtHRms5NHBNM0NMeVpkaWtNRElHeEhWRk5USE5qNkhjMlkvZFVZbGpL?= =?utf-8?B?aC8zd2tDT1lmZkhRZm5aYUhxS1JrVVZzOFQ5MmdGVmsxUGVBMXBCSURYei9D?= =?utf-8?B?ZE5vV1dmZXkxYUhSazdBemZRSGF1bE40aXNRSVdSdjkzUXlSRXA5T1FCU1JT?= =?utf-8?B?dXhoOFZsQWp1REVLamVUcWl3emdsa096OVVQcE96WXR2M0tXelRiemlIbHhF?= =?utf-8?B?RkhXSHNuZGtrNDBYTmZIN1QvYk9xWWttQXJKb2dKeU9RNEJqTFhrVmVaRVQz?= =?utf-8?B?M0o4aURtWG5jMnlFekFIL0k2RnQvNE1jU2dGd0RIQk9TL0NDMlUwVW1FY21B?= =?utf-8?B?TTRveWdJeVB0dGlETDBEMDVjcWFUdzExdUl4VW9pZEVkQTA3M0Ixd3JwaEhP?= =?utf-8?B?SDQ0dldvblpibzlLdWRrTHBWcm1nRzJFSkdtV1QzMldUd0NrZmpLZDJ4N3hM?= =?utf-8?B?VnQyOStIdTI4eDl0ckhpT2I2N2Ezd1YwOGRNNXJpQVZpME14UTBCSnRmZHJV?= =?utf-8?B?OWJPVUg4VXNmc1RQaENQUmxNNGVFb2tjRUwwckYwM25wWno3T09Rb3F0Wlh0?= =?utf-8?B?SEJPbjR0eG83Z3RWNmxCK091RFdJcmhPNkJOTWJHWERtd24vZDkzamNBVTZs?= =?utf-8?B?SVdsU0k1N0hmd2tsdWdMeGRuZ04wUzFDaFVyVWdleGhhNzR5TEcyMXEzV3hi?= =?utf-8?B?bG0wWFozdDNKcFVpcTRRKzJwSDhSYlpHWWZQeTVOazN5QjdxSXgrbTA0Zmgr?= =?utf-8?B?ZmswSmV2RHNmSzlVeTdHZlBKVFkwZ0JxRkZQck52Z0IyWXZtYjFBMXBEbElQ?= =?utf-8?B?SFp1SGlmVXNUU0xSTHhQOG9SOUJLWTh4TzJxVG9ObytUY2RzbVRUR1hQUkxK?= =?utf-8?B?cUprdkx1Ym9RT1VvYUFHWnM4Ky91QWJLdFJqQjAwZVVhQ2hhSzdMWll5RWQ4?= =?utf-8?B?cXRzWXBoRVQzdVlQUngyaUJBbis5SGpYNXhjc1F0d3dsREYwVWMyRGwyelcv?= =?utf-8?B?WGxtWFNqajh0V3ZQUzNVeEZZZEQwcE4xRzJBUVlFSXNyWHhUb2VZY0NWR05h?= =?utf-8?B?MWQrckNJNjBhWFV3ZTgrV0JZUXNaVVRlbW9uMEl5T3lsS0YvTXJIRldWZ0I2?= =?utf-8?B?R25TZ0pUdXpkRS9vc0JRN3QwS2lKelVsWUs5QkF4SklhdVFPSG12aGJJWk85?= =?utf-8?B?YW9HdGZLN0V5MDdQUUNMOHB1Ui9kVTc0cFZJcHFkSjYwVmtveDd2MitIc1M4?= =?utf-8?B?ZHR2bXJOWlN5YitONm5SWjVueTR6ekJmN1dVcktjb2krV2dPSkp2K25YZDBS?= =?utf-8?B?SU8zNlQxeVRWSTNwdDB5UHR1cXRZd1JpaHRlZDN4VHcwUkdmZDQ5VHllMFF2?= =?utf-8?B?UFNZeHRwcTBZNi9ILzBTZ2JyVVFqSUg1N0RCQW9IU2gxeTNjRFhLMFpBVzd1?= =?utf-8?Q?rCF1CQoA+Se7bYuJUdkt0IMI5LTc8SmB256gMcJ+rQ=3D?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 617a74e6-850c-4594-40b4-08d9d6728f81 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5657.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2022 08:56:17.5687 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: C2WrvO6pOx3vN2T+KQUEevTx1EatUixCjz3Lw26UfGS2ZPA9bzWz5fW2FMAAytB2CbTlfv10YjClW0XzrqcWaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2071 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKVW50 aWwgbm93LCB0aGlzIGRyaXZlciB3YXMgd3JpdHRlbiBpbiA4MCBjb2x1bW5zIHN0eWxlLiBIb3dl dmVyLCBzaW5jZQphbGwgdGhlIGZ1bmN0aW9ucyBhcmUgcHJlZml4ZWQgd2l0aCAid2Z4XyIsIHRo aXMgY29uc3RyYWludCBpcyBubyBtb3JlCnJlc3BlY3RlZCBpbiB0aGUgbGFzdCBwYXRjaGVzLgoK RnJvbSB0aGUgcGVyc3BlY3RpdmUgb2Yga2VybmVsIENvZGluZyBTdHlsZSwgaXQgaXMgbm90IGEg cHJvYmxlbSBzaW5jZQppdCBpcyBub3cgYWxsb3dlZCB0byB3cml0ZSBjb2RlIG9uIDEwMCBjb2x1 bW5zLgoKVGhpcyBwYXRjaCBqdXN0IHVuaWZ5IHRoZSBjb2RlIHRvIHVzZSAxMDAgY29sdW1ucy4K ClNpZ25lZC1vZmYtYnk6IErDqXLDtG1lIFBvdWlsbGVyIDxqZXJvbWUucG91aWxsZXJAc2lsYWJz LmNvbT4KLS0tCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2JoLmMgICAgICAgICB8IDEyICsrLS0tCiBk cml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oICAgICAgICB8ICA2ICstLQogZHJpdmVycy9zdGFnaW5n L3dmeC9idXNfc2Rpby5jICAgfCAxMiArKy0tLQogZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3Bp LmMgICAgfCAyNCArKystLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9yeC5jICAgIHwg IDYgKy0tCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2RhdGFfcnguaCAgICB8ICAzICstCiBkcml2ZXJz L3N0YWdpbmcvd2Z4L2RhdGFfdHguYyAgICB8IDcxICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9zdGFnaW5nL3dmeC9kYXRhX3R4LmggICAgfCAgNiArLS0KIGRyaXZlcnMvc3Rh Z2luZy93ZngvZGVidWcuYyAgICAgIHwgMjcgKysrKy0tLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy93 ZngvZndpby5jICAgICAgIHwgMzMgKysrKystLS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL3dmeC9o aWZfcnguYyAgICAgfCA2MCArKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9zdGFnaW5n L3dmeC9oaWZfdHguYyAgICAgfCA2MyArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv c3RhZ2luZy93ZngvaGlmX3R4LmggICAgIHwgIDkgKystLQogZHJpdmVycy9zdGFnaW5nL3dmeC9o aWZfdHhfbWliLmMgfCA4MSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJz L3N0YWdpbmcvd2Z4L2hpZl90eF9taWIuaCB8IDIxICsrKy0tLS0tCiBkcml2ZXJzL3N0YWdpbmcv d2Z4L2h3aW8uYyAgICAgICB8IDUxICsrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3N0YWdp bmcvd2Z4L2tleS5jICAgICAgICB8IDYyICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9zdGFnaW5nL3dmeC9rZXkuaCAgICAgICAgfCAgNSArLQogZHJpdmVycy9zdGFnaW5nL3dmeC9t YWluLmMgICAgICAgfCA1NiArKysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy93 ZngvbWFpbi5oICAgICAgIHwgIDYgKy0tCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L3F1ZXVlLmMgICAg ICB8IDI0ICsrKy0tLS0tLQogZHJpdmVycy9zdGFnaW5nL3dmeC9xdWV1ZS5oICAgICAgfCAgMyAr LQogZHJpdmVycy9zdGFnaW5nL3dmeC9zY2FuLmMgICAgICAgfCAxMiArKy0tLQogZHJpdmVycy9z dGFnaW5nL3dmeC9zdGEuYyAgICAgICAgfCA4MyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogZHJpdmVycy9zdGFnaW5nL3dmeC9zdGEuaCAgICAgICAgfCAyMiArKystLS0tLS0KIGRy aXZlcnMvc3RhZ2luZy93ZngvdHJhY2VzLmggICAgIHwgMTQgKystLS0tCiBkcml2ZXJzL3N0YWdp bmcvd2Z4L3dmeC5oICAgICAgICB8ICAzICstCiAyNyBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0 aW9ucygrKSwgNTA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93 ZngvYmguYyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYmguYwppbmRleCA4NzJmMzI5OGRjODcuLmI5 YTM1MTkxMzg2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9iaC5jCisrKyBiL2Ry aXZlcnMvc3RhZ2luZy93ZngvYmguYwpAQCAtMzcsOCArMzcsNyBAQCBzdGF0aWMgdm9pZCBkZXZp Y2Vfd2FrZXVwKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQogCQkgKiB3YWl0X2Zvcl9jb21wbGV0aW9u X2RvbmVfdGltZW91dCgpKS4gU28gd2UgaGF2ZSB0byBlbXVsYXRlCiAJCSAqIGl0LgogCQkgKi8K LQkJaWYgKHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmd2Rldi0+aGlmLmN0cmxfcmVhZHks Ci0JCQkJCQltc2Vjc190b19qaWZmaWVzKDIpKSkgeworCQlpZiAod2FpdF9mb3JfY29tcGxldGlv bl90aW1lb3V0KCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSwgbXNlY3NfdG9famlmZmllcygyKSkpIHsK IAkJCWNvbXBsZXRlKCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSk7CiAJCQlyZXR1cm47CiAJCX0gZWxz ZSBpZiAobWF4X3JldHJ5LS0gPiAwKSB7CkBAIC0xMDUsNyArMTA0LDggQEAgc3RhdGljIGludCBy eF9oZWxwZXIoc3RydWN0IHdmeF9kZXYgKndkZXYsIHNpemVfdCByZWFkX2xlbiwgaW50ICppc19j bmYpCiAJaWYgKCEoaGlmLT5pZCAmIEhJRl9JRF9JU19JTkRJQ0FUSU9OKSkgewogCQkoKmlzX2Nu ZikrKzsKIAkJaWYgKGhpZi0+aWQgPT0gSElGX0NORl9JRF9NVUxUSV9UUkFOU01JVCkKLQkJCXJl bGVhc2VfY291bnQgPSAoKHN0cnVjdCB3ZnhfaGlmX2NuZl9tdWx0aV90cmFuc21pdCAqKWhpZi0+ Ym9keSktPm51bV90eF9jb25mczsKKwkJCXJlbGVhc2VfY291bnQgPQorCQkJCSgoc3RydWN0IHdm eF9oaWZfY25mX211bHRpX3RyYW5zbWl0ICopaGlmLT5ib2R5KS0+bnVtX3R4X2NvbmZzOwogCQll bHNlCiAJCQlyZWxlYXNlX2NvdW50ID0gMTsKIAkJV0FSTih3ZGV2LT5oaWYudHhfYnVmZmVyc191 c2VkIDwgcmVsZWFzZV9jb3VudCwgImNvcnJ1cHRlZCBidWZmZXIgY291bnRlciIpOwpAQCAtMjI5 LDggKzIyOSw3IEBAIHN0YXRpYyB2b2lkIGFja19zZGlvX2RhdGEoc3RydWN0IHdmeF9kZXYgKndk ZXYpCiAKIAl3ZnhfY29uZmlnX3JlZ19yZWFkKHdkZXYsICZjZmdfcmVnKTsKIAlpZiAoY2ZnX3Jl ZyAmIDB4RkYpIHsKLQkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiY2hpcCByZXBvcnRzIGVycm9yczog JTAyeFxuIiwKLQkJCSBjZmdfcmVnICYgMHhGRik7CisJCWRldl93YXJuKHdkZXYtPmRldiwgImNo aXAgcmVwb3J0cyBlcnJvcnM6ICUwMnhcbiIsIGNmZ19yZWcgJiAweEZGKTsKIAkJd2Z4X2NvbmZp Z19yZWdfd3JpdGVfYml0cyh3ZGV2LCAweEZGLCAweDAwKTsKIAl9CiB9CkBAIC0yNjEsOCArMjYw LDcgQEAgc3RhdGljIHZvaWQgYmhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWRl dmljZV9yZWxlYXNlKHdkZXYpOwogCQlyZWxlYXNlX2NoaXAgPSB0cnVlOwogCX0KLQlfdHJhY2Vf Ymhfc3RhdHMoc3RhdHNfaW5kLCBzdGF0c19yZXEsIHN0YXRzX2NuZiwKLQkJCXdkZXYtPmhpZi50 eF9idWZmZXJzX3VzZWQsIHJlbGVhc2VfY2hpcCk7CisJX3RyYWNlX2JoX3N0YXRzKHN0YXRzX2lu ZCwgc3RhdHNfcmVxLCBzdGF0c19jbmYsIHdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQsIHJlbGVh c2VfY2hpcCk7CiB9CiAKIC8qIEFuIElSUSBmcm9tIGNoaXAgZGlkIG9jY3VyICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9idXMu aAppbmRleCA5MWI1YTU0NWI4ZmYuLmNjYWRmZGQ2ODczYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9z dGFnaW5nL3dmeC9idXMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1cy5oCkBAIC0yMSwx MCArMjEsOCBAQAogI2RlZmluZSBXRlhfUkVHX0ZSQU1FX09VVCAgICAgMHg3CiAKIHN0cnVjdCB3 ZnhfaHdidXNfb3BzIHsKLQlpbnQgKCpjb3B5X2Zyb21faW8pKHZvaWQgKmJ1c19wcml2LCB1bnNp Z25lZCBpbnQgYWRkciwKLQkJCSAgICB2b2lkICpkc3QsIHNpemVfdCBjb3VudCk7Ci0JaW50ICgq Y29weV90b19pbykodm9pZCAqYnVzX3ByaXYsIHVuc2lnbmVkIGludCBhZGRyLAotCQkJICBjb25z dCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7CisJaW50ICgqY29weV9mcm9tX2lvKSh2b2lkICpi dXNfcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsIHZvaWQgKmRzdCwgc2l6ZV90IGNvdW50KTsKKwlp bnQgKCpjb3B5X3RvX2lvKSh2b2lkICpidXNfcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsIGNvbnN0 IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKIAlpbnQgKCppcnFfc3Vic2NyaWJlKSh2b2lkICpi dXNfcHJpdik7CiAJaW50ICgqaXJxX3Vuc3Vic2NyaWJlKSh2b2lkICpidXNfcHJpdik7CiAJdm9p ZCAoKmxvY2spKHZvaWQgKmJ1c19wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93 ZngvYnVzX3NkaW8uYyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3NkaW8uYwppbmRleCBhYmNi NTA3YTQ4YjMuLmEzZGE2NjFlMzU1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9i dXNfc2Rpby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3NkaW8uYwpAQCAtMzMsOCAr MzMsNyBAQCBzdHJ1Y3Qgd2Z4X3NkaW9fcHJpdiB7CiAJaW50IG9mX2lycTsKIH07CiAKLXN0YXRp YyBpbnQgd2Z4X3NkaW9fY29weV9mcm9tX2lvKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCByZWdf aWQsCi0JCQkJIHZvaWQgKmRzdCwgc2l6ZV90IGNvdW50KQorc3RhdGljIGludCB3Znhfc2Rpb19j b3B5X2Zyb21faW8odm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IHJlZ19pZCwgdm9pZCAqZHN0LCBz aXplX3QgY291bnQpCiB7CiAJc3RydWN0IHdmeF9zZGlvX3ByaXYgKmJ1cyA9IHByaXY7CiAJdW5z aWduZWQgaW50IHNkaW9fYWRkciA9IHJlZ19pZCA8PCAyOwpAQCAtNTQsOCArNTMsNyBAQCBzdGF0 aWMgaW50IHdmeF9zZGlvX2NvcHlfZnJvbV9pbyh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgcmVn X2lkLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgd2Z4X3NkaW9fY29weV90b19pbyh2 b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgcmVnX2lkLAotCQkJICAgICAgIGNvbnN0IHZvaWQgKnNy Yywgc2l6ZV90IGNvdW50KQorc3RhdGljIGludCB3Znhfc2Rpb19jb3B5X3RvX2lvKHZvaWQgKnBy aXYsIHVuc2lnbmVkIGludCByZWdfaWQsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KQog ewogCXN0cnVjdCB3Znhfc2Rpb19wcml2ICpidXMgPSBwcml2OwogCXVuc2lnbmVkIGludCBzZGlv X2FkZHIgPSByZWdfaWQgPDwgMjsKQEAgLTEyNiw4ICsxMjQsNyBAQCBzdGF0aWMgaW50IHdmeF9z ZGlvX2lycV9zdWJzY3JpYmUodm9pZCAqcHJpdikKIAkJZmxhZ3MgPSBJUlFGX1RSSUdHRVJfSElH SDsKIAlmbGFncyB8PSBJUlFGX09ORVNIT1Q7CiAJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVk X2lycSgmYnVzLT5mdW5jLT5kZXYsIGJ1cy0+b2ZfaXJxLCBOVUxMLAotCQkJCQl3Znhfc2Rpb19p cnFfaGFuZGxlcl9leHQsIGZsYWdzLAotCQkJCQkid2Z4IiwgYnVzKTsKKwkJCQkJd2Z4X3NkaW9f aXJxX2hhbmRsZXJfZXh0LCBmbGFncywgIndmeCIsIGJ1cyk7CiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAlzZGlvX2NsYWltX2hvc3QoYnVzLT5mdW5jKTsKQEAgLTE3Niw4ICsxNzMsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3Znhfc2Rpb19vZl9tYXRjaFtdID0gewog fTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdmeF9zZGlvX29mX21hdGNoKTsKIAotc3RhdGlj IGludCB3Znhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLAotCQkJICBjb25zdCBz dHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKQorc3RhdGljIGludCB3Znhfc2Rpb19wcm9iZShzdHJ1 Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKQogewog CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBmdW5jLT5kZXYub2Zfbm9kZTsKIAlzdHJ1Y3Qgd2Z4 X3NkaW9fcHJpdiAqYnVzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3Bp LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYwppbmRleCA5OWQzM2ExMjg4MzAuLjQz YmM2ZTE0N2Q1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3BpLmMKKysr IGIvZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3BpLmMKQEAgLTQ2LDggKzQ2LDcgQEAgc3RydWN0 IHdmeF9zcGlfcHJpdiB7CiAgKiBuYXRpdmVseS4gVGhlIGNvZGUgYmVsb3cgdG8gc3VwcG9ydCBi aWcgZW5kaWFuIGhvc3QgYW5kIGNvbW1vbmx5IHVzZWQgU1BJCiAgKiA4Yml0cy4KICAqLwotc3Rh dGljIGludCB3Znhfc3BpX2NvcHlfZnJvbV9pbyh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgYWRk ciwKLQkJCQl2b2lkICpkc3QsIHNpemVfdCBjb3VudCkKK3N0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5 X2Zyb21faW8odm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGFkZHIsIHZvaWQgKmRzdCwgc2l6ZV90 IGNvdW50KQogewogCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1cyA9IHByaXY7CiAJdTE2IHJlZ2Fk ZHIgPSAoYWRkciA8PCAxMikgfCAoY291bnQgLyAyKSB8IFNFVF9SRUFEOwpAQCAtODAsOCArNzks NyBAQCBzdGF0aWMgaW50IHdmeF9zcGlfY29weV9mcm9tX2lvKHZvaWQgKnByaXYsIHVuc2lnbmVk IGludCBhZGRyLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgd2Z4X3NwaV9jb3B5X3Rv X2lvKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBhZGRyLAotCQkJICAgICAgY29uc3Qgdm9pZCAq c3JjLCBzaXplX3QgY291bnQpCitzdGF0aWMgaW50IHdmeF9zcGlfY29weV90b19pbyh2b2lkICpw cml2LCB1bnNpZ25lZCBpbnQgYWRkciwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgY291bnQpCiB7 CiAJc3RydWN0IHdmeF9zcGlfcHJpdiAqYnVzID0gcHJpdjsKIAl1MTYgcmVnYWRkciA9IChhZGRy IDw8IDEyKSB8IChjb3VudCAvIDIpOwpAQCAtMTQ5LDggKzE0Nyw3IEBAIHN0YXRpYyBpbnQgd2Z4 X3NwaV9pcnFfc3Vic2NyaWJlKHZvaWQgKnByaXYpCiAJCWZsYWdzID0gSVJRRl9UUklHR0VSX0hJ R0g7CiAJZmxhZ3MgfD0gSVJRRl9PTkVTSE9UOwogCXJldHVybiBkZXZtX3JlcXVlc3RfdGhyZWFk ZWRfaXJxKCZidXMtPmZ1bmMtPmRldiwgYnVzLT5mdW5jLT5pcnEsIE5VTEwsCi0JCQkJCSB3Znhf c3BpX2lycV9oYW5kbGVyLCBJUlFGX09ORVNIT1QsCi0JCQkJCSAid2Z4IiwgYnVzKTsKKwkJCQkJ IHdmeF9zcGlfaXJxX2hhbmRsZXIsIElSUUZfT05FU0hPVCwgIndmeCIsIGJ1cyk7CiB9CiAKIHN0 YXRpYyBpbnQgd2Z4X3NwaV9pcnFfdW5zdWJzY3JpYmUodm9pZCAqcHJpdikKQEAgLTE5MCwxNCAr MTg3LDExIEBAIHN0YXRpYyBpbnQgd2Z4X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqZnVu YykKIAkJcmV0dXJuIHJldDsKIAkvKiBUcmFjZSBiZWxvdyBpcyBhbHNvIGRpc3BsYXllZCBieSBz cGlfc2V0dXAoKSBpZiBjb21waWxlZCB3aXRoIERFQlVHICovCiAJZGV2X2RiZygmZnVuYy0+ZGV2 LCAiU1BJIHBhcmFtczogQ1M9JWQsIG1vZGU9JWQgYml0cy93b3JkPSVkIHNwZWVkPSVkXG4iLAot CQlmdW5jLT5jaGlwX3NlbGVjdCwgZnVuYy0+bW9kZSwgZnVuYy0+Yml0c19wZXJfd29yZCwKLQkJ ZnVuYy0+bWF4X3NwZWVkX2h6KTsKKwkJZnVuYy0+Y2hpcF9zZWxlY3QsIGZ1bmMtPm1vZGUsIGZ1 bmMtPmJpdHNfcGVyX3dvcmQsIGZ1bmMtPm1heF9zcGVlZF9oeik7CiAJaWYgKGZ1bmMtPmJpdHNf cGVyX3dvcmQgIT0gMTYgJiYgZnVuYy0+Yml0c19wZXJfd29yZCAhPSA4KQotCQlkZXZfd2Fybigm ZnVuYy0+ZGV2LCAidW51c3VhbCBiaXRzL3dvcmQgdmFsdWU6ICVkXG4iLAotCQkJIGZ1bmMtPmJp dHNfcGVyX3dvcmQpOworCQlkZXZfd2FybigmZnVuYy0+ZGV2LCAidW51c3VhbCBiaXRzL3dvcmQg dmFsdWU6ICVkXG4iLCBmdW5jLT5iaXRzX3Blcl93b3JkKTsKIAlpZiAoZnVuYy0+bWF4X3NwZWVk X2h6ID4gNTAwMDAwMDApCi0JCWRldl93YXJuKCZmdW5jLT5kZXYsICIlZEh6IGlzIGEgdmVyeSBo aWdoIHNwZWVkXG4iLAotCQkJIGZ1bmMtPm1heF9zcGVlZF9oeik7CisJCWRldl93YXJuKCZmdW5j LT5kZXYsICIlZEh6IGlzIGEgdmVyeSBoaWdoIHNwZWVkXG4iLCBmdW5jLT5tYXhfc3BlZWRfaHop OwogCiAJYnVzID0gZGV2bV9remFsbG9jKCZmdW5jLT5kZXYsIHNpemVvZigqYnVzKSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFidXMpCkBAIC0yMDcsMTMgKzIwMSwxMSBAQCBzdGF0aWMgaW50IHdmeF9z cGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKmZ1bmMpCiAJCWJ1cy0+bmVlZF9zd2FiID0gdHJ1 ZTsKIAlzcGlfc2V0X2RydmRhdGEoZnVuYywgYnVzKTsKIAotCWJ1cy0+Z3Bpb19yZXNldCA9IGRl dm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZmdW5jLT5kZXYsICJyZXNldCIsCi0JCQkJCQkgIEdQSU9E X09VVF9MT1cpOworCWJ1cy0+Z3Bpb19yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZm dW5jLT5kZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOwogCWlmIChJU19FUlIoYnVzLT5ncGlv X3Jlc2V0KSkKIAkJcmV0dXJuIFBUUl9FUlIoYnVzLT5ncGlvX3Jlc2V0KTsKIAlpZiAoIWJ1cy0+ Z3Bpb19yZXNldCkgewotCQlkZXZfd2FybigmZnVuYy0+ZGV2LAotCQkJICJncGlvIHJlc2V0IGlz IG5vdCBkZWZpbmVkLCB0cnlpbmcgdG8gbG9hZCBmaXJtd2FyZSBhbnl3YXlcbiIpOworCQlkZXZf d2FybigmZnVuYy0+ZGV2LCAiZ3BpbyByZXNldCBpcyBub3QgZGVmaW5lZCwgdHJ5aW5nIHRvIGxv YWQgZmlybXdhcmUgYW55d2F5XG4iKTsKIAl9IGVsc2UgewogCQlncGlvZF9zZXRfY29uc3VtZXJf bmFtZShidXMtPmdwaW9fcmVzZXQsICJ3ZnggcmVzZXQiKTsKIAkJaWYgKHNwaV9nZXRfZGV2aWNl X2lkKGZ1bmMpLT5kcml2ZXJfZGF0YSAmIFdGWF9SRVNFVF9JTlZFUlRFRCkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9kYXRh X3J4LmMKaW5kZXggM2ZlNjdjNDgxNWU3Li40YmVlZTI2MjQ5OTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc3RhZ2luZy93ZngvZGF0YV9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9y eC5jCkBAIC0zNCw4ICszNCw3IEBAIHN0YXRpYyB2b2lkIHdmeF9yeF9oYW5kbGVfYmEoc3RydWN0 IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCkKIAl9CiB9CiAKLXZv aWQgd2Z4X3J4X2NiKHN0cnVjdCB3ZnhfdmlmICp3dmlmLAotCSAgICAgICBjb25zdCBzdHJ1Y3Qg d2Z4X2hpZl9pbmRfcnggKmFyZywgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3ZvaWQgd2Z4X3J4X2Ni KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9pbmRfcnggKmFyZywg c3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqaGRy ID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7CiAJc3RydWN0IGllZWU4MDIxMV9oZHIgKmZyYW1l ID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopc2tiLT5kYXRhOwpAQCAtNTQsOCArNTMsNyBAQCB2 b2lkIHdmeF9yeF9jYihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKIAl9CiAKIAloZHItPmJhbmQgPSBO TDgwMjExX0JBTkRfMkdIWjsKLQloZHItPmZyZXEgPSBpZWVlODAyMTFfY2hhbm5lbF90b19mcmVx dWVuY3koYXJnLT5jaGFubmVsX251bWJlciwKLQkJCQkJCSAgIGhkci0+YmFuZCk7CisJaGRyLT5m cmVxID0gaWVlZTgwMjExX2NoYW5uZWxfdG9fZnJlcXVlbmN5KGFyZy0+Y2hhbm5lbF9udW1iZXIs IGhkci0+YmFuZCk7CiAKIAlpZiAoYXJnLT5yeGVkX3JhdGUgPj0gMTQpIHsKIAkJaGRyLT5lbmNv ZGluZyA9IFJYX0VOQ19IVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9y eC5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9kYXRhX3J4LmgKaW5kZXggN2Q3N2NkYmJjMzFiLi5j ZjcwOGYxNmQ2MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9yeC5oCisr KyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV9yeC5oCkBAIC0xMiw3ICsxMiw2IEBAIHN0cnVj dCB3ZnhfdmlmOwogc3RydWN0IHNrX2J1ZmY7CiBzdHJ1Y3Qgd2Z4X2hpZl9pbmRfcng7CiAKLXZv aWQgd2Z4X3J4X2NiKHN0cnVjdCB3ZnhfdmlmICp3dmlmLAotCSAgICAgICBjb25zdCBzdHJ1Y3Qg d2Z4X2hpZl9pbmRfcnggKmFyZywgc3RydWN0IHNrX2J1ZmYgKnNrYik7Cit2b2lkIHdmeF9yeF9j YihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgY29uc3Qgc3RydWN0IHdmeF9oaWZfaW5kX3J4ICphcmcs IHN0cnVjdCBza19idWZmICpza2IpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Rh Z2luZy93ZngvZGF0YV90eC5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9kYXRhX3R4LmMKaW5kZXgg ZmVjMzBkNzczZTYyLi4wYmZiZjU3Y2MwMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93 ZngvZGF0YV90eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV90eC5jCkBAIC0xNyw4 ICsxNyw3IEBACiAjaW5jbHVkZSAidHJhY2VzLmgiCiAjaW5jbHVkZSAiaGlmX3R4X21pYi5oIgog Ci1zdGF0aWMgaW50IHdmeF9nZXRfaHdfcmF0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKLQkJCSAg IGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSkKK3N0YXRpYyBpbnQgd2Z4X2dl dF9od19yYXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3R4 X3JhdGUgKnJhdGUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqYmFuZDsK IApAQCAtNjYsMTQgKzY1LDEyIEBAIHN0YXRpYyB2b2lkIHdmeF90eF9wb2xpY3lfYnVpbGQoc3Ry dWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCB3ZnhfdHhfcG9saWN5ICpwb2xpCiAJfQogfQogCi1z dGF0aWMgYm9vbCB3ZnhfdHhfcG9saWN5X2lzX2VxdWFsKGNvbnN0IHN0cnVjdCB3ZnhfdHhfcG9s aWN5ICphLAotCQkJCSAgIGNvbnN0IHN0cnVjdCB3ZnhfdHhfcG9saWN5ICpiKQorc3RhdGljIGJv b2wgd2Z4X3R4X3BvbGljeV9pc19lcXVhbChjb25zdCBzdHJ1Y3Qgd2Z4X3R4X3BvbGljeSAqYSwg Y29uc3Qgc3RydWN0IHdmeF90eF9wb2xpY3kgKmIpCiB7CiAJcmV0dXJuICFtZW1jbXAoYS0+cmF0 ZXMsIGItPnJhdGVzLCBzaXplb2YoYS0+cmF0ZXMpKTsKIH0KIAotc3RhdGljIGludCB3ZnhfdHhf cG9saWN5X2ZpbmQoc3RydWN0IHdmeF90eF9wb2xpY3lfY2FjaGUgKmNhY2hlLAotCQkJICAgICAg c3RydWN0IHdmeF90eF9wb2xpY3kgKndhbnRlZCkKK3N0YXRpYyBpbnQgd2Z4X3R4X3BvbGljeV9m aW5kKHN0cnVjdCB3ZnhfdHhfcG9saWN5X2NhY2hlICpjYWNoZSwgc3RydWN0IHdmeF90eF9wb2xp Y3kgKndhbnRlZCkKIHsKIAlzdHJ1Y3Qgd2Z4X3R4X3BvbGljeSAqaXQ7CiAKQEAgLTg2LDE1ICs4 MywxMyBAQCBzdGF0aWMgaW50IHdmeF90eF9wb2xpY3lfZmluZChzdHJ1Y3Qgd2Z4X3R4X3BvbGlj eV9jYWNoZSAqY2FjaGUsCiAJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgdm9pZCB3ZnhfdHhfcG9s aWN5X3VzZShzdHJ1Y3Qgd2Z4X3R4X3BvbGljeV9jYWNoZSAqY2FjaGUsCi0JCQkgICAgICBzdHJ1 Y3Qgd2Z4X3R4X3BvbGljeSAqZW50cnkpCitzdGF0aWMgdm9pZCB3ZnhfdHhfcG9saWN5X3VzZShz dHJ1Y3Qgd2Z4X3R4X3BvbGljeV9jYWNoZSAqY2FjaGUsIHN0cnVjdCB3ZnhfdHhfcG9saWN5ICpl bnRyeSkKIHsKIAkrK2VudHJ5LT51c2FnZV9jb3VudDsKIAlsaXN0X21vdmUoJmVudHJ5LT5saW5r LCAmY2FjaGUtPnVzZWQpOwogfQogCi1zdGF0aWMgaW50IHdmeF90eF9wb2xpY3lfcmVsZWFzZShz dHJ1Y3Qgd2Z4X3R4X3BvbGljeV9jYWNoZSAqY2FjaGUsCi0JCQkJIHN0cnVjdCB3ZnhfdHhfcG9s aWN5ICplbnRyeSkKK3N0YXRpYyBpbnQgd2Z4X3R4X3BvbGljeV9yZWxlYXNlKHN0cnVjdCB3Znhf dHhfcG9saWN5X2NhY2hlICpjYWNoZSwgc3RydWN0IHdmeF90eF9wb2xpY3kgKmVudHJ5KQogewog CWludCByZXQgPSAtLWVudHJ5LT51c2FnZV9jb3VudDsKIApAQCAtMTAzLDggKzk4LDcgQEAgc3Rh dGljIGludCB3ZnhfdHhfcG9saWN5X3JlbGVhc2Uoc3RydWN0IHdmeF90eF9wb2xpY3lfY2FjaGUg KmNhY2hlLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgd2Z4X3R4X3BvbGljeV9nZXQo c3RydWN0IHdmeF92aWYgKnd2aWYsCi0JCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAq cmF0ZXMsIGJvb2wgKnJlbmV3KQorc3RhdGljIGludCB3ZnhfdHhfcG9saWN5X2dldChzdHJ1Y3Qg d2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IGllZWU4MDIxMV90eF9yYXRlICpyYXRlcywgYm9vbCAqcmVu ZXcpCiB7CiAJaW50IGlkeDsKIAlzdHJ1Y3Qgd2Z4X3R4X3BvbGljeV9jYWNoZSAqY2FjaGUgPSAm d3ZpZi0+dHhfcG9saWN5X2NhY2hlOwpAQCAtMTY0LDggKzE1OCw3IEBAIHN0YXRpYyBpbnQgd2Z4 X3R4X3BvbGljeV91cGxvYWQoc3RydWN0IHdmeF92aWYgKnd2aWYpCiAJZG8gewogCQlzcGluX2xv Y2tfYmgoJnd2aWYtPnR4X3BvbGljeV9jYWNoZS5sb2NrKTsKIAkJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUod3ZpZi0+dHhfcG9saWN5X2NhY2hlLmNhY2hlKTsgKytpKSB7Ci0JCQlpc191c2Vk ID0gbWVtemNtcChwb2xpY2llc1tpXS5yYXRlcywKLQkJCQkJICBzaXplb2YocG9saWNpZXNbaV0u cmF0ZXMpKTsKKwkJCWlzX3VzZWQgPSBtZW16Y21wKHBvbGljaWVzW2ldLnJhdGVzLCBzaXplb2Yo cG9saWNpZXNbaV0ucmF0ZXMpKTsKIAkJCWlmICghcG9saWNpZXNbaV0udXBsb2FkZWQgJiYgaXNf dXNlZCkKIAkJCQlicmVhazsKIAkJfQpAQCAtMTgzLDggKzE3Niw3IEBAIHN0YXRpYyBpbnQgd2Z4 X3R4X3BvbGljeV91cGxvYWQoc3RydWN0IHdmeF92aWYgKnd2aWYpCiAKIHZvaWQgd2Z4X3R4X3Bv bGljeV91cGxvYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0Jc3RydWN0IHdm eF92aWYgKnd2aWYgPQotCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IHdmeF92aWYsIHR4X3Bv bGljeV91cGxvYWRfd29yayk7CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSBjb250YWluZXJfb2Yo d29yaywgc3RydWN0IHdmeF92aWYsIHR4X3BvbGljeV91cGxvYWRfd29yayk7CiAKIAl3ZnhfdHhf cG9saWN5X3VwbG9hZCh3dmlmKTsKIAl3ZnhfdHhfdW5sb2NrKHd2aWYtPndkZXYpOwpAQCAtMjIx LDggKzIxMyw3IEBAIHN0YXRpYyBib29sIHdmeF9pc19hY3Rpb25fYmFjayhzdHJ1Y3QgaWVlZTgw MjExX2hkciAqaGRyKQogc3RhdGljIHU4IHdmeF90eF9nZXRfbGlua19pZChzdHJ1Y3Qgd2Z4X3Zp ZiAqd3ZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKIAkJCSAgICAgc3RydWN0IGllZWU4 MDIxMV9oZHIgKmhkcikKIHsKLQlzdHJ1Y3Qgd2Z4X3N0YV9wcml2ICpzdGFfcHJpdiA9Ci0JCXN0 YSA/IChzdHJ1Y3Qgd2Z4X3N0YV9wcml2ICopJnN0YS0+ZHJ2X3ByaXYgOiBOVUxMOworCXN0cnVj dCB3Znhfc3RhX3ByaXYgKnN0YV9wcml2ID0gc3RhID8gKHN0cnVjdCB3Znhfc3RhX3ByaXYgKikm c3RhLT5kcnZfcHJpdiA6IE5VTEw7CiAJY29uc3QgdTggKmRhID0gaWVlZTgwMjExX2dldF9EQSho ZHIpOwogCiAJaWYgKHN0YV9wcml2ICYmIHN0YV9wcml2LT5saW5rX2lkKQpAQCAtMjc2LDggKzI2 Nyw3IEBAIHN0YXRpYyB2b2lkIHdmeF90eF9maXh1cF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3R4 X3JhdGUgKnJhdGVzKQogCQlpZiAocmF0ZXNbaV0uaWR4ID09IC0xKSB7CiAJCQlyYXRlc1tpXS5p ZHggPSAwOwogCQkJcmF0ZXNbaV0uY291bnQgPSA4OyAvKiA9PSBody0+bWF4X3JhdGVfdHJpZXMg Ki8KLQkJCXJhdGVzW2ldLmZsYWdzID0gcmF0ZXNbaSAtIDFdLmZsYWdzICYKLQkJCQkJIElFRUU4 MDIxMV9UWF9SQ19NQ1M7CisJCQlyYXRlc1tpXS5mbGFncyA9IHJhdGVzW2kgLSAxXS5mbGFncyAm IElFRUU4MDIxMV9UWF9SQ19NQ1M7CiAJCQlicmVhazsKIAkJfQogCX0KQEAgLTI4Niw4ICsyNzYs NyBAQCBzdGF0aWMgdm9pZCB3ZnhfdHhfZml4dXBfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV90eF9y YXRlICpyYXRlcykKIAkJcmF0ZXNbaV0uZmxhZ3MgJj0gfklFRUU4MDIxMV9UWF9SQ19TSE9SVF9H STsKIH0KIAotc3RhdGljIHU4IHdmeF90eF9nZXRfcmV0cnlfcG9saWN5X2lkKHN0cnVjdCB3Znhf dmlmICp3dmlmLAotCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZvKQor c3RhdGljIHU4IHdmeF90eF9nZXRfcmV0cnlfcG9saWN5X2lkKHN0cnVjdCB3ZnhfdmlmICp3dmlm LCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8pCiB7CiAJYm9vbCB0eF9wb2xpY3lf cmVuZXcgPSBmYWxzZTsKIAl1OCByZXQ7CkBAIC0zMjYsOCArMzE1LDcgQEAgc3RhdGljIGludCB3 ZnhfdHhfZ2V0X2ljdl9sZW4oc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqaHdfa2V5KQogCXJl dHVybiBod19rZXktPmljdl9sZW4gKyBtaWNfc3BhY2U7CiB9CiAKLXN0YXRpYyBpbnQgd2Z4X3R4 X2lubmVyKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAot CQkJc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0YXRpYyBpbnQgd2Z4X3R4X2lubmVyKHN0cnVjdCB3 ZnhfdmlmICp3dmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQogewogCXN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmX21zZzsKIAlzdHJ1Y3Qgd2Z4X2hpZl9y ZXFfdHggKnJlcTsKQEAgLTMzNyw4ICszMjUsNyBAQCBzdGF0aWMgaW50IHdmeF90eF9pbm5lcihz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKIAlzdHJ1Y3Qg aWVlZTgwMjExX2hkciAqaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopc2tiLT5kYXRhOwog CWludCBxdWV1ZV9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwogCXNpemVfdCBvZmZz ZXQgPSAoc2l6ZV90KXNrYi0+ZGF0YSAmIDM7Ci0JaW50IHdtc2dfbGVuID0gc2l6ZW9mKHN0cnVj dCB3ZnhfaGlmX21zZykgKwotCQkJc2l6ZW9mKHN0cnVjdCB3ZnhfaGlmX3JlcV90eCkgKyBvZmZz ZXQ7CisJaW50IHdtc2dfbGVuID0gc2l6ZW9mKHN0cnVjdCB3ZnhfaGlmX21zZykgKyBzaXplb2Yo c3RydWN0IHdmeF9oaWZfcmVxX3R4KSArIG9mZnNldDsKIAogCVdBUk4ocXVldWVfaWQgPj0gSUVF RTgwMjExX05VTV9BQ1MsICJ1bnN1cHBvcnRlZCBxdWV1ZV9pZCIpOwogCXdmeF90eF9maXh1cF9y YXRlcyh0eF9pbmZvLT5kcml2ZXJfcmF0ZXMpOwpAQCAtMzk2LDE2ICszODMsMTQgQEAgc3RhdGlj IGludCB3ZnhfdHhfaW5uZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBpZWVlODAyMTFf c3RhICpzdGEsCiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgd2Z4X3R4KHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsCi0JICAgIHN0cnVj dCBza19idWZmICpza2IpCit2b2lkIHdmeF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3Ry dWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQog ewogCXN0cnVjdCB3ZnhfZGV2ICp3ZGV2ID0gaHctPnByaXY7CiAJc3RydWN0IHdmeF92aWYgKnd2 aWY7CiAJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSA9IGNvbnRyb2wgPyBjb250cm9sLT5zdGEg OiBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbyA9IElFRUU4MDIxMV9T S0JfQ0Ioc2tiKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyID0gKHN0cnVjdCBpZWVlODAy MTFfaGRyICopc2tiLT5kYXRhOwotCXNpemVfdCBkcml2ZXJfZGF0YV9yb29tID0gc2l6ZW9mX2Zp ZWxkKHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbywKLQkJCQkJICAgICAgIHJhdGVfZHJpdmVyX2Rh dGEpOworCXNpemVfdCBkcml2ZXJfZGF0YV9yb29tID0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBpZWVl ODAyMTFfdHhfaW5mbywgcmF0ZV9kcml2ZXJfZGF0YSk7CiAKIAljb21waWxldGltZV9hc3NlcnQo c2l6ZW9mKHN0cnVjdCB3ZnhfdHhfcHJpdikgPD0gZHJpdmVyX2RhdGFfcm9vbSwKIAkJCSAgICJz dHJ1Y3QgdHhfcHJpdiBpcyB0b28gbGFyZ2UiKTsKQEAgLTQzNyw4ICs0MjIsNyBAQCBzdGF0aWMg dm9pZCB3Znhfc2tiX2R0b3Ioc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBza19idWZmICpz a2IpCiB7CiAJc3RydWN0IHdmeF9oaWZfbXNnICpoaWYgPSAoc3RydWN0IHdmeF9oaWZfbXNnICop c2tiLT5kYXRhOwogCXN0cnVjdCB3ZnhfaGlmX3JlcV90eCAqcmVxID0gKHN0cnVjdCB3ZnhfaGlm X3JlcV90eCAqKWhpZi0+Ym9keTsKLQl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gc2l6ZW9mKHN0cnVj dCB3ZnhfaGlmX21zZykgKwotCQkJICAgICAgc2l6ZW9mKHN0cnVjdCB3ZnhfaGlmX3JlcV90eCkg KworCXVuc2lnbmVkIGludCBvZmZzZXQgPSBzaXplb2Yoc3RydWN0IHdmeF9oaWZfbXNnKSArIHNp emVvZihzdHJ1Y3Qgd2Z4X2hpZl9yZXFfdHgpICsKIAkJCSAgICAgIHJlcS0+ZmNfb2Zmc2V0Owog CiAJaWYgKCF3dmlmKSB7CkBAIC00NTAsOCArNDM0LDcgQEAgc3RhdGljIHZvaWQgd2Z4X3NrYl9k dG9yKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWllZWU4MDIx MV90eF9zdGF0dXNfaXJxc2FmZSh3dmlmLT53ZGV2LT5odywgc2tiKTsKIH0KIAotc3RhdGljIHZv aWQgd2Z4X3R4X2ZpbGxfcmF0ZXMoc3RydWN0IHdmeF9kZXYgKndkZXYsCi0JCQkgICAgICBzdHJ1 Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8sCitzdGF0aWMgdm9pZCB3ZnhfdHhfZmlsbF9y YXRlcyhzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9p bmZvLAogCQkJICAgICAgY29uc3Qgc3RydWN0IHdmeF9oaWZfY25mX3R4ICphcmcpCiB7CiAJc3Ry dWN0IGllZWU4MDIxMV90eF9yYXRlICpyYXRlOwpAQCAtNDY1LDggKzQ0OCw3IEBAIHN0YXRpYyB2 b2lkIHdmeF90eF9maWxsX3JhdGVzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAogCQlyYXRlID0gJnR4 X2luZm8tPnN0YXR1cy5yYXRlc1tpXTsKIAkJaWYgKHJhdGUtPmlkeCA8IDApCiAJCQlicmVhazsK LQkJaWYgKHR4X2NvdW50IDwgcmF0ZS0+Y291bnQgJiYKLQkJICAgIGFyZy0+c3RhdHVzID09IEhJ Rl9TVEFUVVNfVFhfRkFJTF9SRVRSSUVTICYmCisJCWlmICh0eF9jb3VudCA8IHJhdGUtPmNvdW50 ICYmIGFyZy0+c3RhdHVzID09IEhJRl9TVEFUVVNfVFhfRkFJTF9SRVRSSUVTICYmCiAJCSAgICBh cmctPmFja19mYWlsdXJlcykKIAkJCWRldl9kYmcod2Rldi0+ZGV2LCAiYWxsIHJldHJpZXMgd2Vy ZSBub3QgY29uc3VtZWQ6ICVkICE9ICVkXG4iLAogCQkJCXJhdGUtPmNvdW50LCB0eF9jb3VudCk7 CkBAIC01MjEsOSArNTAzLDggQEAgdm9pZCB3ZnhfdHhfY29uZmlybV9jYihzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwgY29uc3Qgc3RydWN0IHdmeF9oaWZfY25mX3R4ICphcmcpCiAJbWVtc2V0KHR4X2lu Zm8tPnBhZCwgMCwgc2l6ZW9mKHR4X2luZm8tPnBhZCkpOwogCiAJaWYgKCFhcmctPnN0YXR1cykg ewotCQl0eF9pbmZvLT5zdGF0dXMudHhfdGltZSA9Ci0JCQlsZTMyX3RvX2NwdShhcmctPm1lZGlh X2RlbGF5KSAtCi0JCQlsZTMyX3RvX2NwdShhcmctPnR4X3F1ZXVlX2RlbGF5KTsKKwkJdHhfaW5m by0+c3RhdHVzLnR4X3RpbWUgPSBsZTMyX3RvX2NwdShhcmctPm1lZGlhX2RlbGF5KSAtCisJCQkJ CSAgbGUzMl90b19jcHUoYXJnLT50eF9xdWV1ZV9kZWxheSk7CiAJCWlmICh0eF9pbmZvLT5mbGFn cyAmIElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKQogCQkJdHhfaW5mby0+ZmxhZ3MgfD0gSUVFRTgw MjExX1RYX1NUQVRfTk9BQ0tfVFJBTlNNSVRURUQ7CiAJCWVsc2UKQEAgLTUzOSw4ICs1MjAsNyBA QCB2b2lkIHdmeF90eF9jb25maXJtX2NiKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCBzdHJ1 Y3Qgd2Z4X2hpZl9jbmZfdHggKmFyZykKIAl3Znhfc2tiX2R0b3Iod3ZpZiwgc2tiKTsKIH0KIAot c3RhdGljIHZvaWQgd2Z4X2ZsdXNoX3ZpZihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgdTMyIHF1ZXVl cywKLQkJCSAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZHJvcHBlZCkKK3N0YXRpYyB2b2lkIHdmeF9m bHVzaF92aWYoc3RydWN0IHdmeF92aWYgKnd2aWYsIHUzMiBxdWV1ZXMsIHN0cnVjdCBza19idWZm X2hlYWQgKmRyb3BwZWQpCiB7CiAJc3RydWN0IHdmeF9xdWV1ZSAqcXVldWU7CiAJaW50IGk7CkBA IC01NTgsMTYgKzUzOCwxMyBAQCBzdGF0aWMgdm9pZCB3ZnhfZmx1c2hfdmlmKHN0cnVjdCB3Znhf dmlmICp3dmlmLCB1MzIgcXVldWVzLAogCQlpZiAoIShCSVQoaSkgJiBxdWV1ZXMpKQogCQkJY29u dGludWU7CiAJCXF1ZXVlID0gJnd2aWYtPnR4X3F1ZXVlW2ldOwotCQlpZiAod2FpdF9ldmVudF90 aW1lb3V0KHd2aWYtPndkZXYtPnR4X2RlcXVldWUsCi0JCQkJICAgICAgIHdmeF90eF9xdWV1ZV9l bXB0eSh3dmlmLCBxdWV1ZSksCisJCWlmICh3YWl0X2V2ZW50X3RpbWVvdXQod3ZpZi0+d2Rldi0+ dHhfZGVxdWV1ZSwgd2Z4X3R4X3F1ZXVlX2VtcHR5KHd2aWYsIHF1ZXVlKSwKIAkJCQkgICAgICAg bXNlY3NfdG9famlmZmllcygxMDAwKSkgPD0gMCkKLQkJCWRldl93YXJuKHd2aWYtPndkZXYtPmRl diwKLQkJCQkgImZyYW1lcyBxdWV1ZWQgd2hpbGUgZmx1c2hpbmcgdHggcXVldWVzPyIpOworCQkJ ZGV2X3dhcm4od3ZpZi0+d2Rldi0+ZGV2LCAiZnJhbWVzIHF1ZXVlZCB3aGlsZSBmbHVzaGluZyB0 eCBxdWV1ZXM/Iik7CiAJfQogfQogCi12b2lkIHdmeF9mbHVzaChzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKLQkgICAgICAgdTMyIHF1ZXVlcywgYm9v bCBkcm9wKQordm9pZCB3ZnhfZmx1c2goc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBp ZWVlODAyMTFfdmlmICp2aWYsIHUzMiBxdWV1ZXMsIGJvb2wgZHJvcCkKIHsKIAlzdHJ1Y3Qgd2Z4 X2RldiAqd2RldiA9IGh3LT5wcml2OwogCXN0cnVjdCBza19idWZmX2hlYWQgZHJvcHBlZDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV90eC5oIGIvZHJpdmVycy9zdGFnaW5n L3dmeC9kYXRhX3R4LmgKaW5kZXggMDQwZjczMWU2MmFlLi45ODM0NzA3MDVlNGIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZGF0YV90eC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93 ZngvZGF0YV90eC5oCkBAIC00MSwxMSArNDEsOSBAQCBzdHJ1Y3Qgd2Z4X3R4X3ByaXYgewogdm9p ZCB3ZnhfdHhfcG9saWN5X2luaXQoc3RydWN0IHdmeF92aWYgKnd2aWYpOwogdm9pZCB3ZnhfdHhf cG9saWN5X3VwbG9hZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKLXZvaWQgd2Z4 X3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wg KmNvbnRyb2wsCi0JICAgIHN0cnVjdCBza19idWZmICpza2IpOwordm9pZCB3ZnhfdHgoc3RydWN0 IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCwg c3RydWN0IHNrX2J1ZmYgKnNrYik7CiB2b2lkIHdmeF90eF9jb25maXJtX2NiKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9jbmZfdHggKmFyZyk7Ci12b2lkIHdmeF9m bHVzaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwK LQkgICAgICAgdTMyIHF1ZXVlcywgYm9vbCBkcm9wKTsKK3ZvaWQgd2Z4X2ZsdXNoKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCB1MzIgcXVldWVzLCBi b29sIGRyb3ApOwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB3ZnhfdHhfcHJpdiAqd2Z4X3NrYl90 eF9wcml2KHN0cnVjdCBza19idWZmICpza2IpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvd2Z4L2RlYnVnLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2RlYnVnLmMKaW5kZXggZjA3OTZl YjJhZmZmLi4yMTBlMjMzNmQ0M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvZGVi dWcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2RlYnVnLmMKQEAgLTMxLDggKzMxLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCB0cmFjZV9wcmludF9mbGFncyB3ZnhfcmVnX3ByaW50X21hcFtd ID0gewogCXdmeF9yZWdfbGlzdCwKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyICpnZXRfc3ltYm9s KHVuc2lnbmVkIGxvbmcgdmFsLAotCQkJICAgICAgY29uc3Qgc3RydWN0IHRyYWNlX3ByaW50X2Zs YWdzICpzeW1ib2xfYXJyYXkpCitzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3N5bWJvbCh1bnNpZ25l ZCBsb25nIHZhbCwgY29uc3Qgc3RydWN0IHRyYWNlX3ByaW50X2ZsYWdzICpzeW1ib2xfYXJyYXkp CiB7CiAJaW50IGk7CiAKQEAgLTczLDggKzcyLDcgQEAgc3RhdGljIGludCB3ZnhfY291bnRlcnNf c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAkJCXJldHVybiAtRUlPOwogCX0K IAotCXNlcV9wcmludGYoc2VxLCAiJS0yNHMgJTEycyAlMTJzICUxMnNcbiIsCi0JCSAgICIiLCAi Z2xvYmFsIiwgImlmYWNlIDAiLCAiaWZhY2UgMSIpOworCXNlcV9wcmludGYoc2VxLCAiJS0yNHMg JTEycyAlMTJzICUxMnNcbiIsICIiLCAiZ2xvYmFsIiwgImlmYWNlIDAiLCAiaWZhY2UgMSIpOwog CiAjZGVmaW5lIFBVVF9DT1VOVEVSKG5hbWUpIFwKIAlzZXFfcHJpbnRmKHNlcSwgIiUtMjRzICUx MmQgJTEyZCAlMTJkXG4iLCAjbmFtZSwgXApAQCAtMTU5LDEwICsxNTcsOCBAQCBzdGF0aWMgaW50 IHdmeF9yeF9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KQogCW11dGV4 X2xvY2soJndkZXYtPnJ4X3N0YXRzX2xvY2spOwogCXNlcV9wcmludGYoc2VxLCAiVGltZXN0YW1w OiAlZHVzXG4iLCBzdC0+ZGF0ZSk7CiAJc2VxX3ByaW50ZihzZXEsICJMb3cgcG93ZXIgY2xvY2s6 IGZyZXF1ZW5jeSAldUh6LCBleHRlcm5hbCAlc1xuIiwKLQkJICAgbGUzMl90b19jcHUoc3QtPnB3 cl9jbGtfZnJlcSksCi0JCSAgIHN0LT5pc19leHRfcHdyX2NsayA/ICJ5ZXMiIDogIm5vIik7Ci0J c2VxX3ByaW50ZihzZXEsCi0JCSAgICJOdW0uIG9mIGZyYW1lczogJWQsIFBFUiAoeDEwZTQpOiAl ZCwgVGhyb3VnaHB1dDogJWRLYnBzL3NcbiIsCisJCSAgIGxlMzJfdG9fY3B1KHN0LT5wd3JfY2xr X2ZyZXEpLCBzdC0+aXNfZXh0X3B3cl9jbGsgPyAieWVzIiA6ICJubyIpOworCXNlcV9wcmludGYo c2VxLCAiTnVtLiBvZiBmcmFtZXM6ICVkLCBQRVIgKHgxMGU0KTogJWQsIFRocm91Z2hwdXQ6ICVk S2Jwcy9zXG4iLAogCQkgICBzdC0+bmJfcnhfZnJhbWUsIHN0LT5wZXJfdG90YWwsIHN0LT50aHJv dWdocHV0KTsKIAlzZXFfcHV0cyhzZXEsICIgICAgICAgTnVtLiBvZiAgICAgIFBFUiAgICAgUlNT SSAgICAgIFNOUiAgICAgIENGT1xuIik7CiAJc2VxX3B1dHMoc2VxLCAiICAgICAgICBmcmFtZXMg ICh4MTBlNCkgICAgKGRCbSkgICAgIChkQikgICAgKGtIeilcbiIpOwpAQCAtMjA2LDggKzIwMiw3 IEBAIHN0YXRpYyBpbnQgd2Z4X3R4X3Bvd2VyX2xvb3Bfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNl cSwgdm9pZCAqdikKIH0KIERFRklORV9TSE9XX0FUVFJJQlVURSh3ZnhfdHhfcG93ZXJfbG9vcCk7 CiAKLXN0YXRpYyBzc2l6ZV90IHdmeF9zZW5kX3Bkc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwK LQkJCQkgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZiwKK3N0YXRpYyBzc2l6ZV90IHdmeF9z ZW5kX3Bkc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJf YnVmLAogCQkJCSAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiB7CiAJc3RydWN0IHdmeF9k ZXYgKndkZXYgPSBmaWxlLT5wcml2YXRlX2RhdGE7CkBAIC0yNDEsOCArMjM2LDcgQEAgc3RydWN0 IGRiZ2ZzX2hpZl9tc2cgewogCWludCByZXQ7CiB9OwogCi1zdGF0aWMgc3NpemVfdCB3Znhfc2Vu ZF9oaWZfbXNnX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAotCQkJCSAgICAgIGNvbnN0IGNoYXIg X191c2VyICp1c2VyX2J1ZiwKK3N0YXRpYyBzc2l6ZV90IHdmeF9zZW5kX2hpZl9tc2dfd3JpdGUo c3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZiwKIAkJCQkgICAg ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKIAlzdHJ1Y3QgZGJnZnNfaGlmX21zZyAq Y29udGV4dCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKQEAgLTI2OCw4ICsyNjIsNyBAQCBzdGF0aWMg c3NpemVfdCB3Znhfc2VuZF9oaWZfbXNnX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCQlrZnJl ZShyZXF1ZXN0KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCWNvbnRleHQtPnJldCA9IHdmeF9j bWRfc2VuZCh3ZGV2LCByZXF1ZXN0LCBjb250ZXh0LT5yZXBseSwKLQkJCQkgICAgc2l6ZW9mKGNv bnRleHQtPnJlcGx5KSwgZmFsc2UpOworCWNvbnRleHQtPnJldCA9IHdmeF9jbWRfc2VuZCh3ZGV2 LCByZXF1ZXN0LCBjb250ZXh0LT5yZXBseSwgc2l6ZW9mKGNvbnRleHQtPnJlcGx5KSwgZmFsc2Up OwogCiAJa2ZyZWUocmVxdWVzdCk7CiAJY29tcGxldGUoJmNvbnRleHQtPmNvbXBsZXRlKTsKQEAg LTM1NCwxMSArMzQ3LDkgQEAgaW50IHdmeF9kZWJ1Z19pbml0KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 KQogCWQgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoIndmeCIsIHdkZXYtPmh3LT53aXBoeS0+ZGVidWdm c2Rpcik7CiAJZGVidWdmc19jcmVhdGVfZmlsZSgiY291bnRlcnMiLCAwNDQ0LCBkLCB3ZGV2LCAm d2Z4X2NvdW50ZXJzX2ZvcHMpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoInJ4X3N0YXRzIiwgMDQ0 NCwgZCwgd2RldiwgJndmeF9yeF9zdGF0c19mb3BzKTsKLQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJ0 eF9wb3dlcl9sb29wIiwgMDQ0NCwgZCwgd2RldiwKLQkJCSAgICAmd2Z4X3R4X3Bvd2VyX2xvb3Bf Zm9wcyk7CisJZGVidWdmc19jcmVhdGVfZmlsZSgidHhfcG93ZXJfbG9vcCIsIDA0NDQsIGQsIHdk ZXYsICZ3ZnhfdHhfcG93ZXJfbG9vcF9mb3BzKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJzZW5k X3BkcyIsIDAyMDAsIGQsIHdkZXYsICZ3Znhfc2VuZF9wZHNfZm9wcyk7Ci0JZGVidWdmc19jcmVh dGVfZmlsZSgic2VuZF9oaWZfbXNnIiwgMDYwMCwgZCwgd2RldiwKLQkJCSAgICAmd2Z4X3NlbmRf aGlmX21zZ19mb3BzKTsKKwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJzZW5kX2hpZl9tc2ciLCAwNjAw LCBkLCB3ZGV2LCAmd2Z4X3NlbmRfaGlmX21zZ19mb3BzKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxl KCJwc190aW1lb3V0IiwgMDYwMCwgZCwgd2RldiwgJndmeF9wc190aW1lb3V0X2ZvcHMpOwogCiAJ cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2Z3aW8uYyBiL2RyaXZl cnMvc3RhZ2luZy93ZngvZndpby5jCmluZGV4IGM5YTU0YzUxOWU4YS4uODlhNDZmYjBlNzg5IDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2Z3aW8uYworKysgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L2Z3aW8uYwpAQCAtNzksOCArNzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IGZ3aW9fZXJyb3JzW10gPSB7CiAgKiBOT1RFOiBpdCBtYXkgYWxzbyBiZSBwb3NzaWJsZSB0byB1 c2UgJ3BhZ2VzJyBmcm9tIHN0cnVjdCBmaXJtd2FyZSBhbmQgYXZvaWQKICAqIGJvdW5jZSBidWZm ZXIKICAqLwotc3RhdGljIGludCB3Znhfc3JhbV93cml0ZV9kbWFfc2FmZShzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwgdTMyIGFkZHIsCi0JCQkJICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKK3N0 YXRpYyBpbnQgd2Z4X3NyYW1fd3JpdGVfZG1hX3NhZmUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUz MiBhZGRyLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogewogCWludCByZXQ7CiAJY29uc3Qg dTggKnRtcDsKQEAgLTExMiw4ICsxMTEsNyBAQCBzdGF0aWMgaW50IGdldF9maXJtd2FyZShzdHJ1 Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGtleXNldF9jaGlwLAogCWlmIChyZXQpIHsKIAkJZGV2X2lu Zm8od2Rldi0+ZGV2LCAiY2FuJ3QgbG9hZCAlcywgZmFsbGluZyBiYWNrIHRvICVzLnNlY1xuIiwK IAkJCSBmaWxlbmFtZSwgd2Rldi0+cGRhdGEuZmlsZV9mdyk7Ci0JCXNucHJpbnRmKGZpbGVuYW1l LCBzaXplb2YoZmlsZW5hbWUpLCAiJXMuc2VjIiwKLQkJCSB3ZGV2LT5wZGF0YS5maWxlX2Z3KTsK KwkJc25wcmludGYoZmlsZW5hbWUsIHNpemVvZihmaWxlbmFtZSksICIlcy5zZWMiLCB3ZGV2LT5w ZGF0YS5maWxlX2Z3KTsKIAkJcmV0ID0gcmVxdWVzdF9maXJtd2FyZShmdywgZmlsZW5hbWUsIHdk ZXYtPmRldik7CiAJCWlmIChyZXQpIHsKIAkJCWRldl9lcnIod2Rldi0+ZGV2LCAiY2FuJ3QgbG9h ZCAlc1xuIiwgZmlsZW5hbWUpOwpAQCAtMTY2LDggKzE2NCw3IEBAIHN0YXRpYyBpbnQgd2FpdF9u Y3Bfc3RhdHVzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgc3RhdHVzKQogCQkJcmV0dXJuIC1F VElNRURPVVQ7CiAJfQogCWlmIChrdGltZV9jb21wYXJlKG5vdywgc3RhcnQpKQotCQlkZXZfZGJn KHdkZXYtPmRldiwgImNoaXAgYW5zd2VyIGFmdGVyICVsbGR1c1xuIiwKLQkJCWt0aW1lX3VzX2Rl bHRhKG5vdywgc3RhcnQpKTsKKwkJZGV2X2RiZyh3ZGV2LT5kZXYsICJjaGlwIGFuc3dlciBhZnRl ciAlbGxkdXNcbiIsIGt0aW1lX3VzX2RlbHRhKG5vdywgc3RhcnQpKTsKIAllbHNlCiAJCWRldl9k Ymcod2Rldi0+ZGV2LCAiY2hpcCBhbnN3ZXIgaW1tZWRpYXRlbHlcbiIpOwogCXJldHVybiAwOwpA QCAtMjAwLDggKzE5Nyw3IEBAIHN0YXRpYyBpbnQgdXBsb2FkX2Zpcm13YXJlKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbikKIAkJCWRldl9kYmcod2Rldi0+ ZGV2LCAiYW5zd2VyIGFmdGVyICVsbGR1c1xuIiwKIAkJCQlrdGltZV91c19kZWx0YShub3csIHN0 YXJ0KSk7CiAKLQkJcmV0ID0gd2Z4X3NyYW1fd3JpdGVfZG1hX3NhZmUod2RldiwKLQkJCQkJICAg ICAgV0ZYX0ROTERfRklGTyArIChvZmZzICUgRE5MRF9GSUZPX1NJWkUpLAorCQlyZXQgPSB3Znhf c3JhbV93cml0ZV9kbWFfc2FmZSh3ZGV2LCBXRlhfRE5MRF9GSUZPICsgKG9mZnMgJSBETkxEX0ZJ Rk9fU0laRSksCiAJCQkJCSAgICAgIGRhdGEgKyBvZmZzLCBETkxEX0JMT0NLX1NJWkUpOwogCQlp ZiAocmV0IDwgMCkKIAkJCXJldHVybiByZXQ7CkBAIC0yNjYsMTIgKzI2MiwxMCBAQCBzdGF0aWMg aW50IGxvYWRfZmlybXdhcmVfc2VjdXJlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQogCQlnb3RvIGVy cm9yOwogCiAJd2Z4X3NyYW1fcmVnX3dyaXRlKHdkZXYsIFdGWF9ETkxEX0ZJRk8sIDB4RkZGRkZG RkYpOyAvKiBGaWZvIGluaXQgKi8KLQl3Znhfc3JhbV93cml0ZV9kbWFfc2FmZSh3ZGV2LCBXRlhf RENBX0ZXX1ZFUlNJT04sICJceDAxXHgwMFx4MDBceDAwIiwKLQkJCQlGV19WRVJTSU9OX1NJWkUp OworCXdmeF9zcmFtX3dyaXRlX2RtYV9zYWZlKHdkZXYsIFdGWF9EQ0FfRldfVkVSU0lPTiwgIlx4 MDFceDAwXHgwMFx4MDAiLCBGV19WRVJTSU9OX1NJWkUpOwogCXdmeF9zcmFtX3dyaXRlX2RtYV9z YWZlKHdkZXYsIFdGWF9EQ0FfRldfU0lHTkFUVVJFLCBmdy0+ZGF0YSArIGZ3X29mZnNldCwKIAkJ CQlGV19TSUdOQVRVUkVfU0laRSk7Ci0Jd2Z4X3NyYW1fd3JpdGVfZG1hX3NhZmUod2RldiwgV0ZY X0RDQV9GV19IQVNILAotCQkJCWZ3LT5kYXRhICsgZndfb2Zmc2V0ICsgRldfU0lHTkFUVVJFX1NJ WkUsCisJd2Z4X3NyYW1fd3JpdGVfZG1hX3NhZmUod2RldiwgV0ZYX0RDQV9GV19IQVNILCBmdy0+ ZGF0YSArIGZ3X29mZnNldCArIEZXX1NJR05BVFVSRV9TSVpFLAogCQkJCUZXX0hBU0hfU0laRSk7 CiAJd2Z4X3NyYW1fcmVnX3dyaXRlKHdkZXYsIFdGWF9EQ0FfSU1BR0VfU0laRSwgZnctPnNpemUg LSBoZWFkZXJfc2l6ZSk7CiAJd2Z4X3NyYW1fcmVnX3dyaXRlKHdkZXYsIFdGWF9EQ0FfSE9TVF9T VEFUVVMsIEhPU1RfVVBMT0FEX1BFTkRJTkcpOwpAQCAtMjgwLDggKzI3NCw3IEBAIHN0YXRpYyBp bnQgbG9hZF9maXJtd2FyZV9zZWN1cmUoc3RydWN0IHdmeF9kZXYgKndkZXYpCiAJCWdvdG8gZXJy b3I7CiAKIAlzdGFydCA9IGt0aW1lX2dldCgpOwotCXJldCA9IHVwbG9hZF9maXJtd2FyZSh3ZGV2 LCBmdy0+ZGF0YSArIGhlYWRlcl9zaXplLAotCQkJICAgICAgZnctPnNpemUgLSBoZWFkZXJfc2l6 ZSk7CisJcmV0ID0gdXBsb2FkX2Zpcm13YXJlKHdkZXYsIGZ3LT5kYXRhICsgaGVhZGVyX3NpemUs IGZ3LT5zaXplIC0gaGVhZGVyX3NpemUpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyb3I7CiAJZGV2 X2RiZyh3ZGV2LT5kZXYsICJmaXJtd2FyZSBsb2FkIGFmdGVyICVsbGR1c1xuIiwKQEAgLTMyMCwx MiArMzEzLDEwIEBAIHN0YXRpYyBpbnQgaW5pdF9ncHIoc3RydWN0IHdmeF9kZXYgKndkZXYpCiAJ fTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdwcl9pbml0KTsgaSsrKSB7Ci0JCXJl dCA9IHdmeF9pZ3ByX3JlZ193cml0ZSh3ZGV2LCBncHJfaW5pdFtpXS5pbmRleCwKLQkJCQkJIGdw cl9pbml0W2ldLnZhbHVlKTsKKwkJcmV0ID0gd2Z4X2lncHJfcmVnX3dyaXRlKHdkZXYsIGdwcl9p bml0W2ldLmluZGV4LCBncHJfaW5pdFtpXS52YWx1ZSk7CiAJCWlmIChyZXQgPCAwKQogCQkJcmV0 dXJuIHJldDsKLQkJZGV2X2RiZyh3ZGV2LT5kZXYsICIgIGluZGV4ICUwMng6ICUwOHhcbiIsCi0J CQlncHJfaW5pdFtpXS5pbmRleCwgZ3ByX2luaXRbaV0udmFsdWUpOworCQlkZXZfZGJnKHdkZXYt PmRldiwgIiAgaW5kZXggJTAyeDogJTA4eFxuIiwgZ3ByX2luaXRbaV0uaW5kZXgsIGdwcl9pbml0 W2ldLnZhbHVlKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0zNjAsOCArMzUxLDcgQEAgaW50IHdm eF9pbml0X2RldmljZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKIAogCWh3X3JldmlzaW9uID0gRklF TERfR0VUKENGR19ERVZJQ0VfSURfTUFKT1IsIHJlZyk7CiAJaWYgKGh3X3JldmlzaW9uID09IDAp IHsKLQkJZGV2X2Vycih3ZGV2LT5kZXYsICJiYWQgaGFyZHdhcmUgcmV2aXNpb24gbnVtYmVyOiAl ZFxuIiwKLQkJCWh3X3JldmlzaW9uKTsKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJiYWQgaGFyZHdh cmUgcmV2aXNpb24gbnVtYmVyOiAlZFxuIiwgaHdfcmV2aXNpb24pOwogCQlyZXR1cm4gLUVOT0RF VjsKIAl9CiAJaHdfdHlwZSA9IEZJRUxEX0dFVChDRkdfREVWSUNFX0lEX1RZUEUsIHJlZyk7CkBA IC0zODgsOCArMzc4LDcgQEAgaW50IHdmeF9pbml0X2RldmljZShzdHJ1Y3Qgd2Z4X2RldiAqd2Rl dikKIAkJCXJldHVybiAtRVRJTUVET1VUOwogCQl9CiAJfQotCWRldl9kYmcod2Rldi0+ZGV2LCAi Y2hpcCB3YWtlIHVwIGFmdGVyICVsbGR1c1xuIiwKLQkJa3RpbWVfdXNfZGVsdGEobm93LCBzdGFy dCkpOworCWRldl9kYmcod2Rldi0+ZGV2LCAiY2hpcCB3YWtlIHVwIGFmdGVyICVsbGR1c1xuIiwg a3RpbWVfdXNfZGVsdGEobm93LCBzdGFydCkpOwogCiAJcmV0ID0gd2Z4X2NvbmZpZ19yZWdfd3Jp dGVfYml0cyh3ZGV2LCBDRkdfQ1BVX1JFU0VULCAwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hp Zl9yeC5jCmluZGV4IDIwNzNhYzQzYmViZC4uMWRkZjhjNTFjMzAzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3N0YWdpbmcvd2Z4L2hpZl9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4 LmMKQEAgLTMyLDggKzMyLDcgQEAgc3RhdGljIGludCB3ZnhfaGlmX2dlbmVyaWNfY29uZmlybShz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKIAl9CiAKIAlpZiAoY21kICE9IHdkZXYtPmhpZl9jbWQuYnVm X3NlbmQtPmlkKSB7Ci0JCWRldl93YXJuKHdkZXYtPmRldiwKLQkJCSAiY2hpcCByZXNwb25zZSBt aXNtYXRjaCByZXF1ZXN0OiAweCUuMnggdnMgMHglLjJ4XG4iLAorCQlkZXZfd2Fybih3ZGV2LT5k ZXYsICJjaGlwIHJlc3BvbnNlIG1pc21hdGNoIHJlcXVlc3Q6IDB4JS4yeCB2cyAweCUuMnhcbiIs CiAJCQkgY21kLCB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kLT5pZCk7CiAJCXJldHVybiAtRUlOVkFM OwogCX0KQEAgLTcyLDggKzcxLDcgQEAgc3RhdGljIGludCB3ZnhfaGlmX211bHRpX3R4X2NvbmZp cm0oc3RydWN0IHdmeF9kZXYgKndkZXYsCiB9CiAKIHN0YXRpYyBpbnQgd2Z4X2hpZl9zdGFydHVw X2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCi0JCQkJICAgICAgY29uc3Qgc3RydWN0 IHdmeF9oaWZfbXNnICpoaWYsCi0JCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmKQorCQkJCSAgICAg IGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCiB7CiAJY29u c3Qgc3RydWN0IHdmeF9oaWZfaW5kX3N0YXJ0dXAgKmJvZHkgPSBidWY7CiAKQEAgLTg3LDE5ICs4 NSwxNiBAQCBzdGF0aWMgaW50IHdmeF9oaWZfc3RhcnR1cF9pbmRpY2F0aW9uKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LAogfQogCiBzdGF0aWMgaW50IHdmeF9oaWZfd2FrZXVwX2luZGljYXRpb24oc3Ry dWN0IHdmeF9kZXYgKndkZXYsCi0JCQkJICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhp ZiwKLQkJCQkgICAgIGNvbnN0IHZvaWQgKmJ1ZikKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCB3Znhf aGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCiB7Ci0JaWYgKCF3ZGV2LT5wZGF0YS5ncGlv X3dha2V1cCB8fAotCSAgICBncGlvZF9nZXRfdmFsdWUod2Rldi0+cGRhdGEuZ3Bpb193YWtldXAp ID09IDApIHsKKwlpZiAoIXdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwIHx8IGdwaW9kX2dldF92YWx1 ZSh3ZGV2LT5wZGF0YS5ncGlvX3dha2V1cCkgPT0gMCkgewogCQlkZXZfd2Fybih3ZGV2LT5kZXYs ICJ1bmV4cGVjdGVkIHdha2UtdXAgaW5kaWNhdGlvblxuIik7CiAJCXJldHVybiAtRUlPOwogCX0K IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB3ZnhfaGlmX3JlY2VpdmVfaW5kaWNhdGlvbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKLQkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cg KmhpZiwKK3N0YXRpYyBpbnQgd2Z4X2hpZl9yZWNlaXZlX2luZGljYXRpb24oc3RydWN0IHdmeF9k ZXYgKndkZXYsIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLAogCQkJCSAgICAgIGNvbnN0 IHZvaWQgKmJ1Ziwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CkBAIC0xNDQsMTYgKzEzOSwx NCBAQCBzdGF0aWMgaW50IHdmeF9oaWZfZXZlbnRfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwKIAkJCSBsZTMyX3RvX2NwdShib2R5LT5ldmVudF9kYXRhLnBzX21vZGVfZXJyb3IpKTsK IAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGV2X3dhcm4od2Rldi0+ZGV2LCAidW5oYW5kbGVkIGV2 ZW50IGluZGljYXRpb246ICUuMnhcbiIsCi0JCQkgdHlwZSk7CisJCWRldl93YXJuKHdkZXYtPmRl diwgInVuaGFuZGxlZCBldmVudCBpbmRpY2F0aW9uOiAlLjJ4XG4iLCB0eXBlKTsKIAkJYnJlYWs7 CiAJfQogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHdmeF9oaWZfcG1fbW9kZV9jb21wbGV0 ZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAotCQkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IHdmeF9oaWZfbXNnICpoaWYsCi0JCQkJCSAgICAgICBjb25zdCB2b2lkICpidWYpCisJCQkJ CSAgICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQog ewogCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJm YWNlKTsKIApAQCAtMTY3LDggKzE2MCw3IEBAIHN0YXRpYyBpbnQgd2Z4X2hpZl9wbV9tb2RlX2Nv bXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCiB9CiAKIHN0YXRpYyBpbnQg d2Z4X2hpZl9zY2FuX2NvbXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCi0J CQkJCSAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwKLQkJCQkJICAgIGNvbnN0IHZv aWQgKmJ1ZikKKwkJCQkJICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLCBjb25zdCB2 b2lkICpidWYpCiB7CiAJc3RydWN0IHdmeF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2Rldiwg aGlmLT5pbnRlcmZhY2UpOwogCWNvbnN0IHN0cnVjdCB3ZnhfaGlmX2luZF9zY2FuX2NtcGwgKmJv ZHkgPSBidWY7CkBAIC0xODQsOCArMTc2LDcgQEAgc3RhdGljIGludCB3ZnhfaGlmX3NjYW5fY29t cGxldGVfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKIH0KIAogc3RhdGljIGludCB3 ZnhfaGlmX2pvaW5fY29tcGxldGVfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKLQkJ CQkJICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLAotCQkJCQkgICAgY29uc3Qgdm9p ZCAqYnVmKQorCQkJCQkgICAgY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpoaWYsIGNvbnN0IHZv aWQgKmJ1ZikKIHsKIAlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBo aWYtPmludGVyZmFjZSk7CiAKQEAgLTE5OSw4ICsxOTAsNyBAQCBzdGF0aWMgaW50IHdmeF9oaWZf am9pbl9jb21wbGV0ZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAogfQogCiBzdGF0 aWMgaW50IHdmeF9oaWZfc3VzcGVuZF9yZXN1bWVfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwKLQkJCQkJICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwKLQkJCQkJICAg ICBjb25zdCB2b2lkICpidWYpCisJCQkJCSAgICAgY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpo aWYsIGNvbnN0IHZvaWQgKmJ1ZikKIHsKIAljb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9pbmRfc3VzcGVu ZF9yZXN1bWVfdHggKmJvZHkgPSBidWY7CiAJc3RydWN0IHdmeF92aWYgKnd2aWY7CkBAIC0yMjgs OCArMjE4LDcgQEAgc3RhdGljIGludCB3ZnhfaGlmX3N1c3BlbmRfcmVzdW1lX2luZGljYXRpb24o c3RydWN0IHdmeF9kZXYgKndkZXYsCiB9CiAKIHN0YXRpYyBpbnQgd2Z4X2hpZl9nZW5lcmljX2lu ZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCi0JCQkJICAgICAgY29uc3Qgc3RydWN0IHdm eF9oaWZfbXNnICpoaWYsCi0JCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmKQorCQkJCSAgICAgIGNv bnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCiB7CiAJY29uc3Qg c3RydWN0IHdmeF9oaWZfaW5kX2dlbmVyaWMgKmJvZHkgPSBidWY7CiAJaW50IHR5cGUgPSBsZTMy X3RvX2NwdShib2R5LT50eXBlKTsKQEAgLTI0NiwxNCArMjM1LDEyIEBAIHN0YXRpYyBpbnQgd2Z4 X2hpZl9nZW5lcmljX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCiAJCWlmICghd2Z4 X2FwaV9vbGRlcl90aGFuKHdkZXYsIDEsIDQpKQogCQkJZGV2X2luZm8od2Rldi0+ZGV2LCAiUngg dGVzdCBvbmdvaW5nLiBUZW1wZXJhdHVyZTogJWQgZGVncmVlcyBDXG4iLAogCQkJCSBib2R5LT5k YXRhLnJ4X3N0YXRzLmN1cnJlbnRfdGVtcCk7Ci0JCW1lbWNweSgmd2Rldi0+cnhfc3RhdHMsICZi b2R5LT5kYXRhLnJ4X3N0YXRzLAotCQkgICAgICAgc2l6ZW9mKHdkZXYtPnJ4X3N0YXRzKSk7CisJ CW1lbWNweSgmd2Rldi0+cnhfc3RhdHMsICZib2R5LT5kYXRhLnJ4X3N0YXRzLCBzaXplb2Yod2Rl di0+cnhfc3RhdHMpKTsKIAkJbXV0ZXhfdW5sb2NrKCZ3ZGV2LT5yeF9zdGF0c19sb2NrKTsKIAkJ cmV0dXJuIDA7CiAJY2FzZSBISUZfR0VORVJJQ19JTkRJQ0FUSU9OX1RZUEVfVFhfUE9XRVJfTE9P UF9JTkZPOgogCQltdXRleF9sb2NrKCZ3ZGV2LT50eF9wb3dlcl9sb29wX2luZm9fbG9jayk7Ci0J CW1lbWNweSgmd2Rldi0+dHhfcG93ZXJfbG9vcF9pbmZvLAotCQkgICAgICAgJmJvZHktPmRhdGEu dHhfcG93ZXJfbG9vcF9pbmZvLAorCQltZW1jcHkoJndkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mbywg JmJvZHktPmRhdGEudHhfcG93ZXJfbG9vcF9pbmZvLAogCQkgICAgICAgc2l6ZW9mKHdkZXYtPnR4 X3Bvd2VyX2xvb3BfaW5mbykpOwogCQltdXRleF91bmxvY2soJndkZXYtPnR4X3Bvd2VyX2xvb3Bf aW5mb19sb2NrKTsKIAkJcmV0dXJuIDA7CkBAIC0zMjQsOCArMzExLDcgQEAgc3RhdGljIGludCB3 ZnhfaGlmX2Vycm9yX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCiAJCQlkZXZfZXJy KHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogJXM6ICVkXG4iLAogCQkJCWhpZl9lcnJv cnNbaV0uc3RyLCBwYXJhbSk7CiAJCWVsc2UKLQkJCWRldl9lcnIod2Rldi0+ZGV2LCAiYXN5bmNo cm9ub3VzIGVycm9yOiAlc1xuIiwKLQkJCQloaWZfZXJyb3JzW2ldLnN0cik7CisJCQlkZXZfZXJy KHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogJXNcbiIsIGhpZl9lcnJvcnNbaV0uc3Ry KTsKIAllbHNlCiAJCWRldl9lcnIod2Rldi0+ZGV2LCAiYXN5bmNocm9ub3VzIGVycm9yOiB1bmtu b3duOiAlMDh4XG4iLCB0eXBlKTsKIAlwcmludF9oZXhfZHVtcChLRVJOX0lORk8sICJoaWY6ICIs IERVTVBfUFJFRklYX09GRlNFVCwKQEAgLTMzNiwxNSArMzIyLDEzIEBAIHN0YXRpYyBpbnQgd2Z4 X2hpZl9lcnJvcl9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAogfTsKIAogc3RhdGlj IGludCB3ZnhfaGlmX2V4Y2VwdGlvbl9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAot CQkJCQljb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwKLQkJCQkJY29uc3Qgdm9pZCAqYnVm KQorCQkJCQljb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQog ewogCWNvbnN0IHN0cnVjdCB3ZnhfaGlmX2luZF9leGNlcHRpb24gKmJvZHkgPSBidWY7CiAJaW50 IHR5cGUgPSBsZTMyX3RvX2NwdShib2R5LT50eXBlKTsKIAogCWlmICh0eXBlID09IDQpCi0JCWRl dl9lcnIod2Rldi0+ZGV2LCAiZmlybXdhcmUgYXNzZXJ0ICVkXG4iLAotCQkJbGUzMl90b19jcHVw KChfX2xlMzIgKilib2R5LT5kYXRhKSk7CisJCWRldl9lcnIod2Rldi0+ZGV2LCAiZmlybXdhcmUg YXNzZXJ0ICVkXG4iLCBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWJvZHktPmRhdGEpKTsKIAllbHNl CiAJCWRldl9lcnIod2Rldi0+ZGV2LCAiZmlybXdhcmUgZXhjZXB0aW9uXG4iKTsKIAlwcmludF9o ZXhfZHVtcChLRVJOX0lORk8sICJoaWY6ICIsIERVTVBfUFJFRklYX09GRlNFVCwKQEAgLTM1Niw4 ICszNDAsNyBAQCBzdGF0aWMgaW50IHdmeF9oaWZfZXhjZXB0aW9uX2luZGljYXRpb24oc3RydWN0 IHdmeF9kZXYgKndkZXYsCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCWludCBtc2dfaWQ7Ci0J aW50ICgqaGFuZGxlcikoc3RydWN0IHdmeF9kZXYgKndkZXYsCi0JCSAgICAgICBjb25zdCBzdHJ1 Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKTsKKwlpbnQgKCpoYW5kbGVyKShz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpoaWYsIGNvbnN0 IHZvaWQgKmJ1Zik7CiB9IGhpZl9oYW5kbGVyc1tdID0gewogCS8qIENvbmZpcm1hdGlvbnMgKi8K IAl7IEhJRl9DTkZfSURfVFgsICAgICAgICAgICAgICAgIHdmeF9oaWZfdHhfY29uZmlybSB9LApA QCAtMzkyLDggKzM3NSw3IEBAIHZvaWQgd2Z4X2hhbmRsZV9yeChzdHJ1Y3Qgd2Z4X2RldiAqd2Rl diwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgKiBidWZfc2VuZAogCSAqLwogCWlmIChtdXRleF9p c19sb2NrZWQoJndkZXYtPmhpZl9jbWQubG9jaykgJiYKLQkgICAgd2Rldi0+aGlmX2NtZC5idWZf c2VuZCAmJgotCSAgICB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kLT5pZCA9PSBoaWZfaWQpIHsKKwkg ICAgd2Rldi0+aGlmX2NtZC5idWZfc2VuZCAmJiB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kLT5pZCA9 PSBoaWZfaWQpIHsKIAkJd2Z4X2hpZl9nZW5lcmljX2NvbmZpcm0od2RldiwgaGlmLCBoaWYtPmJv ZHkpOwogCQlnb3RvIGZyZWU7CiAJfQpAQCAtNDA1LDExICszODcsOSBAQCB2b2lkIHdmeF9oYW5k bGVfcngoc3RydWN0IHdmeF9kZXYgKndkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJCX0KIAl9 CiAJaWYgKGhpZl9pZCAmIEhJRl9JRF9JU19JTkRJQ0FUSU9OKQotCQlkZXZfZXJyKHdkZXYtPmRl diwgInVuc3VwcG9ydGVkIEhJRiBpbmRpY2F0aW9uOiBJRCAlMDJ4XG4iLAotCQkJaGlmX2lkKTsK KwkJZGV2X2Vycih3ZGV2LT5kZXYsICJ1bnN1cHBvcnRlZCBISUYgaW5kaWNhdGlvbjogSUQgJTAy eFxuIiwgaGlmX2lkKTsKIAllbHNlCi0JCWRldl9lcnIod2Rldi0+ZGV2LCAidW5leHBlY3RlZCBI SUYgY29uZmlybWF0aW9uOiBJRCAlMDJ4XG4iLAotCQkJaGlmX2lkKTsKKwkJZGV2X2Vycih3ZGV2 LT5kZXYsICJ1bmV4cGVjdGVkIEhJRiBjb25maXJtYXRpb246IElEICUwMnhcbiIsIGhpZl9pZCk7 CiBmcmVlOgogCWRldl9rZnJlZV9za2Ioc2tiKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Rh Z2luZy93ZngvaGlmX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eC5jCmluZGV4IDQy OWM3MGI5OTFlMS4uYjg4YTczMDc3YjQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4 L2hpZl90eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmMKQEAgLTIyLDggKzIy LDcgQEAgdm9pZCB3ZnhfaW5pdF9oaWZfY21kKHN0cnVjdCB3ZnhfaGlmX2NtZCAqaGlmX2NtZCkK IAltdXRleF9pbml0KCZoaWZfY21kLT5sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgd2Z4X2ZpbGxf aGVhZGVyKHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLCBpbnQgaWZfaWQsCi0JCQkgICAgdW5zaWdu ZWQgaW50IGNtZCwgc2l6ZV90IHNpemUpCitzdGF0aWMgdm9pZCB3ZnhfZmlsbF9oZWFkZXIoc3Ry dWN0IHdmeF9oaWZfbXNnICpoaWYsIGludCBpZl9pZCwgdW5zaWduZWQgaW50IGNtZCwgc2l6ZV90 IHNpemUpCiB7CiAJaWYgKGlmX2lkID09IC0xKQogCQlpZl9pZCA9IDI7CkBAIC0xOTAsMTQgKzE4 OSwxMiBAQCBpbnQgd2Z4X2hpZl9yZWFkX21pYihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZp Zl9pZCwgdTE2IG1pYl9pZCwKIAlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlmLCByZXBseSwg YnVmX2xlbiwgZmFsc2UpOwogCiAJaWYgKCFyZXQgJiYgbWliX2lkICE9IGxlMTZfdG9fY3B1KHJl cGx5LT5taWJfaWQpKSB7Ci0JCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBjb25maXJtYXRpb24g bWlzbWF0Y2ggcmVxdWVzdFxuIiwKLQkJCSBfX2Z1bmNfXyk7CisJCWRldl93YXJuKHdkZXYtPmRl diwgIiVzOiBjb25maXJtYXRpb24gbWlzbWF0Y2ggcmVxdWVzdFxuIiwgX19mdW5jX18pOwogCQly ZXQgPSAtRUlPOwogCX0KIAlpZiAocmV0ID09IC1FTk9NRU0pCiAJCWRldl9lcnIod2Rldi0+ZGV2 LCAiYnVmZmVyIGlzIHRvbyBzbWFsbCB0byByZWNlaXZlICVzICglenUgPCAlZClcbiIsCi0JCQl3 ZnhfZ2V0X21pYl9uYW1lKG1pYl9pZCksIHZhbF9sZW4sCi0JCQlsZTE2X3RvX2NwdShyZXBseS0+ bGVuZ3RoKSk7CisJCQl3ZnhfZ2V0X21pYl9uYW1lKG1pYl9pZCksIHZhbF9sZW4sIGxlMTZfdG9f Y3B1KHJlcGx5LT5sZW5ndGgpKTsKIAlpZiAoIXJldCkKIAkJbWVtY3B5KHZhbCwgJnJlcGx5LT5t aWJfZGF0YSwgbGUxNl90b19jcHUocmVwbHktPmxlbmd0aCkpOwogCWVsc2UKQEAgLTIwOCw4ICsy MDUsNyBAQCBpbnQgd2Z4X2hpZl9yZWFkX21pYihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZp Zl9pZCwgdTE2IG1pYl9pZCwKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgd2Z4X2hpZl93cml0ZV9t aWIoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQsIHUxNiBtaWJfaWQsCi0JCSAgICAg IHZvaWQgKnZhbCwgc2l6ZV90IHZhbF9sZW4pCitpbnQgd2Z4X2hpZl93cml0ZV9taWIoc3RydWN0 IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQsIHUxNiBtaWJfaWQsIHZvaWQgKnZhbCwgc2l6ZV90 IHZhbF9sZW4pCiB7CiAJaW50IHJldDsKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKQEAgLTIz Miw4ICsyMjgsNyBAQCBpbnQgd2Z4X2hpZl9zY2FuKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1 Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEsCiB7CiAJaW50IHJldCwgaTsKIAlzdHJ1Y3Qg d2Z4X2hpZl9tc2cgKmhpZjsKLQlzaXplX3QgYnVmX2xlbiA9IHNpemVvZihzdHJ1Y3Qgd2Z4X2hp Zl9yZXFfc3RhcnRfc2Nhbl9hbHQpICsKLQkJCSBjaGFuX251bSAqIHNpemVvZih1OCk7CisJc2l6 ZV90IGJ1Zl9sZW4gPSBzaXplb2Yoc3RydWN0IHdmeF9oaWZfcmVxX3N0YXJ0X3NjYW5fYWx0KSAr IGNoYW5fbnVtICogc2l6ZW9mKHU4KTsKIAlzdHJ1Y3Qgd2Z4X2hpZl9yZXFfc3RhcnRfc2Nhbl9h bHQgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKGJ1Zl9sZW4sICZoaWYpOwogCiAJV0FSTihjaGFuX251 bSA+IEhJRl9BUElfTUFYX05CX0NIQU5ORUxTLCAiaW52YWxpZCBwYXJhbXMiKTsKQEAgLTI0Miwy MCArMjM3LDE2IEBAIGludCB3ZnhfaGlmX3NjYW4oc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVj dCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSwKIAlpZiAoIWhpZikKIAkJcmV0dXJuIC1FTk9N RU07CiAJZm9yIChpID0gMDsgaSA8IHJlcS0+bl9zc2lkczsgaSsrKSB7Ci0JCW1lbWNweShib2R5 LT5zc2lkX2RlZltpXS5zc2lkLCByZXEtPnNzaWRzW2ldLnNzaWQsCi0JCSAgICAgICBJRUVFODAy MTFfTUFYX1NTSURfTEVOKTsKLQkJYm9keS0+c3NpZF9kZWZbaV0uc3NpZF9sZW5ndGggPQotCQkJ Y3B1X3RvX2xlMzIocmVxLT5zc2lkc1tpXS5zc2lkX2xlbik7CisJCW1lbWNweShib2R5LT5zc2lk X2RlZltpXS5zc2lkLCByZXEtPnNzaWRzW2ldLnNzaWQsIElFRUU4MDIxMV9NQVhfU1NJRF9MRU4p OworCQlib2R5LT5zc2lkX2RlZltpXS5zc2lkX2xlbmd0aCA9IGNwdV90b19sZTMyKHJlcS0+c3Np ZHNbaV0uc3NpZF9sZW4pOwogCX0KIAlib2R5LT5udW1fb2Zfc3NpZHMgPSBISUZfQVBJX01BWF9O Ql9TU0lEUzsKIAlib2R5LT5tYWludGFpbl9jdXJyZW50X2JzcyA9IDE7CiAJYm9keS0+ZGlzYWxs b3dfcHMgPSAxOwotCWJvZHktPnR4X3Bvd2VyX2xldmVsID0KLQkJY3B1X3RvX2xlMzIocmVxLT5j aGFubmVsc1tjaGFuX3N0YXJ0X2lkeF0tPm1heF9wb3dlcik7CisJYm9keS0+dHhfcG93ZXJfbGV2 ZWwgPSBjcHVfdG9fbGUzMihyZXEtPmNoYW5uZWxzW2NoYW5fc3RhcnRfaWR4XS0+bWF4X3Bvd2Vy KTsKIAlib2R5LT5udW1fb2ZfY2hhbm5lbHMgPSBjaGFuX251bTsKIAlmb3IgKGkgPSAwOyBpIDwg Y2hhbl9udW07IGkrKykKLQkJYm9keS0+Y2hhbm5lbF9saXN0W2ldID0KLQkJCXJlcS0+Y2hhbm5l bHNbaSArIGNoYW5fc3RhcnRfaWR4XS0+aHdfdmFsdWU7CisJCWJvZHktPmNoYW5uZWxfbGlzdFtp XSA9IHJlcS0+Y2hhbm5lbHNbaSArIGNoYW5fc3RhcnRfaWR4XS0+aHdfdmFsdWU7CiAJaWYgKHJl cS0+bm9fY2NrKQogCQlib2R5LT5tYXhfdHJhbnNtaXRfcmF0ZSA9IEFQSV9SQVRFX0lOREVYX0df Nk1CUFM7CiAJZWxzZQpAQCAtMzA5LDggKzMwMCw3IEBAIGludCB3ZnhfaGlmX2pvaW4oc3RydWN0 IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmYsCiAJ Ym9keS0+cHJvYmVfZm9yX2pvaW4gPSAhKGNoYW5uZWwtPmZsYWdzICYgSUVFRTgwMjExX0NIQU5f Tk9fSVIpOwogCWJvZHktPmNoYW5uZWxfbnVtYmVyID0gY2hhbm5lbC0+aHdfdmFsdWU7CiAJYm9k eS0+YmVhY29uX2ludGVydmFsID0gY3B1X3RvX2xlMzIoY29uZi0+YmVhY29uX2ludCk7Ci0JYm9k eS0+YmFzaWNfcmF0ZV9zZXQgPQotCQljcHVfdG9fbGUzMih3ZnhfcmF0ZV9tYXNrX3RvX2h3KHd2 aWYtPndkZXYsIGNvbmYtPmJhc2ljX3JhdGVzKSk7CisJYm9keS0+YmFzaWNfcmF0ZV9zZXQgPSBj cHVfdG9fbGUzMih3ZnhfcmF0ZV9tYXNrX3RvX2h3KHd2aWYtPndkZXYsIGNvbmYtPmJhc2ljX3Jh dGVzKSk7CiAJbWVtY3B5KGJvZHktPmJzc2lkLCBjb25mLT5ic3NpZCwgc2l6ZW9mKGJvZHktPmJz c2lkKSk7CiAJaWYgKHNzaWQpIHsKIAkJYm9keS0+c3NpZF9sZW5ndGggPSBjcHVfdG9fbGUzMihz c2lkbGVuKTsKQEAgLTMyNiwxNSArMzE2LDEzIEBAIGludCB3ZnhfaGlmX3NldF9ic3NfcGFyYW1z KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBpbnQgYWlkLCBpbnQgYmVhY29uX2xvc3RfY291bnQpCiB7 CiAJaW50IHJldDsKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKLQlzdHJ1Y3Qgd2Z4X2hpZl9y ZXFfc2V0X2Jzc19wYXJhbXMgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNpemVvZigqYm9keSksCi0J CQkJCQkJCSZoaWYpOworCXN0cnVjdCB3ZnhfaGlmX3JlcV9zZXRfYnNzX3BhcmFtcyAqYm9keSA9 IHdmeF9hbGxvY19oaWYoc2l6ZW9mKCpib2R5KSwgJmhpZik7CiAKIAlpZiAoIWhpZikKIAkJcmV0 dXJuIC1FTk9NRU07CiAJYm9keS0+YWlkID0gY3B1X3RvX2xlMTYoYWlkKTsKIAlib2R5LT5iZWFj b25fbG9zdF9jb3VudCA9IGJlYWNvbl9sb3N0X2NvdW50OwotCXdmeF9maWxsX2hlYWRlcihoaWYs IHd2aWYtPmlkLCBISUZfUkVRX0lEX1NFVF9CU1NfUEFSQU1TLAotCQkJc2l6ZW9mKCpib2R5KSk7 CisJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURfU0VUX0JTU19QQVJB TVMsIHNpemVvZigqYm9keSkpOwogCXJldCA9IHdmeF9jbWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYs IE5VTEwsIDAsIGZhbHNlKTsKIAlrZnJlZShoaWYpOwogCXJldHVybiByZXQ7CkBAIC0zNTUsOCAr MzQzLDcgQEAgaW50IHdmeF9oaWZfYWRkX2tleShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qg c3RydWN0IHdmeF9oaWZfcmVxX2FkZF9rZXkgKmFyZykKIAkJLyogTGVnYWN5IGZpcm13YXJlcyBl eHBlY3QgdGhhdCBhZGRfa2V5IHRvIGJlIHNlbnQgb24gcmlnaHQKIAkJICogaW50ZXJmYWNlLgog CQkgKi8KLQkJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgYXJnLT5pbnRfaWQsIEhJRl9SRVFfSURfQURE X0tFWSwKLQkJCQlzaXplb2YoKmJvZHkpKTsKKwkJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgYXJnLT5p bnRfaWQsIEhJRl9SRVFfSURfQUREX0tFWSwgc2l6ZW9mKCpib2R5KSk7CiAJZWxzZQogCQl3Znhf ZmlsbF9oZWFkZXIoaGlmLCAtMSwgSElGX1JFUV9JRF9BRERfS0VZLCBzaXplb2YoKmJvZHkpKTsK IAlyZXQgPSB3ZnhfY21kX3NlbmQod2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7CkBAIC0zODQs OCArMzcxLDcgQEAgaW50IHdmeF9oaWZfc2V0X2VkY2FfcXVldWVfcGFyYW1zKHN0cnVjdCB3Znhf dmlmICp3dmlmLCB1MTYgcXVldWUsCiB7CiAJaW50IHJldDsKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cg KmhpZjsKLQlzdHJ1Y3Qgd2Z4X2hpZl9yZXFfZWRjYV9xdWV1ZV9wYXJhbXMgKmJvZHkgPSB3Znhf YWxsb2NfaGlmKHNpemVvZigqYm9keSksCi0JCQkJCQkJCSAgICZoaWYpOworCXN0cnVjdCB3Znhf aGlmX3JlcV9lZGNhX3F1ZXVlX3BhcmFtcyAqYm9keSA9IHdmeF9hbGxvY19oaWYoc2l6ZW9mKCpi b2R5KSwgJmhpZik7CiAKIAlpZiAoIWJvZHkpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtNDAzLDgg KzM4OSw3IEBAIGludCB3ZnhfaGlmX3NldF9lZGNhX3F1ZXVlX3BhcmFtcyhzdHJ1Y3Qgd2Z4X3Zp ZiAqd3ZpZiwgdTE2IHF1ZXVlLAogCQlib2R5LT5xdWV1ZV9pZCA9IEhJRl9RVUVVRV9JRF9CQUNL R1JPVU5EOwogCWlmICh3ZnhfYXBpX29sZGVyX3RoYW4od3ZpZi0+d2RldiwgMiwgMCkgJiYgcXVl dWUgPT0gSUVFRTgwMjExX0FDX0JLKQogCQlib2R5LT5xdWV1ZV9pZCA9IEhJRl9RVUVVRV9JRF9C RVNURUZGT1JUOwotCXdmeF9maWxsX2hlYWRlcihoaWYsIHd2aWYtPmlkLCBISUZfUkVRX0lEX0VE Q0FfUVVFVUVfUEFSQU1TLAotCQkJc2l6ZW9mKCpib2R5KSk7CisJd2Z4X2ZpbGxfaGVhZGVyKGhp Ziwgd3ZpZi0+aWQsIEhJRl9SRVFfSURfRURDQV9RVUVVRV9QQVJBTVMsIHNpemVvZigqYm9keSkp OwogCXJldCA9IHdmeF9jbWRfc2VuZCh3dmlmLT53ZGV2LCBoaWYsIE5VTEwsIDAsIGZhbHNlKTsK IAlrZnJlZShoaWYpOwogCXJldHVybiByZXQ7CkBAIC00MTQsOCArMzk5LDcgQEAgaW50IHdmeF9o aWZfc2V0X3BtKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIHBzLCBpbnQgZHluYW1pY19wc190 aW1lb3V0KQogewogCWludCByZXQ7CiAJc3RydWN0IHdmeF9oaWZfbXNnICpoaWY7Ci0Jc3RydWN0 IHdmeF9oaWZfcmVxX3NldF9wbV9tb2RlICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJv ZHkpLAotCQkJCQkJCSAgICAgJmhpZik7CisJc3RydWN0IHdmeF9oaWZfcmVxX3NldF9wbV9tb2Rl ICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsKIAogCWlmICghYm9k eSkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00NDksOCArNDMzLDcgQEAgaW50IHdmeF9oaWZfc3Rh cnQoc3RydWN0IHdmeF92aWYgKnd2aWYsIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYg KmNvbmYsCiAJYm9keS0+c2hvcnRfcHJlYW1ibGUgPSBjb25mLT51c2Vfc2hvcnRfcHJlYW1ibGU7 CiAJYm9keS0+Y2hhbm5lbF9udW1iZXIgPSBjaGFubmVsLT5od192YWx1ZTsKIAlib2R5LT5iZWFj b25faW50ZXJ2YWwgPSBjcHVfdG9fbGUzMihjb25mLT5iZWFjb25faW50KTsKLQlib2R5LT5iYXNp Y19yYXRlX3NldCA9Ci0JCWNwdV90b19sZTMyKHdmeF9yYXRlX21hc2tfdG9faHcod3ZpZi0+d2Rl diwgY29uZi0+YmFzaWNfcmF0ZXMpKTsKKwlib2R5LT5iYXNpY19yYXRlX3NldCA9IGNwdV90b19s ZTMyKHdmeF9yYXRlX21hc2tfdG9faHcod3ZpZi0+d2RldiwgY29uZi0+YmFzaWNfcmF0ZXMpKTsK IAlib2R5LT5zc2lkX2xlbmd0aCA9IGNvbmYtPnNzaWRfbGVuOwogCW1lbWNweShib2R5LT5zc2lk LCBjb25mLT5zc2lkLCBjb25mLT5zc2lkX2xlbik7CiAJd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3Zp Zi0+aWQsIEhJRl9SRVFfSURfU1RBUlQsIHNpemVvZigqYm9keSkpOwpAQCAtNDYzLDIxICs0NDYs MTggQEAgaW50IHdmeF9oaWZfYmVhY29uX3RyYW5zbWl0KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBi b29sIGVuYWJsZSkKIHsKIAlpbnQgcmV0OwogCXN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmOwotCXN0 cnVjdCB3ZnhfaGlmX3JlcV9iZWFjb25fdHJhbnNtaXQgKmJvZHkgPSB3ZnhfYWxsb2NfaGlmKHNp emVvZigqYm9keSksCi0JCQkJCQkJCSAmaGlmKTsKKwlzdHJ1Y3Qgd2Z4X2hpZl9yZXFfYmVhY29u X3RyYW5zbWl0ICpib2R5ID0gd2Z4X2FsbG9jX2hpZihzaXplb2YoKmJvZHkpLCAmaGlmKTsKIAog CWlmICghaGlmKQogCQlyZXR1cm4gLUVOT01FTTsKIAlib2R5LT5lbmFibGVfYmVhY29uaW5nID0g ZW5hYmxlID8gMSA6IDA7Ci0Jd2Z4X2ZpbGxfaGVhZGVyKGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFf SURfQkVBQ09OX1RSQU5TTUlULAotCQkJc2l6ZW9mKCpib2R5KSk7CisJd2Z4X2ZpbGxfaGVhZGVy KGhpZiwgd3ZpZi0+aWQsIEhJRl9SRVFfSURfQkVBQ09OX1RSQU5TTUlULCBzaXplb2YoKmJvZHkp KTsKIAlyZXQgPSB3ZnhfY21kX3NlbmQod3ZpZi0+d2RldiwgaGlmLCBOVUxMLCAwLCBmYWxzZSk7 CiAJa2ZyZWUoaGlmKTsKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgd2Z4X2hpZl9tYXBfbGluayhz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCB1bm1hcCwgdTggKm1hY19hZGRyLCBpbnQgc3RhX2lk LAotCQkgICAgIGJvb2wgbWZwKQoraW50IHdmeF9oaWZfbWFwX2xpbmsoc3RydWN0IHdmeF92aWYg Knd2aWYsIGJvb2wgdW5tYXAsIHU4ICptYWNfYWRkciwgaW50IHN0YV9pZCwgYm9vbCBtZnApCiB7 CiAJaW50IHJldDsKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKQEAgLTQ5Niw4ICs0NzYsNyBA QCBpbnQgd2Z4X2hpZl9tYXBfbGluayhzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCB1bm1hcCwg dTggKm1hY19hZGRyLCBpbnQgc3RhX2lkLAogCXJldHVybiByZXQ7CiB9CiAKLWludCB3ZnhfaGlm X3VwZGF0ZV9pZV9iZWFjb24oc3RydWN0IHdmeF92aWYgKnd2aWYsCi0JCQkgICAgIGNvbnN0IHU4 ICppZXMsIHNpemVfdCBpZXNfbGVuKQoraW50IHdmeF9oaWZfdXBkYXRlX2llX2JlYWNvbihzdHJ1 Y3Qgd2Z4X3ZpZiAqd3ZpZiwgY29uc3QgdTggKmllcywgc2l6ZV90IGllc19sZW4pCiB7CiAJaW50 IHJldDsKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Rh Z2luZy93ZngvaGlmX3R4LmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eC5oCmluZGV4IDM2 Y2FmZmE0ZDFlYi4uNzE4MTdhNjU3MWYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4 L2hpZl90eC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4LmgKQEAgLTM2LDE3ICsz NiwxNCBAQCB2b2lkIHdmeF9pbml0X2hpZl9jbWQoc3RydWN0IHdmeF9oaWZfY21kICp3ZnhfaGlm X2NtZCk7CiBpbnQgd2Z4X2NtZF9zZW5kKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgd2Z4 X2hpZl9tc2cgKnJlcXVlc3QsCiAJCSB2b2lkICpyZXBseSwgc2l6ZV90IHJlcGx5X2xlbiwgYm9v bCBhc3luYyk7CiAKLWludCB3ZnhfaGlmX3JlYWRfbWliKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBp bnQgdmlmX2lkLCB1MTYgbWliX2lkLAotCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXpl KTsKLWludCB3ZnhfaGlmX3dyaXRlX21pYihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZpZl9p ZCwgdTE2IG1pYl9pZCwKLQkJICAgICAgdm9pZCAqYnVmLCBzaXplX3QgYnVmX3NpemUpOworaW50 IHdmeF9oaWZfcmVhZF9taWIoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQsIHUxNiBt aWJfaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplKTsKK2ludCB3ZnhfaGlmX3dyaXRlX21p YihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHZpZl9pZCwgdTE2IG1pYl9pZCwgdm9pZCAqYnVm LCBzaXplX3QgYnVmX3NpemUpOwogaW50IHdmeF9oaWZfc3RhcnQoc3RydWN0IHdmeF92aWYgKnd2 aWYsIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmYsCiAJCSAgY29uc3Qgc3Ry dWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsKTsKIGludCB3ZnhfaGlmX3Jlc2V0KHN0cnVj dCB3ZnhfdmlmICp3dmlmLCBib29sIHJlc2V0X3N0YXQpOwogaW50IHdmeF9oaWZfam9pbihzdHJ1 Y3Qgd2Z4X3ZpZiAqd3ZpZiwgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqY29uZiwK IAkJIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbCwgY29uc3QgdTggKnNzaWQsIGlu dCBzc2lkbGVuKTsKLWludCB3ZnhfaGlmX21hcF9saW5rKHN0cnVjdCB3ZnhfdmlmICp3dmlmLAot CQkgICAgIGJvb2wgdW5tYXAsIHU4ICptYWNfYWRkciwgaW50IHN0YV9pZCwgYm9vbCBtZnApOwor aW50IHdmeF9oaWZfbWFwX2xpbmsoc3RydWN0IHdmeF92aWYgKnd2aWYsIGJvb2wgdW5tYXAsIHU4 ICptYWNfYWRkciwgaW50IHN0YV9pZCwgYm9vbCBtZnApOwogaW50IHdmeF9oaWZfYWRkX2tleShz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgY29uc3Qgc3RydWN0IHdmeF9oaWZfcmVxX2FkZF9rZXkgKmFy Zyk7CiBpbnQgd2Z4X2hpZl9yZW1vdmVfa2V5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgaWR4 KTsKIGludCB3ZnhfaGlmX3NldF9wbShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCBwcywgaW50 IGR5bmFtaWNfcHNfdGltZW91dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hp Zl90eF9taWIuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3R4X21pYi5jCmluZGV4IGRhZjk2 NjY5M2Y2Ny4uMWM1N2RkMmI2OTdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hp Zl90eF9taWIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eF9taWIuYwpAQCAtMjAs MTQgKzIwLDEyIEBAIGludCB3ZnhfaGlmX3NldF9vdXRwdXRfcG93ZXIoc3RydWN0IHdmeF92aWYg Knd2aWYsIGludCB2YWwpCiAJCS5wb3dlcl9sZXZlbCA9IGNwdV90b19sZTMyKHZhbCAqIDEwKSwK IAl9OwogCi0JcmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLAot CQkJCSBISUZfTUlCX0lEX0NVUlJFTlRfVFhfUE9XRVJfTEVWRUwsCisJcmV0dXJuIHdmeF9oaWZf d3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX0NVUlJFTlRfVFhfUE9X RVJfTEVWRUwsCiAJCQkJICZhcmcsIHNpemVvZihhcmcpKTsKIH0KIAogaW50IHdmeF9oaWZfc2V0 X2JlYWNvbl93YWtldXBfcGVyaW9kKHN0cnVjdCB3ZnhfdmlmICp3dmlmLAotCQkJCSAgICAgdW5z aWduZWQgaW50IGR0aW1faW50ZXJ2YWwsCi0JCQkJICAgICB1bnNpZ25lZCBpbnQgbGlzdGVuX2lu dGVydmFsKQorCQkJCSAgICAgdW5zaWduZWQgaW50IGR0aW1faW50ZXJ2YWwsIHVuc2lnbmVkIGlu dCBsaXN0ZW5faW50ZXJ2YWwpCiB7CiAJc3RydWN0IHdmeF9oaWZfbWliX2JlYWNvbl93YWtlX3Vw X3BlcmlvZCBhcmcgPSB7CiAJCS53YWtldXBfcGVyaW9kX21pbiA9IGR0aW1faW50ZXJ2YWwsCkBA IC0zNywxMyArMzUsMTEgQEAgaW50IHdmeF9oaWZfc2V0X2JlYWNvbl93YWtldXBfcGVyaW9kKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLAogCiAJaWYgKGR0aW1faW50ZXJ2YWwgPiAweEZGIHx8IGxpc3Rl bl9pbnRlcnZhbCA+IDB4RkZGRikKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JcmV0dXJuIHdmeF9oaWZf d3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLAotCQkJCSBISUZfTUlCX0lEX0JFQUNPTl9X QUtFVVBfUEVSSU9ELAorCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlm LT5pZCwgSElGX01JQl9JRF9CRUFDT05fV0FLRVVQX1BFUklPRCwKIAkJCQkgJmFyZywgc2l6ZW9m KGFyZykpOwogfQogCi1pbnQgd2Z4X2hpZl9zZXRfcmNwaV9yc3NpX3RocmVzaG9sZChzdHJ1Y3Qg d2Z4X3ZpZiAqd3ZpZiwKLQkJCQkgICAgaW50IHJzc2lfdGhvbGQsIGludCByc3NpX2h5c3QpCitp bnQgd2Z4X2hpZl9zZXRfcmNwaV9yc3NpX3RocmVzaG9sZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwg aW50IHJzc2lfdGhvbGQsIGludCByc3NpX2h5c3QpCiB7CiAJc3RydWN0IHdmeF9oaWZfbWliX3Jj cGlfcnNzaV90aHJlc2hvbGQgYXJnID0gewogCQkucm9sbGluZ19hdmVyYWdlX2NvdW50ID0gOCwK QEAgLTYwLDggKzU2LDcgQEAgaW50IHdmeF9oaWZfc2V0X3JjcGlfcnNzaV90aHJlc2hvbGQoc3Ry dWN0IHdmeF92aWYgKnd2aWYsCiAJCWFyZy5sb3dlcl90aHJlc2hvbGQgPSAoYXJnLmxvd2VyX3Ro cmVzaG9sZCArIDExMCkgKiAyOwogCX0KIAotCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlm LT53ZGV2LCB3dmlmLT5pZCwKLQkJCQkgSElGX01JQl9JRF9SQ1BJX1JTU0lfVEhSRVNIT0xELAor CXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9J RF9SQ1BJX1JTU0lfVEhSRVNIT0xELAogCQkJCSAmYXJnLCBzaXplb2YoYXJnKSk7CiB9CiAKQEAg LTc0LDkgKzY5LDggQEAgaW50IHdmeF9oaWZfZ2V0X2NvdW50ZXJzX3RhYmxlKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBpbnQgdmlmX2lkLAogCQlyZXR1cm4gd2Z4X2hpZl9yZWFkX21pYih3ZGV2LCB2 aWZfaWQsIEhJRl9NSUJfSURfQ09VTlRFUlNfVEFCTEUsCiAJCQkJICAgIGFyZywgc2l6ZW9mKHN0 cnVjdCB3ZnhfaGlmX21pYl9jb3VudF90YWJsZSkpOwogCX0gZWxzZSB7Ci0JCXJldHVybiB3Znhf aGlmX3JlYWRfbWliKHdkZXYsIHZpZl9pZCwKLQkJCQkgICAgSElGX01JQl9JRF9FWFRFTkRFRF9D T1VOVEVSU19UQUJMRSwgYXJnLAotCQkJCSAgICBzaXplb2Yoc3RydWN0IHdmeF9oaWZfbWliX2V4 dGVuZGVkX2NvdW50X3RhYmxlKSk7CisJCXJldHVybiB3ZnhfaGlmX3JlYWRfbWliKHdkZXYsIHZp Zl9pZCwgSElGX01JQl9JRF9FWFRFTkRFRF9DT1VOVEVSU19UQUJMRSwKKwkJCQkJYXJnLCBzaXpl b2Yoc3RydWN0IHdmeF9oaWZfbWliX2V4dGVuZGVkX2NvdW50X3RhYmxlKSk7CiAJfQogfQogCkBA IC04Niw4ICs4MCw3IEBAIGludCB3ZnhfaGlmX3NldF9tYWNhZGRyKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCB1OCAqbWFjKQogCiAJaWYgKG1hYykKIAkJZXRoZXJfYWRkcl9jb3B5KGFyZy5tYWNfYWRk ciwgbWFjKTsKLQlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQs Ci0JCQkJIEhJRl9NSUJfSURfRE9UMTFfTUFDX0FERFJFU1MsCisJcmV0dXJuIHdmeF9oaWZfd3Jp dGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX0RPVDExX01BQ19BRERSRVNT LAogCQkJCSAmYXJnLCBzaXplb2YoYXJnKSk7CiB9CiAKQEAgLTEwMCw4ICs5Myw3IEBAIGludCB3 ZnhfaGlmX3NldF9yeF9maWx0ZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsCiAJCWFyZy5ic3NpZF9m aWx0ZXIgPSAxOwogCWlmICghZmlsdGVyX3ByYnJlcSkKIAkJYXJnLmZ3ZF9wcm9iZV9yZXEgPSAx OwotCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01J Ql9JRF9SWF9GSUxURVIsCi0JCQkJICZhcmcsIHNpemVvZihhcmcpKTsKKwlyZXR1cm4gd2Z4X2hp Zl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfUlhfRklMVEVSLCAm YXJnLCBzaXplb2YoYXJnKSk7CiB9CiAKIGludCB3ZnhfaGlmX3NldF9iZWFjb25fZmlsdGVyX3Rh YmxlKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBpbnQgdGJsX2xlbiwKQEAgLTExNiwyNiArMTA4LDIz IEBAIGludCB3ZnhfaGlmX3NldF9iZWFjb25fZmlsdGVyX3RhYmxlKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBpbnQgdGJsX2xlbiwKIAkJcmV0dXJuIC1FTk9NRU07CiAJYXJnLT5udW1fb2ZfaW5mb19l bG10cyA9IGNwdV90b19sZTMyKHRibF9sZW4pOwogCW1lbWNweShhcmctPmllX3RhYmxlLCB0Ymws IGZsZXhfYXJyYXlfc2l6ZShhcmcsIGllX3RhYmxlLCB0YmxfbGVuKSk7Ci0JcmV0ID0gd2Z4X2hp Zl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsCi0JCQkJSElGX01JQl9JRF9CRUFDT05f RklMVEVSX1RBQkxFLCBhcmcsIGJ1Zl9sZW4pOworCXJldCA9IHdmeF9oaWZfd3JpdGVfbWliKHd2 aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX0JFQUNPTl9GSUxURVJfVEFCTEUsCisJCQkJ YXJnLCBidWZfbGVuKTsKIAlrZnJlZShhcmcpOwogCXJldHVybiByZXQ7CiB9CiAKLWludCB3Znhf aGlmX2JlYWNvbl9maWx0ZXJfY29udHJvbChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKLQkJCQkgIGlu dCBlbmFibGUsIGludCBiZWFjb25fY291bnQpCitpbnQgd2Z4X2hpZl9iZWFjb25fZmlsdGVyX2Nv bnRyb2woc3RydWN0IHdmeF92aWYgKnd2aWYsIGludCBlbmFibGUsIGludCBiZWFjb25fY291bnQp CiB7CiAJc3RydWN0IHdmeF9oaWZfbWliX2Jjbl9maWx0ZXJfZW5hYmxlIGFyZyA9IHsKIAkJLmVu YWJsZSA9IGNwdV90b19sZTMyKGVuYWJsZSksCiAJCS5iY25fY291bnQgPSBjcHVfdG9fbGUzMihi ZWFjb25fY291bnQpLAogCX07Ci0JcmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYs IHd2aWYtPmlkLAotCQkJCSBISUZfTUlCX0lEX0JFQUNPTl9GSUxURVJfRU5BQkxFLAorCXJldHVy biB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9CRUFD T05fRklMVEVSX0VOQUJMRSwKIAkJCQkgJmFyZywgc2l6ZW9mKGFyZykpOwogfQogCi1pbnQgd2Z4 X2hpZl9zZXRfb3BlcmF0aW9uYWxfbW9kZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKLQkJCQkgZW51 bSB3ZnhfaGlmX29wX3Bvd2VyX21vZGUgbW9kZSkKK2ludCB3ZnhfaGlmX3NldF9vcGVyYXRpb25h bF9tb2RlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBlbnVtIHdmeF9oaWZfb3BfcG93ZXJfbW9kZSBt b2RlKQogewogCXN0cnVjdCB3ZnhfaGlmX21pYl9nbF9vcGVyYXRpb25hbF9wb3dlcl9tb2RlIGFy ZyA9IHsKIAkJLnBvd2VyX21vZGUgPSBtb2RlLApAQCAtMTczLDIxICsxNjIsMTggQEAgaW50IHdm eF9oaWZfc2V0X21mcChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCBjYXBhYmxlLCBib29sIHJl cXVpcmVkKQogCX0KIAlpZiAoIXJlcXVpcmVkKQogCQlhcmcudW5wbWZfYWxsb3dlZCA9IDE7Ci0J cmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLAotCQkJCSBISUZf TUlCX0lEX1BST1RFQ1RFRF9NR01UX1BPTElDWSwKKwlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIo d3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfUFJPVEVDVEVEX01HTVRfUE9MSUNZLAog CQkJCSAmYXJnLCBzaXplb2YoYXJnKSk7CiB9CiAKLWludCB3ZnhfaGlmX3NldF9ibG9ja19hY2tf cG9saWN5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLAotCQkJCSB1OCB0eF90aWRfcG9saWN5LCB1OCBy eF90aWRfcG9saWN5KQoraW50IHdmeF9oaWZfc2V0X2Jsb2NrX2Fja19wb2xpY3koc3RydWN0IHdm eF92aWYgKnd2aWYsIHU4IHR4X3RpZF9wb2xpY3ksIHU4IHJ4X3RpZF9wb2xpY3kpCiB7CiAJc3Ry dWN0IHdmeF9oaWZfbWliX2Jsb2NrX2Fja19wb2xpY3kgYXJnID0gewogCQkuYmxvY2tfYWNrX3R4 X3RpZF9wb2xpY3kgPSB0eF90aWRfcG9saWN5LAogCQkuYmxvY2tfYWNrX3J4X3RpZF9wb2xpY3kg PSByeF90aWRfcG9saWN5LAogCX07CiAKLQlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+ d2Rldiwgd3ZpZi0+aWQsCi0JCQkJIEhJRl9NSUJfSURfQkxPQ0tfQUNLX1BPTElDWSwKKwlyZXR1 cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfQkxP Q0tfQUNLX1BPTElDWSwKIAkJCQkgJmFyZywgc2l6ZW9mKGFyZykpOwogfQogCkBAIC0yMDMsMTMg KzE4OSwxMSBAQCBpbnQgd2Z4X2hpZl9zZXRfYXNzb2NpYXRpb25fbW9kZShzdHJ1Y3Qgd2Z4X3Zp ZiAqd3ZpZiwgaW50IGFtcGR1X2RlbnNpdHksCiAJCS5tcGR1X3N0YXJ0X3NwYWNpbmcgPSBhbXBk dV9kZW5zaXR5LAogCX07CiAKLQlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwg d3ZpZi0+aWQsCi0JCQkJIEhJRl9NSUJfSURfU0VUX0FTU09DSUFUSU9OX01PREUsCisJcmV0dXJu IHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lEX1NFVF9B U1NPQ0lBVElPTl9NT0RFLAogCQkJCSAmYXJnLCBzaXplb2YoYXJnKSk7CiB9CiAKLWludCB3Znhf aGlmX3NldF90eF9yYXRlX3JldHJ5X3BvbGljeShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKLQkJCQkg ICAgIGludCBwb2xpY3lfaW5kZXgsIHU4ICpyYXRlcykKK2ludCB3ZnhfaGlmX3NldF90eF9yYXRl X3JldHJ5X3BvbGljeShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHBvbGljeV9pbmRleCwgdTgg KnJhdGVzKQogewogCXN0cnVjdCB3ZnhfaGlmX21pYl9zZXRfdHhfcmF0ZV9yZXRyeV9wb2xpY3kg KmFyZzsKIAlzaXplX3Qgc2l6ZSA9IHN0cnVjdF9zaXplKGFyZywgdHhfcmF0ZV9yZXRyeV9wb2xp Y3ksIDEpOwpAQCAtMjI3LDggKzIxMSw3IEBAIGludCB3ZnhfaGlmX3NldF90eF9yYXRlX3JldHJ5 X3BvbGljeShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKIAlhcmctPnR4X3JhdGVfcmV0cnlfcG9saWN5 WzBdLmNvdW50X2luaXQgPSAxOwogCW1lbWNweSgmYXJnLT50eF9yYXRlX3JldHJ5X3BvbGljeVsw XS5yYXRlcywgcmF0ZXMsCiAJICAgICAgIHNpemVvZihhcmctPnR4X3JhdGVfcmV0cnlfcG9saWN5 WzBdLnJhdGVzKSk7Ci0JcmV0ID0gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+ aWQsCi0JCQkJSElGX01JQl9JRF9TRVRfVFhfUkFURV9SRVRSWV9QT0xJQ1ksCisJcmV0ID0gd2Z4 X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsIEhJRl9NSUJfSURfU0VUX1RYX1JB VEVfUkVUUllfUE9MSUNZLAogCQkJCWFyZywgc2l6ZSk7CiAJa2ZyZWUoYXJnKTsKIAlyZXR1cm4g cmV0OwpAQCAtMjQwLDggKzIyMyw3IEBAIGludCB3ZnhfaGlmX2tlZXBfYWxpdmVfcGVyaW9kKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBpbnQgcGVyaW9kKQogCQkua2VlcF9hbGl2ZV9wZXJpb2QgPSBj cHVfdG9fbGUxNihwZXJpb2QpLAogCX07CiAKLQlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3Zp Zi0+d2Rldiwgd3ZpZi0+aWQsCi0JCQkJIEhJRl9NSUJfSURfS0VFUF9BTElWRV9QRVJJT0QsCisJ cmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lE X0tFRVBfQUxJVkVfUEVSSU9ELAogCQkJCSAmYXJnLCBzaXplb2YoYXJnKSk7CiB9OwogCkBAIC0y NTcsOCArMjM5LDcgQEAgaW50IHdmeF9oaWZfc2V0X2FycF9pcHY0X2ZpbHRlcihzdHJ1Y3Qgd2Z4 X3ZpZiAqd3ZpZiwgaW50IGlkeCwgX19iZTMyICphZGRyKQogCQltZW1jcHkoYXJnLmlwdjRfYWRk cmVzcywgYWRkciwgc2l6ZW9mKGFyZy5pcHY0X2FkZHJlc3MpKTsKIAkJYXJnLmFycF9lbmFibGUg PSBISUZfQVJQX05TX0ZJTFRFUklOR19FTkFCTEU7CiAJfQotCXJldHVybiB3ZnhfaGlmX3dyaXRl X21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwKLQkJCQkgSElGX01JQl9JRF9BUlBfSVBfQUREUkVT U0VTX1RBQkxFLAorCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5p ZCwgSElGX01JQl9JRF9BUlBfSVBfQUREUkVTU0VTX1RBQkxFLAogCQkJCSAmYXJnLCBzaXplb2Yo YXJnKSk7CiB9CiAKQEAgLTI2OCw4ICsyNDksNyBAQCBpbnQgd2Z4X2hpZl91c2VfbXVsdGlfdHhf Y29uZihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgYm9vbCBlbmFibGUpCiAJCS5lbmFibGVfbXVsdGlf dHhfY29uZiA9IGVuYWJsZSwKIAl9OwogCi0JcmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHdkZXYs IC0xLCBISUZfTUlCX0lEX0dMX1NFVF9NVUxUSV9NU0csCi0JCQkJICZhcmcsIHNpemVvZihhcmcp KTsKKwlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod2RldiwgLTEsIEhJRl9NSUJfSURfR0xfU0VU X01VTFRJX01TRywgJmFyZywgc2l6ZW9mKGFyZykpOwogfQogCiBpbnQgd2Z4X2hpZl9zZXRfdWFw c2RfaW5mbyhzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgdW5zaWduZWQgbG9uZyB2YWwpCkBAIC0yODQs OCArMjY0LDcgQEAgaW50IHdmeF9oaWZfc2V0X3VhcHNkX2luZm8oc3RydWN0IHdmeF92aWYgKnd2 aWYsIHVuc2lnbmVkIGxvbmcgdmFsKQogCQlhcmcudHJpZ19iZSA9IDE7CiAJaWYgKHZhbCAmIEJJ VChJRUVFODAyMTFfQUNfQkspKQogCQlhcmcudHJpZ19iY2tncm5kID0gMTsKLQlyZXR1cm4gd2Z4 X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsCi0JCQkJIEhJRl9NSUJfSURfU0VU X1VBUFNEX0lORk9STUFUSU9OLAorCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3dmlmLT53ZGV2 LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TRVRfVUFQU0RfSU5GT1JNQVRJT04sCiAJCQkJICZhcmcs IHNpemVvZihhcmcpKTsKIH0KIApAQCAtMjk1LDggKzI3NCw3IEBAIGludCB3ZnhfaGlmX2VycF91 c2VfcHJvdGVjdGlvbihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCBlbmFibGUpCiAJCS51c2Vf Y3RzX3RvX3NlbGYgPSBlbmFibGUsCiAJfTsKIAotCXJldHVybiB3ZnhfaGlmX3dyaXRlX21pYih3 dmlmLT53ZGV2LCB3dmlmLT5pZCwKLQkJCQkgSElGX01JQl9JRF9OT05fRVJQX1BST1RFQ1RJT04s CisJcmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlC X0lEX05PTl9FUlBfUFJPVEVDVElPTiwKIAkJCQkgJmFyZywgc2l6ZW9mKGFyZykpOwogfQogCkBA IC0zMDYsOCArMjg0LDcgQEAgaW50IHdmeF9oaWZfc2xvdF90aW1lKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBpbnQgdmFsKQogCQkuc2xvdF90aW1lID0gY3B1X3RvX2xlMzIodmFsKSwKIAl9OwogCi0J cmV0dXJuIHdmeF9oaWZfd3JpdGVfbWliKHd2aWYtPndkZXYsIHd2aWYtPmlkLCBISUZfTUlCX0lE X1NMT1RfVElNRSwKLQkJCQkgJmFyZywgc2l6ZW9mKGFyZykpOworCXJldHVybiB3ZnhfaGlmX3dy aXRlX21pYih3dmlmLT53ZGV2LCB3dmlmLT5pZCwgSElGX01JQl9JRF9TTE9UX1RJTUUsICZhcmcs IHNpemVvZihhcmcpKTsKIH0KIAogaW50IHdmeF9oaWZfd2VwX2RlZmF1bHRfa2V5X2lkKHN0cnVj dCB3ZnhfdmlmICp3dmlmLCBpbnQgdmFsKQpAQCAtMzE2LDggKzI5Myw3IEBAIGludCB3ZnhfaGlm X3dlcF9kZWZhdWx0X2tleV9pZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHZhbCkKIAkJLndl cF9kZWZhdWx0X2tleV9pZCA9IHZhbCwKIAl9OwogCi0JcmV0dXJuIHdmeF9oaWZfd3JpdGVfbWli KHd2aWYtPndkZXYsIHd2aWYtPmlkLAotCQkJCSBISUZfTUlCX0lEX0RPVDExX1dFUF9ERUZBVUxU X0tFWV9JRCwKKwlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQs IEhJRl9NSUJfSURfRE9UMTFfV0VQX0RFRkFVTFRfS0VZX0lELAogCQkJCSAmYXJnLCBzaXplb2Yo YXJnKSk7CiB9CiAKQEAgLTMyNyw3ICszMDMsNiBAQCBpbnQgd2Z4X2hpZl9ydHNfdGhyZXNob2xk KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBpbnQgdmFsKQogCQkudGhyZXNob2xkID0gY3B1X3RvX2xl MzIodmFsID49IDAgPyB2YWwgOiAweEZGRkYpLAogCX07CiAKLQlyZXR1cm4gd2Z4X2hpZl93cml0 ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQsCi0JCQkJIEhJRl9NSUJfSURfRE9UMTFfUlRTX1RI UkVTSE9MRCwKKwlyZXR1cm4gd2Z4X2hpZl93cml0ZV9taWIod3ZpZi0+d2Rldiwgd3ZpZi0+aWQs IEhJRl9NSUJfSURfRE9UMTFfUlRTX1RIUkVTSE9MRCwKIAkJCQkgJmFyZywgc2l6ZW9mKGFyZykp OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmggYi9kcml2 ZXJzL3N0YWdpbmcvd2Z4L2hpZl90eF9taWIuaAppbmRleCBlN2U1NTZiMDVjOWEuLmJjZDRlZjZh ODQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmgKKysrIGIv ZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfdHhfbWliLmgKQEAgLTE5LDMwICsxOSwyMyBAQCBzdHJ1 Y3Qgd2Z4X2hpZl9taWJfZXh0ZW5kZWRfY291bnRfdGFibGU7CiAKIGludCB3ZnhfaGlmX3NldF9v dXRwdXRfcG93ZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsIGludCB2YWwpOwogaW50IHdmeF9oaWZf c2V0X2JlYWNvbl93YWtldXBfcGVyaW9kKHN0cnVjdCB3ZnhfdmlmICp3dmlmLAotCQkJCSAgICAg dW5zaWduZWQgaW50IGR0aW1faW50ZXJ2YWwsCi0JCQkJICAgICB1bnNpZ25lZCBpbnQgbGlzdGVu X2ludGVydmFsKTsKLWludCB3ZnhfaGlmX3NldF9yY3BpX3Jzc2lfdGhyZXNob2xkKHN0cnVjdCB3 ZnhfdmlmICp3dmlmLAotCQkJCSAgICBpbnQgcnNzaV90aG9sZCwgaW50IHJzc2lfaHlzdCk7CisJ CQkJICAgICB1bnNpZ25lZCBpbnQgZHRpbV9pbnRlcnZhbCwgdW5zaWduZWQgaW50IGxpc3Rlbl9p bnRlcnZhbCk7CitpbnQgd2Z4X2hpZl9zZXRfcmNwaV9yc3NpX3RocmVzaG9sZChzdHJ1Y3Qgd2Z4 X3ZpZiAqd3ZpZiwgaW50IHJzc2lfdGhvbGQsIGludCByc3NpX2h5c3QpOwogaW50IHdmeF9oaWZf Z2V0X2NvdW50ZXJzX3RhYmxlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgdmlmX2lkLAogCQkJ ICAgICAgIHN0cnVjdCB3ZnhfaGlmX21pYl9leHRlbmRlZF9jb3VudF90YWJsZSAqYXJnKTsKIGlu dCB3ZnhfaGlmX3NldF9tYWNhZGRyKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCB1OCAqbWFjKTsKLWlu dCB3ZnhfaGlmX3NldF9yeF9maWx0ZXIoc3RydWN0IHdmeF92aWYgKnd2aWYsCi0JCQkgIGJvb2wg ZmlsdGVyX2Jzc2lkLCBib29sIGZ3ZF9wcm9iZV9yZXEpOworaW50IHdmeF9oaWZfc2V0X3J4X2Zp bHRlcihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCBmaWx0ZXJfYnNzaWQsIGJvb2wgZndkX3By b2JlX3JlcSk7CiBpbnQgd2Z4X2hpZl9zZXRfYmVhY29uX2ZpbHRlcl90YWJsZShzdHJ1Y3Qgd2Z4 X3ZpZiAqd3ZpZiwgaW50IHRibF9sZW4sCiAJCQkJICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX2ll X3RhYmxlX2VudHJ5ICp0YmwpOwotaW50IHdmeF9oaWZfYmVhY29uX2ZpbHRlcl9jb250cm9sKHN0 cnVjdCB3ZnhfdmlmICp3dmlmLAotCQkJCSAgaW50IGVuYWJsZSwgaW50IGJlYWNvbl9jb3VudCk7 Ci1pbnQgd2Z4X2hpZl9zZXRfb3BlcmF0aW9uYWxfbW9kZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwK LQkJCQkgZW51bSB3ZnhfaGlmX29wX3Bvd2VyX21vZGUgbW9kZSk7CitpbnQgd2Z4X2hpZl9iZWFj b25fZmlsdGVyX2NvbnRyb2woc3RydWN0IHdmeF92aWYgKnd2aWYsIGludCBlbmFibGUsIGludCBi ZWFjb25fY291bnQpOworaW50IHdmeF9oaWZfc2V0X29wZXJhdGlvbmFsX21vZGUoc3RydWN0IHdm eF9kZXYgKndkZXYsIGVudW0gd2Z4X2hpZl9vcF9wb3dlcl9tb2RlIG1vZGUpOwogaW50IHdmeF9o aWZfc2V0X3RlbXBsYXRlX2ZyYW1lKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLAogCQkJICAgICAgIHU4IGZyYW1lX3R5cGUsIGludCBpbml0X3JhdGUpOwogaW50IHdm eF9oaWZfc2V0X21mcChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgYm9vbCBjYXBhYmxlLCBib29sIHJl cXVpcmVkKTsKLWludCB3ZnhfaGlmX3NldF9ibG9ja19hY2tfcG9saWN5KHN0cnVjdCB3Znhfdmlm ICp3dmlmLAotCQkJCSB1OCB0eF90aWRfcG9saWN5LCB1OCByeF90aWRfcG9saWN5KTsKK2ludCB3 ZnhfaGlmX3NldF9ibG9ja19hY2tfcG9saWN5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCB1OCB0eF90 aWRfcG9saWN5LCB1OCByeF90aWRfcG9saWN5KTsKIGludCB3ZnhfaGlmX3NldF9hc3NvY2lhdGlv bl9tb2RlKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBpbnQgYW1wZHVfZGVuc2l0eSwKIAkJCQkgYm9v bCBncmVlbmZpZWxkLCBib29sIHNob3J0X3ByZWFtYmxlKTsKLWludCB3ZnhfaGlmX3NldF90eF9y YXRlX3JldHJ5X3BvbGljeShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKLQkJCQkgICAgIGludCBwb2xp Y3lfaW5kZXgsIHU4ICpyYXRlcyk7CitpbnQgd2Z4X2hpZl9zZXRfdHhfcmF0ZV9yZXRyeV9wb2xp Y3koc3RydWN0IHdmeF92aWYgKnd2aWYsIGludCBwb2xpY3lfaW5kZXgsIHU4ICpyYXRlcyk7CiBp bnQgd2Z4X2hpZl9rZWVwX2FsaXZlX3BlcmlvZChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgaW50IHBl cmlvZCk7CiBpbnQgd2Z4X2hpZl9zZXRfYXJwX2lwdjRfZmlsdGVyKHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBpbnQgaWR4LCBfX2JlMzIgKmFkZHIpOwogaW50IHdmeF9oaWZfdXNlX211bHRpX3R4X2Nv bmYoc3RydWN0IHdmeF9kZXYgKndkZXYsIGJvb2wgZW5hYmxlKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy93ZngvaHdpby5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmMKaW5kZXgg YzUzYjM2ZDM2Njg3Li5jMTU4MTBiZGFlY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93 ZngvaHdpby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvaHdpby5jCkBAIC0yNSwxNCArMjUs MTIgQEAgc3RhdGljIGludCB3ZnhfcmVhZDMyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgcmVn LCB1MzIgKnZhbCkKIAkqdmFsID0gfjA7IC8qIE5ldmVyIHJldHVybiB1bmRlZmluZWQgdmFsdWUg Ki8KIAlpZiAoIXRtcCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JcmV0ID0gd2Rldi0+aHdidXNfb3Bz LT5jb3B5X2Zyb21faW8od2Rldi0+aHdidXNfcHJpdiwgcmVnLCB0bXAsCi0JCQkJCSAgICBzaXpl b2YodTMyKSk7CisJcmV0ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X2Zyb21faW8od2Rldi0+aHdi dXNfcHJpdiwgcmVnLCB0bXAsIHNpemVvZih1MzIpKTsKIAlpZiAocmV0ID49IDApCiAJCSp2YWwg PSBsZTMyX3RvX2NwdSgqdG1wKTsKIAlrZnJlZSh0bXApOwogCWlmIChyZXQpCi0JCWRldl9lcnIo d2Rldi0+ZGV2LCAiJXM6IGJ1cyBjb21tdW5pY2F0aW9uIGVycm9yOiAlZFxuIiwKLQkJCV9fZnVu Y19fLCByZXQpOworCQlkZXZfZXJyKHdkZXYtPmRldiwgIiVzOiBidXMgY29tbXVuaWNhdGlvbiBl cnJvcjogJWRcbiIsIF9fZnVuY19fLCByZXQpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQ0LDEy ICs0MiwxMCBAQCBzdGF0aWMgaW50IHdmeF93cml0ZTMyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBp bnQgcmVnLCB1MzIgdmFsKQogCWlmICghdG1wKQogCQlyZXR1cm4gLUVOT01FTTsKIAkqdG1wID0g Y3B1X3RvX2xlMzIodmFsKTsKLQlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNvcHlfdG9faW8od2Rl di0+aHdidXNfcHJpdiwgcmVnLCB0bXAsCi0JCQkJCSAgc2l6ZW9mKHUzMikpOworCXJldCA9IHdk ZXYtPmh3YnVzX29wcy0+Y29weV90b19pbyh3ZGV2LT5od2J1c19wcml2LCByZWcsIHRtcCwgc2l6 ZW9mKHUzMikpOwogCWtmcmVlKHRtcCk7CiAJaWYgKHJldCkKLQkJZGV2X2Vycih3ZGV2LT5kZXYs ICIlczogYnVzIGNvbW11bmljYXRpb24gZXJyb3I6ICVkXG4iLAotCQkJX19mdW5jX18sIHJldCk7 CisJCWRldl9lcnIod2Rldi0+ZGV2LCAiJXM6IGJ1cyBjb21tdW5pY2F0aW9uIGVycm9yOiAlZFxu IiwgX19mdW5jX18sIHJldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTg3LDggKzE4Myw3IEBA IHN0YXRpYyBpbnQgd2Z4X2luZGlyZWN0X3dyaXRlX2xvY2tlZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rl diwgaW50IHJlZywgdTMyIGFkZHIsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCB3Znhf aW5kaXJlY3RfcmVhZDMyX2xvY2tlZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHJlZywKLQkJ CQkgICAgICB1MzIgYWRkciwgdTMyICp2YWwpCitzdGF0aWMgaW50IHdmeF9pbmRpcmVjdF9yZWFk MzJfbG9ja2VkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgcmVnLCB1MzIgYWRkciwgdTMyICp2 YWwpCiB7CiAJaW50IHJldDsKIAlfX2xlMzIgKnRtcCA9IGttYWxsb2Moc2l6ZW9mKHUzMiksIEdG UF9LRVJORUwpOwpAQCAtMjI3LDEzICsyMjIsMTEgQEAgaW50IHdmeF9kYXRhX3JlYWQoc3RydWN0 IHdmeF9kZXYgKndkZXYsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIAogCVdBUk4oIUlTX0FMSUdO RUQoKHVpbnRwdHJfdClidWYsIDQpLCAidW5hbGlnbmVkIGJ1ZmZlciIpOwogCXdkZXYtPmh3YnVz X29wcy0+bG9jayh3ZGV2LT5od2J1c19wcml2KTsKLQlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNv cHlfZnJvbV9pbyh3ZGV2LT5od2J1c19wcml2LAotCQkJCQkgICAgV0ZYX1JFR19JTl9PVVRfUVVF VUUsIGJ1ZiwgbGVuKTsKKwlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNvcHlfZnJvbV9pbyh3ZGV2 LT5od2J1c19wcml2LCBXRlhfUkVHX0lOX09VVF9RVUVVRSwgYnVmLCBsZW4pOwogCV90cmFjZV9p b19yZWFkKFdGWF9SRUdfSU5fT1VUX1FVRVVFLCBidWYsIGxlbik7CiAJd2Rldi0+aHdidXNfb3Bz LT51bmxvY2sod2Rldi0+aHdidXNfcHJpdik7CiAJaWYgKHJldCkKLQkJZGV2X2Vycih3ZGV2LT5k ZXYsICIlczogYnVzIGNvbW11bmljYXRpb24gZXJyb3I6ICVkXG4iLAotCQkJX19mdW5jX18sIHJl dCk7CisJCWRldl9lcnIod2Rldi0+ZGV2LCAiJXM6IGJ1cyBjb21tdW5pY2F0aW9uIGVycm9yOiAl ZFxuIiwgX19mdW5jX18sIHJldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDUyICsyMzYs NDIgQEAgaW50IHdmeF9kYXRhX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB2b2lk ICpidWYsIHNpemVfdCBsZW4pCiAKIAlXQVJOKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYnVmLCA0 KSwgInVuYWxpZ25lZCBidWZmZXIiKTsKIAl3ZGV2LT5od2J1c19vcHMtPmxvY2sod2Rldi0+aHdi dXNfcHJpdik7Ci0JcmV0ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X3RvX2lvKHdkZXYtPmh3YnVz X3ByaXYsCi0JCQkJCSAgV0ZYX1JFR19JTl9PVVRfUVVFVUUsIGJ1ZiwgbGVuKTsKKwlyZXQgPSB3 ZGV2LT5od2J1c19vcHMtPmNvcHlfdG9faW8od2Rldi0+aHdidXNfcHJpdiwgV0ZYX1JFR19JTl9P VVRfUVVFVUUsIGJ1ZiwgbGVuKTsKIAlfdHJhY2VfaW9fd3JpdGUoV0ZYX1JFR19JTl9PVVRfUVVF VUUsIGJ1ZiwgbGVuKTsKIAl3ZGV2LT5od2J1c19vcHMtPnVubG9jayh3ZGV2LT5od2J1c19wcml2 KTsKIAlpZiAocmV0KQotCQlkZXZfZXJyKHdkZXYtPmRldiwgIiVzOiBidXMgY29tbXVuaWNhdGlv biBlcnJvcjogJWRcbiIsCi0JCQlfX2Z1bmNfXywgcmV0KTsKKwkJZGV2X2Vycih3ZGV2LT5kZXYs ICIlczogYnVzIGNvbW11bmljYXRpb24gZXJyb3I6ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKIAly ZXR1cm4gcmV0OwogfQogCiBpbnQgd2Z4X3NyYW1fYnVmX3JlYWQoc3RydWN0IHdmeF9kZXYgKndk ZXYsIHUzMiBhZGRyLCB2b2lkICpidWYsIHNpemVfdCBsZW4pCiB7Ci0JcmV0dXJuIHdmeF9pbmRp cmVjdF9yZWFkX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBPUlQsCi0JCQkJCWFkZHIsIGJ1 ZiwgbGVuKTsKKwlyZXR1cm4gd2Z4X2luZGlyZWN0X3JlYWRfbG9ja2VkKHdkZXYsIFdGWF9SRUdf U1JBTV9EUE9SVCwgYWRkciwgYnVmLCBsZW4pOwogfQogCiBpbnQgd2Z4X2FoYl9idWZfcmVhZChz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIHsK LQlyZXR1cm4gd2Z4X2luZGlyZWN0X3JlYWRfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQUhCX0RQT1JU LAotCQkJCQlhZGRyLCBidWYsIGxlbik7CisJcmV0dXJuIHdmeF9pbmRpcmVjdF9yZWFkX2xvY2tl ZCh3ZGV2LCBXRlhfUkVHX0FIQl9EUE9SVCwgYWRkciwgYnVmLCBsZW4pOwogfQogCi1pbnQgd2Z4 X3NyYW1fYnVmX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwKLQkJICAgICAg IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK2ludCB3Znhfc3JhbV9idWZfd3JpdGUoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4p CiB7Ci0JcmV0dXJuIHdmeF9pbmRpcmVjdF93cml0ZV9sb2NrZWQod2RldiwgV0ZYX1JFR19TUkFN X0RQT1JULAotCQkJCQkgYWRkciwgYnVmLCBsZW4pOworCXJldHVybiB3ZnhfaW5kaXJlY3Rfd3Jp dGVfbG9ja2VkKHdkZXYsIFdGWF9SRUdfU1JBTV9EUE9SVCwgYWRkciwgYnVmLCBsZW4pOwogfQog Ci1pbnQgd2Z4X2FoYl9idWZfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLAot CQkgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCitpbnQgd2Z4X2FoYl9idWZfd3Jp dGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCBjb25zdCB2b2lkICpidWYsIHNpemVf dCBsZW4pCiB7Ci0JcmV0dXJuIHdmeF9pbmRpcmVjdF93cml0ZV9sb2NrZWQod2RldiwgV0ZYX1JF R19BSEJfRFBPUlQsCi0JCQkJCSBhZGRyLCBidWYsIGxlbik7CisJcmV0dXJuIHdmeF9pbmRpcmVj dF93cml0ZV9sb2NrZWQod2RldiwgV0ZYX1JFR19BSEJfRFBPUlQsIGFkZHIsIGJ1ZiwgbGVuKTsK IH0KIAogaW50IHdmeF9zcmFtX3JlZ19yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRk ciwgdTMyICp2YWwpCiB7Ci0JcmV0dXJuIHdmeF9pbmRpcmVjdF9yZWFkMzJfbG9ja2VkKHdkZXYs IFdGWF9SRUdfU1JBTV9EUE9SVCwKLQkJCQkJICBhZGRyLCB2YWwpOworCXJldHVybiB3ZnhfaW5k aXJlY3RfcmVhZDMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBPUlQsIGFkZHIsIHZhbCk7 CiB9CiAKIGludCB3ZnhfYWhiX3JlZ19yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRk ciwgdTMyICp2YWwpCiB7Ci0JcmV0dXJuIHdmeF9pbmRpcmVjdF9yZWFkMzJfbG9ja2VkKHdkZXYs IFdGWF9SRUdfQUhCX0RQT1JULAotCQkJCQkgIGFkZHIsIHZhbCk7CisJcmV0dXJuIHdmeF9pbmRp cmVjdF9yZWFkMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQUhCX0RQT1JULCBhZGRyLCB2YWwpOwog fQogCiBpbnQgd2Z4X3NyYW1fcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRk ciwgdTMyIHZhbCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93Zngva2V5LmMgYi9kcml2 ZXJzL3N0YWdpbmcvd2Z4L2tleS5jCmluZGV4IGRlYTgyMzhmOTkxNi4uOGYyM2U4ZDQyYmQ0IDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2tleS5jCisrKyBiL2RyaXZlcnMvc3RhZ2lu Zy93Zngva2V5LmMKQEAgLTU1LDkgKzU1LDggQEAgc3RhdGljIHU4IGZpbGxfdGtpcF9wYWlyKHN0 cnVjdCB3ZnhfaGlmX3RraXBfcGFpcndpc2Vfa2V5ICptc2csCiB7CiAJdTggKmtleWJ1ZiA9IGtl eS0+a2V5OwogCi0JV0FSTihrZXktPmtleWxlbiAhPSBzaXplb2YobXNnLT50a2lwX2tleV9kYXRh KQotCQkJICAgICsgc2l6ZW9mKG1zZy0+dHhfbWljX2tleSkKLQkJCSAgICArIHNpemVvZihtc2ct PnJ4X21pY19rZXkpLCAiaW5jb25zaXN0ZW50IGRhdGEiKTsKKwlXQVJOKGtleS0+a2V5bGVuICE9 IHNpemVvZihtc2ctPnRraXBfa2V5X2RhdGEpICsgc2l6ZW9mKG1zZy0+dHhfbWljX2tleSkgKwor CQkJICAgIHNpemVvZihtc2ctPnJ4X21pY19rZXkpLCAiaW5jb25zaXN0ZW50IGRhdGEiKTsKIAlt ZW1jcHkobXNnLT50a2lwX2tleV9kYXRhLCBrZXlidWYsIHNpemVvZihtc2ctPnRraXBfa2V5X2Rh dGEpKTsKIAlrZXlidWYgKz0gc2l6ZW9mKG1zZy0+dGtpcF9rZXlfZGF0YSk7CiAJbWVtY3B5KG1z Zy0+dHhfbWljX2tleSwga2V5YnVmLCBzaXplb2YobXNnLT50eF9taWNfa2V5KSk7CkBAIC02Nywy MCArNjYsMTYgQEAgc3RhdGljIHU4IGZpbGxfdGtpcF9wYWlyKHN0cnVjdCB3ZnhfaGlmX3RraXBf cGFpcndpc2Vfa2V5ICptc2csCiAJcmV0dXJuIEhJRl9LRVlfVFlQRV9US0lQX1BBSVJXSVNFOwog fQogCi1zdGF0aWMgdTggZmlsbF90a2lwX2dyb3VwKHN0cnVjdCB3ZnhfaGlmX3RraXBfZ3JvdXBf a2V5ICptc2csCi0JCQkgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSwKLQkJCSAgc3Ry dWN0IGllZWU4MDIxMV9rZXlfc2VxICpzZXEsCi0JCQkgIGVudW0gbmw4MDIxMV9pZnR5cGUgaWZ0 eXBlKQorc3RhdGljIHU4IGZpbGxfdGtpcF9ncm91cChzdHJ1Y3Qgd2Z4X2hpZl90a2lwX2dyb3Vw X2tleSAqbXNnLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksCisJCQkgIHN0cnVjdCBp ZWVlODAyMTFfa2V5X3NlcSAqc2VxLCBlbnVtIG5sODAyMTFfaWZ0eXBlIGlmdHlwZSkKIHsKIAl1 OCAqa2V5YnVmID0ga2V5LT5rZXk7CiAKLQlXQVJOKGtleS0+a2V5bGVuICE9IHNpemVvZihtc2ct PnRraXBfa2V5X2RhdGEpCi0JCQkgICAgKyAyICogc2l6ZW9mKG1zZy0+cnhfbWljX2tleSksICJp bmNvbnNpc3RlbnQgZGF0YSIpOworCVdBUk4oa2V5LT5rZXlsZW4gIT0gc2l6ZW9mKG1zZy0+dGtp cF9rZXlfZGF0YSkgKyAyICogc2l6ZW9mKG1zZy0+cnhfbWljX2tleSksCisJICAgICAiaW5jb25z aXN0ZW50IGRhdGEiKTsKIAltc2ctPmtleV9pZCA9IGtleS0+a2V5aWR4OwotCW1lbWNweShtc2ct PnJ4X3NlcXVlbmNlX2NvdW50ZXIsCi0JICAgICAgICZzZXEtPnRraXAuaXYxNiwgc2l6ZW9mKHNl cS0+dGtpcC5pdjE2KSk7Ci0JbWVtY3B5KG1zZy0+cnhfc2VxdWVuY2VfY291bnRlciArIHNpemVv Zih1MTYpLAotCSAgICAgICAmc2VxLT50a2lwLml2MzIsIHNpemVvZihzZXEtPnRraXAuaXYzMikp OworCW1lbWNweShtc2ctPnJ4X3NlcXVlbmNlX2NvdW50ZXIsICZzZXEtPnRraXAuaXYxNiwgc2l6 ZW9mKHNlcS0+dGtpcC5pdjE2KSk7CisJbWVtY3B5KG1zZy0+cnhfc2VxdWVuY2VfY291bnRlciAr IHNpemVvZih1MTYpLCAmc2VxLT50a2lwLml2MzIsIHNpemVvZihzZXEtPnRraXAuaXYzMikpOwog CW1lbWNweShtc2ctPnRraXBfa2V5X2RhdGEsIGtleWJ1Ziwgc2l6ZW9mKG1zZy0+dGtpcF9rZXlf ZGF0YSkpOwogCWtleWJ1ZiArPSBzaXplb2YobXNnLT50a2lwX2tleV9kYXRhKTsKIAlpZiAoaWZ0 eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKQpAQCAtMTAyLDggKzk3LDcgQEAgc3RhdGljIHU4IGZp bGxfY2NtcF9wYWlyKHN0cnVjdCB3ZnhfaGlmX2Flc19wYWlyd2lzZV9rZXkgKm1zZywKIH0KIAog c3RhdGljIHU4IGZpbGxfY2NtcF9ncm91cChzdHJ1Y3Qgd2Z4X2hpZl9hZXNfZ3JvdXBfa2V5ICpt c2csCi0JCQkgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSwKLQkJCSAgc3RydWN0IGll ZWU4MDIxMV9rZXlfc2VxICpzZXEpCisJCQkgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtl eSwgc3RydWN0IGllZWU4MDIxMV9rZXlfc2VxICpzZXEpCiB7CiAJV0FSTihrZXktPmtleWxlbiAh PSBzaXplb2YobXNnLT5hZXNfa2V5X2RhdGEpLCAiaW5jb25zaXN0ZW50IGRhdGEiKTsKIAltZW1j cHkobXNnLT5hZXNfa2V5X2RhdGEsIGtleS0+a2V5LCBrZXktPmtleWxlbik7CkBAIC0xMTgsOCAr MTEyLDggQEAgc3RhdGljIHU4IGZpbGxfc21zNF9wYWlyKHN0cnVjdCB3ZnhfaGlmX3dhcGlfcGFp cndpc2Vfa2V5ICptc2csCiB7CiAJdTggKmtleWJ1ZiA9IGtleS0+a2V5OwogCi0JV0FSTihrZXkt PmtleWxlbiAhPSBzaXplb2YobXNnLT53YXBpX2tleV9kYXRhKQotCQkJICAgICsgc2l6ZW9mKG1z Zy0+bWljX2tleV9kYXRhKSwgImluY29uc2lzdGVudCBkYXRhIik7CisJV0FSTihrZXktPmtleWxl biAhPSBzaXplb2YobXNnLT53YXBpX2tleV9kYXRhKSArIHNpemVvZihtc2ctPm1pY19rZXlfZGF0 YSksCisJICAgICAiaW5jb25zaXN0ZW50IGRhdGEiKTsKIAlldGhlcl9hZGRyX2NvcHkobXNnLT5w ZWVyX2FkZHJlc3MsIHBlZXJfYWRkcik7CiAJbWVtY3B5KG1zZy0+d2FwaV9rZXlfZGF0YSwga2V5 YnVmLCBzaXplb2YobXNnLT53YXBpX2tleV9kYXRhKSk7CiAJa2V5YnVmICs9IHNpemVvZihtc2ct PndhcGlfa2V5X2RhdGEpOwpAQCAtMTMzLDggKzEyNyw4IEBAIHN0YXRpYyB1OCBmaWxsX3NtczRf Z3JvdXAoc3RydWN0IHdmeF9oaWZfd2FwaV9ncm91cF9rZXkgKm1zZywKIHsKIAl1OCAqa2V5YnVm ID0ga2V5LT5rZXk7CiAKLQlXQVJOKGtleS0+a2V5bGVuICE9IHNpemVvZihtc2ctPndhcGlfa2V5 X2RhdGEpCi0JCQkgICAgKyBzaXplb2YobXNnLT5taWNfa2V5X2RhdGEpLCAiaW5jb25zaXN0ZW50 IGRhdGEiKTsKKwlXQVJOKGtleS0+a2V5bGVuICE9IHNpemVvZihtc2ctPndhcGlfa2V5X2RhdGEp ICsgc2l6ZW9mKG1zZy0+bWljX2tleV9kYXRhKSwKKwkgICAgICJpbmNvbnNpc3RlbnQgZGF0YSIp OwogCW1lbWNweShtc2ctPndhcGlfa2V5X2RhdGEsIGtleWJ1Ziwgc2l6ZW9mKG1zZy0+d2FwaV9r ZXlfZGF0YSkpOwogCWtleWJ1ZiArPSBzaXplb2YobXNnLT53YXBpX2tleV9kYXRhKTsKIAltZW1j cHkobXNnLT5taWNfa2V5X2RhdGEsIGtleWJ1Ziwgc2l6ZW9mKG1zZy0+bWljX2tleV9kYXRhKSk7 CkBAIC0xNDMsOCArMTM3LDcgQEAgc3RhdGljIHU4IGZpbGxfc21zNF9ncm91cChzdHJ1Y3Qgd2Z4 X2hpZl93YXBpX2dyb3VwX2tleSAqbXNnLAogfQogCiBzdGF0aWMgdTggZmlsbF9hZXNfY21hY19n cm91cChzdHJ1Y3Qgd2Z4X2hpZl9pZ3RrX2dyb3VwX2tleSAqbXNnLAotCQkJICAgICAgc3RydWN0 IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LAotCQkJICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlf c2VxICpzZXEpCisJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksIHN0cnVj dCBpZWVlODAyMTFfa2V5X3NlcSAqc2VxKQogewogCVdBUk4oa2V5LT5rZXlsZW4gIT0gc2l6ZW9m KG1zZy0+aWd0a19rZXlfZGF0YSksICJpbmNvbnNpc3RlbnQgZGF0YSIpOwogCW1lbWNweShtc2ct PmlndGtfa2V5X2RhdGEsIGtleS0+a2V5LCBrZXktPmtleWxlbik7CkBAIC0xNzMsMjggKzE2Niwy MyBAQCBzdGF0aWMgaW50IHdmeF9hZGRfa2V5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qg aWVlZTgwMjExX3N0YSAqc3RhLAogCWlmIChrZXktPmNpcGhlciA9PSBXTEFOX0NJUEhFUl9TVUlU RV9XRVA0MCB8fAogCSAgICBrZXktPmNpcGhlciA9PSBXTEFOX0NJUEhFUl9TVUlURV9XRVAxMDQp IHsKIAkJaWYgKHBhaXJ3aXNlKQotCQkJay50eXBlID0gZmlsbF93ZXBfcGFpcigmay5rZXkud2Vw X3BhaXJ3aXNlX2tleSwga2V5LAotCQkJCQkgICAgICAgc3RhLT5hZGRyKTsKKwkJCWsudHlwZSA9 IGZpbGxfd2VwX3BhaXIoJmsua2V5LndlcF9wYWlyd2lzZV9rZXksIGtleSwgc3RhLT5hZGRyKTsK IAkJZWxzZQogCQkJay50eXBlID0gZmlsbF93ZXBfZ3JvdXAoJmsua2V5LndlcF9ncm91cF9rZXks IGtleSk7CiAJfSBlbHNlIGlmIChrZXktPmNpcGhlciA9PSBXTEFOX0NJUEhFUl9TVUlURV9US0lQ KSB7CiAJCWlmIChwYWlyd2lzZSkKLQkJCWsudHlwZSA9IGZpbGxfdGtpcF9wYWlyKCZrLmtleS50 a2lwX3BhaXJ3aXNlX2tleSwga2V5LAotCQkJCQkJc3RhLT5hZGRyKTsKKwkJCWsudHlwZSA9IGZp bGxfdGtpcF9wYWlyKCZrLmtleS50a2lwX3BhaXJ3aXNlX2tleSwga2V5LCBzdGEtPmFkZHIpOwog CQllbHNlCi0JCQlrLnR5cGUgPSBmaWxsX3RraXBfZ3JvdXAoJmsua2V5LnRraXBfZ3JvdXBfa2V5 LCBrZXksCi0JCQkJCQkgJnNlcSwgd3ZpZi0+dmlmLT50eXBlKTsKKwkJCWsudHlwZSA9IGZpbGxf dGtpcF9ncm91cCgmay5rZXkudGtpcF9ncm91cF9rZXksIGtleSwgJnNlcSwKKwkJCQkJCSB3dmlm LT52aWYtPnR5cGUpOwogCX0gZWxzZSBpZiAoa2V5LT5jaXBoZXIgPT0gV0xBTl9DSVBIRVJfU1VJ VEVfQ0NNUCkgewogCQlpZiAocGFpcndpc2UpCi0JCQlrLnR5cGUgPSBmaWxsX2NjbXBfcGFpcigm ay5rZXkuYWVzX3BhaXJ3aXNlX2tleSwga2V5LAotCQkJCQkJc3RhLT5hZGRyKTsKKwkJCWsudHlw ZSA9IGZpbGxfY2NtcF9wYWlyKCZrLmtleS5hZXNfcGFpcndpc2Vfa2V5LCBrZXksIHN0YS0+YWRk cik7CiAJCWVsc2UKLQkJCWsudHlwZSA9IGZpbGxfY2NtcF9ncm91cCgmay5rZXkuYWVzX2dyb3Vw X2tleSwga2V5LAotCQkJCQkJICZzZXEpOworCQkJay50eXBlID0gZmlsbF9jY21wX2dyb3VwKCZr LmtleS5hZXNfZ3JvdXBfa2V5LCBrZXksICZzZXEpOwogCX0gZWxzZSBpZiAoa2V5LT5jaXBoZXIg PT0gV0xBTl9DSVBIRVJfU1VJVEVfU01TNCkgewogCQlpZiAocGFpcndpc2UpCi0JCQlrLnR5cGUg PSBmaWxsX3NtczRfcGFpcigmay5rZXkud2FwaV9wYWlyd2lzZV9rZXksIGtleSwKLQkJCQkJCXN0 YS0+YWRkcik7CisJCQlrLnR5cGUgPSBmaWxsX3NtczRfcGFpcigmay5rZXkud2FwaV9wYWlyd2lz ZV9rZXksIGtleSwgc3RhLT5hZGRyKTsKIAkJZWxzZQogCQkJay50eXBlID0gZmlsbF9zbXM0X2dy b3VwKCZrLmtleS53YXBpX2dyb3VwX2tleSwga2V5KTsKIAl9IGVsc2UgaWYgKGtleS0+Y2lwaGVy ID09IFdMQU5fQ0lQSEVSX1NVSVRFX0FFU19DTUFDKSB7CkBAIC0yMTAsOCArMTk4LDcgQEAgc3Rh dGljIGludCB3ZnhfYWRkX2tleShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IGllZWU4MDIx MV9zdGEgKnN0YSwKIAkJd2Z4X2ZyZWVfa2V5KHdkZXYsIGlkeCk7CiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAl9Ci0Ja2V5LT5mbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfUFVUX0lWX1NQQUNF IHwKLQkJICAgICAgSUVFRTgwMjExX0tFWV9GTEFHX1JFU0VSVkVfVEFJTFJPT007CisJa2V5LT5m bGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfUFVUX0lWX1NQQUNFIHwgSUVFRTgwMjExX0tFWV9G TEFHX1JFU0VSVkVfVEFJTFJPT007CiAJa2V5LT5od19rZXlfaWR4ID0gaWR4OwogCXJldHVybiAw OwogfQpAQCAtMjIzLDkgKzIxMCw4IEBAIHN0YXRpYyBpbnQgd2Z4X3JlbW92ZV9rZXkoc3RydWN0 IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSkKIAlyZXR1cm4g d2Z4X2hpZl9yZW1vdmVfa2V5KHd2aWYtPndkZXYsIGtleS0+aHdfa2V5X2lkeCk7CiB9CiAKLWlu dCB3Znhfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBj bWQsCi0JCXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpz dGEsCi0JCXN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSkKK2ludCB3Znhfc2V0X2tleShz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsIHN0cnVjdCBpZWVl ODAyMTFfdmlmICp2aWYsCisJCXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBpZWVl ODAyMTFfa2V5X2NvbmYgKmtleSkKIHsKIAlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAJc3RydWN0 IHdmeF92aWYgKnd2aWYgPSAoc3RydWN0IHdmeF92aWYgKil2aWYtPmRydl9wcml2OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9rZXkuaCBiL2RyaXZlcnMvc3RhZ2luZy93Zngva2V5 LmgKaW5kZXggMmQxMzVlZmY3YWYyLi4yMjM0ZTM2ZGJiY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c3RhZ2luZy93Zngva2V5LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9rZXkuaApAQCAtMTMs OCArMTMsNyBAQAogc3RydWN0IHdmeF9kZXY7CiBzdHJ1Y3Qgd2Z4X3ZpZjsKIAotaW50IHdmeF9z ZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCwKLQkJ c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKLQkJ c3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KTsKK2ludCB3Znhfc2V0X2tleShzdHJ1Y3Qg aWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsIHN0cnVjdCBpZWVlODAyMTFf dmlmICp2aWYsCisJCXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBpZWVlODAyMTFf a2V5X2NvbmYgKmtleSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dm eC9tYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYwppbmRleCA3YjlkNzVmMjE5ZmIu LjZiOWFlNjdkYTI4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMKKysr IGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmMKQEAgLTk0LDggKzk0LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgd2Z4X2JhbmRfMmdoeiA9IHsKIAku aHRfY2FwID0gewogCQkvKiBSZWNlaXZlIGNhcHMgKi8KIAkJLmNhcCA9IElFRUU4MDIxMV9IVF9D QVBfR1JOX0ZMRCB8IElFRUU4MDIxMV9IVF9DQVBfU0dJXzIwIHwKLQkJICAgICAgIElFRUU4MDIx MV9IVF9DQVBfTUFYX0FNU0RVIHwKLQkJICAgICAgICgxIDw8IElFRUU4MDIxMV9IVF9DQVBfUlhf U1RCQ19TSElGVCksCisJCSAgICAgICBJRUVFODAyMTFfSFRfQ0FQX01BWF9BTVNEVSB8ICgxIDw8 IElFRUU4MDIxMV9IVF9DQVBfUlhfU1RCQ19TSElGVCksCiAJCS5odF9zdXBwb3J0ZWQgPSAxLAog CQkuYW1wZHVfZmFjdG9yID0gSUVFRTgwMjExX0hUX01BWF9BTVBEVV8xNkssCiAJCS5hbXBkdV9k ZW5zaXR5ID0gSUVFRTgwMjExX0hUX01QRFVfREVOU0lUWV9OT05FLApAQCAtMjYwLDEwICsyNTks OCBAQCBzdGF0aWMgdm9pZCB3ZnhfZnJlZV9jb21tb24odm9pZCAqZGF0YSkKIAlpZWVlODAyMTFf ZnJlZV9odyh3ZGV2LT5odyk7CiB9CiAKLXN0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24o c3RydWN0IGRldmljZSAqZGV2LAotCQkJCWNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAq cGRhdGEsCi0JCQkJY29uc3Qgc3RydWN0IHdmeF9od2J1c19vcHMgKmh3YnVzX29wcywKLQkJCQl2 b2lkICpod2J1c19wcml2KQorc3RydWN0IHdmeF9kZXYgKndmeF9pbml0X2NvbW1vbihzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3ZnhfcGxhdGZvcm1fZGF0YSAqcGRhdGEsCisJCQkJ Y29uc3Qgc3RydWN0IHdmeF9od2J1c19vcHMgKmh3YnVzX29wcywgdm9pZCAqaHdidXNfcHJpdikK IHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodzsKIAlzdHJ1Y3Qgd2Z4X2RldiAqd2RldjsKQEAg LTI4OCw5ICsyODUsOCBAQCBzdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9uKHN0cnVjdCBk ZXZpY2UgKmRldiwKIAlody0+cXVldWVzID0gNDsKIAlody0+bWF4X3JhdGVzID0gODsKIAlody0+ bWF4X3JhdGVfdHJpZXMgPSA4OwotCWh3LT5leHRyYV90eF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1 Y3Qgd2Z4X2hpZl9tc2cpCi0JCQkJKyBzaXplb2Yoc3RydWN0IHdmeF9oaWZfcmVxX3R4KQotCQkJ CSsgNCAvKiBhbGlnbm1lbnQgKi8gKyA4IC8qIFRLSVAgSVYgKi87CisJaHctPmV4dHJhX3R4X2hl YWRyb29tID0gc2l6ZW9mKHN0cnVjdCB3ZnhfaGlmX21zZykgKyBzaXplb2Yoc3RydWN0IHdmeF9o aWZfcmVxX3R4KSArCisJCQkJNCAvKiBhbGlnbm1lbnQgKi8gKyA4IC8qIFRLSVAgSVYgKi87CiAJ aHctPndpcGh5LT5pbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTikg fAogCQkJCSAgICAgQklUKE5MODAyMTFfSUZUWVBFX0FESE9DKSB8CiAJCQkJICAgICBCSVQoTkw4 MDIxMV9JRlRZUEVfQVApOwpAQCAtMzA4LDggKzMwNCw3IEBAIHN0cnVjdCB3ZnhfZGV2ICp3Znhf aW5pdF9jb21tb24oc3RydWN0IGRldmljZSAqZGV2LAogCWh3LT53aXBoeS0+aWZhY2VfY29tYmlu YXRpb25zID0gd2Z4X2lmYWNlX2NvbWJpbmF0aW9uczsKIAlody0+d2lwaHktPmJhbmRzW05MODAy MTFfQkFORF8yR0haXSA9IGRldm1fa21hbGxvYyhkZXYsIHNpemVvZih3ZnhfYmFuZF8yZ2h6KSwg R0ZQX0tFUk5FTCk7CiAJLyogRklYTUU6IGFsc28gY29weSB3ZnhfcmF0ZXMgYW5kIHdmeF8yZ2h6 X2NoYW50YWJsZSAqLwotCW1lbWNweShody0+d2lwaHktPmJhbmRzW05MODAyMTFfQkFORF8yR0ha XSwgJndmeF9iYW5kXzJnaHosCi0JICAgICAgIHNpemVvZih3ZnhfYmFuZF8yZ2h6KSk7CisJbWVt Y3B5KGh3LT53aXBoeS0+YmFuZHNbTkw4MDIxMV9CQU5EXzJHSFpdLCAmd2Z4X2JhbmRfMmdoeiwg c2l6ZW9mKHdmeF9iYW5kXzJnaHopKTsKIAogCXdkZXYgPSBody0+cHJpdjsKIAl3ZGV2LT5odyA9 IGh3OwpAQCAtMzE3LDEwICszMTIsOCBAQCBzdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9u KHN0cnVjdCBkZXZpY2UgKmRldiwKIAl3ZGV2LT5od2J1c19vcHMgPSBod2J1c19vcHM7CiAJd2Rl di0+aHdidXNfcHJpdiA9IGh3YnVzX3ByaXY7CiAJbWVtY3B5KCZ3ZGV2LT5wZGF0YSwgcGRhdGEs IHNpemVvZigqcGRhdGEpKTsKLQlvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYtPm9mX25vZGUs ICJjb25maWctZmlsZSIsCi0JCQkJJndkZXYtPnBkYXRhLmZpbGVfcGRzKTsKLQl3ZGV2LT5wZGF0 YS5ncGlvX3dha2V1cCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgIndha2V1cCIsCi0J CQkJCQkJICBHUElPRF9PVVRfTE9XKTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYtPm9m X25vZGUsICJjb25maWctZmlsZSIsICZ3ZGV2LT5wZGF0YS5maWxlX3Bkcyk7CisJd2Rldi0+cGRh dGEuZ3Bpb193YWtldXAgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJ3YWtldXAiLCBH UElPRF9PVVRfTE9XKTsKIAlpZiAoSVNfRVJSKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKSkKIAkJ cmV0dXJuIE5VTEw7CiAJaWYgKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKQpAQCAtMzMwLDggKzMy Myw3IEBAIHN0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24oc3RydWN0IGRldmljZSAqZGV2 LAogCW11dGV4X2luaXQoJndkZXYtPnJ4X3N0YXRzX2xvY2spOwogCW11dGV4X2luaXQoJndkZXYt PnR4X3Bvd2VyX2xvb3BfaW5mb19sb2NrKTsKIAlpbml0X2NvbXBsZXRpb24oJndkZXYtPmZpcm13 YXJlX3JlYWR5KTsKLQlJTklUX0RFTEFZRURfV09SSygmd2Rldi0+Y29vbGluZ190aW1lb3V0X3dv cmssCi0JCQkgIHdmeF9jb29saW5nX3RpbWVvdXRfd29yayk7CisJSU5JVF9ERUxBWUVEX1dPUkso JndkZXYtPmNvb2xpbmdfdGltZW91dF93b3JrLCB3ZnhfY29vbGluZ190aW1lb3V0X3dvcmspOwog CXNrYl9xdWV1ZV9oZWFkX2luaXQoJndkZXYtPnR4X3BlbmRpbmcpOwogCWluaXRfd2FpdHF1ZXVl X2hlYWQoJndkZXYtPnR4X2RlcXVldWUpOwogCXdmeF9pbml0X2hpZl9jbWQoJndkZXYtPmhpZl9j bWQpOwpAQCAtMzg4LDI3ICszODAsMjcgQEAgaW50IHdmeF9wcm9iZShzdHJ1Y3Qgd2Z4X2RldiAq d2RldikKIAkJIHdkZXYtPmh3X2NhcHMuZmlybXdhcmVfYnVpbGQpOwogCiAJaWYgKHdmeF9hcGlf b2xkZXJfdGhhbih3ZGV2LCAxLCAwKSkgewotCQlkZXZfZXJyKHdkZXYtPmRldiwKLQkJCSJ1bnN1 cHBvcnRlZCBmaXJtd2FyZSBBUEkgdmVyc2lvbiAoZXhwZWN0IDEgd2hpbGUgZmlybXdhcmUgcmV0 dXJucyAlZClcbiIsCisJCWRldl9lcnIod2Rldi0+ZGV2LCAidW5zdXBwb3J0ZWQgZmlybXdhcmUg QVBJIHZlcnNpb24gKGV4cGVjdCAxIHdoaWxlIGZpcm13YXJlIHJldHVybnMgJWQpXG4iLAogCQkJ d2Rldi0+aHdfY2Fwcy5hcGlfdmVyc2lvbl9tYWpvcik7CiAJCWVyciA9IC1FTk9UU1VQUDsKIAkJ Z290byBlcnIwOwogCX0KIAogCWlmICh3ZGV2LT5od19jYXBzLmxpbmtfbW9kZSA9PSBTRUNfTElO S19FTkZPUkNFRCkgewotCQlkZXZfZXJyKHdkZXYtPmRldiwKLQkJCSJjaGlwIHJlcXVpcmUgc2Vj dXJlX2xpbmssIGJ1dCBjYW4ndCBuZWdvdGlhdGUgaXRcbiIpOworCQlkZXZfZXJyKHdkZXYtPmRl diwgImNoaXAgcmVxdWlyZSBzZWN1cmVfbGluaywgYnV0IGNhbid0IG5lZ290aWF0ZSBpdFxuIik7 CiAJCWdvdG8gZXJyMDsKIAl9CiAKIAlpZiAod2Rldi0+aHdfY2Fwcy5yZWdpb25fc2VsX21vZGUp IHsKLQkJd2Rldi0+aHctPndpcGh5LT5iYW5kc1tOTDgwMjExX0JBTkRfMkdIWl0tPmNoYW5uZWxz WzExXS5mbGFncyB8PSBJRUVFODAyMTFfQ0hBTl9OT19JUjsKLQkJd2Rldi0+aHctPndpcGh5LT5i YW5kc1tOTDgwMjExX0JBTkRfMkdIWl0tPmNoYW5uZWxzWzEyXS5mbGFncyB8PSBJRUVFODAyMTFf Q0hBTl9OT19JUjsKLQkJd2Rldi0+aHctPndpcGh5LT5iYW5kc1tOTDgwMjExX0JBTkRfMkdIWl0t PmNoYW5uZWxzWzEzXS5mbGFncyB8PSBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRDsKKwkJd2Rldi0+ aHctPndpcGh5LT5iYW5kc1tOTDgwMjExX0JBTkRfMkdIWl0tPmNoYW5uZWxzWzExXS5mbGFncyB8 PQorCQkJSUVFRTgwMjExX0NIQU5fTk9fSVI7CisJCXdkZXYtPmh3LT53aXBoeS0+YmFuZHNbTkw4 MDIxMV9CQU5EXzJHSFpdLT5jaGFubmVsc1sxMl0uZmxhZ3MgfD0KKwkJCUlFRUU4MDIxMV9DSEFO X05PX0lSOworCQl3ZGV2LT5ody0+d2lwaHktPmJhbmRzW05MODAyMTFfQkFORF8yR0haXS0+Y2hh bm5lbHNbMTNdLmZsYWdzIHw9CisJCQlJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRDsKIAl9CiAKLQlk ZXZfZGJnKHdkZXYtPmRldiwgInNlbmRpbmcgY29uZmlndXJhdGlvbiBmaWxlICVzXG4iLAotCQl3 ZGV2LT5wZGF0YS5maWxlX3Bkcyk7CisJZGV2X2RiZyh3ZGV2LT5kZXYsICJzZW5kaW5nIGNvbmZp Z3VyYXRpb24gZmlsZSAlc1xuIiwgd2Rldi0+cGRhdGEuZmlsZV9wZHMpOwogCWVyciA9IHdmeF9z ZW5kX3BkYXRhX3Bkcyh3ZGV2KTsKIAlpZiAoZXJyIDwgMCAmJiBlcnIgIT0gLUVOT0VOVCkKIAkJ Z290byBlcnIwOwpAQCAtNDI0LDggKzQxNiw3IEBAIGludCB3ZnhfcHJvYmUoc3RydWN0IHdmeF9k ZXYgKndkZXYpCiAKIAl3ZGV2LT5wZGF0YS5ncGlvX3dha2V1cCA9IGdwaW9fc2F2ZWQ7CiAJaWYg KHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKSB7Ci0JCWRldl9kYmcod2Rldi0+ZGV2LAotCQkJImVu YWJsZSAncXVpZXNjZW50JyBwb3dlciBtb2RlIHdpdGggd2FrZXVwIEdQSU8gYW5kIFBEUyBmaWxl ICVzXG4iLAorCQlkZXZfZGJnKHdkZXYtPmRldiwgImVuYWJsZSAncXVpZXNjZW50JyBwb3dlciBt b2RlIHdpdGggd2FrZXVwIEdQSU8gYW5kIFBEUyBmaWxlICVzXG4iLAogCQkJd2Rldi0+cGRhdGEu ZmlsZV9wZHMpOwogCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAod2Rldi0+cGRhdGEuZ3Bpb193 YWtldXAsIDEpOwogCQl3ZnhfY29udHJvbF9yZWdfd3JpdGUod2RldiwgMCk7CkBAIC00MzYsMTkg KzQyNywxNiBAQCBpbnQgd2Z4X3Byb2JlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQogCiAJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUod2Rldi0+YWRkcmVzc2VzKTsgaSsrKSB7CiAJCWV0aF96ZXJv X2FkZHIod2Rldi0+YWRkcmVzc2VzW2ldLmFkZHIpOwotCQllcnIgPSBvZl9nZXRfbWFjX2FkZHJl c3Mod2Rldi0+ZGV2LT5vZl9ub2RlLAotCQkJCQkgd2Rldi0+YWRkcmVzc2VzW2ldLmFkZHIpOwor CQllcnIgPSBvZl9nZXRfbWFjX2FkZHJlc3Mod2Rldi0+ZGV2LT5vZl9ub2RlLCB3ZGV2LT5hZGRy ZXNzZXNbaV0uYWRkcik7CiAJCWlmICghZXJyKQogCQkJd2Rldi0+YWRkcmVzc2VzW2ldLmFkZHJb RVRIX0FMRU4gLSAxXSArPSBpOwogCQllbHNlCi0JCQlldGhlcl9hZGRyX2NvcHkod2Rldi0+YWRk cmVzc2VzW2ldLmFkZHIsCi0JCQkJCXdkZXYtPmh3X2NhcHMubWFjX2FkZHJbaV0pOworCQkJZXRo ZXJfYWRkcl9jb3B5KHdkZXYtPmFkZHJlc3Nlc1tpXS5hZGRyLCB3ZGV2LT5od19jYXBzLm1hY19h ZGRyW2ldKTsKIAkJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHdkZXYtPmFkZHJlc3Nlc1tpXS5h ZGRyKSkgewogCQkJZGV2X3dhcm4od2Rldi0+ZGV2LCAidXNpbmcgcmFuZG9tIE1BQyBhZGRyZXNz XG4iKTsKIAkJCWV0aF9yYW5kb21fYWRkcih3ZGV2LT5hZGRyZXNzZXNbaV0uYWRkcik7CiAJCX0K LQkJZGV2X2luZm8od2Rldi0+ZGV2LCAiTUFDIGFkZHJlc3MgJWQ6ICVwTVxuIiwgaSwKLQkJCSB3 ZGV2LT5hZGRyZXNzZXNbaV0uYWRkcik7CisJCWRldl9pbmZvKHdkZXYtPmRldiwgIk1BQyBhZGRy ZXNzICVkOiAlcE1cbiIsIGksIHdkZXYtPmFkZHJlc3Nlc1tpXS5hZGRyKTsKIAl9CiAJd2Rldi0+ aHctPndpcGh5LT5uX2FkZHJlc3NlcyA9IEFSUkFZX1NJWkUod2Rldi0+YWRkcmVzc2VzKTsKIAl3 ZGV2LT5ody0+d2lwaHktPmFkZHJlc3NlcyA9IHdkZXYtPmFkZHJlc3NlczsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9tYWluLmgK aW5kZXggNjhhNzgwN2M1ZmI2Li5kZWY2MjcwYmYxMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3Rh Z2luZy93ZngvbWFpbi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5oCkBAIC0yOSwx MCArMjksOCBAQCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgewogCWJvb2wgdXNlX3Jpc2luZ19j bGs7CiB9OwogCi1zdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9uKHN0cnVjdCBkZXZpY2Ug KmRldiwKLQkJCQljb25zdCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgKnBkYXRhLAotCQkJCWNv bnN0IHN0cnVjdCB3ZnhfaHdidXNfb3BzICpod2J1c19vcHMsCi0JCQkJdm9pZCAqaHdidXNfcHJp dik7CitzdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9uKHN0cnVjdCBkZXZpY2UgKmRldiwg Y29uc3Qgc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhICpwZGF0YSwKKwkJCQljb25zdCBzdHJ1Y3Qg d2Z4X2h3YnVzX29wcyAqaHdidXNfb3BzLCB2b2lkICpod2J1c19wcml2KTsKIAogaW50IHdmeF9w cm9iZShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7CiB2b2lkIHdmeF9yZWxlYXNlKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvcXVldWUuYyBiL2Ry aXZlcnMvc3RhZ2luZy93ZngvcXVldWUuYwppbmRleCA3MWM2ZWY5NGE5MDQuLjliNDllNDFmMDZj ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC9xdWV1ZS5jCisrKyBiL2RyaXZlcnMv c3RhZ2luZy93ZngvcXVldWUuYwpAQCAtMzgsOCArMzgsNyBAQCB2b2lkIHdmeF90eF9mbHVzaChz dHJ1Y3Qgd2Z4X2RldiAqd2RldikKIAogCXdmeF90eF9sb2NrKHdkZXYpOwogCW11dGV4X2xvY2so JndkZXYtPmhpZl9jbWQubG9jayk7Ci0JcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHdkZXYtPmhp Zi50eF9idWZmZXJzX2VtcHR5LAotCQkJCSAhd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCwKKwly ZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQod2Rldi0+aGlmLnR4X2J1ZmZlcnNfZW1wdHksICF3ZGV2 LT5oaWYudHhfYnVmZmVyc191c2VkLAogCQkJCSBtc2Vjc190b19qaWZmaWVzKDMwMDApKTsKIAlp ZiAoIXJldCkgewogCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJjYW5ub3QgZmx1c2ggdHggYnVmZmVy cyAoJWQgc3RpbGwgYnVzeSlcbiIsCkBAIC03Niw4ICs3NSw3IEBAIHZvaWQgd2Z4X3R4X3F1ZXVl c19pbml0KHN0cnVjdCB3ZnhfdmlmICp3dmlmKQogCiBib29sIHdmeF90eF9xdWV1ZV9lbXB0eShz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwgc3RydWN0IHdmeF9xdWV1ZSAqcXVldWUpCiB7Ci0JcmV0dXJu IHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzcygmcXVldWUtPm5vcm1hbCkgJiYKLQkgICAgICAgc2ti X3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZxdWV1ZS0+Y2FiKTsKKwlyZXR1cm4gc2tiX3F1ZXVlX2Vt cHR5X2xvY2tsZXNzKCZxdWV1ZS0+bm9ybWFsKSAmJiBza2JfcXVldWVfZW1wdHlfbG9ja2xlc3Mo JnF1ZXVlLT5jYWIpOwogfQogCiB2b2lkIHdmeF90eF9xdWV1ZXNfY2hlY2tfZW1wdHkoc3RydWN0 IHdmeF92aWYgKnd2aWYpCkBAIC05MSw4ICs4OSw3IEBAIHZvaWQgd2Z4X3R4X3F1ZXVlc19jaGVj a19lbXB0eShzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZikKIH0KIAogc3RhdGljIHZvaWQgX193ZnhfdHhf cXVldWVfZHJvcChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiwKLQkJCQlzdHJ1Y3Qgc2tfYnVmZl9oZWFk ICpza2JfcXVldWUsCi0JCQkJc3RydWN0IHNrX2J1ZmZfaGVhZCAqZHJvcHBlZCkKKwkJCQlzdHJ1 Y3Qgc2tfYnVmZl9oZWFkICpza2JfcXVldWUsIHN0cnVjdCBza19idWZmX2hlYWQgKmRyb3BwZWQp CiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiwgKnRtcDsKIApAQCAtMTMwLDggKzEyNyw3IEBAIHZv aWQgd2Z4X3BlbmRpbmdfZHJvcChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IHNrX2J1ZmZf aGVhZCAqZHJvcHBlZCkKIAlzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZjsKIAlzdHJ1Y3Qgc2tfYnVm ZiAqc2tiOwogCi0JV0FSTighd2Rldi0+Y2hpcF9mcm96ZW4sICIlcyBzaG91bGQgb25seSBiZSB1 c2VkIHRvIHJlY292ZXIgYSBmcm96ZW4gZGV2aWNlIiwKLQkgICAgIF9fZnVuY19fKTsKKwlXQVJO KCF3ZGV2LT5jaGlwX2Zyb3plbiwgIiVzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gcmVjb3ZlciBh IGZyb3plbiBkZXZpY2UiLCBfX2Z1bmNfXyk7CiAJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgm d2Rldi0+dHhfcGVuZGluZykpICE9IE5VTEwpIHsKIAkJaGlmID0gKHN0cnVjdCB3ZnhfaGlmX21z ZyAqKXNrYi0+ZGF0YTsKIAkJd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFj ZSk7CkBAIC0xODcsMjMgKzE4MywyMCBAQCB2b2lkIHdmeF9wZW5kaW5nX2R1bXBfb2xkX2ZyYW1l cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdW5zaWduZWQgaW50IGxpbWl0X21zKQogCXNrYl9xdWV1 ZV93YWxrKCZ3ZGV2LT50eF9wZW5kaW5nLCBza2IpIHsKIAkJdHhfcHJpdiA9IHdmeF9za2JfdHhf cHJpdihza2IpOwogCQlyZXEgPSB3Znhfc2tiX3R4cmVxKHNrYik7Ci0JCWlmIChrdGltZV9hZnRl cihub3csIGt0aW1lX2FkZF9tcyh0eF9wcml2LT54bWl0X3RpbWVzdGFtcCwKLQkJCQkJCSAgbGlt aXRfbXMpKSkgeworCQlpZiAoa3RpbWVfYWZ0ZXIobm93LCBrdGltZV9hZGRfbXModHhfcHJpdi0+ eG1pdF90aW1lc3RhbXAsIGxpbWl0X21zKSkpIHsKIAkJCWlmIChmaXJzdCkgewogCQkJCWRldl9p bmZvKHdkZXYtPmRldiwgImZyYW1lcyBzdHVjayBpbiBmaXJtd2FyZSBzaW5jZSAlZG1zIG9yIG1v cmU6XG4iLAogCQkJCQkgbGltaXRfbXMpOwogCQkJCWZpcnN0ID0gZmFsc2U7CiAJCQl9CiAJCQlk ZXZfaW5mbyh3ZGV2LT5kZXYsICIgICBpZCAlMDh4IHNlbnQgJWxsZG1zIGFnb1xuIiwKLQkJCQkg cmVxLT5wYWNrZXRfaWQsCi0JCQkJIGt0aW1lX21zX2RlbHRhKG5vdywgdHhfcHJpdi0+eG1pdF90 aW1lc3RhbXApKTsKKwkJCQkgcmVxLT5wYWNrZXRfaWQsIGt0aW1lX21zX2RlbHRhKG5vdywgdHhf cHJpdi0+eG1pdF90aW1lc3RhbXApKTsKIAkJfQogCX0KIAlzcGluX3VubG9ja19iaCgmd2Rldi0+ dHhfcGVuZGluZy5sb2NrKTsKIH0KIAotdW5zaWduZWQgaW50IHdmeF9wZW5kaW5nX2dldF9wa3Rf dXNfZGVsYXkoc3RydWN0IHdmeF9kZXYgKndkZXYsCi0JCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNr YikKK3Vuc2lnbmVkIGludCB3ZnhfcGVuZGluZ19nZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3Znhf ZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCWt0aW1lX3Qgbm93ID0ga3RpbWVf Z2V0KCk7CiAJc3RydWN0IHdmeF90eF9wcml2ICp0eF9wcml2ID0gd2Z4X3NrYl90eF9wcml2KHNr Yik7CkBAIC0yNjcsOCArMjYwLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp3ZnhfdHhfcXVl dWVzX2dldF9za2Ioc3RydWN0IHdmeF9kZXYgKndkZXYpCiAJCQkgKi8KIAkJCWhpZiA9IChzdHJ1 Y3Qgd2Z4X2hpZl9tc2cgKilza2ItPmRhdGE7CiAJCQlXQVJOX09OKGhpZi0+aW50ZXJmYWNlICE9 IHd2aWYtPmlkKTsKLQkJCVdBUk5fT04ocXVldWVzW2ldICE9Ci0JCQkJJnd2aWYtPnR4X3F1ZXVl W3NrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpXSk7CisJCQlXQVJOX09OKHF1ZXVlc1tpXSAhPSAm d3ZpZi0+dHhfcXVldWVbc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYildKTsKIAkJCWF0b21pY19p bmMoJnF1ZXVlc1tpXS0+cGVuZGluZ19mcmFtZXMpOwogCQkJdHJhY2VfcXVldWVzX3N0YXRzKHdk ZXYsIHF1ZXVlc1tpXSk7CiAJCQlyZXR1cm4gc2tiOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFn aW5nL3dmeC9xdWV1ZS5oIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9xdWV1ZS5oCmluZGV4IDY2NTk2 YTlhYmUzMC4uMjg2MGM1NmZiOTMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3F1 ZXVlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9xdWV1ZS5oCkBAIC0zOCw4ICszOCw3IEBA IHZvaWQgd2Z4X3R4X3F1ZXVlX2Ryb3Aoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCB3Znhf cXVldWUgKnF1ZXVlLAogCiBzdHJ1Y3Qgc2tfYnVmZiAqd2Z4X3BlbmRpbmdfZ2V0KHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2LCB1MzIgcGFja2V0X2lkKTsKIHZvaWQgd2Z4X3BlbmRpbmdfZHJvcChzdHJ1 Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZHJvcHBlZCk7Ci11bnNpZ25l ZCBpbnQgd2Z4X3BlbmRpbmdfZ2V0X3BrdF91c19kZWxheShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwK LQkJCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK3Vuc2lnbmVkIGludCB3ZnhfcGVuZGluZ19n ZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti KTsKIHZvaWQgd2Z4X3BlbmRpbmdfZHVtcF9vbGRfZnJhbWVzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCB1bnNpZ25lZCBpbnQgbGltaXRfbXMpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3RhZ2luZy93Zngvc2Nhbi5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9zY2FuLmMKaW5kZXggZjYx YzZiMmRiMzUyLi5jZTBhZTRjOTExOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93Zngv c2Nhbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvc2Nhbi5jCkBAIC0xMiw4ICsxMiw3IEBA CiAjaW5jbHVkZSAic3RhLmgiCiAjaW5jbHVkZSAiaGlmX3R4X21pYi5oIgogCi1zdGF0aWMgdm9p ZCB3ZnhfaWVlZTgwMjExX3NjYW5fY29tcGxldGVkX2NvbXBhdChzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpodywKLQkJCQkJCWJvb2wgYWJvcnRlZCkKK3N0YXRpYyB2b2lkIHdmeF9pZWVlODAyMTFfc2Nh bl9jb21wbGV0ZWRfY29tcGF0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIGFib3J0ZWQp CiB7CiAJc3RydWN0IGNmZzgwMjExX3NjYW5faW5mbyBpbmZvID0gewogCQkuYWJvcnRlZCA9IGFi b3J0ZWQsCkBAIC0yMiwxMyArMjEsMTEgQEAgc3RhdGljIHZvaWQgd2Z4X2llZWU4MDIxMV9zY2Fu X2NvbXBsZXRlZF9jb21wYXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJaWVlZTgwMjExX3Nj YW5fY29tcGxldGVkKGh3LCAmaW5mbyk7CiB9CiAKLXN0YXRpYyBpbnQgdXBkYXRlX3Byb2JlX3Rt cGwoc3RydWN0IHdmeF92aWYgKnd2aWYsCi0JCQkgICAgIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3Jl cXVlc3QgKnJlcSkKK3N0YXRpYyBpbnQgdXBkYXRlX3Byb2JlX3RtcGwoc3RydWN0IHdmeF92aWYg Knd2aWYsIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3Qgc2tf YnVmZiAqc2tiOwogCi0Jc2tiID0gaWVlZTgwMjExX3Byb2JlcmVxX2dldCh3dmlmLT53ZGV2LT5o dywgd3ZpZi0+dmlmLT5hZGRyLAotCQkJCSAgICAgTlVMTCwgMCwgcmVxLT5pZV9sZW4pOworCXNr YiA9IGllZWU4MDIxMV9wcm9iZXJlcV9nZXQod3ZpZi0+d2Rldi0+aHcsIHd2aWYtPnZpZi0+YWRk ciwgTlVMTCwgMCwgcmVxLT5pZV9sZW4pOwogCWlmICghc2tiKQogCQlyZXR1cm4gLUVOT01FTTsK IApAQCAtMzgsOCArMzUsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wcm9iZV90bXBsKHN0cnVjdCB3 ZnhfdmlmICp3dmlmLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHNlbmRfc2Nhbl9yZXEo c3RydWN0IHdmeF92aWYgKnd2aWYsCi0JCQkgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAq cmVxLCBpbnQgc3RhcnRfaWR4KQorc3RhdGljIGludCBzZW5kX3NjYW5fcmVxKHN0cnVjdCB3Znhf dmlmICp3dmlmLCBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEsIGludCBzdGFydF9p ZHgpCiB7CiAJaW50IGksIHJldDsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoX3N0YXJ0 LCAqY2hfY3VyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9zdGEuYyBiL2RyaXZl cnMvc3RhZ2luZy93Zngvc3RhLmMKaW5kZXggNjIwZDhjOTEyZjk1Li4wNzA1NDY2NmZlNzYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93Zngvc3RhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5n L3dmeC9zdGEuYwpAQCAtNDAsOCArNDAsNyBAQCB1MzIgd2Z4X3JhdGVfbWFza190b19odyhzdHJ1 Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHJhdGVzKQogCiB2b2lkIHdmeF9jb29saW5nX3RpbWVvdXRf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0Jc3RydWN0IHdmeF9kZXYgKndkZXYg PSBjb250YWluZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLAotCQkJCQkgICAgc3RydWN0IHdm eF9kZXYsCisJc3RydWN0IHdmeF9kZXYgKndkZXYgPSBjb250YWluZXJfb2YodG9fZGVsYXllZF93 b3JrKHdvcmspLCBzdHJ1Y3Qgd2Z4X2RldiwKIAkJCQkJICAgIGNvb2xpbmdfdGltZW91dF93b3Jr KTsKIAogCXdkZXYtPmNoaXBfZnJvemVuID0gdHJ1ZTsKQEAgLTkxLDEwICs5MCw4IEBAIHN0YXRp YyB2b2lkIHdmeF9maWx0ZXJfYmVhY29uKHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBib29sIGZpbHRl cl9iZWFjb24pCiAJaWYgKCFmaWx0ZXJfYmVhY29uKSB7CiAJCXdmeF9oaWZfYmVhY29uX2ZpbHRl cl9jb250cm9sKHd2aWYsIDAsIDEpOwogCX0gZWxzZSB7Ci0JCXdmeF9oaWZfc2V0X2JlYWNvbl9m aWx0ZXJfdGFibGUod3ZpZiwgQVJSQVlfU0laRShmaWx0ZXJfaWVzKSwKLQkJCQkJCWZpbHRlcl9p ZXMpOwotCQl3ZnhfaGlmX2JlYWNvbl9maWx0ZXJfY29udHJvbCh3dmlmLAotCQkJCQkgICAgICBI SUZfQkVBQ09OX0ZJTFRFUl9FTkFCTEUsIDApOworCQl3ZnhfaGlmX3NldF9iZWFjb25fZmlsdGVy X3RhYmxlKHd2aWYsIEFSUkFZX1NJWkUoZmlsdGVyX2llcyksIGZpbHRlcl9pZXMpOworCQl3Znhf aGlmX2JlYWNvbl9maWx0ZXJfY29udHJvbCh3dmlmLCBISUZfQkVBQ09OX0ZJTFRFUl9FTkFCTEUs IDApOwogCX0KIH0KIApAQCAtMTM1LDggKzEzMiw3IEBAIHZvaWQgd2Z4X2NvbmZpZ3VyZV9maWx0 ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHVuc2lnbmVkIGludCBjaGFuZ2VkX2ZsYWdzLAog CQkJZmlsdGVyX2Jzc2lkID0gdHJ1ZTsKIAogCQkvKiBJbiBBUCBtb2RlLCBjaGlwIGNhbiByZXBs eSB0byBwcm9iZSByZXF1ZXN0IGl0c2VsZiAqLwotCQlpZiAoKnRvdGFsX2ZsYWdzICYgRklGX1BS T0JFX1JFUSAmJgotCQkgICAgd3ZpZi0+dmlmLT50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSB7 CisJCWlmICgqdG90YWxfZmxhZ3MgJiBGSUZfUFJPQkVfUkVRICYmIHd2aWYtPnZpZi0+dHlwZSA9 PSBOTDgwMjExX0lGVFlQRV9BUCkgewogCQkJZGV2X2RiZyh3ZGV2LT5kZXYsICJkbyBub3QgZm9y d2FyZCBwcm9iZSByZXF1ZXN0IGluIEFQIG1vZGVcbiIpOwogCQkJKnRvdGFsX2ZsYWdzICY9IH5G SUZfUFJPQkVfUkVROwogCQl9CkBAIC0yMDgsMTAgKzIwNCw4IEBAIGludCB3ZnhfdXBkYXRlX3Bt KHN0cnVjdCB3ZnhfdmlmICp3dmlmKQogCWlmICh3dmlmLT51YXBzZF9tYXNrKQogCQlwc190aW1l b3V0ID0gMDsKIAotCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZ3dmlmLT5zZXRf cG1fbW9kZV9jb21wbGV0ZSwKLQkJCQkJIFRVX1RPX0pJRkZJRVMoNTEyKSkpCi0JCWRldl93YXJu KHd2aWYtPndkZXYtPmRldiwKLQkJCSAidGltZW91dCB3aGlsZSB3YWl0aW5nIG9mIHNldF9wbV9t b2RlX2NvbXBsZXRlXG4iKTsKKwlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmd3Zp Zi0+c2V0X3BtX21vZGVfY29tcGxldGUsIFRVX1RPX0pJRkZJRVMoNTEyKSkpCisJCWRldl93YXJu KHd2aWYtPndkZXYtPmRldiwgInRpbWVvdXQgd2hpbGUgd2FpdGluZyBvZiBzZXRfcG1fbW9kZV9j b21wbGV0ZVxuIik7CiAJcmV0dXJuIHdmeF9oaWZfc2V0X3BtKHd2aWYsIHBzLCBwc190aW1lb3V0 KTsKIH0KIApAQCAtMjI3LDggKzIyMSw3IEBAIGludCB3ZnhfY29uZl90eChzdHJ1Y3QgaWVlZTgw MjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAltdXRleF9sb2NrKCZ3ZGV2 LT5jb25mX211dGV4KTsKIAlhc3NpZ25fYml0KHF1ZXVlLCAmd3ZpZi0+dWFwc2RfbWFzaywgcGFy YW1zLT51YXBzZCk7CiAJd2Z4X2hpZl9zZXRfZWRjYV9xdWV1ZV9wYXJhbXMod3ZpZiwgcXVldWUs IHBhcmFtcyk7Ci0JaWYgKHd2aWYtPnZpZi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9O ICYmCi0JICAgIG9sZF91YXBzZCAhPSB3dmlmLT51YXBzZF9tYXNrKSB7CisJaWYgKHd2aWYtPnZp Zi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OICYmIG9sZF91YXBzZCAhPSB3dmlmLT51 YXBzZF9tYXNrKSB7CiAJCXdmeF9oaWZfc2V0X3VhcHNkX2luZm8od3ZpZiwgd3ZpZi0+dWFwc2Rf bWFzayk7CiAJCXdmeF91cGRhdGVfcG0od3ZpZik7CiAJfQpAQCAtMjY0LDE3ICsyNTcsMTUgQEAg dm9pZCB3ZnhfZXZlbnRfcmVwb3J0X3Jzc2koc3RydWN0IHdmeF92aWYgKnd2aWYsIHU4IHJhd19y Y3BpX3Jzc2kpCiAKIHN0YXRpYyB2b2lkIHdmeF9iZWFjb25fbG9zc193b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIHsKLQlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IGNvbnRhaW5lcl9vZih0 b19kZWxheWVkX3dvcmsod29yayksCi0JCQkJCSAgICBzdHJ1Y3Qgd2Z4X3ZpZiwgYmVhY29uX2xv c3Nfd29yayk7CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSBjb250YWluZXJfb2YodG9fZGVsYXll ZF93b3JrKHdvcmspLCBzdHJ1Y3Qgd2Z4X3ZpZiwKKwkJCQkJICAgIGJlYWNvbl9sb3NzX3dvcmsp OwogCXN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mID0gJnd2aWYtPnZpZi0+YnNz X2NvbmY7CiAKIAlpZWVlODAyMTFfYmVhY29uX2xvc3Mod3ZpZi0+dmlmKTsKLQlzY2hlZHVsZV9k ZWxheWVkX3dvcmsodG9fZGVsYXllZF93b3JrKHdvcmspLAotCQkJICAgICAgbXNlY3NfdG9famlm Zmllcyhic3NfY29uZi0+YmVhY29uX2ludCkpOworCXNjaGVkdWxlX2RlbGF5ZWRfd29yayh0b19k ZWxheWVkX3dvcmsod29yayksIG1zZWNzX3RvX2ppZmZpZXMoYnNzX2NvbmYtPmJlYWNvbl9pbnQp KTsKIH0KIAotdm9pZCB3Znhfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIx MV9odyAqaHcsCi0JCQkJIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIGludCBpZHgpCit2b2lk IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3Ry dWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCkKIHsKIAlzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp ZiA9IChzdHJ1Y3Qgd2Z4X3ZpZiAqKXZpZi0+ZHJ2X3ByaXY7CiAKQEAgLTI5OCw4ICsyODksNyBA QCB2b2lkIHdmeF9yZXNldChzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZikKIAkJd2Z4X3VwZGF0ZV9wbSh3 dmlmKTsKIH0KIAotaW50IHdmeF9zdGFfYWRkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1 Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAotCQlzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKQoraW50 IHdmeF9zdGFfYWRkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3Zp ZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKQogewogCXN0cnVjdCB3ZnhfdmlmICp3 dmlmID0gKHN0cnVjdCB3ZnhfdmlmICopdmlmLT5kcnZfcHJpdjsKIAlzdHJ1Y3Qgd2Z4X3N0YV9w cml2ICpzdGFfcHJpdiA9IChzdHJ1Y3Qgd2Z4X3N0YV9wcml2ICopJnN0YS0+ZHJ2X3ByaXY7CkBA IC0zMjEsOCArMzExLDcgQEAgaW50IHdmeF9zdGFfYWRkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3 LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCXJldHVybiAwOwogfQogCi1pbnQgd2Z4X3N0 YV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2 aWYsCi0JCSAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpCitpbnQgd2Z4X3N0YV9yZW1vdmUo c3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHN0cnVj dCBpZWVlODAyMTFfc3RhICpzdGEpCiB7CiAJc3RydWN0IHdmeF92aWYgKnd2aWYgPSAoc3RydWN0 IHdmeF92aWYgKil2aWYtPmRydl9wcml2OwogCXN0cnVjdCB3Znhfc3RhX3ByaXYgKnN0YV9wcml2 ID0gKHN0cnVjdCB3Znhfc3RhX3ByaXYgKikmc3RhLT5kcnZfcHJpdjsKQEAgLTM0MywxNSArMzMy LDEzIEBAIHN0YXRpYyBpbnQgd2Z4X3VwbG9hZF9hcF90ZW1wbGF0ZXMoc3RydWN0IHdmeF92aWYg Knd2aWYpCiAJc2tiID0gaWVlZTgwMjExX2JlYWNvbl9nZXQod3ZpZi0+d2Rldi0+aHcsIHd2aWYt PnZpZik7CiAJaWYgKCFza2IpCiAJCXJldHVybiAtRU5PTUVNOwotCXdmeF9oaWZfc2V0X3RlbXBs YXRlX2ZyYW1lKHd2aWYsIHNrYiwgSElGX1RNUExUX0JDTiwKLQkJCQkgICBBUElfUkFURV9JTkRF WF9CXzFNQlBTKTsKKwl3ZnhfaGlmX3NldF90ZW1wbGF0ZV9mcmFtZSh3dmlmLCBza2IsIEhJRl9U TVBMVF9CQ04sIEFQSV9SQVRFX0lOREVYX0JfMU1CUFMpOwogCWRldl9rZnJlZV9za2Ioc2tiKTsK IAogCXNrYiA9IGllZWU4MDIxMV9wcm9iZXJlc3BfZ2V0KHd2aWYtPndkZXYtPmh3LCB3dmlmLT52 aWYpOwogCWlmICghc2tiKQogCQlyZXR1cm4gLUVOT01FTTsKLQl3ZnhfaGlmX3NldF90ZW1wbGF0 ZV9mcmFtZSh3dmlmLCBza2IsIEhJRl9UTVBMVF9QUkJSRVMsCi0JCQkJICAgQVBJX1JBVEVfSU5E RVhfQl8xTUJQUyk7CisJd2Z4X2hpZl9zZXRfdGVtcGxhdGVfZnJhbWUod3ZpZiwgc2tiLCBISUZf VE1QTFRfUFJCUkVTLCBBUElfUkFURV9JTkRFWF9CXzFNQlBTKTsKIAlkZXZfa2ZyZWVfc2tiKHNr Yik7CiAJcmV0dXJuIDA7CiB9CkBAIC0zNjAsOCArMzQ3LDcgQEAgc3RhdGljIHZvaWQgd2Z4X3Nl dF9tZnBfYXAoc3RydWN0IHdmeF92aWYgKnd2aWYpCiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9 IGllZWU4MDIxMV9iZWFjb25fZ2V0KHd2aWYtPndkZXYtPmh3LCB3dmlmLT52aWYpOwogCWNvbnN0 IGludCBpZW9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24u dmFyaWFibGUpOwotCWNvbnN0IHUxNiAqcHRyID0gKHUxNiAqKWNmZzgwMjExX2ZpbmRfaWUoV0xB Tl9FSURfUlNOLAotCQkJCQkJIHNrYi0+ZGF0YSArIGllb2Zmc2V0LAorCWNvbnN0IHUxNiAqcHRy ID0gKHUxNiAqKWNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBza2ItPmRhdGEgKyBpZW9m ZnNldCwKIAkJCQkJCSBza2ItPmxlbiAtIGllb2Zmc2V0KTsKIAljb25zdCBpbnQgcGFpcndpc2Vf Y2lwaGVyX3N1aXRlX2NvdW50X29mZnNldCA9IDggLyBzaXplb2YodTE2KTsKIAljb25zdCBpbnQg cGFpcndpc2VfY2lwaGVyX3N1aXRlX3NpemUgPSA0IC8gc2l6ZW9mKHUxNik7CkBAIC00MTcsOCAr NDAzLDcgQEAgc3RhdGljIHZvaWQgd2Z4X2pvaW4oc3RydWN0IHdmeF92aWYgKnd2aWYpCiAKIAl3 ZnhfdHhfbG9ja19mbHVzaCh3dmlmLT53ZGV2KTsKIAotCWJzcyA9IGNmZzgwMjExX2dldF9ic3Mo d3ZpZi0+d2Rldi0+aHctPndpcGh5LCB3dmlmLT5jaGFubmVsLAotCQkJICAgICAgIGNvbmYtPmJz c2lkLCBOVUxMLCAwLAorCWJzcyA9IGNmZzgwMjExX2dldF9ic3Mod3ZpZi0+d2Rldi0+aHctPndp cGh5LCB3dmlmLT5jaGFubmVsLCBjb25mLT5ic3NpZCwgTlVMTCwgMCwKIAkJCSAgICAgICBJRUVF ODAyMTFfQlNTX1RZUEVfQU5ZLCBJRUVFODAyMTFfUFJJVkFDWV9BTlkpOwogCWlmICghYnNzICYm ICFjb25mLT5pYnNzX2pvaW5lZCkgewogCQl3ZnhfdHhfdW5sb2NrKHd2aWYtPndkZXYpOwpAQCAt NDcyLDggKzQ1Nyw3IEBAIHN0YXRpYyB2b2lkIHdmeF9qb2luX2ZpbmFsaXplKHN0cnVjdCB3Znhf dmlmICp3dmlmLAogCXJjdV9yZWFkX3VubG9jaygpOwogCiAJd3ZpZi0+am9pbl9pbl9wcm9ncmVz cyA9IGZhbHNlOwotCXdmeF9oaWZfc2V0X2Fzc29jaWF0aW9uX21vZGUod3ZpZiwgYW1wZHVfZGVu c2l0eSwgZ3JlZW5maWVsZCwKLQkJCQkgICAgIGluZm8tPnVzZV9zaG9ydF9wcmVhbWJsZSk7CisJ d2Z4X2hpZl9zZXRfYXNzb2NpYXRpb25fbW9kZSh3dmlmLCBhbXBkdV9kZW5zaXR5LCBncmVlbmZp ZWxkLCBpbmZvLT51c2Vfc2hvcnRfcHJlYW1ibGUpOwogCXdmeF9oaWZfa2VlcF9hbGl2ZV9wZXJp b2Qod3ZpZiwgMCk7CiAJLyogYmVhY29uX2xvc3NfY291bnQgaXMgZGVmaW5lZCB0byA3IGluIG5l dC9tYWM4MDIxMS9tbG1lLmMuIExldCdzIHVzZQogCSAqIHRoZSBzYW1lIHZhbHVlLgpAQCAtNTQx LDEwICs1MjUsOCBAQCB2b2lkIHdmeF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCiAJaWYgKGNoYW5nZWQgJiBCU1Nf Q0hBTkdFRF9CRUFDT05fSU5GTykgewogCQlpZiAodmlmLT50eXBlICE9IE5MODAyMTFfSUZUWVBF X1NUQVRJT04pCi0JCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogbWlzdW5kZXJzdG9vZCBjaGFu Z2U6IEJFQUNPTl9JTkZPXG4iLAotCQkJCSBfX2Z1bmNfXyk7Ci0JCXdmeF9oaWZfc2V0X2JlYWNv bl93YWtldXBfcGVyaW9kKHd2aWYsIGluZm8tPmR0aW1fcGVyaW9kLAotCQkJCQkJIGluZm8tPmR0 aW1fcGVyaW9kKTsKKwkJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBtaXN1bmRlcnN0b29kIGNo YW5nZTogQkVBQ09OX0lORk9cbiIsIF9fZnVuY19fKTsKKwkJd2Z4X2hpZl9zZXRfYmVhY29uX3dh a2V1cF9wZXJpb2Qod3ZpZiwgaW5mby0+ZHRpbV9wZXJpb2QsIGluZm8tPmR0aW1fcGVyaW9kKTsK IAkJLyogV2UgdGVtcG9yYXJ5IGZvcndhcmRlZCBiZWFjb24gZm9yIGpvaW4gcHJvY2Vzcy4gSXQg aXMgbm93IG5vCiAJCSAqIG1vcmUgbmVjZXNzYXJ5LgogCQkgKi8KQEAgLTU2Myw4ICs1NDUsNyBA QCB2b2lkIHdmeF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1 Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQl9CiAJfQogCi0JaWYgKGNoYW5nZWQgJiBCU1NfQ0hB TkdFRF9BUF9QUk9CRV9SRVNQIHx8Ci0JICAgIGNoYW5nZWQgJiBCU1NfQ0hBTkdFRF9CRUFDT04p CisJaWYgKGNoYW5nZWQgJiBCU1NfQ0hBTkdFRF9BUF9QUk9CRV9SRVNQIHx8IGNoYW5nZWQgJiBC U1NfQ0hBTkdFRF9CRUFDT04pCiAJCXdmeF91cGxvYWRfYXBfdGVtcGxhdGVzKHd2aWYpOwogCiAJ aWYgKGNoYW5nZWQgJiBCU1NfQ0hBTkdFRF9CRUFDT05fRU5BQkxFRCkKQEAgLTU4MSw4ICs1NjIs NyBAQCB2b2lkIHdmeF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBz dHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQl3ZnhfaGlmX3Nsb3RfdGltZSh3dmlmLCBpbmZv LT51c2Vfc2hvcnRfc2xvdCA/IDkgOiAyMCk7CiAKIAlpZiAoY2hhbmdlZCAmIEJTU19DSEFOR0VE X0NRTSkKLQkJd2Z4X2hpZl9zZXRfcmNwaV9yc3NpX3RocmVzaG9sZCh3dmlmLCBpbmZvLT5jcW1f cnNzaV90aG9sZCwKLQkJCQkJCWluZm8tPmNxbV9yc3NpX2h5c3QpOworCQl3ZnhfaGlmX3NldF9y Y3BpX3Jzc2lfdGhyZXNob2xkKHd2aWYsIGluZm8tPmNxbV9yc3NpX3Rob2xkLCBpbmZvLT5jcW1f cnNzaV9oeXN0KTsKIAogCWlmIChjaGFuZ2VkICYgQlNTX0NIQU5HRURfVFhQT1dFUikKIAkJd2Z4 X2hpZl9zZXRfb3V0cHV0X3Bvd2VyKHd2aWYsIGluZm8tPnR4cG93ZXIpOwpAQCAtNTk5LDggKzU3 OSw3IEBAIHN0YXRpYyBpbnQgd2Z4X3VwZGF0ZV90aW0oc3RydWN0IHdmeF92aWYgKnd2aWYpCiAJ dTE2IHRpbV9vZmZzZXQsIHRpbV9sZW5ndGg7CiAJdTggKnRpbV9wdHI7CiAKLQlza2IgPSBpZWVl ODAyMTFfYmVhY29uX2dldF90aW0od3ZpZi0+d2Rldi0+aHcsIHd2aWYtPnZpZiwKLQkJCQkgICAg ICAgJnRpbV9vZmZzZXQsICZ0aW1fbGVuZ3RoKTsKKwlza2IgPSBpZWVlODAyMTFfYmVhY29uX2dl dF90aW0od3ZpZi0+d2Rldi0+aHcsIHd2aWYtPnZpZiwgJnRpbV9vZmZzZXQsICZ0aW1fbGVuZ3Ro KTsKIAlpZiAoIXNrYikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAJdGltX3B0ciA9IHNrYi0+ZGF0YSAr IHRpbV9vZmZzZXQ7CkBAIC02NjUsOCArNjQ0LDcgQEAgdm9pZCB3Znhfc3VzcGVuZF9yZXN1bWVf bWMoc3RydWN0IHdmeF92aWYgKnd2aWYsIGVudW0gc3RhX25vdGlmeV9jbWQgbm90aWZ5X2NtZCkK IAl3ZnhfYmhfcmVxdWVzdF90eCh3dmlmLT53ZGV2KTsKIH0KIAotaW50IHdmeF9hbXBkdV9hY3Rp b24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCi0JCSAgICAgc3RydWN0IGllZWU4MDIxMV92aWYg KnZpZiwKK2ludCB3ZnhfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1 Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfYW1wZHVfcGFy YW1zICpwYXJhbXMpCiB7CiAJLyogQWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQgZnVsbHkgaW4g ZmlybXdhcmUgKi8KQEAgLTY4MSwyMCArNjU5LDE2IEBAIGludCB3ZnhfYW1wZHVfYWN0aW9uKHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCX0KIH0KIAotaW50IHdmeF9hZGRfY2hhbmN0eChzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodywKLQkJICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25m ICpjb25mKQoraW50IHdmeF9hZGRfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3Ry dWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmYpCiB7CiAJcmV0dXJuIDA7CiB9CiAKLXZv aWQgd2Z4X3JlbW92ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJc3RydWN0 IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmYpCit2b2lkIHdmeF9yZW1vdmVfY2hhbmN0eChz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNv bmYpCiB7CiB9CiAKLXZvaWQgd2Z4X2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3LAotCQkJc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmYsCi0JCQl1MzIgY2hh bmdlZCkKK3ZvaWQgd2Z4X2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBz dHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY29uZiwgdTMyIGNoYW5nZWQpCiB7CiB9CiAK QEAgLTcxMCw4ICs2ODQsNyBAQCBpbnQgd2Z4X2Fzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3QgaWVl ZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAlyZXR1cm4gMDsKIH0K IAotdm9pZCB3ZnhfdW5hc3NpZ25fdmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcs Ci0JCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAordm9pZCB3ZnhfdW5hc3NpZ25f dmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlm ICp2aWYsCiAJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY29uZikKIHsK IAlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IChzdHJ1Y3Qgd2Z4X3ZpZiAqKXZpZi0+ZHJ2X3ByaXY7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5oIGIvZHJpdmVycy9zdGFnaW5n L3dmeC9zdGEuaAppbmRleCA0ZDdlMzhiZTQyMzUuLjA4MjMyOWQ3YmJjZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9zdGFnaW5nL3dmeC9zdGEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5o CkBAIC0yMyw4ICsyMyw3IEBAIGludCB3Znhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcp Owogdm9pZCB3Znhfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7CiBpbnQgd2Z4X2NvbmZp ZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTMyIGNoYW5nZWQpOwogaW50IHdmeF9zZXRfcnRz X3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTMyIHZhbHVlKTsKLXZvaWQgd2Z4 X3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJCSBz dHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KTsKK3ZvaWQgd2Z4X3NldF9kZWZhdWx0 X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3Zp ZiAqdmlmLCBpbnQgaWR4KTsKIHZvaWQgd2Z4X2NvbmZpZ3VyZV9maWx0ZXIoc3RydWN0IGllZWU4 MDIxMV9odyAqaHcsIHVuc2lnbmVkIGludCBjaGFuZ2VkX2ZsYWdzLAogCQkJICB1bnNpZ25lZCBp bnQgKnRvdGFsX2ZsYWdzLCB1NjQgdW51c2VkKTsKIApAQCAtMzgsMjUgKzM3LDIwIEBAIGludCB3 ZnhfY29uZl90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYg KnZpZiwKIAkJdTE2IHF1ZXVlLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3R4X3F1ZXVlX3BhcmFt cyAqcGFyYW1zKTsKIHZvaWQgd2Z4X2Jzc19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAJCQkgIHN0cnVjdCBpZWVlODAyMTFf YnNzX2NvbmYgKmluZm8sIHUzMiBjaGFuZ2VkKTsKLWludCB3Znhfc3RhX2FkZChzdHJ1Y3QgaWVl ZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKLQkJc3RydWN0IGllZWU4 MDIxMV9zdGEgKnN0YSk7Ci1pbnQgd2Z4X3N0YV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9odyAq aHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCi0JCSAgIHN0cnVjdCBpZWVlODAyMTFfc3Rh ICpzdGEpOworaW50IHdmeF9zdGFfYWRkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qg aWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKTsKK2ludCB3Znhf c3RhX3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYg KnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7CiB2b2lkIHdmeF9zdGFfbm90aWZ5KHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQkgICAg ZW51bSBzdGFfbm90aWZ5X2NtZCBjbWQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpOwogaW50 IHdmeF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3N0 YSAqc3RhLCBib29sIHNldCk7CiBpbnQgd2Z4X2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjEx X2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJICAgICBzdHJ1Y3QgaWVlZTgw MjExX2FtcGR1X3BhcmFtcyAqcGFyYW1zKTsKLWludCB3ZnhfYWRkX2NoYW5jdHgoc3RydWN0IGll ZWU4MDIxMV9odyAqaHcsCi0JCSAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY29u Zik7Ci12b2lkIHdmeF9yZW1vdmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKLQkJ CXN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjb25mKTsKLXZvaWQgd2Z4X2NoYW5nZV9j aGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJc3RydWN0IGllZWU4MDIxMV9jaGFu Y3R4X2NvbmYgKmNvbmYsIHUzMiBjaGFuZ2VkKTsKK2ludCB3ZnhfYWRkX2NoYW5jdHgoc3RydWN0 IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjb25mKTsK K3ZvaWQgd2Z4X3JlbW92ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qg aWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY29uZik7Cit2b2lkIHdmeF9jaGFuZ2VfY2hhbmN0eChz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNv bmYsCisJCQl1MzIgY2hhbmdlZCk7CiBpbnQgd2Z4X2Fzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3Qg aWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJCSAgIHN0cnVj dCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjb25mKTsKLXZvaWQgd2Z4X3VuYXNzaWduX3ZpZl9j aGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJICAgICAgc3RydWN0IGllZWU4MDIx MV92aWYgKnZpZiwKK3ZvaWQgd2Z4X3VuYXNzaWduX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAy MTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQkJICAgICAgc3RydWN0IGll ZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmYpOwogCiAvKiBIYXJkd2FyZSBBUEkgQ2FsbGJhY2tz ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3RyYWNlcy5oIGIvZHJpdmVycy9z dGFnaW5nL3dmeC90cmFjZXMuaAppbmRleCA5OWJkMTgwODExMWUuLjlmYmYwMDgxZGJmNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC90cmFjZXMuaAorKysgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L3RyYWNlcy5oCkBAIC0xOTAsOCArMTkwLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyho aWZfZGF0YSwKIAkJCV9fZW50cnktPm1pYiA9IC0xOwogCQkJaGVhZGVyX2xlbiA9IDA7CiAJCX0K LQkJX19lbnRyeS0+YnVmX2xlbiA9IG1pbl90KGludCwgX19lbnRyeS0+bXNnX2xlbiwKLQkJCQkJ IHNpemVvZihfX2VudHJ5LT5idWYpKQorCQlfX2VudHJ5LT5idWZfbGVuID0gbWluX3QoaW50LCBf X2VudHJ5LT5tc2dfbGVuLCBzaXplb2YoX19lbnRyeS0+YnVmKSkKIAkJCQkgICAtIHNpemVvZihz dHJ1Y3Qgd2Z4X2hpZl9tc2cpIC0gaGVhZGVyX2xlbjsKIAkJbWVtY3B5KF9fZW50cnktPmJ1Ziwg aGlmLT5ib2R5ICsgaGVhZGVyX2xlbiwgX19lbnRyeS0+YnVmX2xlbik7CiAJKSwKQEAgLTI1MCw4 ICsyNDksNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGlvX2RhdGEsCiAJCV9fZW50cnktPnJlZyA9 IHJlZzsKIAkJX19lbnRyeS0+YWRkciA9IGFkZHI7CiAJCV9fZW50cnktPm1zZ19sZW4gPSBsZW47 Ci0JCV9fZW50cnktPmJ1Zl9sZW4gPSBtaW5fdChpbnQsIHNpemVvZihfX2VudHJ5LT5idWYpLAot CQkJCQkgX19lbnRyeS0+bXNnX2xlbik7CisJCV9fZW50cnktPmJ1Zl9sZW4gPSBtaW5fdChpbnQs IHNpemVvZihfX2VudHJ5LT5idWYpLCBfX2VudHJ5LT5tc2dfbGVuKTsKIAkJbWVtY3B5KF9fZW50 cnktPmJ1ZiwgaW9fYnVmLCBfX2VudHJ5LT5idWZfbGVuKTsKIAkJaWYgKGFkZHIgPj0gMCkKIAkJ CXNucHJpbnRmKF9fZW50cnktPmFkZHJfc3RyLCAxMCwgIi8lMDh4IiwgYWRkcik7CkBAIC0zNzks OCArMzc3LDcgQEAgVFJBQ0VfRVZFTlQodHhfc3RhdHMsCiAJKSwKIAlUUF9mYXN0X2Fzc2lnbigK IAkJLyogS2VlcCBzeW5jIHdpdGggd2Z4X3JhdGVzIGRlZmluaXRpb24gaW4gbWFpbi5jICovCi0J CXN0YXRpYyBjb25zdCBpbnQgaHdfcmF0ZVtdID0geyAwLCAxLCAyLCAzLCA2LCA3LCA4LCA5LAot CQkJCQkgICAgICAgMTAsIDExLCAxMiwgMTMgfTsKKwkJc3RhdGljIGNvbnN0IGludCBod19yYXRl W10gPSB7IDAsIDEsIDIsIDMsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzIH07CiAJCWNvbnN0 IHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbyA9CiAJCQkoY29uc3Qgc3RydWN0IGll ZWU4MDIxMV90eF9pbmZvICopc2tiLT5jYjsKIAkJY29uc3Qgc3RydWN0IGllZWU4MDIxMV90eF9y YXRlICpyYXRlcyA9IHR4X2luZm8tPmRyaXZlcl9yYXRlczsKQEAgLTQyMCw5ICs0MTcsOCBAQCBU UkFDRV9FVkVOVCh0eF9zdGF0cywKIAlUUF9wcmludGsoInBhY2tldCBJRDogJTA4eCwgcmF0ZSBw b2xpY3k6ICVzICVkfCVkICVkfCVkICVkfCVkICVkfCVkIC0+ICVkIGF0dGVtcHQsIERlbGF5cyBt ZWRpYS9xdWV1ZS90b3RhbDogJTRkdXMvJTRkdXMvJTRkdXMiLAogCQlfX2VudHJ5LT5wa3RfaWQs CiAJCV9fcHJpbnRfZmxhZ3MoX19lbnRyeS0+ZmxhZ3MsIE5VTEwsCi0JCQl7IDB4MDEsICJNIiB9 LCB7IDB4MDIsICJTIiB9LCB7IDB4MDQsICJHIiB9LAotCQkJeyAweDA4LCAiUiIgfSwgeyAweDEw LCAiRCIgfSwgeyAweDIwLCAiRiIgfSwKLQkJCXsgMHg0MCwgIlEiIH0pLAorCQkJeyAweDAxLCAi TSIgfSwgeyAweDAyLCAiUyIgfSwgeyAweDA0LCAiRyIgfSwgeyAweDA4LCAiUiIgfSwKKwkJCXsg MHgxMCwgIkQiIH0sIHsgMHgyMCwgIkYiIH0sIHsgMHg0MCwgIlEiIH0pLAogCQlfX2VudHJ5LT5y YXRlWzBdLAogCQlfX2VudHJ5LT50eF9jb3VudFswXSwKIAkJX19lbnRyeS0+cmF0ZVsxXSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmggYi9kcml2ZXJzL3N0YWdpbmcvd2Z4 L3dmeC5oCmluZGV4IDE4OWI5NmNkM2QxMy4uNTY1ODc0ODE1YWE4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3N0YWdpbmcvd2Z4L3dmeC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmgKQEAg LTEwNCw4ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB3ZnhfdmlmICp3ZGV2X3RvX3d2 aWYoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCB2aWZfaWQpCiAJcmV0dXJuIChzdHJ1Y3Qgd2Z4 X3ZpZiAqKXdkZXYtPnZpZlt2aWZfaWRdLT5kcnZfcHJpdjsKIH0KIAotc3RhdGljIGlubGluZSBz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZl9pdGVyYXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAotCQkJCQkg ICBzdHJ1Y3Qgd2Z4X3ZpZiAqY3VyKQorc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2Z4X3ZpZiAqd3Zp Zl9pdGVyYXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgd2Z4X3ZpZiAqY3VyKQogewog CWludCBpOwogCWludCBtYXJrID0gMDsKLS0gCjIuMzQuMQoK