From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 424DCC31E51 for ; Tue, 18 Jun 2019 12:01:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C70412085A for ; Tue, 18 Jun 2019 12:01:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="f4ZyAgDz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729228AbfFRMBr (ORCPT ); Tue, 18 Jun 2019 08:01:47 -0400 Received: from mail-eopbgr00051.outbound.protection.outlook.com ([40.107.0.51]:12781 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726428AbfFRMBq (ORCPT ); Tue, 18 Jun 2019 08:01:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EUkkb/zJC7dWbA67ViPpjBh/R/WDAhbReeIVjleN9os=; b=f4ZyAgDzM5PY8J/v5javArqGaEo7rE6CIGkD5M8ccJqb6jlRiPKNBVMNVoY7c3sSCjDaWujnnS94Y+aOjJztrfCsbVZc7rubZ0DazC6S/UKMmJePJOwfuV1FctaiN/KC887XZ4AUBlcYech9TiBf90cmZFeHHGrIn6npEDA49kM= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB4917.eurprd05.prod.outlook.com (20.177.36.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Tue, 18 Jun 2019 12:01:13 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::9527:fe9d:2a02:41d5]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::9527:fe9d:2a02:41d5%5]) with mapi id 15.20.1987.014; Tue, 18 Jun 2019 12:01:13 +0000 From: Maxim Mikityanskiy To: Alexei Starovoitov , Daniel Borkmann , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson CC: "bpf@vger.kernel.org" , "netdev@vger.kernel.org" , "David S. Miller" , Saeed Mahameed , Jonathan Lemon , Tariq Toukan , Martin KaFai Lau , Song Liu , Yonghong Song , Jakub Kicinski , Maciej Fijalkowski , Maxim Mikityanskiy Subject: [PATCH bpf-next v5 16/16] net/mlx5e: Add XSK zero-copy support Thread-Topic: [PATCH bpf-next v5 16/16] net/mlx5e: Add XSK zero-copy support Thread-Index: AQHVJc2Gkxk/dvheUEu1sUidVqR2Dg== Date: Tue, 18 Jun 2019 12:01:12 +0000 Message-ID: <20190618120024.16788-17-maximmi@mellanox.com> References: <20190618120024.16788-1-maximmi@mellanox.com> In-Reply-To: <20190618120024.16788-1-maximmi@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0064.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:60::28) To AM6PR05MB5879.eurprd05.prod.outlook.com (2603:10a6:20b:a2::12) authentication-results: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-originating-ip: [141.226.120.58] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a21fa54f-970d-426b-d614-08d6f3e4a863 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:AM6PR05MB4917; x-ms-traffictypediagnostic: AM6PR05MB4917: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 007271867D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(366004)(39860400002)(136003)(346002)(376002)(189003)(199004)(6486002)(53946003)(6436002)(256004)(6512007)(8936002)(66556008)(66476007)(66446008)(86362001)(64756008)(7416002)(81166006)(50226002)(478600001)(476003)(81156014)(52116002)(66946007)(14454004)(8676002)(54906003)(73956011)(110136005)(486006)(11346002)(99286004)(7736002)(305945005)(36756003)(316002)(446003)(386003)(5660300002)(71200400001)(4326008)(68736007)(107886003)(76176011)(6506007)(1076003)(3846002)(186003)(2906002)(6116002)(102836004)(30864003)(2616005)(66066001)(25786009)(71190400001)(26005)(14444005)(53936002)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB4917;H:AM6PR05MB5879.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: R+QwWTm8zuIus4M+lcPNK+7b7S29/TV8XwtptS9c8HAXf5DCMlQmCDhUupyI/6YQ36Yj8r63YMMoEltvsi5gN946WChk6VgogXNxsy4boGMPe/6Bg9m1BlPksJ9KbgwMnURW47XHa+mTGCLdslV+MrGPoPksGhVpJAdPnnsHfTnuNQp8DI7as3ZkZoxF8oGUeS0jK+ZduZVu1dsQTTo96INOUUqhZSsdXn8qoI7qXGIo1EqTgPS6GoAP2UsYYlJ6AJsmltRaX1XmvpI1/gSSQHJCNxRq1G7T2IRYpXn1myJXhMy2CVjUBs66/tyuSR0GomlTFd4zdMa3tsGT1rHBQfQ08k/OQ/DQjgKakVSQR3HLLcRD4sRw+Nk+Irllo3vWwj44+6ywJ6kKF3SLzQLxpMe+TcJfXuCBAuDEnWFmXRA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: a21fa54f-970d-426b-d614-08d6f3e4a863 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2019 12:01:12.7889 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: maximmi@mellanox.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4917 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org VGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciBBRl9YRFAgemVyby1jb3B5IFJYIGFuZCBUWC4N Cg0KV2UgY3JlYXRlIGEgZGVkaWNhdGVkIFhTSyBSUSBpbnNpZGUgdGhlIGNoYW5uZWwsIGl0IG1l YW5zIHRoYXQgdHdvDQpSUXMgYXJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHk6IG9uZSBmb3Igbm9u LVhTSyB0cmFmZmljIGFuZCB0aGUgb3RoZXINCmZvciBYU0sgdHJhZmZpYy4gVGhlIHJlZ3VsYXIg YW5kIFhTSyBSUXMgdXNlIGEgc2luZ2xlIElEIG5hbWVzcGFjZSBzcGxpdA0KaW50byB0d28gaGFs dmVzOiB0aGUgbG93ZXIgaGFsZiBpcyByZWd1bGFyIFJRcywgYW5kIHRoZSB1cHBlciBoYWxmIGlz DQpYU0sgUlFzLiBXaGVuIGFueSB6ZXJvLWNvcHkgQUZfWERQIHNvY2tldCBpcyBhY3RpdmUsIGNo YW5naW5nIHRoZSBudW1iZXINCm9mIGNoYW5uZWxzIGlzIG5vdCBhbGxvd2VkLCBiZWNhdXNlIGl0 IHdvdWxkIGJyZWFrIHRvIG1hcHBpbmcgYmV0d2Vlbg0KWFNLIFJRIElEcyBhbmQgY2hhbm5lbHMu DQoNClhTSyByZXF1aXJlcyBkaWZmZXJlbnQgcGFnZSBhbGxvY2F0aW9uIGFuZCByZWxlYXNlIHJv dXRpbmVzLiBTdWNoDQpmdW5jdGlvbnMgYXMgbWx4NWVfe2FsbG9jLGZyZWV9X3J4X21wd3FlIGFu ZCBtbHg1ZV97Z2V0LHB1dH1fcnhfZnJhZyBhcmUNCmdlbmVyaWMgZW5vdWdoIHRvIGJlIHVzZWQg Zm9yIGJvdGggcmVndWxhciBhbmQgWFNLIFJRcywgYW5kIHRoZXkgdXNlIHRoZQ0KbWx4NWVfcGFn ZV97YWxsb2MscmVsZWFzZX0gd3JhcHBlcnMgYXJvdW5kIHRoZSByZWFsIGFsbG9jYXRpb24NCmZ1 bmN0aW9ucy4gRnVuY3Rpb24gcG9pbnRlcnMgYXJlIG5vdCB1c2VkIHRvIGF2b2lkIGxvc2luZyB0 aGUNCnBlcmZvcm1hbmNlIHdpdGggcmV0cG9saW5lcy4gV2hlcmV2ZXIgaXQncyBjZXJ0YWluIHRo YXQgdGhlIHJlZ3VsYXINCihub24tWFNLKSBwYWdlIHJlbGVhc2UgZnVuY3Rpb24gc2hvdWxkIGJl IHVzZWQsIGl0J3MgY2FsbGVkIGRpcmVjdGx5Lg0KDQpPbmx5IHRoZSBzdGF0cyB0aGF0IGNvdWxk IGJlIG1lYW5pbmdmdWwgZm9yIFhTSyBhcmUgZXhwb3NlZCB0byB0aGUNCnVzZXJzcGFjZS4gVGhv c2UgdGhhdCBkb24ndCB0YWtlIHBhcnQgaW4gdGhlIFhTSyBmbG93IGFyZSBub3QNCmNvbnNpZGVy ZWQuDQoNCk5vdGUgdGhhdCB3ZSBkb24ndCB3YWl0IGZvciBXUUVzIG9uIHRoZSBYU0sgUlEgKHVu bGlrZSB0aGUgcmVndWxhciBSUSksDQpiZWNhdXNlIHRoZSBuZXdlciB4ZHBzb2NrIHNhbXBsZSBk b2Vzbid0IHByb3ZpZGUgYW55IEZpbGwgUmluZyBlbnRyaWVzDQphdCB0aGUgc2V0dXAgc3RhZ2Uu DQoNCldlIGNyZWF0ZSBhIGRlZGljYXRlZCBYU0sgU1EgaW4gdGhlIGNoYW5uZWwuIFRoaXMgc2Vw YXJhdGlvbiBoYXMgaXRzDQphZHZhbnRhZ2VzOg0KDQoxLiBXaGVuIHRoZSBVTUVNIGlzIGNsb3Nl ZCwgdGhlIFhTSyBTUSBjYW4gYWxzbyBiZSBjbG9zZWQgYW5kIHN0b3ANCnJlY2VpdmluZyBjb21w bGV0aW9ucy4gSWYgYW4gZXhpc3RpbmcgU1Egd2FzIHVzZWQgZm9yIFhTSywgaXQgd291bGQNCmNv bnRpbnVlIHJlY2VpdmluZyBjb21wbGV0aW9ucyBmb3IgdGhlIHBhY2tldHMgb2YgdGhlIGNsb3Nl ZCBzb2NrZXQuIElmDQphIG5ldyBVTUVNIHdhcyBvcGVuZWQgYXQgdGhhdCBwb2ludCwgaXQgd291 bGQgc3RhcnQgZ2V0dGluZyBjb21wbGV0aW9ucw0KdGhhdCBkb24ndCBiZWxvbmcgdG8gaXQuDQoN CjIuIENhbGN1bGF0aW5nIHN0YXRpc3RpY3Mgc2VwYXJhdGVseS4NCg0KV2hlbiB0aGUgdXNlcnNw YWNlIGtpY2tzIHRoZSBUWCwgdGhlIGRyaXZlciB0cmlnZ2VycyBhIGhhcmR3YXJlDQppbnRlcnJ1 cHQgYnkgcG9zdGluZyBhIE5PUCB0byBhIGRlZGljYXRlZCBYU0sgSUNPIChpbnRlcm5hbCBjb250 cm9sDQpvcGVyYXRpb25zKSBTUSwgaW4gb3JkZXIgdG8gdHJpZ2dlciBOQVBJIG9uIHRoZSByaWdo dCBDUFUgY29yZS4gVGhpcyBYU0sNCklDTyBTUSBpcyBwcm90ZWN0ZWQgYnkgYSBzcGlubG9jaywg YXMgdGhlIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiBtYXkga2ljaw0KdGhlIFRYIGZyb20gYW55IGNv cmUuDQoNClN0b3JlIHRoZSBwb2ludGVycyB0byB0aGUgVU1FTXMgaW4gdGhlIG5ldCBkZXZpY2Ug cHJpdmF0ZSBjb250ZXh0LA0KaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBrZXJuZWwuIFRoaXMgd2F5 IHRoZSBkcml2ZXIgY2FuIGRpc3Rpbmd1aXNoDQpiZXR3ZWVuIHRoZSB6ZXJvLWNvcHkgYW5kIG5v bi16ZXJvLWNvcHkgVU1FTXMuIFRoZSBrZXJuZWwgZnVuY3Rpb24NCnhkcF9nZXRfdW1lbV9mcm9t X3FpZCBkb2VzIG5vdCBjYXJlIGFib3V0IHRoaXMgZGlmZmVyZW5jZSwgYnV0IHRoZQ0KZHJpdmVy IGlzIG9ubHkgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvcHkgVU1FTXMsIHBhcnRpY3VsYXJseSwgb24g dGhlDQpjbGVhbnVwIGl0IGRldGVybWluZXMgd2hldGhlciB0byBjbG9zZSB0aGUgWFNLIFJRIGFu ZCBTUSBvciBub3QgYnkNCmxvb2tpbmcgYXQgdGhlIHByZXNlbmNlIG9mIHRoZSBVTUVNLiBVc2Ug c3RhdGVfbG9jayB0byBwcm90ZWN0IHRoZQ0KYWNjZXNzIHRvIHRoaXMgYXJlYSBvZiBVTUVNIHBv aW50ZXJzLg0KDQpMUk8gaXNuJ3QgY29tcGF0aWJsZSB3aXRoIFhEUCwgYnV0IHRoZXJlIG1heSBi ZSBhY3RpdmUgVU1FTXMgd2hpbGUNClhEUCBpcyBvZmYuIElmIHRoaXMgaXMgdGhlIGNhc2UsIGRv bid0IGFsbG93IExSTyB0byBlbnN1cmUgWERQIGNhbg0KYmUgcmVlbmFibGVkIGF0IGFueSB0aW1l Lg0KDQpUaGUgdmFsaWRhdGlvbiBvZiBYU0sgcGFyYW1ldGVycyB0eXBpY2FsbHkgaGFwcGVucyB3 aGVuIFhTSyBxdWV1ZXMNCm9wZW4uIEhvd2V2ZXIsIHdoZW4gdGhlIGludGVyZmFjZSBpcyBkb3du IG9yIHRoZSBYRFAgcHJvZ3JhbSBpc24ndA0Kc2V0LCBpdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhh dmUgYWN0aXZlIEFGX1hEUCBzb2NrZXRzIGFuZCBldmVuIHRvDQpvcGVuIG5ldywgYnV0IHRoZSBY U0sgcXVldWVzIHdpbGwgYmUgY2xvc2VkLiBUbyBjb3ZlciB0aGVzZSBjYXNlcywNCnBlcmZvcm0g dGhlIHZhbGlkYXRpb24gYWxzbyBpbiB0aGVzZSBmbG93czoNCg0KMS4gQSBuZXcgVU1FTSBpcyBy ZWdpc3RlcmVkLCBidXQgdGhlIFhTSyBxdWV1ZXMgYXJlbid0IGdvaW5nIHRvIGJlDQpjcmVhdGVk IGR1ZSB0byBtaXNzaW5nIFhEUCBwcm9ncmFtIG9yIGludGVyZmFjZSBiZWluZyBkb3duLg0KDQoy LiBNVFUgY2hhbmdlcyB3aGlsZSB0aGVyZSBhcmUgVU1FTXMgcmVnaXN0ZXJlZC4NCg0KSGF2aW5n IHRoaXMgZWFybHkgY2hlY2sgcHJldmVudHMgbWx4NWVfb3Blbl9jaGFubmVscyBmcm9tIGZhaWxp bmcNCmF0IGEgbGF0ZXIgc3RhZ2UsIHdoZXJlIHJlY292ZXJ5IGlzIGltcG9zc2libGUgYW5kIHRo ZSBhcHBsaWNhdGlvbg0KaGFzIG5vIGNoYW5jZSB0byBoYW5kbGUgdGhlIGVycm9yLCBiZWNhdXNl IGl0IGdvdCB0aGUgc3VjY2Vzc2Z1bA0KcmV0dXJuIHZhbHVlIGZvciBhbiBNVFUgY2hhbmdlIG9y IFhTSyBvcGVuIG9wZXJhdGlvbi4NCg0KVGhlIHBlcmZvcm1hbmNlIHRlc3Rpbmcgd2FzIHBlcmZv cm1lZCBvbiBhIG1hY2hpbmUgd2l0aCB0aGUgZm9sbG93aW5nDQpjb25maWd1cmF0aW9uOg0KDQot IDI0IGNvcmVzIG9mIEludGVsIFhlb24gRTUtMjYyMCB2MyBAIDIuNDAgR0h6DQotIE1lbGxhbm94 IENvbm5lY3RYLTUgRXggd2l0aCAxMDAgR2JpdC9zIGxpbmsNCg0KVGhlIHJlc3VsdHMgd2l0aCBy ZXRwb2xpbmUgZGlzYWJsZWQsIHNpbmdsZSBzdHJlYW06DQoNCnR4b25seTogMzMuMyBNcHBzICgy MS41IE1wcHMgd2l0aCBxdWV1ZSBhbmQgYXBwIHBpbm5lZCB0byB0aGUgc2FtZSBDUFUpDQpyeGRy b3A6IDEyLjIgTXBwcw0KbDJmd2Q6IDkuNCBNcHBzDQoNClRoZSByZXN1bHRzIHdpdGggcmV0cG9s aW5lIGVuYWJsZWQsIHNpbmdsZSBzdHJlYW06DQoNCnR4b25seTogMjEuMyBNcHBzICgxNC4xIE1w cHMgd2l0aCBxdWV1ZSBhbmQgYXBwIHBpbm5lZCB0byB0aGUgc2FtZSBDUFUpDQpyeGRyb3A6IDku OSBNcHBzDQpsMmZ3ZDogNi44IE1wcHMNCg0KU2lnbmVkLW9mZi1ieTogTWF4aW0gTWlraXR5YW5z a2l5IDxtYXhpbW1pQG1lbGxhbm94LmNvbT4NCkFja2VkLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2Fl ZWRtQG1lbGxhbm94LmNvbT4NCi0tLQ0KIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL01ha2VmaWxlICB8ICAgMiArLQ0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbi5oICB8ICA5OCArKystDQogLi4uL2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi9wYXJhbXMuYyAgIHwgIDUzICstDQogLi4uL2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi9wYXJhbXMuaCAgIHwgIDc3ICsrLQ0KIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL3hkcC5jICB8IDEwMyArKystDQogLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veGRwLmggIHwgIDE4ICstDQogLi4uL21lbGxhbm94L21seDUvY29yZS9lbi94 c2svTWFrZWZpbGUgICAgICAgIHwgICAxICsNCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuL3hzay9yeC5jICAgfCAxOTIgKysrKysrKw0KIC4uLi9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veHNrL3J4LmggICB8ICAyNyArDQogLi4uL21lbGxhbm94L21seDUvY29yZS9l bi94c2svc2V0dXAuYyAgICAgICAgIHwgMjIzICsrKysrKysrDQogLi4uL21lbGxhbm94L21seDUv Y29yZS9lbi94c2svc2V0dXAuaCAgICAgICAgIHwgIDI1ICsNCiAuLi4vZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2VuL3hzay90eC5jICAgfCAxMTEgKysrKw0KIC4uLi9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmggICB8ICAxNSArDQogLi4uL2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbi94c2svdW1lbS5jIHwgMjY3ICsrKysrKysrKw0KIC4uLi9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3VtZW0uaCB8ICAzMSArKw0KIC4uLi9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jICB8ICAyNSArLQ0KIC4uLi9tZWxsYW5v eC9tbHg1L2NvcmUvZW5fZnNfZXRodG9vbC5jICAgICAgICB8ICAxOCArLQ0KIC4uLi9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyB8IDUyMyArKysrKysrKysrKystLS0t LS0NCiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyAgfCAgMTIg Ky0NCiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jICAgfCAgNzcg KystDQogLi4uL2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jICAgIHwgMTE1 ICsrKy0NCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmggICAgfCAg MzAgKw0KIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4cnguYyB8ICAz NCArLQ0KIC4uLi9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYyB8ICAx NCArLQ0KIDI0IGZpbGVzIGNoYW5nZWQsIDE4MzkgaW5zZXJ0aW9ucygrKSwgMjUyIGRlbGV0aW9u cygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veHNrL01ha2VmaWxlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguYw0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4LmgN CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuL3hzay9zZXR1cC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svc2V0dXAuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMNCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuL3hzay90eC5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbi94c2svdW1lbS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdW1lbS5oDQoNCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUNCmluZGV4 IDI0MzM2OGRjMjNkYi4uOTY5NGNkMWVhNzU5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUNCkBAIC0yMyw3ICsyMyw3IEBAIG1seDVf Y29yZS15IDo9CW1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxv Yy5vIFwNCiBtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSArPSBlbl9tYWluLm8gZW5f Y29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXA0KIAkJZW5fdHgubyBlbl9yeC5vIGVuX2Rp bS5vIGVuX3R4cngubyBlbi94ZHAubyBlbl9zdGF0cy5vIFwNCiAJCWVuX3NlbGZ0ZXN0Lm8gZW4v cG9ydC5vIGVuL21vbml0b3Jfc3RhdHMubyBlbi9yZXBvcnRlcl90eC5vIFwNCi0JCWVuL3BhcmFt cy5vDQorCQllbi9wYXJhbXMubyBlbi94c2svdW1lbS5vIGVuL3hzay9zZXR1cC5vIGVuL3hzay9y eC5vIGVuL3hzay90eC5vDQogDQogIw0KICMgTmV0ZGV2IGV4dHJhDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaA0KaW5kZXggOGNiMjhlNTYwNGYwLi5jODU4 MjczYzZhZDEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1 L2NvcmUvZW4uaA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuLmgNCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RydWN0IHBhZ2VfcG9vbDsNCiAjZGVmaW5lIE1M WDVFX01BWF9OVU1fQ0hBTk5FTFMgICAgICAgICAoTUxYNUVfSU5ESVJfUlFUX1NJWkUgPj4gMSkN CiAjZGVmaW5lIE1MWDVFX01BWF9OVU1fU1FTICAgICAgICAgICAgICAoTUxYNUVfTUFYX05VTV9D SEFOTkVMUyAqIE1MWDVFX01BWF9OVU1fVEMpDQogI2RlZmluZSBNTFg1RV9UWF9DUV9QT0xMX0JV REdFVCAgICAgICAgMTI4DQorI2RlZmluZSBNTFg1RV9UWF9YU0tfUE9MTF9CVURHRVQgICAgICAg NjQNCiAjZGVmaW5lIE1MWDVFX1NRX1JFQ09WRVJfTUlOX0lOVEVSVkFMICA1MDAgLyogbXNlY3Mg Ki8NCiANCiAjZGVmaW5lIE1MWDVFX1VNUl9XUUVfSU5MSU5FX1NaIFwNCkBAIC0xNTUsNiArMTU2 LDExIEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQogCQkJICAgICMjX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICAg ICAgIFwNCiB9IHdoaWxlICgwKQ0KIA0KK2VudW0gbWx4NWVfcnFfZ3JvdXAgew0KKwlNTFg1RV9S UV9HUk9VUF9SRUdVTEFSLA0KKwlNTFg1RV9SUV9HUk9VUF9YU0ssDQorCU1MWDVFX05VTV9SUV9H Uk9VUFMgLyogS2VlcCBsYXN0LiAqLw0KK307DQogDQogc3RhdGljIGlubGluZSB1MTYgbWx4NV9t aW5fcnhfd3FlcyhpbnQgd3FfdHlwZSwgdTMyIHdxX3NpemUpDQogew0KQEAgLTE3OSw3ICsxODUs OCBAQCBzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9nZXRfbWF4X251bV9jaGFubmVscyhzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqbWRldikNCiAvKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBnZXQgbWF4IG51 bSBjaGFubmVscyBhZnRlciBuZXRkZXYgd2FzIGNyZWF0ZWQgKi8NCiBzdGF0aWMgaW5saW5lIGlu dCBtbHg1ZV9nZXRfbmV0ZGV2X21heF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2 KQ0KIHsNCi0JcmV0dXJuIG1pbl90KHVuc2lnbmVkIGludCwgbmV0ZGV2LT5udW1fcnhfcXVldWVz LA0KKwlyZXR1cm4gbWluX3QodW5zaWduZWQgaW50LA0KKwkJICAgICBuZXRkZXYtPm51bV9yeF9x dWV1ZXMgLyBNTFg1RV9OVU1fUlFfR1JPVVBTLA0KIAkJICAgICBuZXRkZXYtPm51bV90eF9xdWV1 ZXMpOw0KIH0NCiANCkBAIC0yNTAsNiArMjU3LDcgQEAgc3RydWN0IG1seDVlX3BhcmFtcyB7DQog CXUzMiBscm9fdGltZW91dDsNCiAJdTMyIHBmbGFnczsNCiAJc3RydWN0IGJwZl9wcm9nICp4ZHBf cHJvZzsNCisJc3RydWN0IG1seDVlX3hzayAqeHNrOw0KIAl1bnNpZ25lZCBpbnQgc3dfbXR1Ow0K IAlpbnQgaGFyZF9tdHU7DQogfTsNCkBAIC0zOTgsOCArNDA2LDE0IEBAIHN0cnVjdCBtbHg1ZV90 eHFzcSB7DQogfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wOw0KIA0KIHN0cnVjdCBtbHg1 ZV9kbWFfaW5mbyB7DQotCXN0cnVjdCBwYWdlICAgICAqcGFnZTsNCi0JZG1hX2FkZHJfdCAgICAg IGFkZHI7DQorCWRtYV9hZGRyX3QgYWRkcjsNCisJdW5pb24gew0KKwkJc3RydWN0IHBhZ2UgKnBh Z2U7DQorCQlzdHJ1Y3Qgew0KKwkJCXU2NCBoYW5kbGU7DQorCQkJdm9pZCAqZGF0YTsNCisJCX0g eHNrOw0KKwl9Ow0KIH07DQogDQogLyogWERQIHBhY2tldHMgY2FuIGJlIHRyYW5zbWl0dGVkIGlu IGRpZmZlcmVudCB3YXlzLiBPbiBjb21wbGV0aW9uLCB3ZSBuZWVkIHRvDQpAQCAtNDY2LDkgKzQ4 MCwxMSBAQCBzdHJ1Y3QgbWx4NWVfeGRwX21wd3FlIHsNCiB9Ow0KIA0KIHN0cnVjdCBtbHg1ZV94 ZHBzcTsNCit0eXBlZGVmIGludCAoKm1seDVlX2ZwX3htaXRfeGRwX2ZyYW1lX2NoZWNrKShzdHJ1 Y3QgbWx4NWVfeGRwc3EgKik7DQogdHlwZWRlZiBib29sICgqbWx4NWVfZnBfeG1pdF94ZHBfZnJh bWUpKHN0cnVjdCBtbHg1ZV94ZHBzcSAqLA0KIAkJCQkJc3RydWN0IG1seDVlX3hkcF94bWl0X2Rh dGEgKiwNCi0JCQkJCXN0cnVjdCBtbHg1ZV94ZHBfaW5mbyAqKTsNCisJCQkJCXN0cnVjdCBtbHg1 ZV94ZHBfaW5mbyAqLA0KKwkJCQkJaW50KTsNCiANCiBzdHJ1Y3QgbWx4NWVfeGRwc3Egew0KIAkv KiBkYXRhIHBhdGggKi8NCkBAIC00ODYsOCArNTAyLDEwIEBAIHN0cnVjdCBtbHg1ZV94ZHBzcSB7 DQogCXN0cnVjdCBtbHg1ZV9jcSAgICAgICAgICAgIGNxOw0KIA0KIAkvKiByZWFkIG9ubHkgKi8N CisJc3RydWN0IHhkcF91bWVtICAgICAgICAgICAqdW1lbTsNCiAJc3RydWN0IG1seDVfd3FfY3lj ICAgICAgICAgd3E7DQogCXN0cnVjdCBtbHg1ZV94ZHBzcV9zdGF0cyAgKnN0YXRzOw0KKwltbHg1 ZV9mcF94bWl0X3hkcF9mcmFtZV9jaGVjayB4bWl0X3hkcF9mcmFtZV9jaGVjazsNCiAJbWx4NWVf ZnBfeG1pdF94ZHBfZnJhbWUgICAgeG1pdF94ZHBfZnJhbWU7DQogCXN0cnVjdCB7DQogCQlzdHJ1 Y3QgbWx4NWVfeGRwX3dxZV9pbmZvICp3cWVfaW5mbzsNCkBAIC02MTgsNiArNjM2LDcgQEAgc3Ry dWN0IG1seDVlX3JxIHsNCiAJCX0gbXB3cWU7DQogCX07DQogCXN0cnVjdCB7DQorCQl1MTYgICAg ICAgICAgICB1bWVtX2hlYWRyb29tOw0KIAkJdTE2ICAgICAgICAgICAgaGVhZHJvb207DQogCQl1 OCAgICAgICAgICAgICBtYXBfZGlyOyAgIC8qIGRtYSBtYXAgZGlyZWN0aW9uICovDQogCX0gYnVm ZjsNCkBAIC02NDgsNiArNjY3LDEwIEBAIHN0cnVjdCBtbHg1ZV9ycSB7DQogCURFQ0xBUkVfQklU TUFQKGZsYWdzLCA4KTsNCiAJc3RydWN0IHBhZ2VfcG9vbCAgICAgICpwYWdlX3Bvb2w7DQogDQor CS8qIEFGX1hEUCB6ZXJvLWNvcHkgKi8NCisJc3RydWN0IHplcm9fY29weV9hbGxvY2F0b3IgemNh Ow0KKwlzdHJ1Y3QgeGRwX3VtZW0gICAgICAgKnVtZW07DQorDQogCS8qIGNvbnRyb2wgKi8NCiAJ c3RydWN0IG1seDVfd3FfY3RybCAgICB3cV9jdHJsOw0KIAlfX2JlMzIgICAgICAgICAgICAgICAg IG1rZXlfYmU7DQpAQCAtNjYwLDYgKzY4MywxMSBAQCBzdHJ1Y3QgbWx4NWVfcnEgew0KIAlzdHJ1 Y3QgeGRwX3J4cV9pbmZvICAgIHhkcF9yeHE7DQogfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5f c21wOw0KIA0KK2VudW0gbWx4NWVfY2hhbm5lbF9zdGF0ZSB7DQorCU1MWDVFX0NIQU5ORUxfU1RB VEVfWFNLLA0KKwlNTFg1RV9DSEFOTkVMX05VTV9TVEFURVMNCit9Ow0KKw0KIHN0cnVjdCBtbHg1 ZV9jaGFubmVsIHsNCiAJLyogZGF0YSBwYXRoICovDQogCXN0cnVjdCBtbHg1ZV9ycSAgICAgICAg ICAgIHJxOw0KQEAgLTY3Niw2ICs3MDQsMTMgQEAgc3RydWN0IG1seDVlX2NoYW5uZWwgew0KIAkv KiBYRFBfUkVESVJFQ1QgKi8NCiAJc3RydWN0IG1seDVlX3hkcHNxICAgICAgICAgeGRwc3E7DQog DQorCS8qIEFGX1hEUCB6ZXJvLWNvcHkgKi8NCisJc3RydWN0IG1seDVlX3JxICAgICAgICAgICAg eHNrcnE7DQorCXN0cnVjdCBtbHg1ZV94ZHBzcSAgICAgICAgIHhza3NxOw0KKwlzdHJ1Y3QgbWx4 NWVfaWNvc3EgICAgICAgICB4c2tpY29zcTsNCisJLyogeHNraWNvc3EgY2FuIGJlIGFjY2Vzc2Vk IGZyb20gYW55IENQVSAtIHRoZSBzcGlubG9jayBwcm90ZWN0cyBpdC4gKi8NCisJc3BpbmxvY2tf dCAgICAgICAgICAgICAgICAgeHNraWNvc3FfbG9jazsNCisNCiAJLyogZGF0YSBwYXRoIC0gYWNj ZXNzZWQgcGVyIG5hcGkgcG9sbCAqLw0KIAlzdHJ1Y3QgaXJxX2Rlc2MgKmlycV9kZXNjOw0KIAlz dHJ1Y3QgbWx4NWVfY2hfc3RhdHMgICAgICpzdGF0czsNCkBAIC02ODQsNiArNzE5LDcgQEAgc3Ry dWN0IG1seDVlX2NoYW5uZWwgew0KIAlzdHJ1Y3QgbWx4NWVfcHJpdiAgICAgICAgICpwcml2Ow0K IAlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAgICAgICptZGV2Ow0KIAlzdHJ1Y3QgaHd0c3RhbXBfY29u ZmlnICAgICp0c3RhbXA7DQorCURFQ0xBUkVfQklUTUFQKHN0YXRlLCBNTFg1RV9DSEFOTkVMX05V TV9TVEFURVMpOw0KIAlpbnQgICAgICAgICAgICAgICAgICAgICAgICBpeDsNCiAJaW50ICAgICAg ICAgICAgICAgICAgICAgICAgY3B1Ow0KIAljcHVtYXNrX3Zhcl90ICAgICAgICAgICAgICB4cHNf Y3B1bWFzazsNCkBAIC02OTksMTQgKzczNSwxNyBAQCBzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0 cyB7DQogCXN0cnVjdCBtbHg1ZV9jaF9zdGF0cyBjaDsNCiAJc3RydWN0IG1seDVlX3NxX3N0YXRz IHNxW01MWDVFX01BWF9OVU1fVENdOw0KIAlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgcnE7DQorCXN0 cnVjdCBtbHg1ZV9ycV9zdGF0cyB4c2tycTsNCiAJc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzIHJx X3hkcHNxOw0KIAlzdHJ1Y3QgbWx4NWVfeGRwc3Ffc3RhdHMgeGRwc3E7DQorCXN0cnVjdCBtbHg1 ZV94ZHBzcV9zdGF0cyB4c2tzcTsNCiB9IF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7DQog DQogZW51bSB7DQogCU1MWDVFX1NUQVRFX09QRU5FRCwNCiAJTUxYNUVfU1RBVEVfREVTVFJPWUlO RywNCiAJTUxYNUVfU1RBVEVfWERQX1RYX0VOQUJMRUQsDQorCU1MWDVFX1NUQVRFX1hEUF9PUEVO LA0KIH07DQogDQogc3RydWN0IG1seDVlX3JxdCB7DQpAQCAtNzM5LDYgKzc3OCwxNyBAQCBzdHJ1 Y3QgbWx4NWVfbW9kaWZ5X3NxX3BhcmFtIHsNCiAJaW50IHJsX2luZGV4Ow0KIH07DQogDQorc3Ry dWN0IG1seDVlX3hzayB7DQorCS8qIFVNRU1zIGFyZSBzdG9yZWQgc2VwYXJhdGVseSBmcm9tIGNo YW5uZWxzLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8NCisJICogbG9zZSB0aGVtIHdoZW4gY2hh bm5lbHMgYXJlIHJlY3JlYXRlZC4gVGhlIGtlcm5lbCBhbHNvIHN0b3JlcyBVTUVNcywNCisJICog YnV0IGl0IGRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB6ZXJvLWNvcHkgYW5kIG5vbi16ZXJv LWNvcHkgVU1FTXMsDQorCSAqIHNvIHJlbHkgb24gb3VyIG1lY2hhbmlzbS4NCisJICovDQorCXN0 cnVjdCB4ZHBfdW1lbSAqKnVtZW1zOw0KKwl1MTYgcmVmY250Ow0KKwlib29sIGV2ZXJfdXNlZDsN Cit9Ow0KKw0KIHN0cnVjdCBtbHg1ZV9wcml2IHsNCiAJLyogcHJpdiBkYXRhIHBhdGggZmllbGRz IC0gc3RhcnQgKi8NCiAJc3RydWN0IG1seDVlX3R4cXNxICp0eHEyc3FbTUxYNUVfTUFYX05VTV9D SEFOTkVMUyAqIE1MWDVFX01BWF9OVU1fVENdOw0KQEAgLTc1OSw2ICs4MDksNyBAQCBzdHJ1Y3Qg bWx4NWVfcHJpdiB7DQogCXN0cnVjdCBtbHg1ZV90aXIgICAgICAgICAgIGluZGlyX3RpcltNTFg1 RV9OVU1fSU5ESVJfVElSU107DQogCXN0cnVjdCBtbHg1ZV90aXIgICAgICAgICAgIGlubmVyX2lu ZGlyX3RpcltNTFg1RV9OVU1fSU5ESVJfVElSU107DQogCXN0cnVjdCBtbHg1ZV90aXIgICAgICAg ICAgIGRpcmVjdF90aXJbTUxYNUVfTUFYX05VTV9DSEFOTkVMU107DQorCXN0cnVjdCBtbHg1ZV90 aXIgICAgICAgICAgIHhza190aXJbTUxYNUVfTUFYX05VTV9DSEFOTkVMU107DQogCXN0cnVjdCBt bHg1ZV9yc3NfcGFyYW1zICAgIHJzc19wYXJhbXM7DQogCXUzMiAgICAgICAgICAgICAgICAgICAg ICAgIHR4X3JhdGVzW01MWDVFX01BWF9OVU1fU1FTXTsNCiANCkBAIC03OTUsNiArODQ2LDcgQEAg c3RydWN0IG1seDVlX3ByaXYgew0KIAlzdHJ1Y3QgbWx4NWVfdGxzICAgICAgICAgICp0bHM7DQog I2VuZGlmDQogCXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqdHhfcmVwb3J0ZXI7DQor CXN0cnVjdCBtbHg1ZV94c2sgICAgICAgICAgIHhzazsNCiB9Ow0KIA0KIHN0cnVjdCBtbHg1ZV9w cm9maWxlIHsNCkBAIC04MzgsOCArODkwLDkgQEAgYm9vbCBtbHg1ZV9zdHJpZGluZ19ycV9wb3Nz aWJsZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCiAJCQkJc3RydWN0IG1seDVlX3BhcmFt cyAqcGFyYW1zKTsNCiANCiB2b2lkIG1seDVlX3BhZ2VfZG1hX3VubWFwKHN0cnVjdCBtbHg1ZV9y cSAqcnEsIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8pOw0KLXZvaWQgbWx4NWVfcGFn ZV9yZWxlYXNlKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1h X2luZm8sDQotCQkJYm9vbCByZWN5Y2xlKTsNCit2b2lkIG1seDVlX3BhZ2VfcmVsZWFzZV9keW5h bWljKHN0cnVjdCBtbHg1ZV9ycSAqcnEsDQorCQkJCXN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1h X2luZm8sDQorCQkJCWJvb2wgcmVjeWNsZSk7DQogdm9pZCBtbHg1ZV9oYW5kbGVfcnhfY3FlKHN0 cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBtbHg1X2NxZTY0ICpjcWUpOw0KIHZvaWQgbWx4NWVf aGFuZGxlX3J4X2NxZV9tcHdycShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NV9jcWU2 NCAqY3FlKTsNCiBib29sIG1seDVlX3Bvc3Rfcnhfd3FlcyhzdHJ1Y3QgbWx4NWVfcnEgKnJxKTsN CkBAIC04OTksNiArOTUyLDMwIEBAIHZvaWQgbWx4NWVfYnVpbGRfaW5kaXJfdGlyX2N0eF9oYXNo KHN0cnVjdCBtbHg1ZV9yc3NfcGFyYW1zICpyc3NfcGFyYW1zLA0KIHZvaWQgbWx4NWVfbW9kaWZ5 X3RpcnNfaGFzaChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdm9pZCAqaW4sIGludCBpbmxlbik7 DQogc3RydWN0IG1seDVlX3RpcmNfY29uZmlnIG1seDVlX3RpcmNfZ2V0X2RlZmF1bHRfY29uZmln KGVudW0gbWx4NWVfdHJhZmZpY190eXBlcyB0dCk7DQogDQorc3RydWN0IG1seDVlX3hza19wYXJh bTsNCisNCitzdHJ1Y3QgbWx4NWVfcnFfcGFyYW07DQoraW50IG1seDVlX29wZW5fcnEoc3RydWN0 IG1seDVlX2NoYW5uZWwgKmMsIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCSAgc3Ry dWN0IG1seDVlX3JxX3BhcmFtICpwYXJhbSwgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrLA0K KwkJICBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sIHN0cnVjdCBtbHg1ZV9ycSAqcnEpOw0KK2ludCBt bHg1ZV93YWl0X2Zvcl9taW5fcnhfd3FlcyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBpbnQgd2FpdF90 aW1lKTsNCit2b2lkIG1seDVlX2RlYWN0aXZhdGVfcnEoc3RydWN0IG1seDVlX3JxICpycSk7DQor dm9pZCBtbHg1ZV9jbG9zZV9ycShzdHJ1Y3QgbWx4NWVfcnEgKnJxKTsNCisNCitzdHJ1Y3QgbWx4 NWVfc3FfcGFyYW07DQoraW50IG1seDVlX29wZW5faWNvc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwg KmMsIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCSAgICAgc3RydWN0IG1seDVlX3Nx X3BhcmFtICpwYXJhbSwgc3RydWN0IG1seDVlX2ljb3NxICpzcSk7DQordm9pZCBtbHg1ZV9jbG9z ZV9pY29zcShzdHJ1Y3QgbWx4NWVfaWNvc3EgKnNxKTsNCitpbnQgbWx4NWVfb3Blbl94ZHBzcShz dHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJ ICAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtLCBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0s DQorCQkgICAgIHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIGJvb2wgaXNfcmVkaXJlY3QpOw0KK3Zv aWQgbWx4NWVfY2xvc2VfeGRwc3Eoc3RydWN0IG1seDVlX3hkcHNxICpzcSk7DQorDQorc3RydWN0 IG1seDVlX2NxX3BhcmFtOw0KK2ludCBtbHg1ZV9vcGVuX2NxKHN0cnVjdCBtbHg1ZV9jaGFubmVs ICpjLCBzdHJ1Y3QgbmV0X2RpbV9jcV9tb2RlciBtb2RlciwNCisJCSAgc3RydWN0IG1seDVlX2Nx X3BhcmFtICpwYXJhbSwgc3RydWN0IG1seDVlX2NxICpjcSk7DQordm9pZCBtbHg1ZV9jbG9zZV9j cShzdHJ1Y3QgbWx4NWVfY3EgKmNxKTsNCisNCiBpbnQgbWx4NWVfb3Blbl9sb2NrZWQoc3RydWN0 IG5ldF9kZXZpY2UgKm5ldGRldik7DQogaW50IG1seDVlX2Nsb3NlX2xvY2tlZChzdHJ1Y3QgbmV0 X2RldmljZSAqbmV0ZGV2KTsNCiANCkBAIC0xMDY5LDEwICsxMTQ2LDEwIEBAIGludCBtbHg1ZV9j cmVhdGVfaW5kaXJlY3RfcnF0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KTsNCiBpbnQgbWx4NWVf Y3JlYXRlX2luZGlyZWN0X3RpcnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGJvb2wgaW5uZXJf dHRjKTsNCiB2b2lkIG1seDVlX2Rlc3Ryb3lfaW5kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdiwgYm9vbCBpbm5lcl90dGMpOw0KIA0KLWludCBtbHg1ZV9jcmVhdGVfZGlyZWN0X3Jx dHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpOw0KLXZvaWQgbWx4NWVfZGVzdHJveV9kaXJlY3Rf cnF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdik7DQotaW50IG1seDVlX2NyZWF0ZV9kaXJlY3Rf dGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdik7DQotdm9pZCBtbHg1ZV9kZXN0cm95X2RpcmVj dF90aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KTsNCitpbnQgbWx4NWVfY3JlYXRlX2RpcmVj dF9ycXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfdGlyICp0aXJzKTsN Cit2b2lkIG1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYs IHN0cnVjdCBtbHg1ZV90aXIgKnRpcnMpOw0KK2ludCBtbHg1ZV9jcmVhdGVfZGlyZWN0X3RpcnMo c3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg1ZV90aXIgKnRpcnMpOw0KK3ZvaWQg bWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0 IG1seDVlX3RpciAqdGlycyk7DQogdm9pZCBtbHg1ZV9kZXN0cm95X3JxdChzdHJ1Y3QgbWx4NWVf cHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX3JxdCAqcnF0KTsNCiANCiBpbnQgbWx4NWVfY3JlYXRl X3RpcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgaW50IHRjLA0KQEAgLTExNDMsNiArMTIy MCw3IEBAIHZvaWQgbWx4NWVfZGV0YWNoX25ldGRldihzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdik7 DQogdm9pZCBtbHg1ZV9kZXN0cm95X25ldGRldihzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdik7DQog dm9pZCBtbHg1ZV9zZXRfbmV0ZGV2X210dV9ib3VuZGFyaWVzKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2KTsNCiB2b2lkIG1seDVlX2J1aWxkX25pY19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYg Km1kZXYsDQorCQkJICAgIHN0cnVjdCBtbHg1ZV94c2sgKnhzaywNCiAJCQkgICAgc3RydWN0IG1s eDVlX3Jzc19wYXJhbXMgKnJzc19wYXJhbXMsDQogCQkJICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMg KnBhcmFtcywNCiAJCQkgICAgdTE2IG1heF9jaGFubmVscywgdTE2IG10dSk7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5jIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5jDQppbmRl eCAwZGU5MDhiMTJmY2MuLjc5MzAxZDExNjY2NyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wYXJhbXMuYw0KKysrIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5jDQpAQCAtNDksNDggKzQ5LDU2 IEBAIHUzMiBtbHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3ooc3RydWN0IG1seDVlX3BhcmFtcyAq cGFyYW1zLA0KIAlyZXR1cm4gZnJhZ19zejsNCiB9DQogDQotdTggbWx4NWVfbXB3cWVfbG9nX3Br dHNfcGVyX3dxZShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMpDQordTggbWx4NWVfbXB3cWVf bG9nX3BrdHNfcGVyX3dxZShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJCXN0cnVj dCBtbHg1ZV94c2tfcGFyYW0gKnhzaykNCiB7DQotCXUzMiBsaW5lYXJfZnJhZ19zeiA9IG1seDVl X3J4X2dldF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIE5VTEwpOw0KKwl1MzIgbGluZWFyX2ZyYWdf c3ogPSBtbHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spOw0KIA0KIAlyZXR1 cm4gTUxYNV9NUFdSUV9MT0dfV1FFX1NaIC0gb3JkZXJfYmFzZV8yKGxpbmVhcl9mcmFnX3N6KTsN CiB9DQogDQotYm9vbCBtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHN0cnVjdCBtbHg1ZV9wYXJhbXMg KnBhcmFtcykNCitib29sIG1seDVlX3J4X2lzX2xpbmVhcl9za2Ioc3RydWN0IG1seDVlX3BhcmFt cyAqcGFyYW1zLA0KKwkJCSAgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spDQogew0KLQl1 MzIgZnJhZ19zeiA9IG1seDVlX3J4X2dldF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIE5VTEwpOw0K KwkvKiBBRl9YRFAgYWxsb2NhdGVzIFNLQnMgb24gWERQX1BBU1MgLSBlbnN1cmUgdGhleSBkb24n dCBvY2N1cHkgbW9yZQ0KKwkgKiB0aGFuIG9uZSBwYWdlLiBGb3IgdGhpcywgY2hlY2sgYm90aCB3 aXRoIGFuZCB3aXRob3V0IHhzay4NCisJICovDQorCXUzMiBsaW5lYXJfZnJhZ19zeiA9IG1heCht bHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spLA0KKwkJCQkgbWx4NWVfcnhf Z2V0X2xpbmVhcl9mcmFnX3N6KHBhcmFtcywgTlVMTCkpOw0KIA0KLQlyZXR1cm4gIXBhcmFtcy0+ bHJvX2VuICYmIGZyYWdfc3ogPD0gUEFHRV9TSVpFOw0KKwlyZXR1cm4gIXBhcmFtcy0+bHJvX2Vu ICYmIGxpbmVhcl9mcmFnX3N6IDw9IFBBR0VfU0laRTsNCiB9DQogDQogI2RlZmluZSBNTFg1X01B WF9NUFdRRV9MT0dfV1FFX1NUUklERV9TWiAoKEJJVChfX21seDVfYml0X3N6KHdxLCBsb2dfd3Fl X3N0cmlkZV9zaXplKSkgLSAxKSArIFwNCiAJCQkJCSAgTUxYNV9NUFdRRV9MT0dfU1RSSURFX1Na X0JBU0UpDQogYm9vbCBtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKHN0cnVjdCBtbHg1X2Nv cmVfZGV2ICptZGV2LA0KLQkJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCisJCQkJ ICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJCSAgc3RydWN0IG1seDVlX3hza19w YXJhbSAqeHNrKQ0KIHsNCi0JdTMyIGZyYWdfc3ogPSBtbHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdf c3oocGFyYW1zLCBOVUxMKTsNCisJdTMyIGxpbmVhcl9mcmFnX3N6ID0gbWx4NWVfcnhfZ2V0X2xp bmVhcl9mcmFnX3N6KHBhcmFtcywgeHNrKTsNCiAJczggc2lnbmVkX2xvZ19udW1fc3RyaWRlc19w YXJhbTsNCiAJdTggbG9nX251bV9zdHJpZGVzOw0KIA0KLQlpZiAoIW1seDVlX3J4X2lzX2xpbmVh cl9za2IocGFyYW1zKSkNCisJaWYgKCFtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFtcywgeHNr KSkNCiAJCXJldHVybiBmYWxzZTsNCiANCi0JaWYgKG9yZGVyX2Jhc2VfMihmcmFnX3N6KSA+IE1M WDVfTUFYX01QV1FFX0xPR19XUUVfU1RSSURFX1NaKQ0KKwlpZiAob3JkZXJfYmFzZV8yKGxpbmVh cl9mcmFnX3N6KSA+IE1MWDVfTUFYX01QV1FFX0xPR19XUUVfU1RSSURFX1NaKQ0KIAkJcmV0dXJu IGZhbHNlOw0KIA0KIAlpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIGV4dF9zdHJpZGVfbnVtX3Jhbmdl KSkNCiAJCXJldHVybiB0cnVlOw0KIA0KLQlsb2dfbnVtX3N0cmlkZXMgPSBNTFg1X01QV1JRX0xP R19XUUVfU1ogLSBvcmRlcl9iYXNlXzIoZnJhZ19zeik7DQorCWxvZ19udW1fc3RyaWRlcyA9IE1M WDVfTVBXUlFfTE9HX1dRRV9TWiAtIG9yZGVyX2Jhc2VfMihsaW5lYXJfZnJhZ19zeik7DQogCXNp Z25lZF9sb2dfbnVtX3N0cmlkZXNfcGFyYW0gPQ0KIAkJKHM4KWxvZ19udW1fc3RyaWRlcyAtIE1M WDVfTVBXUUVfTE9HX05VTV9TVFJJREVTX0JBU0U7DQogDQogCXJldHVybiBzaWduZWRfbG9nX251 bV9zdHJpZGVzX3BhcmFtID49IDA7DQogfQ0KIA0KLXU4IG1seDVlX21wd3FlX2dldF9sb2dfcnFf c2l6ZShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMpDQordTggbWx4NWVfbXB3cWVfZ2V0X2xv Z19ycV9zaXplKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkgICAgICAgc3RydWN0 IG1seDVlX3hza19wYXJhbSAqeHNrKQ0KIHsNCi0JdTggbG9nX3BrdHNfcGVyX3dxZSA9IG1seDVl X21wd3FlX2xvZ19wa3RzX3Blcl93cWUocGFyYW1zKTsNCisJdTggbG9nX3BrdHNfcGVyX3dxZSA9 IG1seDVlX21wd3FlX2xvZ19wa3RzX3Blcl93cWUocGFyYW1zLCB4c2spOw0KIA0KIAkvKiBOdW1i ZXJzIGFyZSB1bnNpZ25lZCwgZG9uJ3Qgc3VidHJhY3QgdG8gYXZvaWQgdW5kZXJmbG93LiAqLw0K IAlpZiAocGFyYW1zLT5sb2dfcnFfbXR1X2ZyYW1lcyA8DQpAQCAtMTAxLDI3ICsxMDksMzAgQEAg dTggbWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFt cykNCiB9DQogDQogdTggbWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJpZGVfc2l6ZShzdHJ1Y3QgbWx4 NV9jb3JlX2RldiAqbWRldiwNCi0JCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKQ0K KwkJCQkgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJCSAgIHN0cnVjdCBtbHg1 ZV94c2tfcGFyYW0gKnhzaykNCiB7DQotCWlmIChtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2ti KG1kZXYsIHBhcmFtcykpDQotCQlyZXR1cm4gb3JkZXJfYmFzZV8yKG1seDVlX3J4X2dldF9saW5l YXJfZnJhZ19zeihwYXJhbXMsIE5VTEwpKTsNCisJaWYgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVh cl9za2IobWRldiwgcGFyYW1zLCB4c2spKQ0KKwkJcmV0dXJuIG9yZGVyX2Jhc2VfMihtbHg1ZV9y eF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spKTsNCiANCiAJcmV0dXJuIE1MWDVfTVBX UlFfREVGX0xPR19TVFJJREVfU1oobWRldik7DQogfQ0KIA0KIHU4IG1seDVlX21wd3FlX2dldF9s b2dfbnVtX3N0cmlkZXMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQotCQkJCSAgIHN0cnVj dCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCisJCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFy YW1zLA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spDQogew0KIAlyZXR1cm4g TUxYNV9NUFdSUV9MT0dfV1FFX1NaIC0NCi0JCW1seDVlX21wd3FlX2dldF9sb2dfc3RyaWRlX3Np emUobWRldiwgcGFyYW1zKTsNCisJCW1seDVlX21wd3FlX2dldF9sb2dfc3RyaWRlX3NpemUobWRl diwgcGFyYW1zLCB4c2spOw0KIH0NCiANCiB1MTYgbWx4NWVfZ2V0X3JxX2hlYWRyb29tKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KLQkJCSAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1z KQ0KKwkJCSAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgc3RydWN0IG1seDVl X3hza19wYXJhbSAqeHNrKQ0KIHsNCiAJYm9vbCBpc19saW5lYXJfc2tiID0gKHBhcmFtcy0+cnFf d3FfdHlwZSA9PSBNTFg1X1dRX1RZUEVfQ1lDTElDKSA/DQotCQltbHg1ZV9yeF9pc19saW5lYXJf c2tiKHBhcmFtcykgOg0KLQkJbWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCBwYXJh bXMpOw0KKwkJbWx4NWVfcnhfaXNfbGluZWFyX3NrYihwYXJhbXMsIHhzaykgOg0KKwkJbWx4NWVf cnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCBwYXJhbXMsIHhzayk7DQogDQotCXJldHVybiBp c19saW5lYXJfc2tiID8gbWx4NWVfZ2V0X2xpbmVhcl9ycV9oZWFkcm9vbShwYXJhbXMsIE5VTEwp IDogMDsNCisJcmV0dXJuIGlzX2xpbmVhcl9za2IgPyBtbHg1ZV9nZXRfbGluZWFyX3JxX2hlYWRy b29tKHBhcmFtcywgeHNrKSA6IDA7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wYXJhbXMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9lbi9wYXJhbXMuaA0KaW5kZXggZjgzNDE3YjgyMmJmLi5iZDg4 MmI1ZWU5YTcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1 L2NvcmUvZW4vcGFyYW1zLmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbi9wYXJhbXMuaA0KQEAgLTQwLDIyICs0MCw4NSBAQCBzdHJ1Y3QgbWx4NWVfY2hh bm5lbF9wYXJhbSB7DQogCXN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAgICAgIGljb3NxX2NxOw0KIH07 DQogDQorc3RhdGljIGlubGluZSBib29sIG1seDVlX3FpZF9nZXRfY2hfaWZfaW5fZ3JvdXAoc3Ry dWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkJCXUxNiBxaWQsDQorCQkJCQkJZW51bSBt bHg1ZV9ycV9ncm91cCBncm91cCwNCisJCQkJCQl1MTYgKml4KQ0KK3sNCisJaW50IG5jaCA9IHBh cmFtcy0+bnVtX2NoYW5uZWxzOw0KKwlpbnQgY2ggPSBxaWQgLSBuY2ggKiBncm91cDsNCisNCisJ aWYgKGNoIDwgMCB8fCBjaCA+PSBuY2gpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCSppeCA9IGNo Ow0KKwlyZXR1cm4gdHJ1ZTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIG1seDVlX3FpZF9n ZXRfY2hfYW5kX2dyb3VwKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJCSAgICAg IHUxNiBxaWQsDQorCQkJCQkgICAgICB1MTYgKml4LA0KKwkJCQkJICAgICAgZW51bSBtbHg1ZV9y cV9ncm91cCAqZ3JvdXApDQorew0KKwl1MTYgbmNoID0gcGFyYW1zLT5udW1fY2hhbm5lbHM7DQor DQorCSppeCA9IHFpZCAlIG5jaDsNCisJKmdyb3VwID0gcWlkIC8gbmNoOw0KK30NCisNCitzdGF0 aWMgaW5saW5lIGJvb2wgbWx4NWVfcWlkX3ZhbGlkYXRlKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBh cmFtcywgdTY0IHFpZCkNCit7DQorCXJldHVybiBxaWQgPCBwYXJhbXMtPm51bV9jaGFubmVscyAq IE1MWDVFX05VTV9SUV9HUk9VUFM7DQorfQ0KKw0KIC8qIFBhcmFtZXRlciBjYWxjdWxhdGlvbnMg Ki8NCiANCiB1MTYgbWx4NWVfZ2V0X2xpbmVhcl9ycV9oZWFkcm9vbShzdHJ1Y3QgbWx4NWVfcGFy YW1zICpwYXJhbXMsDQogCQkJCSBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KIHUzMiBt bHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3ooc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0K IAkJCQlzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KLXU4IG1seDVlX21wd3FlX2xvZ19w a3RzX3Blcl93cWUoc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKTsNCi1ib29sIG1seDVlX3J4 X2lzX2xpbmVhcl9za2Ioc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKTsNCit1OCBtbHg1ZV9t cHdxZV9sb2dfcGt0c19wZXJfd3FlKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJ c3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrKTsNCitib29sIG1seDVlX3J4X2lzX2xpbmVhcl9z a2Ioc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICBzdHJ1Y3QgbWx4NWVfeHNr X3BhcmFtICp4c2spOw0KIGJvb2wgbWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqbWRldiwNCi0JCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMp Ow0KLXU4IG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6ZShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpw YXJhbXMpOw0KKwkJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJICBzdHJ1 Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KK3U4IG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6 ZShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICAgICAgIHN0cnVjdCBtbHg1ZV94 c2tfcGFyYW0gKnhzayk7DQogdTggbWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJpZGVfc2l6ZShzdHJ1 Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCi0JCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFy YW1zKTsNCisJCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgICBzdHJ1 Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KIHU4IG1seDVlX21wd3FlX2dldF9sb2dfbnVtX3N0 cmlkZXMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQotCQkJCSAgIHN0cnVjdCBtbHg1ZV9w YXJhbXMgKnBhcmFtcyk7DQorCQkJCSAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJ CQkJICAgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrKTsNCiB1MTYgbWx4NWVfZ2V0X3JxX2hl YWRyb29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KLQkJCSAgc3RydWN0IG1seDVlX3Bh cmFtcyAqcGFyYW1zKTsNCisJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkg IHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzayk7DQorDQorLyogQnVpbGQgcXVldWUgcGFyYW1l dGVycyAqLw0KKw0KK3ZvaWQgbWx4NWVfYnVpbGRfcnFfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYg KnByaXYsDQorCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICBzdHJ1Y3Qg bWx4NWVfeHNrX3BhcmFtICp4c2ssDQorCQkJICBzdHJ1Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFt KTsNCit2b2lkIG1seDVlX2J1aWxkX3NxX3BhcmFtX2NvbW1vbihzdHJ1Y3QgbWx4NWVfcHJpdiAq cHJpdiwNCisJCQkJIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pOw0KK3ZvaWQgbWx4NWVf YnVpbGRfcnhfY3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJICAgICBzdHJ1 Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFt ICp4c2ssDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBhcmFtKTsNCit2b2lkIG1s eDVlX2J1aWxkX3R4X2NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCSAgICAg c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgc3RydWN0IG1seDVlX2NxX3Bh cmFtICpwYXJhbSk7DQordm9pZCBtbHg1ZV9idWlsZF9pY29fY3FfcGFyYW0oc3RydWN0IG1seDVl X3ByaXYgKnByaXYsDQorCQkJICAgICAgdTggbG9nX3dxX3NpemUsDQorCQkJICAgICAgc3RydWN0 IG1seDVlX2NxX3BhcmFtICpwYXJhbSk7DQordm9pZCBtbHg1ZV9idWlsZF9pY29zcV9wYXJhbShz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHU4IGxvZ193cV9zaXplLA0KKwkJCSAg ICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSk7DQordm9pZCBtbHg1ZV9idWlsZF94ZHBz cV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9w YXJhbXMgKnBhcmFtcywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pOw0K IA0KICNlbmRpZiAvKiBfX01MWDVfRU5fUEFSQU1TX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYw0KaW5kZXggZWU5OWVmZGU5MTQz Li5iMGI5ODJjZjY5YmIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZW4veGRwLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi94ZHAuYw0KQEAgLTMxLDYgKzMxLDcgQEANCiAgKi8NCiANCiAjaW5jbHVk ZSA8bGludXgvYnBmX3RyYWNlLmg+DQorI2luY2x1ZGUgPG5ldC94ZHBfc29jay5oPg0KICNpbmNs dWRlICJlbi94ZHAuaCINCiAjaW5jbHVkZSAiZW4vcGFyYW1zLmgiDQogDQpAQCAtMTEzLDEyICsx MTQsMTIgQEAgbWx4NWVfeG1pdF94ZHBfYnVmZihzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBzdHJ1 Y3QgbWx4NWVfcnEgKnJxLA0KIAkJeGRwaS5wYWdlLmRpICAgID0gKmRpOw0KIAl9DQogDQotCXJl dHVybiBzcS0+eG1pdF94ZHBfZnJhbWUoc3EsICZ4ZHB0eGQsICZ4ZHBpKTsNCisJcmV0dXJuIHNx LT54bWl0X3hkcF9mcmFtZShzcSwgJnhkcHR4ZCwgJnhkcGksIDApOw0KIH0NCiANCiAvKiByZXR1 cm5zIHRydWUgaWYgcGFja2V0IHdhcyBjb25zdW1lZCBieSB4ZHAgKi8NCiBib29sIG1seDVlX3hk cF9oYW5kbGUoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkaSwN Ci0JCSAgICAgIHZvaWQgKnZhLCB1MTYgKnJ4X2hlYWRyb29tLCB1MzIgKmxlbikNCisJCSAgICAg IHZvaWQgKnZhLCB1MTYgKnJ4X2hlYWRyb29tLCB1MzIgKmxlbiwgYm9vbCB4c2spDQogew0KIAlz dHJ1Y3QgYnBmX3Byb2cgKnByb2cgPSBSRUFEX09OQ0UocnEtPnhkcF9wcm9nKTsNCiAJc3RydWN0 IHhkcF9idWZmIHhkcDsNCkBAIC0xMzIsOSArMTMzLDEzIEBAIGJvb2wgbWx4NWVfeGRwX2hhbmRs ZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRpLA0KIAl4ZHBf c2V0X2RhdGFfbWV0YV9pbnZhbGlkKCZ4ZHApOw0KIAl4ZHAuZGF0YV9lbmQgPSB4ZHAuZGF0YSAr ICpsZW47DQogCXhkcC5kYXRhX2hhcmRfc3RhcnQgPSB2YTsNCisJaWYgKHhzaykNCisJCXhkcC5o YW5kbGUgPSBkaS0+eHNrLmhhbmRsZTsNCiAJeGRwLnJ4cSA9ICZycS0+eGRwX3J4cTsNCiANCiAJ YWN0ID0gYnBmX3Byb2dfcnVuX3hkcChwcm9nLCAmeGRwKTsNCisJaWYgKHhzaykNCisJCXhkcC5o YW5kbGUgKz0geGRwLmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0YXJ0Ow0KIAlzd2l0Y2ggKGFjdCkg ew0KIAljYXNlIFhEUF9QQVNTOg0KIAkJKnJ4X2hlYWRyb29tID0geGRwLmRhdGEgLSB4ZHAuZGF0 YV9oYXJkX3N0YXJ0Ow0KQEAgLTE1Miw3ICsxNTcsOCBAQCBib29sIG1seDVlX3hkcF9oYW5kbGUo c3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkaSwNCiAJCQlnb3Rv IHhkcF9hYm9ydDsNCiAJCV9fc2V0X2JpdChNTFg1RV9SUV9GTEFHX1hEUF9YTUlULCBycS0+Zmxh Z3MpOw0KIAkJX19zZXRfYml0KE1MWDVFX1JRX0ZMQUdfWERQX1JFRElSRUNULCBycS0+ZmxhZ3Mp Ow0KLQkJbWx4NWVfcGFnZV9kbWFfdW5tYXAocnEsIGRpKTsNCisJCWlmICgheHNrKQ0KKwkJCW1s eDVlX3BhZ2VfZG1hX3VubWFwKHJxLCBkaSk7DQogCQlycS0+c3RhdHMtPnhkcF9yZWRpcmVjdCsr Ow0KIAkJcmV0dXJuIHRydWU7DQogCWRlZmF1bHQ6DQpAQCAtMjA2LDcgKzIxMiw3IEBAIHN0YXRp YyB2b2lkIG1seDVlX3hkcF9tcHdxZV9zZXNzaW9uX3N0YXJ0KHN0cnVjdCBtbHg1ZV94ZHBzcSAq c3EpDQogCXN0YXRzLT5tcHdxZSsrOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV94ZHBfbXB3 cWVfY29tcGxldGUoc3RydWN0IG1seDVlX3hkcHNxICpzcSkNCit2b2lkIG1seDVlX3hkcF9tcHdx ZV9jb21wbGV0ZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKQ0KIHsNCiAJc3RydWN0IG1seDVfd3Ff Y3ljICAgICAgICp3cSAgICA9ICZzcS0+d3E7DQogCXN0cnVjdCBtbHg1ZV94ZHBfbXB3cWUgKnNl c3Npb24gPSAmc3EtPm1wd3FlOw0KQEAgLTIyOSw5ICsyMzUsMzIgQEAgc3RhdGljIHZvaWQgbWx4 NWVfeGRwX21wd3FlX2NvbXBsZXRlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpDQogCXNlc3Npb24t PndxZSA9IE5VTEw7IC8qIENsb3NlIHNlc3Npb24gKi8NCiB9DQogDQorZW51bSB7DQorCU1MWDVF X1hEUF9DSEVDS19PSyA9IDEsDQorCU1MWDVFX1hEUF9DSEVDS19TVEFSVF9NUFdRRSA9IDIsDQor fTsNCisNCitzdGF0aWMgaW50IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrX21wd3FlKHN0cnVj dCBtbHg1ZV94ZHBzcSAqc3EpDQorew0KKwlpZiAodW5saWtlbHkoIXNxLT5tcHdxZS53cWUpKSB7 DQorCQlpZiAodW5saWtlbHkoIW1seDVlX3dxY19oYXNfcm9vbV9mb3IoJnNxLT53cSwgc3EtPmNj LCBzcS0+cGMsDQorCQkJCQkJICAgICBNTFg1X1NFTkRfV1FFX01BWF9XUUVCQlMpKSkgew0KKwkJ CS8qIFNRIGlzIGZ1bGwsIHJpbmcgZG9vcmJlbGwgKi8NCisJCQltbHg1ZV94bWl0X3hkcF9kb29y YmVsbChzcSk7DQorCQkJc3EtPnN0YXRzLT5mdWxsKys7DQorCQkJcmV0dXJuIC1FQlVTWTsNCisJ CX0NCisNCisJCXJldHVybiBNTFg1RV9YRFBfQ0hFQ0tfU1RBUlRfTVBXUUU7DQorCX0NCisNCisJ cmV0dXJuIE1MWDVFX1hEUF9DSEVDS19PSzsNCit9DQorDQogc3RhdGljIGJvb2wgbWx4NWVfeG1p dF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwNCiAJCQkJICAgICAgIHN0 cnVjdCBtbHg1ZV94ZHBfeG1pdF9kYXRhICp4ZHB0eGQsDQotCQkJCSAgICAgICBzdHJ1Y3QgbWx4 NWVfeGRwX2luZm8gKnhkcGkpDQorCQkJCSAgICAgICBzdHJ1Y3QgbWx4NWVfeGRwX2luZm8gKnhk cGksDQorCQkJCSAgICAgICBpbnQgY2hlY2tfcmVzdWx0KQ0KIHsNCiAJc3RydWN0IG1seDVlX3hk cF9tcHdxZSAqc2Vzc2lvbiA9ICZzcS0+bXB3cWU7DQogCXN0cnVjdCBtbHg1ZV94ZHBzcV9zdGF0 cyAqc3RhdHMgPSBzcS0+c3RhdHM7DQpAQCAtMjQxLDE1ICsyNzAsMTYgQEAgc3RhdGljIGJvb2wg bWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwNCiAJCXJl dHVybiBmYWxzZTsNCiAJfQ0KIA0KLQlpZiAodW5saWtlbHkoIXNlc3Npb24tPndxZSkpIHsNCi0J CWlmICh1bmxpa2VseSghbWx4NWVfd3FjX2hhc19yb29tX2Zvcigmc3EtPndxLCBzcS0+Y2MsIHNx LT5wYywNCi0JCQkJCQkgICAgIE1MWDVfU0VORF9XUUVfTUFYX1dRRUJCUykpKSB7DQotCQkJLyog U1EgaXMgZnVsbCwgcmluZyBkb29yYmVsbCAqLw0KLQkJCW1seDVlX3htaXRfeGRwX2Rvb3JiZWxs KHNxKTsNCi0JCQlzdGF0cy0+ZnVsbCsrOw0KLQkJCXJldHVybiBmYWxzZTsNCi0JCX0NCisJaWYg KCFjaGVja19yZXN1bHQpDQorCQljaGVja19yZXN1bHQgPSBtbHg1ZV94bWl0X3hkcF9mcmFtZV9j aGVja19tcHdxZShzcSk7DQorCWlmICh1bmxpa2VseShjaGVja19yZXN1bHQgPCAwKSkNCisJCXJl dHVybiBmYWxzZTsNCiANCisJaWYgKGNoZWNrX3Jlc3VsdCA9PSBNTFg1RV9YRFBfQ0hFQ0tfU1RB UlRfTVBXUUUpIHsNCisJCS8qIFN0YXJ0IHRoZSBzZXNzaW9uIHdoZW4gbm90aGluZyBjYW4gZmFp bCwgc28gaXQncyBndWFyYW50ZWVkDQorCQkgKiB0aGF0IGlmIHRoZXJlIGlzIGFuIGFjdGl2ZSBz ZXNzaW9uLCBpdCBoYXMgYXQgbGVhc3Qgb25lIGRzZWcsDQorCQkgKiBhbmQgaXQncyBzYWZlIHRv IGNvbXBsZXRlIGl0IGF0IGFueSB0aW1lLg0KKwkJICovDQogCQltbHg1ZV94ZHBfbXB3cWVfc2Vz c2lvbl9zdGFydChzcSk7DQogCX0NCiANCkBAIC0yNjQsOSArMjk0LDIyIEBAIHN0YXRpYyBib29s IG1seDVlX3htaXRfeGRwX2ZyYW1lX21wd3FlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQogCXJl dHVybiB0cnVlOw0KIH0NCiANCitzdGF0aWMgaW50IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNr KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpDQorew0KKwlpZiAodW5saWtlbHkoIW1seDVlX3dxY19o YXNfcm9vbV9mb3IoJnNxLT53cSwgc3EtPmNjLCBzcS0+cGMsIDEpKSkgew0KKwkJLyogU1EgaXMg ZnVsbCwgcmluZyBkb29yYmVsbCAqLw0KKwkJbWx4NWVfeG1pdF94ZHBfZG9vcmJlbGwoc3EpOw0K KwkJc3EtPnN0YXRzLT5mdWxsKys7DQorCQlyZXR1cm4gLUVCVVNZOw0KKwl9DQorDQorCXJldHVy biBNTFg1RV9YRFBfQ0hFQ0tfT0s7DQorfQ0KKw0KIHN0YXRpYyBib29sIG1seDVlX3htaXRfeGRw X2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQogCQkJCSBzdHJ1Y3QgbWx4NWVfeGRwX3ht aXRfZGF0YSAqeGRwdHhkLA0KLQkJCQkgc3RydWN0IG1seDVlX3hkcF9pbmZvICp4ZHBpKQ0KKwkJ CQkgc3RydWN0IG1seDVlX3hkcF9pbmZvICp4ZHBpLA0KKwkJCQkgaW50IGNoZWNrX3Jlc3VsdCkN CiB7DQogCXN0cnVjdCBtbHg1X3dxX2N5YyAgICAgICAqd3EgICA9ICZzcS0+d3E7DQogCXUxNiAg ICAgICAgICAgICAgICAgICAgICAgcGkgICA9IG1seDVfd3FfY3ljX2N0cjJpeCh3cSwgc3EtPnBj KTsNCkBAIC0yODgsMTIgKzMzMSwxMCBAQCBzdGF0aWMgYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFt ZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLA0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQogDQotCWlm ICh1bmxpa2VseSghbWx4NWVfd3FjX2hhc19yb29tX2Zvcih3cSwgc3EtPmNjLCBzcS0+cGMsIDEp KSkgew0KLQkJLyogU1EgaXMgZnVsbCwgcmluZyBkb29yYmVsbCAqLw0KLQkJbWx4NWVfeG1pdF94 ZHBfZG9vcmJlbGwoc3EpOw0KLQkJc3RhdHMtPmZ1bGwrKzsNCisJaWYgKCFjaGVja19yZXN1bHQp DQorCQljaGVja19yZXN1bHQgPSBtbHg1ZV94bWl0X3hkcF9mcmFtZV9jaGVjayhzcSk7DQorCWlm ICh1bmxpa2VseShjaGVja19yZXN1bHQgPCAwKSkNCiAJCXJldHVybiBmYWxzZTsNCi0JfQ0KIA0K IAljc2VnLT5mbV9jZV9zZSA9IDA7DQogDQpAQCAtMzIzLDYgKzM2NCw3IEBAIHN0YXRpYyBib29s IG1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQogDQogc3RhdGlj IHZvaWQgbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQogCQkJ CSAgc3RydWN0IG1seDVlX3hkcF93cWVfaW5mbyAqd2ksDQorCQkJCSAgdTMyICp4c2tfZnJhbWVz LA0KIAkJCQkgIGJvb2wgcmVjeWNsZSkNCiB7DQogCXN0cnVjdCBtbHg1ZV94ZHBfaW5mb19maWZv ICp4ZHBpX2ZpZm8gPSAmc3EtPmRiLnhkcGlfZmlmbzsNCkBAIC0zNDAsNyArMzgyLDExIEBAIHN0 YXRpYyB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzYyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLA0K IAkJCWJyZWFrOw0KIAkJY2FzZSBNTFg1RV9YRFBfWE1JVF9NT0RFX1BBR0U6DQogCQkJLyogWERQ X1RYIGZyb20gdGhlIHJlZ3VsYXIgUlEgKi8NCi0JCQltbHg1ZV9wYWdlX3JlbGVhc2UoeGRwaS5w YWdlLnJxLCAmeGRwaS5wYWdlLmRpLCByZWN5Y2xlKTsNCisJCQltbHg1ZV9wYWdlX3JlbGVhc2Vf ZHluYW1pYyh4ZHBpLnBhZ2UucnEsICZ4ZHBpLnBhZ2UuZGksIHJlY3ljbGUpOw0KKwkJCWJyZWFr Ow0KKwkJY2FzZSBNTFg1RV9YRFBfWE1JVF9NT0RFX1hTSzoNCisJCQkvKiBBRl9YRFAgc2VuZCAq Lw0KKwkJCSgqeHNrX2ZyYW1lcykrKzsNCiAJCQlicmVhazsNCiAJCWRlZmF1bHQ6DQogCQkJV0FS Tl9PTl9PTkNFKHRydWUpOw0KQEAgLTM1Miw2ICszOTgsNyBAQCBib29sIG1seDVlX3BvbGxfeGRw c3FfY3Eoc3RydWN0IG1seDVlX2NxICpjcSkNCiB7DQogCXN0cnVjdCBtbHg1ZV94ZHBzcSAqc3E7 DQogCXN0cnVjdCBtbHg1X2NxZTY0ICpjcWU7DQorCXUzMiB4c2tfZnJhbWVzID0gMDsNCiAJdTE2 IHNxY2M7DQogCWludCBpOw0KIA0KQEAgLTM5MywxMCArNDQwLDEzIEBAIGJvb2wgbWx4NWVfcG9s bF94ZHBzcV9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxKQ0KIA0KIAkJCXNxY2MgKz0gd2ktPm51bV93 cWViYnM7DQogDQotCQkJbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHNxLCB3aSwgdHJ1ZSk7DQorCQkJ bWx4NWVfZnJlZV94ZHBzcV9kZXNjKHNxLCB3aSwgJnhza19mcmFtZXMsIHRydWUpOw0KIAkJfSB3 aGlsZSAoIWxhc3Rfd3FlKTsNCiAJfSB3aGlsZSAoKCsraSA8IE1MWDVFX1RYX0NRX1BPTExfQlVE R0VUKSAmJiAoY3FlID0gbWx4NV9jcXdxX2dldF9jcWUoJmNxLT53cSkpKTsNCiANCisJaWYgKHhz a19mcmFtZXMpDQorCQl4c2tfdW1lbV9jb21wbGV0ZV90eChzcS0+dW1lbSwgeHNrX2ZyYW1lcyk7 DQorDQogCXNxLT5zdGF0cy0+Y3FlcyArPSBpOw0KIA0KIAltbHg1X2Nxd3FfdXBkYXRlX2RiX3Jl Y29yZCgmY3EtPndxKTsNCkBAIC00MTAsNiArNDYwLDggQEAgYm9vbCBtbHg1ZV9wb2xsX3hkcHNx X2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EpDQogDQogdm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2Nz KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpDQogew0KKwl1MzIgeHNrX2ZyYW1lcyA9IDA7DQorDQog CXdoaWxlIChzcS0+Y2MgIT0gc3EtPnBjKSB7DQogCQlzdHJ1Y3QgbWx4NWVfeGRwX3dxZV9pbmZv ICp3aTsNCiAJCXUxNiBjaTsNCkBAIC00MTksOCArNDcxLDExIEBAIHZvaWQgbWx4NWVfZnJlZV94 ZHBzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKQ0KIA0KIAkJc3EtPmNjICs9IHdpLT5u dW1fd3FlYmJzOw0KIA0KLQkJbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHNxLCB3aSwgZmFsc2UpOw0K KwkJbWx4NWVfZnJlZV94ZHBzcV9kZXNjKHNxLCB3aSwgJnhza19mcmFtZXMsIGZhbHNlKTsNCiAJ fQ0KKw0KKwlpZiAoeHNrX2ZyYW1lcykNCisJCXhza191bWVtX2NvbXBsZXRlX3R4KHNxLT51bWVt LCB4c2tfZnJhbWVzKTsNCiB9DQogDQogaW50IG1seDVlX3hkcF94bWl0KHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsIGludCBuLCBzdHJ1Y3QgeGRwX2ZyYW1lICoqZnJhbWVzLA0KQEAgLTQ2Niw3ICs1 MjEsNyBAQCBpbnQgbWx4NWVfeGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4s IHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsDQogCQl4ZHBpLmZyYW1lLnhkcGYgICAgID0geGRw ZjsNCiAJCXhkcGkuZnJhbWUuZG1hX2FkZHIgPSB4ZHB0eGQuZG1hX2FkZHI7DQogDQotCQlpZiAo dW5saWtlbHkoIXNxLT54bWl0X3hkcF9mcmFtZShzcSwgJnhkcHR4ZCwgJnhkcGkpKSkgew0KKwkJ aWYgKHVubGlrZWx5KCFzcS0+eG1pdF94ZHBfZnJhbWUoc3EsICZ4ZHB0eGQsICZ4ZHBpLCAwKSkp IHsNCiAJCQlkbWFfdW5tYXBfc2luZ2xlKHNxLT5wZGV2LCB4ZHB0eGQuZG1hX2FkZHIsDQogCQkJ CQkgeGRwdHhkLmxlbiwgRE1BX1RPX0RFVklDRSk7DQogCQkJeGRwX3JldHVybl9mcmFtZV9yeF9u YXBpKHhkcGYpOw0KQEAgLTUwMCw2ICs1NTUsOCBAQCB2b2lkIG1seDVlX3hkcF9yeF9wb2xsX2Nv bXBsZXRlKHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogDQogdm9pZCBtbHg1ZV9zZXRfeG1pdF9mcChz dHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBib29sIGlzX21wdykNCiB7DQorCXNxLT54bWl0X3hkcF9m cmFtZV9jaGVjayA9IGlzX21wdyA/DQorCQltbHg1ZV94bWl0X3hkcF9mcmFtZV9jaGVja19tcHdx ZSA6IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrOw0KIAlzcS0+eG1pdF94ZHBfZnJhbWUgPSBp c19tcHcgPw0KIAkJbWx4NWVfeG1pdF94ZHBfZnJhbWVfbXB3cWUgOiBtbHg1ZV94bWl0X3hkcF9m cmFtZTsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL3hkcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuL3hkcC5oDQppbmRleCA5MjAwY2I5ZjQ5OWIuLjJkOTM0YzhkMzgwNyAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaA0KKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oDQpAQCAtNDIs NyArNDIsOCBAQA0KIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW07DQogaW50IG1seDVlX3hkcF9tYXhf bXR1KHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywgc3RydWN0IG1seDVlX3hza19wYXJhbSAq eHNrKTsNCiBib29sIG1seDVlX3hkcF9oYW5kbGUoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0 IG1seDVlX2RtYV9pbmZvICpkaSwNCi0JCSAgICAgIHZvaWQgKnZhLCB1MTYgKnJ4X2hlYWRyb29t LCB1MzIgKmxlbik7DQorCQkgICAgICB2b2lkICp2YSwgdTE2ICpyeF9oZWFkcm9vbSwgdTMyICps ZW4sIGJvb2wgeHNrKTsNCit2b2lkIG1seDVlX3hkcF9tcHdxZV9jb21wbGV0ZShzdHJ1Y3QgbWx4 NWVfeGRwc3EgKnNxKTsNCiBib29sIG1seDVlX3BvbGxfeGRwc3FfY3Eoc3RydWN0IG1seDVlX2Nx ICpjcSk7DQogdm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2NzKHN0cnVjdCBtbHg1ZV94ZHBzcSAq c3EpOw0KIHZvaWQgbWx4NWVfc2V0X3htaXRfZnAoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgYm9v bCBpc19tcHcpOw0KQEAgLTY3LDYgKzY4LDIxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtbHg1ZV94 ZHBfdHhfaXNfZW5hYmxlZChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJcmV0dXJuIHRlc3Rf Yml0KE1MWDVFX1NUQVRFX1hEUF9UWF9FTkFCTEVELCAmcHJpdi0+c3RhdGUpOw0KIH0NCiANCitz dGF0aWMgaW5saW5lIHZvaWQgbWx4NWVfeGRwX3NldF9vcGVuKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2KQ0KK3sNCisJc2V0X2JpdChNTFg1RV9TVEFURV9YRFBfT1BFTiwgJnByaXYtPnN0YXRlKTsN Cit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIG1seDVlX3hkcF9zZXRfY2xvc2VkKHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2KQ0KK3sNCisJY2xlYXJfYml0KE1MWDVFX1NUQVRFX1hEUF9PUEVOLCAm cHJpdi0+c3RhdGUpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGJvb2wgbWx4NWVfeGRwX2lzX29w ZW4oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQorew0KKwlyZXR1cm4gdGVzdF9iaXQoTUxYNUVf U1RBVEVfWERQX09QRU4sICZwcml2LT5zdGF0ZSk7DQorfQ0KKw0KIHN0YXRpYyBpbmxpbmUgdm9p ZCBtbHg1ZV94bWl0X3hkcF9kb29yYmVsbChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKQ0KIHsNCiAJ aWYgKHNxLT5kb29yYmVsbF9jc2VnKSB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svTWFrZWZpbGUNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjVlZTQyOTkxOTAwYQ0KLS0tIC9kZXYvbnVsbA0KKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9NYWtlZmls ZQ0KQEAgLTAsMCArMSBAQA0KK3N1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyYykvLi4vLi4NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNr L3J4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4 LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjZhNTU1NzNlYzhm Mg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL3hzay9yeC5jDQpAQCAtMCwwICsxLDE5MiBAQA0KKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wIE9SIExpbnV4LU9wZW5JQg0KKy8qIENvcHlyaWdodCAoYykgMjAx OSBNZWxsYW5veCBUZWNobm9sb2dpZXMuICovDQorDQorI2luY2x1ZGUgInJ4LmgiDQorI2luY2x1 ZGUgImVuL3hkcC5oIg0KKyNpbmNsdWRlIDxuZXQveGRwX3NvY2suaD4NCisNCisvKiBSWCBkYXRh IHBhdGggKi8NCisNCitib29sIG1seDVlX3hza19wYWdlc19lbm91Z2hfdW1lbShzdHJ1Y3QgbWx4 NWVfcnEgKnJxLCBpbnQgY291bnQpDQorew0KKwkvKiBDaGVjayBpbiBhZHZhbmNlIHRoYXQgd2Ug aGF2ZSBlbm91Z2ggZnJhbWVzLCBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcNCisJICogb25lLWJ5LW9u ZSwgZmFpbGluZyBhbmQgbW92aW5nIGZyYW1lcyB0byB0aGUgUmV1c2UgUmluZy4NCisJICovDQor CXJldHVybiB4c2tfdW1lbV9oYXNfYWRkcnNfcnEocnEtPnVtZW0sIGNvdW50KTsNCit9DQorDQor aW50IG1seDVlX3hza19wYWdlX2FsbG9jX3VtZW0oc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkg ICAgICBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvKQ0KK3sNCisJc3RydWN0IHhkcF91 bWVtICp1bWVtID0gcnEtPnVtZW07DQorCXU2NCBoYW5kbGU7DQorDQorCWlmICgheHNrX3VtZW1f cGVla19hZGRyX3JxKHVtZW0sICZoYW5kbGUpKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWRt YV9pbmZvLT54c2suaGFuZGxlID0gaGFuZGxlICsgcnEtPmJ1ZmYudW1lbV9oZWFkcm9vbTsNCisJ ZG1hX2luZm8tPnhzay5kYXRhID0geGRwX3VtZW1fZ2V0X2RhdGEodW1lbSwgZG1hX2luZm8tPnhz ay5oYW5kbGUpOw0KKw0KKwkvKiBObyBuZWVkIHRvIGFkZCBoZWFkcm9vbSB0byB0aGUgRE1BIGFk ZHJlc3MuIEluIHN0cmlkaW5nIFJRIGNhc2UsIHdlDQorCSAqIGp1c3QgcHJvdmlkZSBwYWdlcyBm b3IgVU1SLCBhbmQgaGVhZHJvb20gaXMgY291bnRlZCBhdCB0aGUgc2V0dXANCisJICogc3RhZ2Ug d2hlbiBjcmVhdGluZyBhIFdRRS4gSW4gbm9uLXN0cmlkaW5nIFJRIGNhc2UsIGhlYWRyb29tIGlz DQorCSAqIGFjY291bnRlZCBpbiBtbHg1ZV9hbGxvY19yeF93cWUuDQorCSAqLw0KKwlkbWFfaW5m by0+YWRkciA9IHhkcF91bWVtX2dldF9kbWEodW1lbSwgaGFuZGxlKTsNCisNCisJeHNrX3VtZW1f ZGlzY2FyZF9hZGRyX3JxKHVtZW0pOw0KKw0KKwlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShy cS0+cGRldiwgZG1hX2luZm8tPmFkZHIsIFBBR0VfU0laRSwNCisJCQkJICAgRE1BX0JJRElSRUNU SU9OQUwpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIG1seDVl X3hza19yZWN5Y2xlX2ZyYW1lKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHU2NCBoYW5kbGUpDQorew0K Kwl4c2tfdW1lbV9mcV9yZXVzZShycS0+dW1lbSwgaGFuZGxlICYgcnEtPnVtZW0tPmNodW5rX21h c2spOw0KK30NCisNCisvKiBYU0tSUSB1c2VzIHBhZ2VzIGZyb20gVU1FTSwgdGhleSBtdXN0IG5v dCBiZSByZWxlYXNlZC4gVGhleSBhcmUgcmV0dXJuZWQgdG8NCisgKiB0aGUgdXNlcnNwYWNlIGlm IHBvc3NpYmxlLCBhbmQgaWYgbm90LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byByZXVzZSB0 aGVtDQorICogaW4gdGhlIGRyaXZlci4NCisgKi8NCit2b2lkIG1seDVlX3hza19wYWdlX3JlbGVh c2Uoc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkgICAgc3RydWN0IG1seDVlX2RtYV9pbmZvICpk bWFfaW5mbykNCit7DQorCW1seDVlX3hza19yZWN5Y2xlX2ZyYW1lKHJxLCBkbWFfaW5mby0+eHNr LmhhbmRsZSk7DQorfQ0KKw0KKy8qIFJldHVybiBhIGZyYW1lIGJhY2sgdG8gdGhlIGhhcmR3YXJl IHRvIGZpbGwgaW4gYWdhaW4uIEl0IGlzIHVzZWQgYnkgWERQIHdoZW4NCisgKiB0aGUgWERQIHBy b2dyYW0gcmV0dXJucyBYRFBfVFggb3IgWERQX1JFRElSRUNUIG5vdCB0byBhbiBYU0tNQVAuDQor ICovDQordm9pZCBtbHg1ZV94c2tfemNhX2ZyZWUoc3RydWN0IHplcm9fY29weV9hbGxvY2F0b3Ig KnpjYSwgdW5zaWduZWQgbG9uZyBoYW5kbGUpDQorew0KKwlzdHJ1Y3QgbWx4NWVfcnEgKnJxID0g Y29udGFpbmVyX29mKHpjYSwgc3RydWN0IG1seDVlX3JxLCB6Y2EpOw0KKw0KKwltbHg1ZV94c2tf cmVjeWNsZV9mcmFtZShycSwgaGFuZGxlKTsNCit9DQorDQorc3RhdGljIHN0cnVjdCBza19idWZm ICptbHg1ZV94c2tfY29uc3RydWN0X3NrYihzdHJ1Y3QgbWx4NWVfcnEgKnJxLCB2b2lkICpkYXRh LA0KKwkJCQkJICAgICAgIHUzMiBjcWVfYmNudCkNCit7DQorCXN0cnVjdCBza19idWZmICpza2I7 DQorDQorCXNrYiA9IG5hcGlfYWxsb2Nfc2tiKHJxLT5jcS5uYXBpLCBjcWVfYmNudCk7DQorCWlm ICh1bmxpa2VseSghc2tiKSkgew0KKwkJcnEtPnN0YXRzLT5idWZmX2FsbG9jX2VycisrOw0KKwkJ cmV0dXJuIE5VTEw7DQorCX0NCisNCisJc2tiX3B1dF9kYXRhKHNrYiwgZGF0YSwgY3FlX2JjbnQp Ow0KKw0KKwlyZXR1cm4gc2tiOw0KK30NCisNCitzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVfeHNrX3Nr Yl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJCQkgICAg c3RydWN0IG1seDVlX21wd19pbmZvICp3aSwNCisJCQkJCQkgICAgdTE2IGNxZV9iY250LA0KKwkJ CQkJCSAgICB1MzIgaGVhZF9vZmZzZXQsDQorCQkJCQkJICAgIHUzMiBwYWdlX2lkeCkNCit7DQor CXN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZGkgPSAmd2ktPnVtci5kbWFfaW5mb1twYWdlX2lkeF07 DQorCXUxNiByeF9oZWFkcm9vbSA9IHJxLT5idWZmLmhlYWRyb29tIC0gcnEtPmJ1ZmYudW1lbV9o ZWFkcm9vbTsNCisJdTMyIGNxZV9iY250MzIgPSBjcWVfYmNudDsNCisJdm9pZCAqdmEsICpkYXRh Ow0KKwl1MzIgZnJhZ19zaXplOw0KKwlib29sIGNvbnN1bWVkOw0KKw0KKwkvKiBDaGVjayBwYWNr ZXQgc2l6ZS4gTm90ZSBMUk8gZG9lc24ndCB1c2UgbGluZWFyIFNLQiAqLw0KKwlpZiAodW5saWtl bHkoY3FlX2JjbnQgPiBycS0+aHdfbXR1KSkgew0KKwkJcnEtPnN0YXRzLT5vdmVyc2l6ZV9wa3Rz X3N3X2Ryb3ArKzsNCisJCXJldHVybiBOVUxMOw0KKwl9DQorDQorCS8qIGhlYWRfb2Zmc2V0IGlz IG5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJlY2F1c2UgZGktPnhzay5kYXRhIGFuZA0KKwkg KiBkaS0+YWRkciBwb2ludCBkaXJlY3RseSB0byB0aGUgbmVjZXNzYXJ5IHBsYWNlLiBGdXJ0aGVy bW9yZSwgaW4gdGhlDQorCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIG9uZSBwYWdlID0gb25l IHBhY2tldCA9IG9uZSBmcmFtZSwgc28NCisJICogaGVhZF9vZmZzZXQgc2hvdWxkIGFsd2F5cyBi ZSAwLg0KKwkgKi8NCisJV0FSTl9PTl9PTkNFKGhlYWRfb2Zmc2V0KTsNCisNCisJdmEgICAgICAg ICAgICAgPSBkaS0+eHNrLmRhdGE7DQorCWRhdGEgICAgICAgICAgID0gdmEgKyByeF9oZWFkcm9v bTsNCisJZnJhZ19zaXplICAgICAgPSBycS0+YnVmZi5oZWFkcm9vbSArIGNxZV9iY250MzI7DQor DQorCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KHJxLT5wZGV2LCBkaS0+YWRkciwgZnJhZ19zaXpl LCBETUFfQklESVJFQ1RJT05BTCk7DQorCXByZWZldGNoKGRhdGEpOw0KKw0KKwlyY3VfcmVhZF9s b2NrKCk7DQorCWNvbnN1bWVkID0gbWx4NWVfeGRwX2hhbmRsZShycSwgZGksIHZhLCAmcnhfaGVh ZHJvb20sICZjcWVfYmNudDMyLCB0cnVlKTsNCisJcmN1X3JlYWRfdW5sb2NrKCk7DQorDQorCS8q IFBvc3NpYmxlIGZsb3dzOg0KKwkgKiAtIFhEUF9SRURJUkVDVCB0byBYU0tNQVA6DQorCSAqICAg VGhlIHBhZ2UgaXMgb3duZWQgYnkgdGhlIHVzZXJzcGFjZSBmcm9tIG5vdy4NCisJICogLSBYRFBf VFggYW5kIG90aGVyIFhEUF9SRURJUkVDVHM6DQorCSAqICAgVGhlIHBhZ2Ugd2FzIHJldHVybmVk IGJ5IFpDQSBhbmQgcmVjeWNsZWQuDQorCSAqIC0gWERQX0RST1A6DQorCSAqICAgUmVjeWNsZSB0 aGUgcGFnZS4NCisJICogLSBYRFBfUEFTUzoNCisJICogICBBbGxvY2F0ZSBhbiBTS0IsIGNvcHkg dGhlIGRhdGEgYW5kIHJlY3ljbGUgdGhlIHBhZ2UuDQorCSAqDQorCSAqIFBhZ2VzIHRvIGJlIHJl Y3ljbGVkIGdvIHRvIHRoZSBSZXVzZSBSaW5nIG9uIE1QV1FFIGRlYWxsb2NhdGlvbi4gSXRzDQor CSAqIHNpemUgaXMgdGhlIHNhbWUgYXMgdGhlIERyaXZlciBSWCBSaW5nJ3Mgc2l6ZSwgYW5kIHBh Z2VzIGZvciBXUUVzIGFyZQ0KKwkgKiBhbGxvY2F0ZWQgZmlyc3QgZnJvbSB0aGUgUmV1c2UgUmlu Zywgc28gaXQgaGFzIGVub3VnaCBzcGFjZS4NCisJICovDQorDQorCWlmIChsaWtlbHkoY29uc3Vt ZWQpKSB7DQorCQlpZiAobGlrZWx5KF9fdGVzdF9hbmRfY2xlYXJfYml0KE1MWDVFX1JRX0ZMQUdf WERQX1hNSVQsIHJxLT5mbGFncykpKQ0KKwkJCV9fc2V0X2JpdChwYWdlX2lkeCwgd2ktPnhkcF94 bWl0X2JpdG1hcCk7IC8qIG5vbi1hdG9taWMgKi8NCisJCXJldHVybiBOVUxMOyAvKiBwYWdlL3Bh Y2tldCB3YXMgY29uc3VtZWQgYnkgWERQICovDQorCX0NCisNCisJLyogWERQX1BBU1M6IGNvcHkg dGhlIGRhdGEgZnJvbSB0aGUgVU1FTSB0byBhIG5ldyBTS0IgYW5kIHJldXNlIHRoZQ0KKwkgKiBm cmFtZS4gT24gU0tCIGFsbG9jYXRpb24gZmFpbHVyZSwgTlVMTCBpcyByZXR1cm5lZC4NCisJICov DQorCXJldHVybiBtbHg1ZV94c2tfY29uc3RydWN0X3NrYihycSwgZGF0YSwgY3FlX2JjbnQzMik7 DQorfQ0KKw0KK3N0cnVjdCBza19idWZmICptbHg1ZV94c2tfc2tiX2Zyb21fY3FlX2xpbmVhcihz dHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJCQkJICAgICAgc3RydWN0IG1seDVfY3FlNjQgKmNxZSwN CisJCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV93cWVfZnJhZ19pbmZvICp3aSwNCisJCQkJCSAgICAg IHUzMiBjcWVfYmNudCkNCit7DQorCXN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZGkgPSB3aS0+ZGk7 DQorCXUxNiByeF9oZWFkcm9vbSA9IHJxLT5idWZmLmhlYWRyb29tIC0gcnEtPmJ1ZmYudW1lbV9o ZWFkcm9vbTsNCisJdm9pZCAqdmEsICpkYXRhOw0KKwlib29sIGNvbnN1bWVkOw0KKwl1MzIgZnJh Z19zaXplOw0KKw0KKwkvKiB3aS0+b2Zmc2V0IGlzIG5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24s IGJlY2F1c2UgZGktPnhzay5kYXRhIGFuZA0KKwkgKiBkaS0+YWRkciBwb2ludCBkaXJlY3RseSB0 byB0aGUgbmVjZXNzYXJ5IHBsYWNlLiBGdXJ0aGVybW9yZSwgaW4gdGhlDQorCSAqIGN1cnJlbnQg aW1wbGVtZW50YXRpb24sIG9uZSBwYWdlID0gb25lIHBhY2tldCA9IG9uZSBmcmFtZSwgc28NCisJ ICogd2ktPm9mZnNldCBzaG91bGQgYWx3YXlzIGJlIDAuDQorCSAqLw0KKwlXQVJOX09OX09OQ0Uo d2ktPm9mZnNldCk7DQorDQorCXZhICAgICAgICAgICAgID0gZGktPnhzay5kYXRhOw0KKwlkYXRh ICAgICAgICAgICA9IHZhICsgcnhfaGVhZHJvb207DQorCWZyYWdfc2l6ZSAgICAgID0gcnEtPmJ1 ZmYuaGVhZHJvb20gKyBjcWVfYmNudDsNCisNCisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUocnEt PnBkZXYsIGRpLT5hZGRyLCBmcmFnX3NpemUsIERNQV9CSURJUkVDVElPTkFMKTsNCisJcHJlZmV0 Y2goZGF0YSk7DQorDQorCWlmICh1bmxpa2VseShnZXRfY3FlX29wY29kZShjcWUpICE9IE1MWDVf Q1FFX1JFU1BfU0VORCkpIHsNCisJCXJxLT5zdGF0cy0+d3FlX2VycisrOw0KKwkJcmV0dXJuIE5V TEw7DQorCX0NCisNCisJcmN1X3JlYWRfbG9jaygpOw0KKwljb25zdW1lZCA9IG1seDVlX3hkcF9o YW5kbGUocnEsIGRpLCB2YSwgJnJ4X2hlYWRyb29tLCAmY3FlX2JjbnQsIHRydWUpOw0KKwlyY3Vf cmVhZF91bmxvY2soKTsNCisNCisJaWYgKGxpa2VseShjb25zdW1lZCkpDQorCQlyZXR1cm4gTlVM TDsgLyogcGFnZS9wYWNrZXQgd2FzIGNvbnN1bWVkIGJ5IFhEUCAqLw0KKw0KKwkvKiBYRFBfUEFT UzogY29weSB0aGUgZGF0YSBmcm9tIHRoZSBVTUVNIHRvIGEgbmV3IFNLQi4gVGhlIGZyYW1lIHJl dXNlDQorCSAqIHdpbGwgYmUgaGFuZGxlZCBieSBtbHg1ZV9wdXRfcnhfZnJhZy4NCisJICogT24g U0tCIGFsbG9jYXRpb24gZmFpbHVyZSwgTlVMTCBpcyByZXR1cm5lZC4NCisJICovDQorCXJldHVy biBtbHg1ZV94c2tfY29uc3RydWN0X3NrYihycSwgZGF0YSwgY3FlX2JjbnQpOw0KK30NCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4 LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4LmgN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjMwN2I5MjNhMTM2MQ0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuL3hzay9yeC5oDQpAQCAtMCwwICsxLDI3IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgT1IgTGludXgtT3BlbklCICovDQorLyogQ29weXJpZ2h0IChjKSAyMDE5 IE1lbGxhbm94IFRlY2hub2xvZ2llcy4gKi8NCisNCisjaWZuZGVmIF9fTUxYNV9FTl9YU0tfUlhf SF9fDQorI2RlZmluZSBfX01MWDVfRU5fWFNLX1JYX0hfXw0KKw0KKyNpbmNsdWRlICJlbi5oIg0K Kw0KKy8qIFJYIGRhdGEgcGF0aCAqLw0KKw0KK2Jvb2wgbWx4NWVfeHNrX3BhZ2VzX2Vub3VnaF91 bWVtKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIGludCBjb3VudCk7DQoraW50IG1seDVlX3hza19wYWdl X2FsbG9jX3VtZW0oc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkgICAgICBzdHJ1Y3QgbWx4NWVf ZG1hX2luZm8gKmRtYV9pbmZvKTsNCit2b2lkIG1seDVlX3hza19wYWdlX3JlbGVhc2Uoc3RydWN0 IG1seDVlX3JxICpycSwNCisJCQkgICAgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbyk7 DQordm9pZCBtbHg1ZV94c2tfemNhX2ZyZWUoc3RydWN0IHplcm9fY29weV9hbGxvY2F0b3IgKnpj YSwgdW5zaWduZWQgbG9uZyBoYW5kbGUpOw0KK3N0cnVjdCBza19idWZmICptbHg1ZV94c2tfc2ti X2Zyb21fY3FlX21wd3JxX2xpbmVhcihzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJCQkJCSAgICBz dHJ1Y3QgbWx4NWVfbXB3X2luZm8gKndpLA0KKwkJCQkJCSAgICB1MTYgY3FlX2JjbnQsDQorCQkJ CQkJICAgIHUzMiBoZWFkX29mZnNldCwNCisJCQkJCQkgICAgdTMyIHBhZ2VfaWR4KTsNCitzdHJ1 Y3Qgc2tfYnVmZiAqbWx4NWVfeHNrX3NrYl9mcm9tX2NxZV9saW5lYXIoc3RydWN0IG1seDVlX3Jx ICpycSwNCisJCQkJCSAgICAgIHN0cnVjdCBtbHg1X2NxZTY0ICpjcWUsDQorCQkJCQkgICAgICBz dHJ1Y3QgbWx4NWVfd3FlX2ZyYWdfaW5mbyAqd2ksDQorCQkJCQkgICAgICB1MzIgY3FlX2JjbnQp Ow0KKw0KKyNlbmRpZiAvKiBfX01MWDVfRU5fWFNLX1JYX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svc2V0dXAuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svc2V0dXAuYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOWI0ZDQ3YzQ3YzkyDQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUv ZW4veHNrL3NldHVwLmMNCkBAIC0wLDAgKzEsMjIzIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgT1IgTGludXgtT3BlbklCDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1l bGxhbm94IFRlY2hub2xvZ2llcy4gKi8NCisNCisjaW5jbHVkZSAic2V0dXAuaCINCisjaW5jbHVk ZSAiZW4vcGFyYW1zLmgiDQorDQorYm9vbCBtbHg1ZV92YWxpZGF0ZV94c2tfcGFyYW0oc3RydWN0 IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0g KnhzaywNCisJCQkgICAgICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldikNCit7DQorCS8qIEFG X1hEUCBkb2Vzbid0IHN1cHBvcnQgZnJhbWVzIGxhcmdlciB0aGFuIFBBR0VfU0laRSwgYW5kIHRo ZSBjdXJyZW50DQorCSAqIG1seDVlIFhEUCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQg bXVsdGlwbGUgcGFja2V0cyBwZXIgcGFnZS4NCisJICovDQorCWlmICh4c2stPmNodW5rX3NpemUg IT0gUEFHRV9TSVpFKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwkvKiBDdXJyZW50IE1UVSBhbmQg WFNLIGhlYWRyb29tIGRvbid0IGFsbG93IHBhY2tldHMgdG8gZml0IHRoZSBmcmFtZXMuICovDQor CWlmIChtbHg1ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spID4geHNrLT5jaHVu a19zaXplKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwkvKiBmcmFnX3N6IGlzIGRpZmZlcmVudCBm b3IgcmVndWxhciBhbmQgWFNLIFJRcywgc28gZW5zdXJlIHRoYXQgbGluZWFyDQorCSAqIFNLQiBt b2RlIGlzIHBvc3NpYmxlLg0KKwkgKi8NCisJc3dpdGNoIChwYXJhbXMtPnJxX3dxX3R5cGUpIHsN CisJY2FzZSBNTFg1X1dRX1RZUEVfTElOS0VEX0xJU1RfU1RSSURJTkdfUlE6DQorCQlyZXR1cm4g bWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCBwYXJhbXMsIHhzayk7DQorCWRlZmF1 bHQ6IC8qIE1MWDVfV1FfVFlQRV9DWUNMSUMgKi8NCisJCXJldHVybiBtbHg1ZV9yeF9pc19saW5l YXJfc2tiKHBhcmFtcywgeHNrKTsNCisJfQ0KK30NCisNCitzdGF0aWMgdm9pZCBtbHg1ZV9idWls ZF94c2tpY29zcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkJICAgICAgIHU4 IGxvZ193cV9zaXplLA0KKwkJCQkgICAgICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSkN Cit7DQorCXZvaWQgKnNxYyA9IHBhcmFtLT5zcWM7DQorCXZvaWQgKndxID0gTUxYNV9BRERSX09G KHNxYywgc3FjLCB3cSk7DQorDQorCW1seDVlX2J1aWxkX3NxX3BhcmFtX2NvbW1vbihwcml2LCBw YXJhbSk7DQorDQorCU1MWDVfU0VUKHdxLCB3cSwgbG9nX3dxX3N6LCBsb2dfd3Ffc2l6ZSk7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3hza19jcGFyYW0oc3RydWN0IG1seDVlX3By aXYgKnByaXYsDQorCQkJCSAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJICAg c3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrLA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfY2hhbm5l bF9wYXJhbSAqY3BhcmFtKQ0KK3sNCisJY29uc3QgdTggeHNraWNvc3Ffc2l6ZSA9IE1MWDVFX1BB UkFNU19NSU5JTVVNX0xPR19TUV9TSVpFOw0KKw0KKwltbHg1ZV9idWlsZF9ycV9wYXJhbShwcml2 LCBwYXJhbXMsIHhzaywgJmNwYXJhbS0+cnEpOw0KKwltbHg1ZV9idWlsZF94ZHBzcV9wYXJhbShw cml2LCBwYXJhbXMsICZjcGFyYW0tPnhkcF9zcSk7DQorCW1seDVlX2J1aWxkX3hza2ljb3NxX3Bh cmFtKHByaXYsIHhza2ljb3NxX3NpemUsICZjcGFyYW0tPmljb3NxKTsNCisJbWx4NWVfYnVpbGRf cnhfY3FfcGFyYW0ocHJpdiwgcGFyYW1zLCB4c2ssICZjcGFyYW0tPnJ4X2NxKTsNCisJbWx4NWVf YnVpbGRfdHhfY3FfcGFyYW0ocHJpdiwgcGFyYW1zLCAmY3BhcmFtLT50eF9jcSk7DQorCW1seDVl X2J1aWxkX2ljb19jcV9wYXJhbShwcml2LCB4c2tpY29zcV9zaXplLCAmY3BhcmFtLT5pY29zcV9j cSk7DQorfQ0KKw0KK2ludCBtbHg1ZV9vcGVuX3hzayhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwg c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJICAgc3RydWN0IG1seDVlX3hza19wYXJh bSAqeHNrLCBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sDQorCQkgICBzdHJ1Y3QgbWx4NWVfY2hhbm5l bCAqYykNCit7DQorCXN0cnVjdCBtbHg1ZV9jaGFubmVsX3BhcmFtIGNwYXJhbSA9IHt9Ow0KKwlz dHJ1Y3QgbmV0X2RpbV9jcV9tb2RlciBpY29jcV9tb2RlciA9IHt9Ow0KKwlpbnQgZXJyOw0KKw0K KwlpZiAoIW1seDVlX3ZhbGlkYXRlX3hza19wYXJhbShwYXJhbXMsIHhzaywgcHJpdi0+bWRldikp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJbWx4NWVfYnVpbGRfeHNrX2NwYXJhbShwcml2LCBw YXJhbXMsIHhzaywgJmNwYXJhbSk7DQorDQorCWVyciA9IG1seDVlX29wZW5fY3EoYywgcGFyYW1z LT5yeF9jcV9tb2RlcmF0aW9uLCAmY3BhcmFtLnJ4X2NxLCAmYy0+eHNrcnEuY3EpOw0KKwlpZiAo dW5saWtlbHkoZXJyKSkNCisJCXJldHVybiBlcnI7DQorDQorCWVyciA9IG1seDVlX29wZW5fcnEo YywgcGFyYW1zLCAmY3BhcmFtLnJxLCB4c2ssIHVtZW0sICZjLT54c2tycSk7DQorCWlmICh1bmxp a2VseShlcnIpKQ0KKwkJZ290byBlcnJfY2xvc2VfcnhfY3E7DQorDQorCWVyciA9IG1seDVlX29w ZW5fY3EoYywgcGFyYW1zLT50eF9jcV9tb2RlcmF0aW9uLCAmY3BhcmFtLnR4X2NxLCAmYy0+eHNr c3EuY3EpOw0KKwlpZiAodW5saWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX2Nsb3NlX3JxOw0KKw0K KwkvKiBDcmVhdGUgYSBzZXBhcmF0ZSBTUSwgc28gdGhhdCB3aGVuIHRoZSBVTUVNIGlzIGRpc2Fi bGVkLCB3ZSBjb3VsZA0KKwkgKiBjbG9zZSB0aGlzIFNRIHNhZmVseSBhbmQgc3RvcCByZWNlaXZp bmcgQ1FFcy4gSW4gb3RoZXIgY2FzZSwgZS5nLiwgaWYNCisJICogdGhlIFhEUFNRIHdhcyB1c2Vk IGluc3RlYWQsIHdlIG1pZ2h0IHJ1biBpbnRvIHRyb3VibGUgd2hlbiB0aGUgVU1FTQ0KKwkgKiBp cyBkaXNhYmxlZCBhbmQgdGhlbiByZWVuYWJsZWQsIGJ1dCB0aGUgU1EgY29udGludWVzIHJlY2Vp dmluZyBDUUVzDQorCSAqIGZyb20gdGhlIG9sZCBVTUVNLg0KKwkgKi8NCisJZXJyID0gbWx4NWVf b3Blbl94ZHBzcShjLCBwYXJhbXMsICZjcGFyYW0ueGRwX3NxLCB1bWVtLCAmYy0+eHNrc3EsIHRy dWUpOw0KKwlpZiAodW5saWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX2Nsb3NlX3R4X2NxOw0KKw0K KwllcnIgPSBtbHg1ZV9vcGVuX2NxKGMsIGljb2NxX21vZGVyLCAmY3BhcmFtLmljb3NxX2NxLCAm Yy0+eHNraWNvc3EuY3EpOw0KKwlpZiAodW5saWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX2Nsb3Nl X3NxOw0KKw0KKwkvKiBDcmVhdGUgYSBkZWRpY2F0ZWQgU1EgZm9yIHBvc3RpbmcgTk9QcyB3aGVu ZXZlciB3ZSBuZWVkIGFuIElSUSB0byBiZQ0KKwkgKiB0cmlnZ2VyZWQgYW5kIE5BUEkgdG8gYmUg Y2FsbGVkIG9uIHRoZSBjb3JyZWN0IENQVS4NCisJICovDQorCWVyciA9IG1seDVlX29wZW5faWNv c3EoYywgcGFyYW1zLCAmY3BhcmFtLmljb3NxLCAmYy0+eHNraWNvc3EpOw0KKwlpZiAodW5saWtl bHkoZXJyKSkNCisJCWdvdG8gZXJyX2Nsb3NlX2ljb2NxOw0KKw0KKwlzcGluX2xvY2tfaW5pdCgm Yy0+eHNraWNvc3FfbG9jayk7DQorDQorCXNldF9iaXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ss IGMtPnN0YXRlKTsNCisNCisJcmV0dXJuIDA7DQorDQorZXJyX2Nsb3NlX2ljb2NxOg0KKwltbHg1 ZV9jbG9zZV9jcSgmYy0+eHNraWNvc3EuY3EpOw0KKw0KK2Vycl9jbG9zZV9zcToNCisJbWx4NWVf Y2xvc2VfeGRwc3EoJmMtPnhza3NxKTsNCisNCitlcnJfY2xvc2VfdHhfY3E6DQorCW1seDVlX2Ns b3NlX2NxKCZjLT54c2tzcS5jcSk7DQorDQorZXJyX2Nsb3NlX3JxOg0KKwltbHg1ZV9jbG9zZV9y cSgmYy0+eHNrcnEpOw0KKw0KK2Vycl9jbG9zZV9yeF9jcToNCisJbWx4NWVfY2xvc2VfY3EoJmMt Pnhza3JxLmNxKTsNCisNCisJcmV0dXJuIGVycjsNCit9DQorDQordm9pZCBtbHg1ZV9jbG9zZV94 c2soc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpDQorew0KKwljbGVhcl9iaXQoTUxYNUVfQ0hBTk5F TF9TVEFURV9YU0ssIGMtPnN0YXRlKTsNCisJbmFwaV9zeW5jaHJvbml6ZSgmYy0+bmFwaSk7DQor DQorCW1seDVlX2Nsb3NlX3JxKCZjLT54c2tycSk7DQorCW1seDVlX2Nsb3NlX2NxKCZjLT54c2ty cS5jcSk7DQorCW1seDVlX2Nsb3NlX2ljb3NxKCZjLT54c2tpY29zcSk7DQorCW1seDVlX2Nsb3Nl X2NxKCZjLT54c2tpY29zcS5jcSk7DQorCW1seDVlX2Nsb3NlX3hkcHNxKCZjLT54c2tzcSk7DQor CW1seDVlX2Nsb3NlX2NxKCZjLT54c2tzcS5jcSk7DQorfQ0KKw0KK3ZvaWQgbWx4NWVfYWN0aXZh dGVfeHNrKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQ0KK3sNCisJc2V0X2JpdChNTFg1RV9SUV9T VEFURV9FTkFCTEVELCAmYy0+eHNrcnEuc3RhdGUpOw0KKwkvKiBUWCBxdWV1ZSBpcyBjcmVhdGVk IGFjdGl2ZS4gKi8NCisJbWx4NWVfdHJpZ2dlcl9pcnEoJmMtPnhza2ljb3NxKTsNCit9DQorDQor dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3hzayhzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCit7DQor CW1seDVlX2RlYWN0aXZhdGVfcnEoJmMtPnhza3JxKTsNCisJLyogVFggcXVldWUgaXMgZGlzYWJs ZWQgb24gY2xvc2UuICovDQorfQ0KKw0KK3N0YXRpYyBpbnQgbWx4NWVfcmVkaXJlY3RfeHNrX3Jx dChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IGl4LCB1MzIgcnFuKQ0KK3sNCisJc3RydWN0 IG1seDVlX3JlZGlyZWN0X3JxdF9wYXJhbSBkaXJlY3RfcnJwID0gew0KKwkJLmlzX3JzcyA9IGZh bHNlLA0KKwkJew0KKwkJCS5ycW4gPSBycW4sDQorCQl9LA0KKwl9Ow0KKw0KKwl1MzIgcnF0biA9 IHByaXYtPnhza190aXJbaXhdLnJxdC5ycXRuOw0KKw0KKwlyZXR1cm4gbWx4NWVfcmVkaXJlY3Rf cnF0KHByaXYsIHJxdG4sIDEsIGRpcmVjdF9ycnApOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3Jl ZGlyZWN0X3JxdF90b19jaGFubmVsKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4 NWVfY2hhbm5lbCAqYykNCit7DQorCXJldHVybiBtbHg1ZV9yZWRpcmVjdF94c2tfcnF0KHByaXYs IGMtPml4LCBjLT54c2tycS5ycW4pOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3Jx dF90b19kcm9wKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1MTYgaXgpDQorew0KKwlyZXR1cm4g bWx4NWVfcmVkaXJlY3RfeHNrX3JxdChwcml2LCBpeCwgcHJpdi0+ZHJvcF9ycS5ycW4pOw0KK30N CisNCitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdHNfdG9fY2hhbm5lbHMoc3RydWN0IG1seDVl X3ByaXYgKnByaXYsIHN0cnVjdCBtbHg1ZV9jaGFubmVscyAqY2hzKQ0KK3sNCisJaW50IGVyciwg aTsNCisNCisJaWYgKCFwcml2LT54c2sucmVmY250KQ0KKwkJcmV0dXJuIDA7DQorDQorCWZvciAo aSA9IDA7IGkgPCBjaHMtPm51bTsgaSsrKSB7DQorCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyA9 IGNocy0+Y1tpXTsNCisNCisJCWlmICghdGVzdF9iaXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ss IGMtPnN0YXRlKSkNCisJCQljb250aW51ZTsNCisNCisJCWVyciA9IG1seDVlX3hza19yZWRpcmVj dF9ycXRfdG9fY2hhbm5lbChwcml2LCBjKTsNCisJCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJCWdv dG8gZXJyX3N0b3A7DQorCX0NCisNCisJcmV0dXJuIDA7DQorDQorZXJyX3N0b3A6DQorCWZvciAo aS0tOyBpID49IDA7IGktLSkgew0KKwkJaWYgKCF0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRF X1hTSywgY2hzLT5jW2ldLT5zdGF0ZSkpDQorCQkJY29udGludWU7DQorDQorCQltbHg1ZV94c2tf cmVkaXJlY3RfcnF0X3RvX2Ryb3AocHJpdiwgaSk7DQorCX0NCisNCisJcmV0dXJuIGVycjsNCit9 DQorDQordm9pZCBtbHg1ZV94c2tfcmVkaXJlY3RfcnF0c190b19kcm9wKHN0cnVjdCBtbHg1ZV9w cml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfY2hhbm5lbHMgKmNocykNCit7DQorCWludCBpOw0KKw0K KwlpZiAoIXByaXYtPnhzay5yZWZjbnQpDQorCQlyZXR1cm47DQorDQorCWZvciAoaSA9IDA7IGkg PCBjaHMtPm51bTsgaSsrKSB7DQorCQlpZiAoIXRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVf WFNLLCBjaHMtPmNbaV0tPnN0YXRlKSkNCisJCQljb250aW51ZTsNCisNCisJCW1seDVlX3hza19y ZWRpcmVjdF9ycXRfdG9fZHJvcChwcml2LCBpKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmggYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmgNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjBkZDExYjgxYzA0Ng0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu L3hzay9zZXR1cC5oDQpAQCAtMCwwICsxLDI1IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAgT1IgTGludXgtT3BlbklCICovDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1l bGxhbm94IFRlY2hub2xvZ2llcy4gKi8NCisNCisjaWZuZGVmIF9fTUxYNV9FTl9YU0tfU0VUVVBf SF9fDQorI2RlZmluZSBfX01MWDVfRU5fWFNLX1NFVFVQX0hfXw0KKw0KKyNpbmNsdWRlICJlbi5o Ig0KKw0KK3N0cnVjdCBtbHg1ZV94c2tfcGFyYW07DQorDQorYm9vbCBtbHg1ZV92YWxpZGF0ZV94 c2tfcGFyYW0oc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgIHN0cnVjdCBt bHg1ZV94c2tfcGFyYW0gKnhzaywNCisJCQkgICAgICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRl dik7DQoraW50IG1seDVlX29wZW5feHNrKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qg bWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ss IHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwNCisJCSAgIHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKTsN Cit2b2lkIG1seDVlX2Nsb3NlX3hzayhzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyk7DQordm9pZCBt bHg1ZV9hY3RpdmF0ZV94c2soc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpOw0KK3ZvaWQgbWx4NWVf ZGVhY3RpdmF0ZV94c2soc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpOw0KK2ludCBtbHg1ZV94c2tf cmVkaXJlY3RfcnF0X3RvX2NoYW5uZWwoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBt bHg1ZV9jaGFubmVsICpjKTsNCitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdF90b19kcm9wKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1MTYgaXgpOw0KK2ludCBtbHg1ZV94c2tfcmVkaXJlY3Rf cnF0c190b19jaGFubmVscyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX2No YW5uZWxzICpjaHMpOw0KK3ZvaWQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdHNfdG9fZHJvcChzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX2NoYW5uZWxzICpjaHMpOw0KKw0KKyNl bmRpZiAvKiBfX01MWDVfRU5fWFNLX1NFVFVQX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMzVlMTg4Y2Y0ZWE0DQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMN CkBAIC0wLDAgKzEsMTExIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg T1IgTGludXgtT3BlbklCDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xv Z2llcy4gKi8NCisNCisjaW5jbHVkZSAidHguaCINCisjaW5jbHVkZSAidW1lbS5oIg0KKyNpbmNs dWRlICJlbi94ZHAuaCINCisjaW5jbHVkZSAiZW4vcGFyYW1zLmgiDQorI2luY2x1ZGUgPG5ldC94 ZHBfc29jay5oPg0KKw0KK2ludCBtbHg1ZV94c2tfYXN5bmNfeG1pdChzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LCB1MzIgcWlkKQ0KK3sNCisJc3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZf cHJpdihkZXYpOw0KKwlzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMgPSAmcHJpdi0+Y2hhbm5l bHMucGFyYW1zOw0KKwlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYzsNCisJdTE2IGl4Ow0KKw0KKwlp ZiAodW5saWtlbHkoIW1seDVlX3hkcF9pc19vcGVuKHByaXYpKSkNCisJCXJldHVybiAtRU5FVERP V047DQorDQorCWlmICh1bmxpa2VseSghbWx4NWVfcWlkX2dldF9jaF9pZl9pbl9ncm91cChwYXJh bXMsIHFpZCwgTUxYNUVfUlFfR1JPVVBfWFNLLCAmaXgpKSkNCisJCXJldHVybiAtRUlOVkFMOw0K Kw0KKwljID0gcHJpdi0+Y2hhbm5lbHMuY1tpeF07DQorDQorCWlmICh1bmxpa2VseSghdGVzdF9i aXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ssIGMtPnN0YXRlKSkpDQorCQlyZXR1cm4gLUVOWElP Ow0KKw0KKwlpZiAoIW5hcGlfaWZfc2NoZWR1bGVkX21hcmtfbWlzc2VkKCZjLT5uYXBpKSkgew0K KwkJc3Bpbl9sb2NrKCZjLT54c2tpY29zcV9sb2NrKTsNCisJCW1seDVlX3RyaWdnZXJfaXJxKCZj LT54c2tpY29zcSk7DQorCQlzcGluX3VubG9jaygmYy0+eHNraWNvc3FfbG9jayk7DQorCX0NCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qIFdoZW4gVFggZmFpbHMgKGJlY2F1c2Ugb2YgdGhlIHNp emUgb2YgdGhlIHBhY2tldCksIHdlIG5lZWQgdG8gZ2V0IGNvbXBsZXRpb25zDQorICogaW4gb3Jk ZXIsIHNvIHBvc3QgYSBOT1AgdG8gZ2V0IGEgQ1FFLiBTaW5jZSBBRl9YRFAgZG9lc24ndCBkaXN0 aW5ndWlzaA0KKyAqIGJldHdlZW4gc3VjY2Vzc2Z1bCBUWCBhbmQgZXJyb3JzLCBoYW5kbGluZyBp biBtbHg1ZV9wb2xsX3hkcHNxX2NxIGlzIHRoZQ0KKyAqIHNhbWUuDQorICovDQorc3RhdGljIHZv aWQgbWx4NWVfeHNrX3R4X3Bvc3RfZXJyKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQorCQkJCSAg c3RydWN0IG1seDVlX3hkcF9pbmZvICp4ZHBpKQ0KK3sNCisJdTE2IHBpID0gbWx4NV93cV9jeWNf Y3RyMml4KCZzcS0+d3EsIHNxLT5wYyk7DQorCXN0cnVjdCBtbHg1ZV94ZHBfd3FlX2luZm8gKndp ID0gJnNxLT5kYi53cWVfaW5mb1twaV07DQorCXN0cnVjdCBtbHg1ZV90eF93cWUgKm5vcHdxZTsN CisNCisJd2ktPm51bV93cWViYnMgPSAxOw0KKwl3aS0+bnVtX3BrdHMgPSAxOw0KKw0KKwlub3B3 cWUgPSBtbHg1ZV9wb3N0X25vcCgmc3EtPndxLCBzcS0+c3FuLCAmc3EtPnBjKTsNCisJbWx4NWVf eGRwaV9maWZvX3B1c2goJnNxLT5kYi54ZHBpX2ZpZm8sIHhkcGkpOw0KKwlzcS0+ZG9vcmJlbGxf Y3NlZyA9ICZub3B3cWUtPmN0cmw7DQorfQ0KKw0KK2Jvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBt bHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpDQorew0KKwlzdHJ1Y3QgeGRwX3Vt ZW0gKnVtZW0gPSBzcS0+dW1lbTsNCisJc3RydWN0IG1seDVlX3hkcF9pbmZvIHhkcGk7DQorCXN0 cnVjdCBtbHg1ZV94ZHBfeG1pdF9kYXRhIHhkcHR4ZDsNCisJYm9vbCB3b3JrX2RvbmUgPSB0cnVl Ow0KKwlib29sIGZsdXNoID0gZmFsc2U7DQorDQorCXhkcGkubW9kZSA9IE1MWDVFX1hEUF9YTUlU X01PREVfWFNLOw0KKw0KKwlmb3IgKDsgYnVkZ2V0OyBidWRnZXQtLSkgew0KKwkJaW50IGNoZWNr X3Jlc3VsdCA9IHNxLT54bWl0X3hkcF9mcmFtZV9jaGVjayhzcSk7DQorCQlzdHJ1Y3QgeGRwX2Rl c2MgZGVzYzsNCisNCisJCWlmICh1bmxpa2VseShjaGVja19yZXN1bHQgPCAwKSkgew0KKwkJCXdv cmtfZG9uZSA9IGZhbHNlOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKw0KKwkJaWYgKCF4c2tfdW1lbV9j b25zdW1lX3R4KHVtZW0sICZkZXNjKSkgew0KKwkJCS8qIFRYIHdpbGwgZ2V0IHN0dWNrIHVudGls IHNvbWV0aGluZyB3YWtlcyBpdCB1cCBieQ0KKwkJCSAqIHRyaWdnZXJpbmcgTkFQSS4gQ3VycmVu dGx5IGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUNCisJCQkgKiBhcHBsaWNhdGlvbiBjYWxscyBzZW5k dG8oKSBpZiB0aGVyZSBhcmUgY29uc3VtZWQsIGJ1dA0KKwkJCSAqIG5vdCBjb21wbGV0ZWQgZnJh bWVzLg0KKwkJCSAqLw0KKwkJCWJyZWFrOw0KKwkJfQ0KKw0KKwkJeGRwdHhkLmRtYV9hZGRyID0g eGRwX3VtZW1fZ2V0X2RtYSh1bWVtLCBkZXNjLmFkZHIpOw0KKwkJeGRwdHhkLmRhdGEgPSB4ZHBf dW1lbV9nZXRfZGF0YSh1bWVtLCBkZXNjLmFkZHIpOw0KKwkJeGRwdHhkLmxlbiA9IGRlc2MubGVu Ow0KKw0KKwkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2Uoc3EtPnBkZXYsIHhkcHR4ZC5kbWFf YWRkciwNCisJCQkJCSAgIHhkcHR4ZC5sZW4sIERNQV9CSURJUkVDVElPTkFMKTsNCisNCisJCWlm ICh1bmxpa2VseSghc3EtPnhtaXRfeGRwX2ZyYW1lKHNxLCAmeGRwdHhkLCAmeGRwaSwgY2hlY2tf cmVzdWx0KSkpIHsNCisJCQlpZiAoc3EtPm1wd3FlLndxZSkNCisJCQkJbWx4NWVfeGRwX21wd3Fl X2NvbXBsZXRlKHNxKTsNCisNCisJCQltbHg1ZV94c2tfdHhfcG9zdF9lcnIoc3EsICZ4ZHBpKTsN CisJCX0NCisNCisJCWZsdXNoID0gdHJ1ZTsNCisJfQ0KKw0KKwlpZiAoZmx1c2gpIHsNCisJCWlm IChzcS0+bXB3cWUud3FlKQ0KKwkJCW1seDVlX3hkcF9tcHdxZV9jb21wbGV0ZShzcSk7DQorCQlt bHg1ZV94bWl0X3hkcF9kb29yYmVsbChzcSk7DQorDQorCQl4c2tfdW1lbV9jb25zdW1lX3R4X2Rv bmUodW1lbSk7DQorCX0NCisNCisJcmV0dXJuICEoYnVkZ2V0ICYmIHdvcmtfZG9uZSk7DQorfQ0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94 c2svdHguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2sv dHguaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2FkZDE4YmY3 OGQ4DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veHNrL3R4LmgNCkBAIC0wLDAgKzEsMTUgQEANCisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCBPUiBMaW51eC1PcGVuSUIgKi8NCisvKiBDb3B5cmlnaHQgKGMp IDIwMTkgTWVsbGFub3ggVGVjaG5vbG9naWVzLiAqLw0KKw0KKyNpZm5kZWYgX19NTFg1X0VOX1hT S19UWF9IX18NCisjZGVmaW5lIF9fTUxYNV9FTl9YU0tfVFhfSF9fDQorDQorI2luY2x1ZGUgImVu LmgiDQorDQorLyogVFggZGF0YSBwYXRoICovDQorDQoraW50IG1seDVlX3hza19hc3luY194bWl0 KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQpOw0KKw0KK2Jvb2wgbWx4NWVfeHNrX3R4 KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpOw0KKw0KKyNlbmRp ZiAvKiBfX01MWDVfRU5fWFNLX1RYX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdW1lbS5jIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay91bWVtLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjRiYWFhNTc4ODMyMA0KLS0tIC9kZXYvbnVsbA0KKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay91bWVtLmMN CkBAIC0wLDAgKzEsMjY3IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg T1IgTGludXgtT3BlbklCDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xv Z2llcy4gKi8NCisNCisjaW5jbHVkZSA8bmV0L3hkcF9zb2NrLmg+DQorI2luY2x1ZGUgInVtZW0u aCINCisjaW5jbHVkZSAic2V0dXAuaCINCisjaW5jbHVkZSAiZW4vcGFyYW1zLmgiDQorDQorc3Rh dGljIGludCBtbHg1ZV94c2tfbWFwX3VtZW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJ ICAgICAgc3RydWN0IHhkcF91bWVtICp1bWVtKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0g cHJpdi0+bWRldi0+ZGV2aWNlOw0KKwl1MzIgaTsNCisNCisJZm9yIChpID0gMDsgaSA8IHVtZW0t Pm5wZ3M7IGkrKykgew0KKwkJZG1hX2FkZHJfdCBkbWEgPSBkbWFfbWFwX3BhZ2UoZGV2LCB1bWVt LT5wZ3NbaV0sIDAsIFBBR0VfU0laRSwNCisJCQkJCSAgICAgIERNQV9CSURJUkVDVElPTkFMKTsN CisNCisJCWlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkZXYsIGRtYSkpKQ0KKwkJCWdv dG8gZXJyX3VubWFwOw0KKwkJdW1lbS0+cGFnZXNbaV0uZG1hID0gZG1hOw0KKwl9DQorDQorCXJl dHVybiAwOw0KKw0KK2Vycl91bm1hcDoNCisJd2hpbGUgKGktLSkgew0KKwkJZG1hX3VubWFwX3Bh Z2UoZGV2LCB1bWVtLT5wYWdlc1tpXS5kbWEsIFBBR0VfU0laRSwNCisJCQkgICAgICAgRE1BX0JJ RElSRUNUSU9OQUwpOw0KKwkJdW1lbS0+cGFnZXNbaV0uZG1hID0gMDsNCisJfQ0KKw0KKwlyZXR1 cm4gLUVOT01FTTsNCit9DQorDQorc3RhdGljIHZvaWQgbWx4NWVfeHNrX3VubWFwX3VtZW0oc3Ry dWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJCSBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0pDQorew0K KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5tZGV2LT5kZXZpY2U7DQorCXUzMiBpOw0KKw0K Kwlmb3IgKGkgPSAwOyBpIDwgdW1lbS0+bnBnczsgaSsrKSB7DQorCQlkbWFfdW5tYXBfcGFnZShk ZXYsIHVtZW0tPnBhZ2VzW2ldLmRtYSwgUEFHRV9TSVpFLA0KKwkJCSAgICAgICBETUFfQklESVJF Q1RJT05BTCk7DQorCQl1bWVtLT5wYWdlc1tpXS5kbWEgPSAwOw0KKwl9DQorfQ0KKw0KK3N0YXRp YyBpbnQgbWx4NWVfeHNrX2dldF91bWVtcyhzdHJ1Y3QgbWx4NWVfeHNrICp4c2spDQorew0KKwlp ZiAoIXhzay0+dW1lbXMpIHsNCisJCXhzay0+dW1lbXMgPSBrY2FsbG9jKE1MWDVFX01BWF9OVU1f Q0hBTk5FTFMsDQorCQkJCSAgICAgc2l6ZW9mKCp4c2stPnVtZW1zKSwgR0ZQX0tFUk5FTCk7DQor CQlpZiAodW5saWtlbHkoIXhzay0+dW1lbXMpKQ0KKwkJCXJldHVybiAtRU5PTUVNOw0KKwl9DQor DQorCXhzay0+cmVmY250Kys7DQorCXhzay0+ZXZlcl91c2VkID0gdHJ1ZTsNCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1seDVlX3hza19wdXRfdW1lbXMoc3RydWN0IG1seDVl X3hzayAqeHNrKQ0KK3sNCisJaWYgKCEtLXhzay0+cmVmY250KSB7DQorCQlrZnJlZSh4c2stPnVt ZW1zKTsNCisJCXhzay0+dW1lbXMgPSBOVUxMOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbnQgbWx4 NWVfeHNrX2FkZF91bWVtKHN0cnVjdCBtbHg1ZV94c2sgKnhzaywgc3RydWN0IHhkcF91bWVtICp1 bWVtLCB1MTYgaXgpDQorew0KKwlpbnQgZXJyOw0KKw0KKwllcnIgPSBtbHg1ZV94c2tfZ2V0X3Vt ZW1zKHhzayk7DQorCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJeHNr LT51bWVtc1tpeF0gPSB1bWVtOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgbWx4 NWVfeHNrX3JlbW92ZV91bWVtKHN0cnVjdCBtbHg1ZV94c2sgKnhzaywgdTE2IGl4KQ0KK3sNCisJ eHNrLT51bWVtc1tpeF0gPSBOVUxMOw0KKw0KKwltbHg1ZV94c2tfcHV0X3VtZW1zKHhzayk7DQor fQ0KKw0KK3N0YXRpYyBib29sIG1seDVlX3hza19pc191bWVtX3NhbmUoc3RydWN0IHhkcF91bWVt ICp1bWVtKQ0KK3sNCisJcmV0dXJuIHVtZW0tPmhlYWRyb29tIDw9IDB4ZmZmZiAmJiB1bWVtLT5j aHVua19zaXplX25vaHIgPD0gMHhmZmZmOw0KK30NCisNCit2b2lkIG1seDVlX2J1aWxkX3hza19w YXJhbShzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzaykN Cit7DQorCXhzay0+aGVhZHJvb20gPSB1bWVtLT5oZWFkcm9vbTsNCisJeHNrLT5jaHVua19zaXpl ID0gdW1lbS0+Y2h1bmtfc2l6ZV9ub2hyICsgdW1lbS0+aGVhZHJvb207DQorfQ0KKw0KK3N0YXRp YyBpbnQgbWx4NWVfeHNrX2VuYWJsZV9sb2NrZWQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQor CQkJCSAgIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgdTE2IGl4KQ0KK3sNCisJc3RydWN0IG1seDVl X3BhcmFtcyAqcGFyYW1zID0gJnByaXYtPmNoYW5uZWxzLnBhcmFtczsNCisJc3RydWN0IG1seDVl X3hza19wYXJhbSB4c2s7DQorCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjOw0KKwlpbnQgZXJyOw0K Kw0KKwlpZiAodW5saWtlbHkobWx4NWVfeHNrX2dldF91bWVtKCZwcml2LT5jaGFubmVscy5wYXJh bXMsICZwcml2LT54c2ssIGl4KSkpDQorCQlyZXR1cm4gLUVCVVNZOw0KKw0KKwlpZiAodW5saWtl bHkoIW1seDVlX3hza19pc191bWVtX3NhbmUodW1lbSkpKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQor DQorCWVyciA9IG1seDVlX3hza19tYXBfdW1lbShwcml2LCB1bWVtKTsNCisJaWYgKHVubGlrZWx5 KGVycikpDQorCQlyZXR1cm4gZXJyOw0KKw0KKwllcnIgPSBtbHg1ZV94c2tfYWRkX3VtZW0oJnBy aXYtPnhzaywgdW1lbSwgaXgpOw0KKwlpZiAodW5saWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX3Vu bWFwX3VtZW07DQorDQorCW1seDVlX2J1aWxkX3hza19wYXJhbSh1bWVtLCAmeHNrKTsNCisNCisJ aWYgKCF0ZXN0X2JpdChNTFg1RV9TVEFURV9PUEVORUQsICZwcml2LT5zdGF0ZSkpIHsNCisJCS8q IFhTSyBvYmplY3RzIHdpbGwgYmUgY3JlYXRlZCBvbiBvcGVuLiAqLw0KKwkJZ290byB2YWxpZGF0 ZV9jbG9zZWQ7DQorCX0NCisNCisJaWYgKCFwYXJhbXMtPnhkcF9wcm9nKSB7DQorCQkvKiBYU0sg b2JqZWN0cyB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBhbiBYRFAgcHJvZ3JhbSBpcyBzZXQsDQorCQkg KiBhbmQgdGhlIGNoYW5uZWxzIGFyZSByZW9wZW5lZC4NCisJCSAqLw0KKwkJZ290byB2YWxpZGF0 ZV9jbG9zZWQ7DQorCX0NCisNCisJYyA9IHByaXYtPmNoYW5uZWxzLmNbaXhdOw0KKw0KKwllcnIg PSBtbHg1ZV9vcGVuX3hzayhwcml2LCBwYXJhbXMsICZ4c2ssIHVtZW0sIGMpOw0KKwlpZiAodW5s aWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX3JlbW92ZV91bWVtOw0KKw0KKwltbHg1ZV9hY3RpdmF0 ZV94c2soYyk7DQorDQorCS8qIERvbid0IHdhaXQgZm9yIFdRRXMsIGJlY2F1c2UgdGhlIG5ld2Vy IHhkcHNvY2sgc2FtcGxlIGRvZXNuJ3QgcHJvdmlkZQ0KKwkgKiBhbnkgRmlsbCBSaW5nIGVudHJp ZXMgYXQgdGhlIHNldHVwIHN0YWdlLg0KKwkgKi8NCisNCisJZXJyID0gbWx4NWVfeHNrX3JlZGly ZWN0X3JxdF90b19jaGFubmVsKHByaXYsIHByaXYtPmNoYW5uZWxzLmNbaXhdKTsNCisJaWYgKHVu bGlrZWx5KGVycikpDQorCQlnb3RvIGVycl9kZWFjdGl2YXRlOw0KKw0KKwlyZXR1cm4gMDsNCisN CitlcnJfZGVhY3RpdmF0ZToNCisJbWx4NWVfZGVhY3RpdmF0ZV94c2soYyk7DQorCW1seDVlX2Ns b3NlX3hzayhjKTsNCisNCitlcnJfcmVtb3ZlX3VtZW06DQorCW1seDVlX3hza19yZW1vdmVfdW1l bSgmcHJpdi0+eHNrLCBpeCk7DQorDQorZXJyX3VubWFwX3VtZW06DQorCW1seDVlX3hza191bm1h cF91bWVtKHByaXYsIHVtZW0pOw0KKw0KKwlyZXR1cm4gZXJyOw0KKw0KK3ZhbGlkYXRlX2Nsb3Nl ZDoNCisJLyogQ2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gaW4gYWR2YW5jZSwgcmF0aGVyIHRoYW4g ZmFpbCBhdCBhIGxhdGVyIHN0YWdlDQorCSAqIChpbiBtbHg1ZV94ZHBfc2V0IG9yIG9uIG9wZW4p IGFuZCBlbmQgdXAgd2l0aCBubyBjaGFubmVscy4NCisJICovDQorCWlmICghbWx4NWVfdmFsaWRh dGVfeHNrX3BhcmFtKHBhcmFtcywgJnhzaywgcHJpdi0+bWRldikpIHsNCisJCWVyciA9IC1FSU5W QUw7DQorCQlnb3RvIGVycl9yZW1vdmVfdW1lbTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGludCBtbHg1ZV94c2tfZGlzYWJsZV9sb2NrZWQoc3RydWN0IG1seDVlX3ByaXYg KnByaXYsIHUxNiBpeCkNCit7DQorCXN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IG1seDVlX3hza19n ZXRfdW1lbSgmcHJpdi0+Y2hhbm5lbHMucGFyYW1zLA0KKwkJCQkJCSAgICZwcml2LT54c2ssIGl4 KTsNCisJc3RydWN0IG1seDVlX2NoYW5uZWwgKmM7DQorDQorCWlmICh1bmxpa2VseSghdW1lbSkp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJaWYgKCF0ZXN0X2JpdChNTFg1RV9TVEFURV9PUEVO RUQsICZwcml2LT5zdGF0ZSkpDQorCQlnb3RvIHJlbW92ZV91bWVtOw0KKw0KKwkvKiBYU0sgUlEg YW5kIFNRIGFyZSBvbmx5IGNyZWF0ZWQgaWYgWERQIHByb2dyYW0gaXMgc2V0LiAqLw0KKwlpZiAo IXByaXYtPmNoYW5uZWxzLnBhcmFtcy54ZHBfcHJvZykNCisJCWdvdG8gcmVtb3ZlX3VtZW07DQor DQorCWMgPSBwcml2LT5jaGFubmVscy5jW2l4XTsNCisJbWx4NWVfeHNrX3JlZGlyZWN0X3JxdF90 b19kcm9wKHByaXYsIGl4KTsNCisJbWx4NWVfZGVhY3RpdmF0ZV94c2soYyk7DQorCW1seDVlX2Ns b3NlX3hzayhjKTsNCisNCityZW1vdmVfdW1lbToNCisJbWx4NWVfeHNrX3JlbW92ZV91bWVtKCZw cml2LT54c2ssIGl4KTsNCisJbWx4NWVfeHNrX3VubWFwX3VtZW0ocHJpdiwgdW1lbSk7DQorDQor CXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG1seDVlX3hza19lbmFibGVfdW1lbShzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHhkcF91bWVtICp1bWVtLA0KKwkJCQkgdTE2IGl4 KQ0KK3sNCisJaW50IGVycjsNCisNCisJbXV0ZXhfbG9jaygmcHJpdi0+c3RhdGVfbG9jayk7DQor CWVyciA9IG1seDVlX3hza19lbmFibGVfbG9ja2VkKHByaXYsIHVtZW0sIGl4KTsNCisJbXV0ZXhf dW5sb2NrKCZwcml2LT5zdGF0ZV9sb2NrKTsNCisNCisJcmV0dXJuIGVycjsNCit9DQorDQorc3Rh dGljIGludCBtbHg1ZV94c2tfZGlzYWJsZV91bWVtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1 MTYgaXgpDQorew0KKwlpbnQgZXJyOw0KKw0KKwltdXRleF9sb2NrKCZwcml2LT5zdGF0ZV9sb2Nr KTsNCisJZXJyID0gbWx4NWVfeHNrX2Rpc2FibGVfbG9ja2VkKHByaXYsIGl4KTsNCisJbXV0ZXhf dW5sb2NrKCZwcml2LT5zdGF0ZV9sb2NrKTsNCisNCisJcmV0dXJuIGVycjsNCit9DQorDQoraW50 IG1seDVlX3hza19zZXR1cF91bWVtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4ZHBf dW1lbSAqdW1lbSwgdTE2IHFpZCkNCit7DQorCXN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0 ZGV2X3ByaXYoZGV2KTsNCisJc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zID0gJnByaXYtPmNo YW5uZWxzLnBhcmFtczsNCisJdTE2IGl4Ow0KKw0KKwlpZiAodW5saWtlbHkoIW1seDVlX3FpZF9n ZXRfY2hfaWZfaW5fZ3JvdXAocGFyYW1zLCBxaWQsIE1MWDVFX1JRX0dST1VQX1hTSywgJml4KSkp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJcmV0dXJuIHVtZW0gPyBtbHg1ZV94c2tfZW5hYmxl X3VtZW0ocHJpdiwgdW1lbSwgaXgpIDoNCisJCSAgICAgIG1seDVlX3hza19kaXNhYmxlX3VtZW0o cHJpdiwgaXgpOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3Jlc2l6ZV9yZXVzZXEoc3RydWN0IHhk cF91bWVtICp1bWVtLCB1MzIgbmVudHJpZXMpDQorew0KKwlzdHJ1Y3QgeGRwX3VtZW1fZnFfcmV1 c2UgKnJldXNlcTsNCisNCisJcmV1c2VxID0geHNrX3JldXNlcV9wcmVwYXJlKG5lbnRyaWVzKTsN CisJaWYgKHVubGlrZWx5KCFyZXVzZXEpKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorCXhza19yZXVz ZXFfZnJlZSh4c2tfcmV1c2VxX3N3YXAodW1lbSwgcmV1c2VxKSk7DQorDQorCXJldHVybiAwOw0K K30NCisNCit1MTYgbWx4NWVfeHNrX2ZpcnN0X3VudXNlZF9jaGFubmVsKHN0cnVjdCBtbHg1ZV9w YXJhbXMgKnBhcmFtcywgc3RydWN0IG1seDVlX3hzayAqeHNrKQ0KK3sNCisJdTE2IHJlcyA9IHhz ay0+cmVmY250ID8gcGFyYW1zLT5udW1fY2hhbm5lbHMgOiAwOw0KKw0KKwl3aGlsZSAocmVzKSB7 DQorCQlpZiAobWx4NWVfeHNrX2dldF91bWVtKHBhcmFtcywgeHNrLCByZXMgLSAxKSkNCisJCQli cmVhazsNCisJCS0tcmVzOw0KKwl9DQorDQorCXJldHVybiByZXM7DQorfQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdW1lbS5oIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay91bWVtLmgNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjI1YjRjYmU1OGI1NA0KLS0t IC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuL3hzay91bWVtLmgNCkBAIC0wLDAgKzEsMzEgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCBPUiBMaW51eC1PcGVuSUIgKi8NCisvKiBDb3B5cmlnaHQgKGMpIDIwMTkg TWVsbGFub3ggVGVjaG5vbG9naWVzLiAqLw0KKw0KKyNpZm5kZWYgX19NTFg1X0VOX1hTS19VTUVN X0hfXw0KKyNkZWZpbmUgX19NTFg1X0VOX1hTS19VTUVNX0hfXw0KKw0KKyNpbmNsdWRlICJlbi5o Ig0KKw0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHhkcF91bWVtICptbHg1ZV94c2tfZ2V0X3VtZW0o c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkJCSAgc3RydWN0IG1seDVlX3hzayAq eHNrLCB1MTYgaXgpDQorew0KKwlpZiAoIXhzayB8fCAheHNrLT51bWVtcykNCisJCXJldHVybiBO VUxMOw0KKw0KKwlpZiAodW5saWtlbHkoaXggPj0gcGFyYW1zLT5udW1fY2hhbm5lbHMpKQ0KKwkJ cmV0dXJuIE5VTEw7DQorDQorCXJldHVybiB4c2stPnVtZW1zW2l4XTsNCit9DQorDQorc3RydWN0 IG1seDVlX3hza19wYXJhbTsNCit2b2lkIG1seDVlX2J1aWxkX3hza19wYXJhbShzdHJ1Y3QgeGRw X3VtZW0gKnVtZW0sIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzayk7DQorDQorLyogLm5kb19i cGYgY2FsbGJhY2suICovDQoraW50IG1seDVlX3hza19zZXR1cF91bWVtKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgdTE2IHFpZCk7DQorDQoraW50IG1seDVl X3hza19yZXNpemVfcmV1c2VxKHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgdTMyIG5lbnRyaWVzKTsN CisNCit1MTYgbWx4NWVfeHNrX2ZpcnN0X3VudXNlZF9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wYXJh bXMgKnBhcmFtcywgc3RydWN0IG1seDVlX3hzayAqeHNrKTsNCisNCisjZW5kaWYgLyogX19NTFg1 X0VOX1hTS19VTUVNX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jDQppbmRleCBkZDc2NGUwNDcxZjIuLmY4YTllNjY1 Y2JlMSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbl9ldGh0b29sLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUv Y29yZS9lbl9ldGh0b29sLmMNCkBAIC0zMiw2ICszMiw3IEBADQogDQogI2luY2x1ZGUgImVuLmgi DQogI2luY2x1ZGUgImVuL3BvcnQuaCINCisjaW5jbHVkZSAiZW4veHNrL3VtZW0uaCINCiAjaW5j bHVkZSAibGliL2Nsb2NrLmgiDQogDQogdm9pZCBtbHg1ZV9ldGh0b29sX2dldF9kcnZpbmZvKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KQEAgLTM4OCw4ICszODksMTcgQEAgc3RhdGljIGludCBt bHg1ZV9zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogdm9pZCBtbHg1ZV9l dGh0b29sX2dldF9jaGFubmVscyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiAJCQkJc3RydWN0 IGV0aHRvb2xfY2hhbm5lbHMgKmNoKQ0KIHsNCisJbXV0ZXhfbG9jaygmcHJpdi0+c3RhdGVfbG9j ayk7DQorDQogCWNoLT5tYXhfY29tYmluZWQgICA9IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5u ZWxzKHByaXYtPm5ldGRldik7DQogCWNoLT5jb21iaW5lZF9jb3VudCA9IHByaXYtPmNoYW5uZWxz LnBhcmFtcy5udW1fY2hhbm5lbHM7DQorCWlmIChwcml2LT54c2sucmVmY250KSB7DQorCQkvKiBU aGUgdXBwZXIgaGFsZiBhcmUgWFNLIHF1ZXVlcy4gKi8NCisJCWNoLT5tYXhfY29tYmluZWQgKj0g MjsNCisJCWNoLT5jb21iaW5lZF9jb3VudCAqPSAyOw0KKwl9DQorDQorCW11dGV4X3VubG9jaygm cHJpdi0+c3RhdGVfbG9jayk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG1seDVlX2dldF9jaGFubmVs cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KQEAgLTQwMyw2ICs0MTMsNyBAQCBzdGF0aWMgdm9p ZCBtbHg1ZV9nZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiBpbnQgbWx4NWVf ZXRodG9vbF9zZXRfY2hhbm5lbHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCQkJICAgICAg IHN0cnVjdCBldGh0b29sX2NoYW5uZWxzICpjaCkNCiB7DQorCXN0cnVjdCBtbHg1ZV9wYXJhbXMg KmN1cl9wYXJhbXMgPSAmcHJpdi0+Y2hhbm5lbHMucGFyYW1zOw0KIAl1bnNpZ25lZCBpbnQgY291 bnQgPSBjaC0+Y29tYmluZWRfY291bnQ7DQogCXN0cnVjdCBtbHg1ZV9jaGFubmVscyBuZXdfY2hh bm5lbHMgPSB7fTsNCiAJYm9vbCBhcmZzX2VuYWJsZWQ7DQpAQCAtNDE0LDE2ICs0MjUsMjYgQEAg aW50IG1seDVlX2V0aHRvb2xfc2V0X2NoYW5uZWxzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0K IAkJcmV0dXJuIC1FSU5WQUw7DQogCX0NCiANCi0JaWYgKHByaXYtPmNoYW5uZWxzLnBhcmFtcy5u dW1fY2hhbm5lbHMgPT0gY291bnQpDQorCWlmIChjdXJfcGFyYW1zLT5udW1fY2hhbm5lbHMgPT0g Y291bnQpDQogCQlyZXR1cm4gMDsNCiANCiAJbXV0ZXhfbG9jaygmcHJpdi0+c3RhdGVfbG9jayk7 DQogDQorCS8qIERvbid0IGFsbG93IGNoYW5naW5nIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaWYg dGhlcmUgaXMgYW4gYWN0aXZlDQorCSAqIFhTSywgYmVjYXVzZSB0aGUgbnVtZXJhdGlvbiBvZiB0 aGUgWFNLIGFuZCByZWd1bGFyIFJRcyB3aWxsIGNoYW5nZS4NCisJICovDQorCWlmIChwcml2LT54 c2sucmVmY250KSB7DQorCQllcnIgPSAtRUlOVkFMOw0KKwkJbmV0ZGV2X2Vycihwcml2LT5uZXRk ZXYsICIlczogQUZfWERQIGlzIGFjdGl2ZSwgY2Fubm90IGNoYW5nZSB0aGUgbnVtYmVyIG9mIGNo YW5uZWxzXG4iLA0KKwkJCSAgIF9fZnVuY19fKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQogCW5l d19jaGFubmVscy5wYXJhbXMgPSBwcml2LT5jaGFubmVscy5wYXJhbXM7DQogCW5ld19jaGFubmVs cy5wYXJhbXMubnVtX2NoYW5uZWxzID0gY291bnQ7DQogDQogCWlmICghdGVzdF9iaXQoTUxYNUVf U1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUpKSB7DQotCQlwcml2LT5jaGFubmVscy5wYXJhbXMg PSBuZXdfY2hhbm5lbHMucGFyYW1zOw0KKwkJKmN1cl9wYXJhbXMgPSBuZXdfY2hhbm5lbHMucGFy YW1zOw0KIAkJaWYgKCFuZXRpZl9pc19yeGZoX2NvbmZpZ3VyZWQocHJpdi0+bmV0ZGV2KSkNCiAJ CQltbHg1ZV9idWlsZF9kZWZhdWx0X2luZGlyX3JxdChwcml2LT5yc3NfcGFyYW1zLmluZGlyZWN0 aW9uX3JxdCwNCiAJCQkJCQkgICAgICBNTFg1RV9JTkRJUl9SUVRfU0laRSwgY291bnQpOw0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9mc19l dGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZnNf ZXRodG9vbC5jDQppbmRleCA0NDIxYzEwZjU4YWUuLmVjNTM5MmJhYWJjOCAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9mc19ldGh0b29sLmMN CisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9mc19ldGh0 b29sLmMNCkBAIC0zMiw2ICszMiw4IEBADQogDQogI2luY2x1ZGUgPGxpbnV4L21seDUvZnMuaD4N CiAjaW5jbHVkZSAiZW4uaCINCisjaW5jbHVkZSAiZW4vcGFyYW1zLmgiDQorI2luY2x1ZGUgImVu L3hzay91bWVtLmgiDQogDQogc3RydWN0IG1seDVlX2V0aHRvb2xfcnVsZSB7DQogCXN0cnVjdCBs aXN0X2hlYWQgICAgICAgICAgICAgbGlzdDsNCkBAIC00MTQsNiArNDE2LDE0IEBAIGFkZF9ldGh0 b29sX2Zsb3dfcnVsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiAJaWYgKGZzLT5yaW5nX2Nv b2tpZSA9PSBSWF9DTFNfRkxPV19ESVNDKSB7DQogCQlmbG93X2FjdC5hY3Rpb24gPSBNTFg1X0ZM T1dfQ09OVEVYVF9BQ1RJT05fRFJPUDsNCiAJfSBlbHNlIHsNCisJCXN0cnVjdCBtbHg1ZV9wYXJh bXMgKnBhcmFtcyA9ICZwcml2LT5jaGFubmVscy5wYXJhbXM7DQorCQllbnVtIG1seDVlX3JxX2dy b3VwIGdyb3VwOw0KKwkJc3RydWN0IG1seDVlX3RpciAqdGlyOw0KKwkJdTE2IGl4Ow0KKw0KKwkJ bWx4NWVfcWlkX2dldF9jaF9hbmRfZ3JvdXAocGFyYW1zLCBmcy0+cmluZ19jb29raWUsICZpeCwg Jmdyb3VwKTsNCisJCXRpciA9IGdyb3VwID09IE1MWDVFX1JRX0dST1VQX1hTSyA/IHByaXYtPnhz a190aXIgOiBwcml2LT5kaXJlY3RfdGlyOw0KKw0KIAkJZHN0ID0ga3phbGxvYyhzaXplb2YoKmRz dCksIEdGUF9LRVJORUwpOw0KIAkJaWYgKCFkc3QpIHsNCiAJCQllcnIgPSAtRU5PTUVNOw0KQEAg LTQyMSw3ICs0MzEsNyBAQCBhZGRfZXRodG9vbF9mbG93X3J1bGUoc3RydWN0IG1seDVlX3ByaXYg KnByaXYsDQogCQl9DQogDQogCQlkc3QtPnR5cGUgPSBNTFg1X0ZMT1dfREVTVElOQVRJT05fVFlQ RV9USVI7DQotCQlkc3QtPnRpcl9udW0gPSBwcml2LT5kaXJlY3RfdGlyW2ZzLT5yaW5nX2Nvb2tp ZV0udGlybjsNCisJCWRzdC0+dGlyX251bSA9IHRpcltpeF0udGlybjsNCiAJCWZsb3dfYWN0LmFj dGlvbiA9IE1MWDVfRkxPV19DT05URVhUX0FDVElPTl9GV0RfREVTVDsNCiAJfQ0KIA0KQEAgLTYw MCw5ICs2MTAsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2Zsb3coc3RydWN0IG1seDVlX3ByaXYg KnByaXYsDQogCWlmIChmcy0+bG9jYXRpb24gPj0gTUFYX05VTV9PRl9FVEhUT09MX1JVTEVTKQ0K IAkJcmV0dXJuIC1FTk9TUEM7DQogDQotCWlmIChmcy0+cmluZ19jb29raWUgPj0gcHJpdi0+Y2hh bm5lbHMucGFyYW1zLm51bV9jaGFubmVscyAmJg0KLQkgICAgZnMtPnJpbmdfY29va2llICE9IFJY X0NMU19GTE9XX0RJU0MpDQotCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYgKGZzLT5yaW5nX2Nvb2tp ZSAhPSBSWF9DTFNfRkxPV19ESVNDKQ0KKwkJaWYgKCFtbHg1ZV9xaWRfdmFsaWRhdGUoJnByaXYt PmNoYW5uZWxzLnBhcmFtcywgZnMtPnJpbmdfY29va2llKSkNCisJCQlyZXR1cm4gLUVJTlZBTDsN CiANCiAJc3dpdGNoIChmcy0+Zmxvd190eXBlICYgfihGTE9XX0VYVCB8IEZMT1dfTUFDX0VYVCkp IHsNCiAJY2FzZSBFVEhFUl9GTE9XOg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jDQppbmRleCBiYjM5ZWMxNDgyYzkuLjgwZDljZDk3OGEy OSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl9tYWluLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl9tYWluLmMNCkBAIC0zOCw2ICszOCw3IEBADQogI2luY2x1ZGUgPGxpbnV4L2JwZi5oPg0KICNp bmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4NCiAjaW5jbHVkZSA8bmV0L3BhZ2VfcG9vbC5oPg0K KyNpbmNsdWRlIDxuZXQveGRwX3NvY2suaD4NCiAjaW5jbHVkZSAiZXN3aXRjaC5oIg0KICNpbmNs dWRlICJlbi5oIg0KICNpbmNsdWRlICJlbl90Yy5oIg0KQEAgLTU2LDYgKzU3LDEwIEBADQogI2lu Y2x1ZGUgImVuL21vbml0b3Jfc3RhdHMuaCINCiAjaW5jbHVkZSAiZW4vcmVwb3J0ZXIuaCINCiAj aW5jbHVkZSAiZW4vcGFyYW1zLmgiDQorI2luY2x1ZGUgImVuL3hzay91bWVtLmgiDQorI2luY2x1 ZGUgImVuL3hzay9zZXR1cC5oIg0KKyNpbmNsdWRlICJlbi94c2svcnguaCINCisjaW5jbHVkZSAi ZW4veHNrL3R4LmgiDQogDQogYm9vbCBtbHg1ZV9jaGVja19mcmFnbWVudGVkX3N0cmlkaW5nX3Jx X2NhcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldikNCiB7DQpAQCAtODUsMTggKzkwLDMxIEBA IHZvaWQgbWx4NWVfaW5pdF9ycV90eXBlX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRl diwNCiAJbWx4NV9jb3JlX2luZm8obWRldiwgIk1MWDVFOiBTdHJkUnEoJWQpIFJxU3ooJWxkKSBT dHJkU3ooJWxkKSBSeENxZUNtcHJzcyglZClcbiIsDQogCQkgICAgICAgcGFyYW1zLT5ycV93cV90 eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9TVFJJRElOR19SUSwNCiAJCSAgICAgICBw YXJhbXMtPnJxX3dxX3R5cGUgPT0gTUxYNV9XUV9UWVBFX0xJTktFRF9MSVNUX1NUUklESU5HX1JR ID8NCi0JCSAgICAgICBCSVQobWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcykpIDoN CisJCSAgICAgICBCSVQobWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcywgTlVMTCkp IDoNCiAJCSAgICAgICBCSVQocGFyYW1zLT5sb2dfcnFfbXR1X2ZyYW1lcyksDQotCQkgICAgICAg QklUKG1seDVlX21wd3FlX2dldF9sb2dfc3RyaWRlX3NpemUobWRldiwgcGFyYW1zKSksDQorCQkg ICAgICAgQklUKG1seDVlX21wd3FlX2dldF9sb2dfc3RyaWRlX3NpemUobWRldiwgcGFyYW1zLCBO VUxMKSksDQogCQkgICAgICAgTUxYNUVfR0VUX1BGTEFHKHBhcmFtcywgTUxYNUVfUEZMQUdfUlhf Q1FFX0NPTVBSRVNTKSk7DQogfQ0KIA0KIGJvb2wgbWx4NWVfc3RyaWRpbmdfcnFfcG9zc2libGUo c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQogCQkJCXN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBh cmFtcykNCiB7DQotCXJldHVybiBtbHg1ZV9jaGVja19mcmFnbWVudGVkX3N0cmlkaW5nX3JxX2Nh cChtZGV2KSAmJg0KLQkJIU1MWDVfSVBTRUNfREVWKG1kZXYpICYmDQotCQkhKHBhcmFtcy0+eGRw X3Byb2cgJiYgIW1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRldiwgcGFyYW1zKSk7DQor CWlmICghbWx4NWVfY2hlY2tfZnJhZ21lbnRlZF9zdHJpZGluZ19ycV9jYXAobWRldikpDQorCQly ZXR1cm4gZmFsc2U7DQorDQorCWlmIChNTFg1X0lQU0VDX0RFVihtZGV2KSkNCisJCXJldHVybiBm YWxzZTsNCisNCisJaWYgKHBhcmFtcy0+eGRwX3Byb2cpIHsNCisJCS8qIFhTSyBwYXJhbXMgYXJl IG5vdCBjb25zaWRlcmVkIGhlcmUuIElmIHN0cmlkaW5nIFJRIGlzIGluIHVzZSwNCisJCSAqIGFu ZCBhbiBYU0sgaXMgYmVpbmcgb3BlbmVkLCBtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiIHdp bGwNCisJCSAqIGJlIGNhbGxlZCB3aXRoIHRoZSBrbm93biBYU0sgcGFyYW1zLg0KKwkJICovDQor CQlpZiAoIW1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRldiwgcGFyYW1zLCBOVUxMKSkN CisJCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJcmV0dXJuIHRydWU7DQogfQ0KIA0KIHZvaWQg bWx4NWVfc2V0X3JxX3R5cGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1 ZV9wYXJhbXMgKnBhcmFtcykNCkBAIC0zNjUsNiArMzgzLDggQEAgc3RhdGljIHZvaWQgbWx4NWVf ZnJlZV9kaV9saXN0KHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogDQogc3RhdGljIGludCBtbHg1ZV9h bGxvY19ycShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCiAJCQkgIHN0cnVjdCBtbHg1ZV9wYXJh bXMgKnBhcmFtcywNCisJCQkgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzaywNCisJCQkgIHN0 cnVjdCB4ZHBfdW1lbSAqdW1lbSwNCiAJCQkgIHN0cnVjdCBtbHg1ZV9ycV9wYXJhbSAqcnFwLA0K IAkJCSAgc3RydWN0IG1seDVlX3JxICpycSkNCiB7DQpAQCAtMzcyLDYgKzM5Miw4IEBAIHN0YXRp YyBpbnQgbWx4NWVfYWxsb2NfcnEoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsDQogCXN0cnVjdCBt bHg1X2NvcmVfZGV2ICptZGV2ID0gYy0+bWRldjsNCiAJdm9pZCAqcnFjID0gcnFwLT5ycWM7DQog CXZvaWQgKnJxY193cSA9IE1MWDVfQUREUl9PRihycWMsIHJxYywgd3EpOw0KKwl1MzIgbnVtX3hz a19mcmFtZXMgPSAwOw0KKwl1MzIgcnFfeGRwX2l4Ow0KIAl1MzIgcG9vbF9zaXplOw0KIAlpbnQg d3Ffc3o7DQogCWludCBlcnI7DQpAQCAtMzg4LDggKzQxMCwxMyBAQCBzdGF0aWMgaW50IG1seDVl X2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAlycS0+aXggICAgICA9IGMtPml4 Ow0KIAlycS0+bWRldiAgICA9IG1kZXY7DQogCXJxLT5od19tdHUgID0gTUxYNUVfU1cySFdfTVRV KHBhcmFtcywgcGFyYW1zLT5zd19tdHUpOw0KLQlycS0+c3RhdHMgICA9ICZjLT5wcml2LT5jaGFu bmVsX3N0YXRzW2MtPml4XS5ycTsNCiAJcnEtPnhkcHNxICAgPSAmYy0+cnFfeGRwc3E7DQorCXJx LT51bWVtICAgID0gdW1lbTsNCisNCisJaWYgKHJxLT51bWVtKQ0KKwkJcnEtPnN0YXRzID0gJmMt PnByaXYtPmNoYW5uZWxfc3RhdHNbYy0+aXhdLnhza3JxOw0KKwllbHNlDQorCQlycS0+c3RhdHMg PSAmYy0+cHJpdi0+Y2hhbm5lbF9zdGF0c1tjLT5peF0ucnE7DQogDQogCXJxLT54ZHBfcHJvZyA9 IHBhcmFtcy0+eGRwX3Byb2cgPyBicGZfcHJvZ19pbmMocGFyYW1zLT54ZHBfcHJvZykgOiBOVUxM Ow0KIAlpZiAoSVNfRVJSKHJxLT54ZHBfcHJvZykpIHsNCkBAIC0zOTgsMTIgKzQyNSwxNiBAQCBz dGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAkJZ290 byBlcnJfcnFfd3FfZGVzdHJveTsNCiAJfQ0KIA0KLQllcnIgPSB4ZHBfcnhxX2luZm9fcmVnKCZy cS0+eGRwX3J4cSwgcnEtPm5ldGRldiwgcnEtPml4KTsNCisJcnFfeGRwX2l4ID0gcnEtPml4Ow0K KwlpZiAoeHNrKQ0KKwkJcnFfeGRwX2l4ICs9IHBhcmFtcy0+bnVtX2NoYW5uZWxzICogTUxYNUVf UlFfR1JPVVBfWFNLOw0KKwllcnIgPSB4ZHBfcnhxX2luZm9fcmVnKCZycS0+eGRwX3J4cSwgcnEt Pm5ldGRldiwgcnFfeGRwX2l4KTsNCiAJaWYgKGVyciA8IDApDQogCQlnb3RvIGVycl9ycV93cV9k ZXN0cm95Ow0KIA0KIAlycS0+YnVmZi5tYXBfZGlyID0gcnEtPnhkcF9wcm9nID8gRE1BX0JJRElS RUNUSU9OQUwgOiBETUFfRlJPTV9ERVZJQ0U7DQotCXJxLT5idWZmLmhlYWRyb29tID0gbWx4NWVf Z2V0X3JxX2hlYWRyb29tKG1kZXYsIHBhcmFtcyk7DQorCXJxLT5idWZmLmhlYWRyb29tID0gbWx4 NWVfZ2V0X3JxX2hlYWRyb29tKG1kZXYsIHBhcmFtcywgeHNrKTsNCisJcnEtPmJ1ZmYudW1lbV9o ZWFkcm9vbSA9IHhzayA/IHhzay0+aGVhZHJvb20gOiAwOw0KIAlwb29sX3NpemUgPSAxIDw8IHBh cmFtcy0+bG9nX3JxX210dV9mcmFtZXM7DQogDQogCXN3aXRjaCAocnEtPndxX3R5cGUpIHsNCkBA IC00MTcsNyArNDQ4LDEyIEBAIHN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfcnEoc3RydWN0IG1seDVl X2NoYW5uZWwgKmMsDQogDQogCQl3cV9zeiA9IG1seDVfd3FfbGxfZ2V0X3NpemUoJnJxLT5tcHdx ZS53cSk7DQogDQotCQlwb29sX3NpemUgPSBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUgPDwgbWx4 NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcyk7DQorCQlpZiAoeHNrKQ0KKwkJCW51bV94 c2tfZnJhbWVzID0gd3Ffc3ogPDwNCisJCQkJbWx4NWVfbXB3cWVfZ2V0X2xvZ19udW1fc3RyaWRl cyhtZGV2LCBwYXJhbXMsIHhzayk7DQorDQorCQlwb29sX3NpemUgPSBNTFg1X01QV1JRX1BBR0VT X1BFUl9XUUUgPDwNCisJCQltbHg1ZV9tcHdxZV9nZXRfbG9nX3JxX3NpemUocGFyYW1zLCB4c2sp Ow0KIA0KIAkJcnEtPnBvc3Rfd3FlcyA9IG1seDVlX3Bvc3RfcnhfbXB3cWVzOw0KIAkJcnEtPmRl YWxsb2Nfd3FlID0gbWx4NWVfZGVhbGxvY19yeF9tcHdxZTsNCkBAIC00MzYsMTIgKzQ3MiwxNSBA QCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAkJ CWdvdG8gZXJyX3JxX3dxX2Rlc3Ryb3k7DQogCQl9DQogDQotCQlycS0+bXB3cWUuc2tiX2Zyb21f Y3FlX21wd3JxID0NCi0JCQltbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFt cykgPw0KLQkJCW1seDVlX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIgOg0KLQkJCW1seDVlX3Nr Yl9mcm9tX2NxZV9tcHdycV9ub25saW5lYXI7DQotCQlycS0+bXB3cWUubG9nX3N0cmlkZV9zeiA9 IG1seDVlX21wd3FlX2dldF9sb2dfc3RyaWRlX3NpemUobWRldiwgcGFyYW1zKTsNCi0JCXJxLT5t cHdxZS5udW1fc3RyaWRlcyA9IEJJVChtbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJpZGVzKG1k ZXYsIHBhcmFtcykpOw0KKwkJcnEtPm1wd3FlLnNrYl9mcm9tX2NxZV9tcHdycSA9IHhzayA/DQor CQkJbWx4NWVfeHNrX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIgOg0KKwkJCW1seDVlX3J4X21w d3FlX2lzX2xpbmVhcl9za2IobWRldiwgcGFyYW1zLCBOVUxMKSA/DQorCQkJCW1seDVlX3NrYl9m cm9tX2NxZV9tcHdycV9saW5lYXIgOg0KKwkJCQltbHg1ZV9za2JfZnJvbV9jcWVfbXB3cnFfbm9u bGluZWFyOw0KKw0KKwkJcnEtPm1wd3FlLmxvZ19zdHJpZGVfc3ogPSBtbHg1ZV9tcHdxZV9nZXRf bG9nX3N0cmlkZV9zaXplKG1kZXYsIHBhcmFtcywgeHNrKTsNCisJCXJxLT5tcHdxZS5udW1fc3Ry aWRlcyA9DQorCQkJQklUKG1seDVlX21wd3FlX2dldF9sb2dfbnVtX3N0cmlkZXMobWRldiwgcGFy YW1zLCB4c2spKTsNCiANCiAJCWVyciA9IG1seDVlX2NyZWF0ZV9ycV91bXJfbWtleShtZGV2LCBy cSk7DQogCQlpZiAoZXJyKQ0KQEAgLTQ2Miw2ICs1MDEsOSBAQCBzdGF0aWMgaW50IG1seDVlX2Fs bG9jX3JxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIA0KIAkJd3Ffc3ogPSBtbHg1X3dxX2N5 Y19nZXRfc2l6ZSgmcnEtPndxZS53cSk7DQogDQorCQlpZiAoeHNrKQ0KKwkJCW51bV94c2tfZnJh bWVzID0gd3Ffc3ogPDwgcnEtPndxZS5pbmZvLmxvZ19udW1fZnJhZ3M7DQorDQogCQlycS0+d3Fl LmluZm8gPSBycXAtPmZyYWdzX2luZm87DQogCQlycS0+d3FlLmZyYWdzID0NCiAJCQlrdnphbGxv Y19ub2RlKGFycmF5X3NpemUoc2l6ZW9mKCpycS0+d3FlLmZyYWdzKSwNCkBAIC00NzUsNiArNTE3 LDcgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywN CiAJCWVyciA9IG1seDVlX2luaXRfZGlfbGlzdChycSwgd3Ffc3osIGMtPmNwdSk7DQogCQlpZiAo ZXJyKQ0KIAkJCWdvdG8gZXJyX2ZyZWU7DQorDQogCQlycS0+cG9zdF93cWVzID0gbWx4NWVfcG9z dF9yeF93cWVzOw0KIAkJcnEtPmRlYWxsb2Nfd3FlID0gbWx4NWVfZGVhbGxvY19yeF93cWU7DQog DQpAQCAtNDkwLDMzICs1MzMsNTEgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3Qg bWx4NWVfY2hhbm5lbCAqYywNCiAJCQlnb3RvIGVycl9mcmVlOw0KIAkJfQ0KIA0KLQkJcnEtPndx ZS5za2JfZnJvbV9jcWUgPSBtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFtcykgPw0KLQkJCW1s eDVlX3NrYl9mcm9tX2NxZV9saW5lYXIgOg0KLQkJCW1seDVlX3NrYl9mcm9tX2NxZV9ub25saW5l YXI7DQorCQlycS0+d3FlLnNrYl9mcm9tX2NxZSA9IHhzayA/DQorCQkJbWx4NWVfeHNrX3NrYl9m cm9tX2NxZV9saW5lYXIgOg0KKwkJCW1seDVlX3J4X2lzX2xpbmVhcl9za2IocGFyYW1zLCBOVUxM KSA/DQorCQkJCW1seDVlX3NrYl9mcm9tX2NxZV9saW5lYXIgOg0KKwkJCQltbHg1ZV9za2JfZnJv bV9jcWVfbm9ubGluZWFyOw0KKw0KIAkJcnEtPm1rZXlfYmUgPSBjLT5ta2V5X2JlOw0KIAl9DQog DQotCS8qIENyZWF0ZSBhIHBhZ2VfcG9vbCBhbmQgcmVnaXN0ZXIgaXQgd2l0aCByeHEgKi8NCi0J cHBfcGFyYW1zLm9yZGVyICAgICA9IDA7DQotCXBwX3BhcmFtcy5mbGFncyAgICAgPSAwOyAvKiBO by1pbnRlcm5hbCBETUEgbWFwcGluZyBpbiBwYWdlX3Bvb2wgKi8NCi0JcHBfcGFyYW1zLnBvb2xf c2l6ZSA9IHBvb2xfc2l6ZTsNCi0JcHBfcGFyYW1zLm5pZCAgICAgICA9IGNwdV90b19ub2RlKGMt PmNwdSk7DQotCXBwX3BhcmFtcy5kZXYgICAgICAgPSBjLT5wZGV2Ow0KLQlwcF9wYXJhbXMuZG1h X2RpciAgID0gcnEtPmJ1ZmYubWFwX2RpcjsNCi0NCi0JLyogcGFnZV9wb29sIGNhbiBiZSB1c2Vk IGV2ZW4gd2hlbiB0aGVyZSBpcyBubyBycS0+eGRwX3Byb2csDQotCSAqIGdpdmVuIHBhZ2VfcG9v bCBkb2VzIG5vdCBoYW5kbGUgRE1BIG1hcHBpbmcgdGhlcmUgaXMgbm8NCi0JICogcmVxdWlyZWQg c3RhdGUgdG8gY2xlYXIuIEFuZCBwYWdlX3Bvb2wgZ3JhY2VmdWxseSBoYW5kbGUNCi0JICogZWxl dmF0ZWQgcmVmY250Lg0KLQkgKi8NCi0JcnEtPnBhZ2VfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUo JnBwX3BhcmFtcyk7DQotCWlmIChJU19FUlIocnEtPnBhZ2VfcG9vbCkpIHsNCi0JCWVyciA9IFBU Ul9FUlIocnEtPnBhZ2VfcG9vbCk7DQotCQlycS0+cGFnZV9wb29sID0gTlVMTDsNCi0JCWdvdG8g ZXJyX2ZyZWU7DQorCWlmICh4c2spIHsNCisJCWVyciA9IG1seDVlX3hza19yZXNpemVfcmV1c2Vx KHVtZW0sIG51bV94c2tfZnJhbWVzKTsNCisJCWlmICh1bmxpa2VseShlcnIpKSB7DQorCQkJbWx4 NV9jb3JlX2VycihtZGV2LCAiVW5hYmxlIHRvIGFsbG9jYXRlIHRoZSBSZXVzZSBSaW5nIGZvciAl dSBmcmFtZXNcbiIsDQorCQkJCSAgICAgIG51bV94c2tfZnJhbWVzKTsNCisJCQlnb3RvIGVycl9m cmVlOw0KKwkJfQ0KKw0KKwkJcnEtPnpjYS5mcmVlID0gbWx4NWVfeHNrX3pjYV9mcmVlOw0KKwkJ ZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnJxLT54ZHBfcnhxLA0KKwkJCQkJCSBN RU1fVFlQRV9aRVJPX0NPUFksDQorCQkJCQkJICZycS0+emNhKTsNCisJfSBlbHNlIHsNCisJCS8q IENyZWF0ZSBhIHBhZ2VfcG9vbCBhbmQgcmVnaXN0ZXIgaXQgd2l0aCByeHEgKi8NCisJCXBwX3Bh cmFtcy5vcmRlciAgICAgPSAwOw0KKwkJcHBfcGFyYW1zLmZsYWdzICAgICA9IDA7IC8qIE5vLWlu dGVybmFsIERNQSBtYXBwaW5nIGluIHBhZ2VfcG9vbCAqLw0KKwkJcHBfcGFyYW1zLnBvb2xfc2l6 ZSA9IHBvb2xfc2l6ZTsNCisJCXBwX3BhcmFtcy5uaWQgICAgICAgPSBjcHVfdG9fbm9kZShjLT5j cHUpOw0KKwkJcHBfcGFyYW1zLmRldiAgICAgICA9IGMtPnBkZXY7DQorCQlwcF9wYXJhbXMuZG1h X2RpciAgID0gcnEtPmJ1ZmYubWFwX2RpcjsNCisNCisJCS8qIHBhZ2VfcG9vbCBjYW4gYmUgdXNl ZCBldmVuIHdoZW4gdGhlcmUgaXMgbm8gcnEtPnhkcF9wcm9nLA0KKwkJICogZ2l2ZW4gcGFnZV9w b29sIGRvZXMgbm90IGhhbmRsZSBETUEgbWFwcGluZyB0aGVyZSBpcyBubw0KKwkJICogcmVxdWly ZWQgc3RhdGUgdG8gY2xlYXIuIEFuZCBwYWdlX3Bvb2wgZ3JhY2VmdWxseSBoYW5kbGUNCisJCSAq IGVsZXZhdGVkIHJlZmNudC4NCisJCSAqLw0KKwkJcnEtPnBhZ2VfcG9vbCA9IHBhZ2VfcG9vbF9j cmVhdGUoJnBwX3BhcmFtcyk7DQorCQlpZiAoSVNfRVJSKHJxLT5wYWdlX3Bvb2wpKSB7DQorCQkJ ZXJyID0gUFRSX0VSUihycS0+cGFnZV9wb29sKTsNCisJCQlycS0+cGFnZV9wb29sID0gTlVMTDsN CisJCQlnb3RvIGVycl9mcmVlOw0KKwkJfQ0KKwkJZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1f bW9kZWwoJnJxLT54ZHBfcnhxLA0KKwkJCQkJCSBNRU1fVFlQRV9QQUdFX1BPT0wsDQorCQkJCQkJ IHJxLT5wYWdlX3Bvb2wpOw0KIAl9DQotCWVyciA9IHhkcF9yeHFfaW5mb19yZWdfbWVtX21vZGVs KCZycS0+eGRwX3J4cSwNCi0JCQkJCSBNRU1fVFlQRV9QQUdFX1BPT0wsIHJxLT5wYWdlX3Bvb2wp Ow0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZnJlZTsNCiANCkBAIC02MTUsNyArNjc2LDExIEBA IHN0YXRpYyB2b2lkIG1seDVlX2ZyZWVfcnEoc3RydWN0IG1seDVlX3JxICpycSkNCiAJICAgICBp ID0gKGkgKyAxKSAmIChNTFg1RV9DQUNIRV9TSVpFIC0gMSkpIHsNCiAJCXN0cnVjdCBtbHg1ZV9k bWFfaW5mbyAqZG1hX2luZm8gPSAmcnEtPnBhZ2VfY2FjaGUucGFnZV9jYWNoZVtpXTsNCiANCi0J CW1seDVlX3BhZ2VfcmVsZWFzZShycSwgZG1hX2luZm8sIGZhbHNlKTsNCisJCS8qIFdpdGggQUZf WERQLCBwYWdlX2NhY2hlIGlzIG5vdCB1c2VkLCBzbyB0aGlzIGxvb3AgaXMgbm90DQorCQkgKiBl bnRlcmVkLCBhbmQgaXQncyBzYWZlIHRvIGNhbGwgbWx4NWVfcGFnZV9yZWxlYXNlX2R5bmFtaWMN CisJCSAqIGRpcmVjdGx5Lg0KKwkJICovDQorCQltbHg1ZV9wYWdlX3JlbGVhc2VfZHluYW1pYyhy cSwgZG1hX2luZm8sIGZhbHNlKTsNCiAJfQ0KIAltbHg1X3dxX2Rlc3Ryb3koJnJxLT53cV9jdHJs KTsNCiB9DQpAQCAtNzUwLDcgKzgxNSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2Rlc3Ryb3lfcnEo c3RydWN0IG1seDVlX3JxICpycSkNCiAJbWx4NV9jb3JlX2Rlc3Ryb3lfcnEocnEtPm1kZXYsIHJx LT5ycW4pOw0KIH0NCiANCi1zdGF0aWMgaW50IG1seDVlX3dhaXRfZm9yX21pbl9yeF93cWVzKHN0 cnVjdCBtbHg1ZV9ycSAqcnEsIGludCB3YWl0X3RpbWUpDQoraW50IG1seDVlX3dhaXRfZm9yX21p bl9yeF93cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIGludCB3YWl0X3RpbWUpDQogew0KIAl1bnNp Z25lZCBsb25nIGV4cF90aW1lID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMod2FpdF90aW1l KTsNCiAJc3RydWN0IG1seDVlX2NoYW5uZWwgKmMgPSBycS0+Y2hhbm5lbDsNCkBAIC04MDgsMTQg Kzg3MywxMyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9mcmVlX3J4X2Rlc2NzKHN0cnVjdCBtbHg1ZV9y cSAqcnEpDQogDQogfQ0KIA0KLXN0YXRpYyBpbnQgbWx4NWVfb3Blbl9ycShzdHJ1Y3QgbWx4NWVf Y2hhbm5lbCAqYywNCi0JCQkgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KLQkJCSBzdHJ1 Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFtLA0KLQkJCSBzdHJ1Y3QgbWx4NWVfcnEgKnJxKQ0KK2lu dCBtbHg1ZV9vcGVuX3JxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLCBzdHJ1Y3QgbWx4NWVfcGFy YW1zICpwYXJhbXMsDQorCQkgIHN0cnVjdCBtbHg1ZV9ycV9wYXJhbSAqcGFyYW0sIHN0cnVjdCBt bHg1ZV94c2tfcGFyYW0gKnhzaywNCisJCSAgc3RydWN0IHhkcF91bWVtICp1bWVtLCBzdHJ1Y3Qg bWx4NWVfcnEgKnJxKQ0KIHsNCiAJaW50IGVycjsNCiANCi0JZXJyID0gbWx4NWVfYWxsb2NfcnEo YywgcGFyYW1zLCBwYXJhbSwgcnEpOw0KKwllcnIgPSBtbHg1ZV9hbGxvY19ycShjLCBwYXJhbXMs IHhzaywgdW1lbSwgcGFyYW0sIHJxKTsNCiAJaWYgKGVycikNCiAJCXJldHVybiBlcnI7DQogDQpA QCAtODUzLDEzICs5MTcsMTMgQEAgc3RhdGljIHZvaWQgbWx4NWVfYWN0aXZhdGVfcnEoc3RydWN0 IG1seDVlX3JxICpycSkNCiAJbWx4NWVfdHJpZ2dlcl9pcnEoJnJxLT5jaGFubmVsLT5pY29zcSk7 DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX2RlYWN0aXZhdGVfcnEoc3RydWN0IG1seDVlX3Jx ICpycSkNCit2b2lkIG1seDVlX2RlYWN0aXZhdGVfcnEoc3RydWN0IG1seDVlX3JxICpycSkNCiB7 DQogCWNsZWFyX2JpdChNTFg1RV9SUV9TVEFURV9FTkFCTEVELCAmcnEtPnN0YXRlKTsNCiAJbmFw aV9zeW5jaHJvbml6ZSgmcnEtPmNoYW5uZWwtPm5hcGkpOyAvKiBwcmV2ZW50IG1seDVlX3Bvc3Rf cnhfd3FlcyAqLw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9ycShzdHJ1Y3QgbWx4 NWVfcnEgKnJxKQ0KK3ZvaWQgbWx4NWVfY2xvc2VfcnEoc3RydWN0IG1seDVlX3JxICpycSkNCiB7 DQogCWNhbmNlbF93b3JrX3N5bmMoJnJxLT5kaW0ud29yayk7DQogCW1seDVlX2Rlc3Ryb3lfcnEo cnEpOw0KQEAgLTkxMiw2ICs5NzYsNyBAQCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3hkcHNxX2Ri KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIGludCBudW1hKQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVf YWxsb2NfeGRwc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsDQogCQkJICAgICBzdHJ1Y3QgbWx4 NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICAgICBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sDQogCQkJ ICAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtLA0KIAkJCSAgICAgc3RydWN0IG1seDVl X3hkcHNxICpzcSwNCiAJCQkgICAgIGJvb2wgaXNfcmVkaXJlY3QpDQpAQCAtOTI3LDkgKzk5Miwx MyBAQCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpj LA0KIAlzcS0+dWFyX21hcCAgID0gbWRldi0+bWx4NWVfcmVzLmJmcmVnLm1hcDsNCiAJc3EtPm1p bl9pbmxpbmVfbW9kZSA9IHBhcmFtcy0+dHhfbWluX2lubGluZV9tb2RlOw0KIAlzcS0+aHdfbXR1 ICAgID0gTUxYNUVfU1cySFdfTVRVKHBhcmFtcywgcGFyYW1zLT5zd19tdHUpOw0KLQlzcS0+c3Rh dHMgICAgID0gaXNfcmVkaXJlY3QgPw0KLQkJJmMtPnByaXYtPmNoYW5uZWxfc3RhdHNbYy0+aXhd LnhkcHNxIDoNCi0JCSZjLT5wcml2LT5jaGFubmVsX3N0YXRzW2MtPml4XS5ycV94ZHBzcTsNCisJ c3EtPnVtZW0gICAgICA9IHVtZW07DQorDQorCXNxLT5zdGF0cyA9IHNxLT51bWVtID8NCisJCSZj LT5wcml2LT5jaGFubmVsX3N0YXRzW2MtPml4XS54c2tzcSA6DQorCQlpc19yZWRpcmVjdCA/DQor CQkJJmMtPnByaXYtPmNoYW5uZWxfc3RhdHNbYy0+aXhdLnhkcHNxIDoNCisJCQkmYy0+cHJpdi0+ Y2hhbm5lbF9zdGF0c1tjLT5peF0ucnFfeGRwc3E7DQogDQogCXBhcmFtLT53cS5kYl9udW1hX25v ZGUgPSBjcHVfdG9fbm9kZShjLT5jcHUpOw0KIAllcnIgPSBtbHg1X3dxX2N5Y19jcmVhdGUobWRl diwgJnBhcmFtLT53cSwgc3FjX3dxLCB3cSwgJnNxLT53cV9jdHJsKTsNCkBAIC0xMzA4LDEwICsx Mzc3LDggQEAgc3RhdGljIHZvaWQgbWx4NWVfdHhfZXJyX2NxZV93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqcmVjb3Zlcl93b3JrKQ0KIAltbHg1ZV90eF9yZXBvcnRlcl9lcnJfY3FlKHNxKTsNCiB9 DQogDQotc3RhdGljIGludCBtbHg1ZV9vcGVuX2ljb3NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpj LA0KLQkJCSAgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQotCQkJICAgIHN0cnVjdCBt bHg1ZV9zcV9wYXJhbSAqcGFyYW0sDQotCQkJICAgIHN0cnVjdCBtbHg1ZV9pY29zcSAqc3EpDQor aW50IG1seDVlX29wZW5faWNvc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsIHN0cnVjdCBtbHg1 ZV9wYXJhbXMgKnBhcmFtcywNCisJCSAgICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSwg c3RydWN0IG1seDVlX2ljb3NxICpzcSkNCiB7DQogCXN0cnVjdCBtbHg1ZV9jcmVhdGVfc3FfcGFy YW0gY3NwID0ge307DQogCWludCBlcnI7DQpAQCAtMTMzNyw3ICsxNDA0LDcgQEAgc3RhdGljIGlu dCBtbHg1ZV9vcGVuX2ljb3NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAlyZXR1cm4gZXJy Ow0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9pY29zcShzdHJ1Y3QgbWx4NWVfaWNv c3EgKnNxKQ0KK3ZvaWQgbWx4NWVfY2xvc2VfaWNvc3Eoc3RydWN0IG1seDVlX2ljb3NxICpzcSkN CiB7DQogCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjID0gc3EtPmNoYW5uZWw7DQogDQpAQCAtMTM0 OCwxNiArMTQxNSwxNCBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9pY29zcShzdHJ1Y3QgbWx4 NWVfaWNvc3EgKnNxKQ0KIAltbHg1ZV9mcmVlX2ljb3NxKHNxKTsNCiB9DQogDQotc3RhdGljIGlu dCBtbHg1ZV9vcGVuX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KLQkJCSAgICBzdHJ1 Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQotCQkJICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAq cGFyYW0sDQotCQkJICAgIHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQotCQkJICAgIGJvb2wgaXNf cmVkaXJlY3QpDQoraW50IG1seDVlX29wZW5feGRwc3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMs IHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCSAgICAgc3RydWN0IG1seDVlX3NxX3Bh cmFtICpwYXJhbSwgc3RydWN0IHhkcF91bWVtICp1bWVtLA0KKwkJICAgICBzdHJ1Y3QgbWx4NWVf eGRwc3EgKnNxLCBib29sIGlzX3JlZGlyZWN0KQ0KIHsNCiAJc3RydWN0IG1seDVlX2NyZWF0ZV9z cV9wYXJhbSBjc3AgPSB7fTsNCiAJaW50IGVycjsNCiANCi0JZXJyID0gbWx4NWVfYWxsb2NfeGRw c3EoYywgcGFyYW1zLCBwYXJhbSwgc3EsIGlzX3JlZGlyZWN0KTsNCisJZXJyID0gbWx4NWVfYWxs b2NfeGRwc3EoYywgcGFyYW1zLCB1bWVtLCBwYXJhbSwgc3EsIGlzX3JlZGlyZWN0KTsNCiAJaWYg KGVycikNCiAJCXJldHVybiBlcnI7DQogDQpAQCAtMTQxMSw3ICsxNDc2LDcgQEAgc3RhdGljIGlu dCBtbHg1ZV9vcGVuX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAlyZXR1cm4gZXJy Ow0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV94ZHBzcShzdHJ1Y3QgbWx4NWVfeGRw c3EgKnNxKQ0KK3ZvaWQgbWx4NWVfY2xvc2VfeGRwc3Eoc3RydWN0IG1seDVlX3hkcHNxICpzcSkN CiB7DQogCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjID0gc3EtPmNoYW5uZWw7DQogDQpAQCAtMTU0 MCwxMCArMTYwNSw4IEBAIHN0YXRpYyB2b2lkIG1seDVlX2Rlc3Ryb3lfY3Eoc3RydWN0IG1seDVl X2NxICpjcSkNCiAJbWx4NV9jb3JlX2Rlc3Ryb3lfY3EoY3EtPm1kZXYsICZjcS0+bWNxKTsNCiB9 DQogDQotc3RhdGljIGludCBtbHg1ZV9vcGVuX2NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0K LQkJCSBzdHJ1Y3QgbmV0X2RpbV9jcV9tb2RlciBtb2RlciwNCi0JCQkgc3RydWN0IG1seDVlX2Nx X3BhcmFtICpwYXJhbSwNCi0JCQkgc3RydWN0IG1seDVlX2NxICpjcSkNCitpbnQgbWx4NWVfb3Bl bl9jcShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywgc3RydWN0IG5ldF9kaW1fY3FfbW9kZXIgbW9k ZXIsDQorCQkgIHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0sIHN0cnVjdCBtbHg1ZV9jcSAq Y3EpDQogew0KIAlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IGMtPm1kZXY7DQogCWludCBl cnI7DQpAQCAtMTU2Niw3ICsxNjI5LDcgQEAgc3RhdGljIGludCBtbHg1ZV9vcGVuX2NxKHN0cnVj dCBtbHg1ZV9jaGFubmVsICpjLA0KIAlyZXR1cm4gZXJyOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBt bHg1ZV9jbG9zZV9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxKQ0KK3ZvaWQgbWx4NWVfY2xvc2VfY3Eo c3RydWN0IG1seDVlX2NxICpjcSkNCiB7DQogCW1seDVlX2Rlc3Ryb3lfY3EoY3EpOw0KIAltbHg1 ZV9mcmVlX2NxKGNxKTsNCkBAIC0xNzgwLDE3ICsxODQzLDE3IEBAIHN0YXRpYyBpbnQgbWx4NWVf b3Blbl9xdWV1ZXMoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsDQogCQlnb3RvIGVycl9jbG9zZV9p Y29zcTsNCiANCiAJaWYgKGMtPnhkcCkgew0KLQkJZXJyID0gbWx4NWVfb3Blbl94ZHBzcShjLCBw YXJhbXMsICZjcGFyYW0tPnhkcF9zcSwNCisJCWVyciA9IG1seDVlX29wZW5feGRwc3EoYywgcGFy YW1zLCAmY3BhcmFtLT54ZHBfc3EsIE5VTEwsDQogCQkJCSAgICAgICAmYy0+cnFfeGRwc3EsIGZh bHNlKTsNCiAJCWlmIChlcnIpDQogCQkJZ290byBlcnJfY2xvc2Vfc3FzOw0KIAl9DQogDQotCWVy ciA9IG1seDVlX29wZW5fcnEoYywgcGFyYW1zLCAmY3BhcmFtLT5ycSwgJmMtPnJxKTsNCisJZXJy ID0gbWx4NWVfb3Blbl9ycShjLCBwYXJhbXMsICZjcGFyYW0tPnJxLCBOVUxMLCBOVUxMLCAmYy0+ cnEpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfY2xvc2VfeGRwX3NxOw0KIA0KLQllcnIgPSBt bHg1ZV9vcGVuX3hkcHNxKGMsIHBhcmFtcywgJmNwYXJhbS0+eGRwX3NxLCAmYy0+eGRwc3EsIHRy dWUpOw0KKwllcnIgPSBtbHg1ZV9vcGVuX3hkcHNxKGMsIHBhcmFtcywgJmNwYXJhbS0+eGRwX3Nx LCBOVUxMLCAmYy0+eGRwc3EsIHRydWUpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfY2xvc2Vf cnE7DQogDQpAQCAtMTg1MCwxMCArMTkxMywxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9x dWV1ZXMoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpDQogc3RhdGljIGludCBtbHg1ZV9vcGVuX2No YW5uZWwoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBpeCwNCiAJCQkgICAgICBzdHJ1Y3Qg bWx4NWVfcGFyYW1zICpwYXJhbXMsDQogCQkJICAgICAgc3RydWN0IG1seDVlX2NoYW5uZWxfcGFy YW0gKmNwYXJhbSwNCisJCQkgICAgICBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sDQogCQkJICAgICAg c3RydWN0IG1seDVlX2NoYW5uZWwgKipjcCkNCiB7DQogCWludCBjcHUgPSBjcHVtYXNrX2ZpcnN0 KG1seDVfY29tcF9pcnFfZ2V0X2FmZmluaXR5X21hc2socHJpdi0+bWRldiwgaXgpKTsNCiAJc3Ry dWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHByaXYtPm5ldGRldjsNCisJc3RydWN0IG1seDVlX3hz a19wYXJhbSB4c2s7DQogCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjOw0KIAl1bnNpZ25lZCBpbnQg aXJxOw0KIAlpbnQgZXJyOw0KQEAgLTE4OTAsMTAgKzE5NTUsMjAgQEAgc3RhdGljIGludCBtbHg1 ZV9vcGVuX2NoYW5uZWwoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBpeCwNCiAJaWYgKHVu bGlrZWx5KGVycikpDQogCQlnb3RvIGVycl9uYXBpX2RlbDsNCiANCisJaWYgKHVtZW0pIHsNCisJ CW1seDVlX2J1aWxkX3hza19wYXJhbSh1bWVtLCAmeHNrKTsNCisJCWVyciA9IG1seDVlX29wZW5f eHNrKHByaXYsIHBhcmFtcywgJnhzaywgdW1lbSwgYyk7DQorCQlpZiAodW5saWtlbHkoZXJyKSkN CisJCQlnb3RvIGVycl9jbG9zZV9xdWV1ZXM7DQorCX0NCisNCiAJKmNwID0gYzsNCiANCiAJcmV0 dXJuIDA7DQogDQorZXJyX2Nsb3NlX3F1ZXVlczoNCisJbWx4NWVfY2xvc2VfcXVldWVzKGMpOw0K Kw0KIGVycl9uYXBpX2RlbDoNCiAJbmV0aWZfbmFwaV9kZWwoJmMtPm5hcGkpOw0KIAltbHg1ZV9m cmVlX3hwc19jcHVtYXNrKGMpOw0KQEAgLTE5MTIsMTIgKzE5ODcsMTggQEAgc3RhdGljIHZvaWQg bWx4NWVfYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCiAJCW1seDVl X2FjdGl2YXRlX3R4cXNxKCZjLT5zcVt0Y10pOw0KIAltbHg1ZV9hY3RpdmF0ZV9ycSgmYy0+cnEp Ow0KIAluZXRpZl9zZXRfeHBzX3F1ZXVlKGMtPm5ldGRldiwgYy0+eHBzX2NwdW1hc2ssIGMtPml4 KTsNCisNCisJaWYgKHRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBjLT5zdGF0ZSkp DQorCQltbHg1ZV9hY3RpdmF0ZV94c2soYyk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG1seDVlX2Rl YWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCiB7DQogCWludCB0YzsN CiANCisJaWYgKHRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBjLT5zdGF0ZSkpDQor CQltbHg1ZV9kZWFjdGl2YXRlX3hzayhjKTsNCisNCiAJbWx4NWVfZGVhY3RpdmF0ZV9ycSgmYy0+ cnEpOw0KIAlmb3IgKHRjID0gMDsgdGMgPCBjLT5udW1fdGM7IHRjKyspDQogCQltbHg1ZV9kZWFj dGl2YXRlX3R4cXNxKCZjLT5zcVt0Y10pOw0KQEAgLTE5MjUsNiArMjAwNiw4IEBAIHN0YXRpYyB2 b2lkIG1seDVlX2RlYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCiAN CiBzdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpj KQ0KIHsNCisJaWYgKHRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBjLT5zdGF0ZSkp DQorCQltbHg1ZV9jbG9zZV94c2soYyk7DQogCW1seDVlX2Nsb3NlX3F1ZXVlcyhjKTsNCiAJbmV0 aWZfbmFwaV9kZWwoJmMtPm5hcGkpOw0KIAltbHg1ZV9mcmVlX3hwc19jcHVtYXNrKGMpOw0KQEAg LTE5MzYsNiArMjAxOSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2Nsb3NlX2NoYW5uZWwoc3RydWN0 IG1seDVlX2NoYW5uZWwgKmMpDQogDQogc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfcnFfZnJhZ3Nf aW5mbyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCiAJCQkJICAgICAgc3RydWN0IG1seDVl X3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgICAgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ss DQogCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV9ycV9mcmFnc19pbmZvICppbmZvKQ0KIHsNCiAJdTMy IGJ5dGVfY291bnQgPSBNTFg1RV9TVzJIV19NVFUocGFyYW1zLCBwYXJhbXMtPnN3X210dSk7DQpA QCAtMTk0OCwxMCArMjAzMiwxMCBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9ycV9mcmFnc19p bmZvKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KIAkJYnl0ZV9jb3VudCArPSBNTFg1RV9N RVRBREFUQV9FVEhFUl9MRU47DQogI2VuZGlmDQogDQotCWlmIChtbHg1ZV9yeF9pc19saW5lYXJf c2tiKHBhcmFtcykpIHsNCisJaWYgKG1seDVlX3J4X2lzX2xpbmVhcl9za2IocGFyYW1zLCB4c2sp KSB7DQogCQlpbnQgZnJhZ19zdHJpZGU7DQogDQotCQlmcmFnX3N0cmlkZSA9IG1seDVlX3J4X2dl dF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIE5VTEwpOw0KKwkJZnJhZ19zdHJpZGUgPSBtbHg1ZV9y eF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spOw0KIAkJZnJhZ19zdHJpZGUgPSByb3Vu ZHVwX3Bvd19vZl90d28oZnJhZ19zdHJpZGUpOw0KIA0KIAkJaW5mby0+YXJyWzBdLmZyYWdfc2l6 ZSA9IGJ5dGVfY291bnQ7DQpAQCAtMjAwOSw5ICsyMDkzLDEwIEBAIHN0YXRpYyB1OCBtbHg1ZV9n ZXRfcnFfbG9nX3dxX3N6KHZvaWQgKnJxYykNCiAJcmV0dXJuIE1MWDVfR0VUKHdxLCB3cSwgbG9n X3dxX3N6KTsNCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfcnFfcGFyYW0oc3RydWN0 IG1seDVlX3ByaXYgKnByaXYsDQotCQkJCSBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQot CQkJCSBzdHJ1Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFtKQ0KK3ZvaWQgbWx4NWVfYnVpbGRfcnFf cGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1z ICpwYXJhbXMsDQorCQkJICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ssDQorCQkJICBzdHJ1 Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFtKQ0KIHsNCiAJc3RydWN0IG1seDVfY29yZV9kZXYgKm1k ZXYgPSBwcml2LT5tZGV2Ow0KIAl2b2lkICpycWMgPSBwYXJhbS0+cnFjOw0KQEAgLTIwMjEsMTYg KzIxMDYsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfcnFfcGFyYW0oc3RydWN0IG1seDVl X3ByaXYgKnByaXYsDQogCXN3aXRjaCAocGFyYW1zLT5ycV93cV90eXBlKSB7DQogCWNhc2UgTUxY NV9XUV9UWVBFX0xJTktFRF9MSVNUX1NUUklESU5HX1JROg0KIAkJTUxYNV9TRVQod3EsIHdxLCBs b2dfd3FlX251bV9vZl9zdHJpZGVzLA0KLQkJCSBtbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJp ZGVzKG1kZXYsIHBhcmFtcykgLQ0KKwkJCSBtbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJpZGVz KG1kZXYsIHBhcmFtcywgeHNrKSAtDQogCQkJIE1MWDVfTVBXUUVfTE9HX05VTV9TVFJJREVTX0JB U0UpOw0KIAkJTUxYNV9TRVQod3EsIHdxLCBsb2dfd3FlX3N0cmlkZV9zaXplLA0KLQkJCSBtbHg1 ZV9tcHdxZV9nZXRfbG9nX3N0cmlkZV9zaXplKG1kZXYsIHBhcmFtcykgLQ0KKwkJCSBtbHg1ZV9t cHdxZV9nZXRfbG9nX3N0cmlkZV9zaXplKG1kZXYsIHBhcmFtcywgeHNrKSAtDQogCQkJIE1MWDVf TVBXUUVfTE9HX1NUUklERV9TWl9CQVNFKTsNCi0JCU1MWDVfU0VUKHdxLCB3cSwgbG9nX3dxX3N6 LCBtbHg1ZV9tcHdxZV9nZXRfbG9nX3JxX3NpemUocGFyYW1zKSk7DQorCQlNTFg1X1NFVCh3cSwg d3EsIGxvZ193cV9zeiwgbWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcywgeHNrKSk7 DQogCQlicmVhazsNCiAJZGVmYXVsdDogLyogTUxYNV9XUV9UWVBFX0NZQ0xJQyAqLw0KIAkJTUxY NV9TRVQod3EsIHdxLCBsb2dfd3Ffc3osIHBhcmFtcy0+bG9nX3JxX210dV9mcmFtZXMpOw0KLQkJ bWx4NWVfYnVpbGRfcnFfZnJhZ3NfaW5mbyhtZGV2LCBwYXJhbXMsICZwYXJhbS0+ZnJhZ3NfaW5m byk7DQorCQltbHg1ZV9idWlsZF9ycV9mcmFnc19pbmZvKG1kZXYsIHBhcmFtcywgeHNrLCAmcGFy YW0tPmZyYWdzX2luZm8pOw0KIAkJbmRzZWdzID0gcGFyYW0tPmZyYWdzX2luZm8ubnVtX2ZyYWdz Ow0KIAl9DQogDQpAQCAtMjA2MSw4ICsyMTQ2LDggQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRf ZHJvcF9ycV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiAJcGFyYW0tPndxLmJ1Zl9u dW1hX25vZGUgPSBkZXZfdG9fbm9kZShtZGV2LT5kZXZpY2UpOw0KIH0NCiANCi1zdGF0aWMgdm9p ZCBtbHg1ZV9idWlsZF9zcV9wYXJhbV9jb21tb24oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQot CQkJCQlzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtKQ0KK3ZvaWQgbWx4NWVfYnVpbGRfc3Ff cGFyYW1fY29tbW9uKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCQkgc3RydWN0IG1seDVl X3NxX3BhcmFtICpwYXJhbSkNCiB7DQogCXZvaWQgKnNxYyA9IHBhcmFtLT5zcWM7DQogCXZvaWQg KndxID0gTUxYNV9BRERSX09GKHNxYywgc3FjLCB3cSk7DQpAQCAtMjA5OCw5ICsyMTgzLDEwIEBA IHN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX2NvbW1vbl9jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdiwNCiAJCU1MWDVfU0VUKGNxYywgY3FjLCBjcWVfc3osIENRRV9TVFJJREVfMTI4X1BB RCk7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3J4X2NxX3BhcmFtKHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2LA0KLQkJCQkgICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0K LQkJCQkgICAgc3RydWN0IG1seDVlX2NxX3BhcmFtICpwYXJhbSkNCit2b2lkIG1seDVlX2J1aWxk X3J4X2NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCSAgICAgc3RydWN0IG1s eDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNr LA0KKwkJCSAgICAgc3RydWN0IG1seDVlX2NxX3BhcmFtICpwYXJhbSkNCiB7DQogCXN0cnVjdCBt bHg1X2NvcmVfZGV2ICptZGV2ID0gcHJpdi0+bWRldjsNCiAJdm9pZCAqY3FjID0gcGFyYW0tPmNx YzsNCkBAIC0yMTA4LDggKzIxOTQsOCBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9yeF9jcV9w YXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiANCiAJc3dpdGNoIChwYXJhbXMtPnJxX3dx X3R5cGUpIHsNCiAJY2FzZSBNTFg1X1dRX1RZUEVfTElOS0VEX0xJU1RfU1RSSURJTkdfUlE6DQot CQlsb2dfY3Ffc2l6ZSA9IG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6ZShwYXJhbXMpICsNCi0J CQltbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJpZGVzKG1kZXYsIHBhcmFtcyk7DQorCQlsb2df Y3Ffc2l6ZSA9IG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6ZShwYXJhbXMsIHhzaykgKw0KKwkJ CW1seDVlX21wd3FlX2dldF9sb2dfbnVtX3N0cmlkZXMobWRldiwgcGFyYW1zLCB4c2spOw0KIAkJ YnJlYWs7DQogCWRlZmF1bHQ6IC8qIE1MWDVfV1FfVFlQRV9DWUNMSUMgKi8NCiAJCWxvZ19jcV9z aXplID0gcGFyYW1zLT5sb2dfcnFfbXR1X2ZyYW1lczsNCkBAIC0yMTI1LDkgKzIyMTEsOSBAQCBz dGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9yeF9jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwNCiAJcGFyYW0tPmNxX3BlcmlvZF9tb2RlID0gcGFyYW1zLT5yeF9jcV9tb2RlcmF0aW9uLmNx X3BlcmlvZF9tb2RlOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF90eF9jcV9wYXJh bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMg KnBhcmFtcywNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0pDQordm9pZCBt bHg1ZV9idWlsZF90eF9jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAg IHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9jcV9w YXJhbSAqcGFyYW0pDQogew0KIAl2b2lkICpjcWMgPSBwYXJhbS0+Y3FjOw0KIA0KQEAgLTIxMzcs OSArMjIyMyw5IEBAIHN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3R4X2NxX3BhcmFtKHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2LA0KIAlwYXJhbS0+Y3FfcGVyaW9kX21vZGUgPSBwYXJhbXMtPnR4X2Nx X21vZGVyYXRpb24uY3FfcGVyaW9kX21vZGU7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX2J1 aWxkX2ljb19jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCi0JCQkJICAgICB1OCBs b2dfd3Ffc2l6ZSwNCi0JCQkJICAgICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBhcmFtKQ0KK3Zv aWQgbWx4NWVfYnVpbGRfaWNvX2NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJ CSAgICAgIHU4IGxvZ193cV9zaXplLA0KKwkJCSAgICAgIHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAq cGFyYW0pDQogew0KIAl2b2lkICpjcWMgPSBwYXJhbS0+Y3FjOw0KIA0KQEAgLTIxNTAsOSArMjIz Niw5IEBAIHN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX2ljb19jcV9wYXJhbShzdHJ1Y3QgbWx4NWVf cHJpdiAqcHJpdiwNCiAJcGFyYW0tPmNxX3BlcmlvZF9tb2RlID0gTkVUX0RJTV9DUV9QRVJJT0Rf TU9ERV9TVEFSVF9GUk9NX0VRRTsNCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfaWNv c3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQotCQkJCSAgICB1OCBsb2dfd3Ffc2l6 ZSwNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pDQordm9pZCBtbHg1ZV9i dWlsZF9pY29zcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHU4IGxv Z193cV9zaXplLA0KKwkJCSAgICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSkNCiB7DQog CXZvaWQgKnNxYyA9IHBhcmFtLT5zcWM7DQogCXZvaWQgKndxID0gTUxYNV9BRERSX09GKHNxYywg c3FjLCB3cSk7DQpAQCAtMjE2Myw5ICsyMjQ5LDkgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRf aWNvc3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCU1MWDVfU0VUKHNxYywgc3Fj LCByZWdfdW1yLCBNTFg1X0NBUF9FVEgocHJpdi0+bWRldiwgcmVnX3Vtcl9zcSkpOw0KIH0NCiAN Ci1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF94ZHBzcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAq cHJpdiwNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCi0JCQkJICAgIHN0 cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pDQordm9pZCBtbHg1ZV9idWlsZF94ZHBzcV9wYXJh bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMg KnBhcmFtcywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pDQogew0KIAl2 b2lkICpzcWMgPSBwYXJhbS0+c3FjOw0KIAl2b2lkICp3cSA9IE1MWDVfQUREUl9PRihzcWMsIHNx Yywgd3EpOw0KQEAgLTIxOTMsMTQgKzIyNzksMTQgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRf Y2hhbm5lbF9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiB7DQogCXU4IGljb3NxX2xv Z193cV9zejsNCiANCi0JbWx4NWVfYnVpbGRfcnFfcGFyYW0ocHJpdiwgcGFyYW1zLCAmY3BhcmFt LT5ycSk7DQorCW1seDVlX2J1aWxkX3JxX3BhcmFtKHByaXYsIHBhcmFtcywgTlVMTCwgJmNwYXJh bS0+cnEpOw0KIA0KIAlpY29zcV9sb2dfd3Ffc3ogPSBtbHg1ZV9idWlsZF9pY29zcV9sb2dfd3Ff c3oocGFyYW1zLCAmY3BhcmFtLT5ycSk7DQogDQogCW1seDVlX2J1aWxkX3NxX3BhcmFtKHByaXYs IHBhcmFtcywgJmNwYXJhbS0+c3EpOw0KIAltbHg1ZV9idWlsZF94ZHBzcV9wYXJhbShwcml2LCBw YXJhbXMsICZjcGFyYW0tPnhkcF9zcSk7DQogCW1seDVlX2J1aWxkX2ljb3NxX3BhcmFtKHByaXYs IGljb3NxX2xvZ193cV9zeiwgJmNwYXJhbS0+aWNvc3EpOw0KLQltbHg1ZV9idWlsZF9yeF9jcV9w YXJhbShwcml2LCBwYXJhbXMsICZjcGFyYW0tPnJ4X2NxKTsNCisJbWx4NWVfYnVpbGRfcnhfY3Ff cGFyYW0ocHJpdiwgcGFyYW1zLCBOVUxMLCAmY3BhcmFtLT5yeF9jcSk7DQogCW1seDVlX2J1aWxk X3R4X2NxX3BhcmFtKHByaXYsIHBhcmFtcywgJmNwYXJhbS0+dHhfY3EpOw0KIAltbHg1ZV9idWls ZF9pY29fY3FfcGFyYW0ocHJpdiwgaWNvc3FfbG9nX3dxX3N6LCAmY3BhcmFtLT5pY29zcV9jcSk7 DQogfQ0KQEAgLTIyMjEsNyArMjMwNywxMiBAQCBpbnQgbWx4NWVfb3Blbl9jaGFubmVscyhzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiANCiAJbWx4NWVfYnVpbGRfY2hhbm5lbF9wYXJhbShwcml2 LCAmY2hzLT5wYXJhbXMsIGNwYXJhbSk7DQogCWZvciAoaSA9IDA7IGkgPCBjaHMtPm51bTsgaSsr KSB7DQotCQllcnIgPSBtbHg1ZV9vcGVuX2NoYW5uZWwocHJpdiwgaSwgJmNocy0+cGFyYW1zLCBj cGFyYW0sICZjaHMtPmNbaV0pOw0KKwkJc3RydWN0IHhkcF91bWVtICp1bWVtID0gTlVMTDsNCisN CisJCWlmIChjaHMtPnBhcmFtcy54ZHBfcHJvZykNCisJCQl1bWVtID0gbWx4NWVfeHNrX2dldF91 bWVtKCZjaHMtPnBhcmFtcywgY2hzLT5wYXJhbXMueHNrLCBpKTsNCisNCisJCWVyciA9IG1seDVl X29wZW5fY2hhbm5lbChwcml2LCBpLCAmY2hzLT5wYXJhbXMsIGNwYXJhbSwgdW1lbSwgJmNocy0+ Y1tpXSk7DQogCQlpZiAoZXJyKQ0KIAkJCWdvdG8gZXJyX2Nsb3NlX2NoYW5uZWxzOw0KIAl9DQpA QCAtMjI2Myw2ICsyMzU0LDEwIEBAIHN0YXRpYyBpbnQgbWx4NWVfd2FpdF9jaGFubmVsc19taW5f cnhfd3FlcyhzdHJ1Y3QgbWx4NWVfY2hhbm5lbHMgKmNocykNCiAJCWludCB0aW1lb3V0ID0gZXJy ID8gMCA6IE1MWDVFX1JRX1dRRVNfVElNRU9VVDsNCiANCiAJCWVyciB8PSBtbHg1ZV93YWl0X2Zv cl9taW5fcnhfd3FlcygmY2hzLT5jW2ldLT5ycSwgdGltZW91dCk7DQorDQorCQkvKiBEb24ndCB3 YWl0IG9uIHRoZSBYU0sgUlEsIGJlY2F1c2UgdGhlIG5ld2VyIHhkcHNvY2sgc2FtcGxlDQorCQkg KiBkb2Vzbid0IHByb3ZpZGUgYW55IEZpbGwgUmluZyBlbnRyaWVzIGF0IHRoZSBzZXR1cCBzdGFn ZS4NCisJCSAqLw0KIAl9DQogDQogCXJldHVybiBlcnIgPyAtRVRJTUVET1VUIDogMDsNCkBAIC0y MzM1LDM1ICsyNDMwLDM1IEBAIGludCBtbHg1ZV9jcmVhdGVfaW5kaXJlY3RfcnF0KHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2KQ0KIAlyZXR1cm4gZXJyOw0KIH0NCiANCi1pbnQgbWx4NWVfY3JlYXRl X2RpcmVjdF9ycXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KK2ludCBtbHg1ZV9jcmVhdGVf ZGlyZWN0X3JxdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg1ZV90aXIgKnRp cnMpDQogew0KLQlzdHJ1Y3QgbWx4NWVfcnF0ICpycXQ7DQorCWNvbnN0IGludCBtYXhfbmNoID0g bWx4NWVfZ2V0X25ldGRldl9tYXhfY2hhbm5lbHMocHJpdi0+bmV0ZGV2KTsNCiAJaW50IGVycjsN CiAJaW50IGl4Ow0KIA0KLQlmb3IgKGl4ID0gMDsgaXggPCBtbHg1ZV9nZXRfbmV0ZGV2X21heF9j aGFubmVscyhwcml2LT5uZXRkZXYpOyBpeCsrKSB7DQotCQlycXQgPSAmcHJpdi0+ZGlyZWN0X3Rp cltpeF0ucnF0Ow0KLQkJZXJyID0gbWx4NWVfY3JlYXRlX3JxdChwcml2LCAxIC8qc2l6ZSAqLywg cnF0KTsNCi0JCWlmIChlcnIpDQorCWZvciAoaXggPSAwOyBpeCA8IG1heF9uY2g7IGl4KyspIHsN CisJCWVyciA9IG1seDVlX2NyZWF0ZV9ycXQocHJpdiwgMSAvKnNpemUgKi8sICZ0aXJzW2l4XS5y cXQpOw0KKwkJaWYgKHVubGlrZWx5KGVycikpDQogCQkJZ290byBlcnJfZGVzdHJveV9ycXRzOw0K IAl9DQogDQogCXJldHVybiAwOw0KIA0KIGVycl9kZXN0cm95X3JxdHM6DQotCW1seDVfY29yZV93 YXJuKHByaXYtPm1kZXYsICJjcmVhdGUgZGlyZWN0IHJxdHMgZmFpbGVkLCAlZFxuIiwgZXJyKTsN CisJbWx4NV9jb3JlX3dhcm4ocHJpdi0+bWRldiwgImNyZWF0ZSBycXRzIGZhaWxlZCwgJWRcbiIs IGVycik7DQogCWZvciAoaXgtLTsgaXggPj0gMDsgaXgtLSkNCi0JCW1seDVlX2Rlc3Ryb3lfcnF0 KHByaXYsICZwcml2LT5kaXJlY3RfdGlyW2l4XS5ycXQpOw0KKwkJbWx4NWVfZGVzdHJveV9ycXQo cHJpdiwgJnRpcnNbaXhdLnJxdCk7DQogDQogCXJldHVybiBlcnI7DQogfQ0KIA0KLXZvaWQgbWx4 NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCit2b2lkIG1s eDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBt bHg1ZV90aXIgKnRpcnMpDQogew0KKwljb25zdCBpbnQgbWF4X25jaCA9IG1seDVlX2dldF9uZXRk ZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQogCWludCBpOw0KIA0KLQlmb3IgKGkgPSAw OyBpIDwgbWx4NWVfZ2V0X25ldGRldl9tYXhfY2hhbm5lbHMocHJpdi0+bmV0ZGV2KTsgaSsrKQ0K LQkJbWx4NWVfZGVzdHJveV9ycXQocHJpdiwgJnByaXYtPmRpcmVjdF90aXJbaV0ucnF0KTsNCisJ Zm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykNCisJCW1seDVlX2Rlc3Ryb3lfcnF0KHByaXYs ICZ0aXJzW2ldLnJxdCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVfcnhfaGFzaF9mbihpbnQg aGZ1bmMpDQpAQCAtMjc4MywxMSArMjg3OCwxMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF90 eDJzcV9tYXBzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIHZvaWQgbWx4NWVfYWN0aXZhdGVf cHJpdl9jaGFubmVscyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiB7DQogCWludCBudW1fdHhx cyA9IHByaXYtPmNoYW5uZWxzLm51bSAqIHByaXYtPmNoYW5uZWxzLnBhcmFtcy5udW1fdGM7DQor CWludCBudW1fcnhxcyA9IHByaXYtPmNoYW5uZWxzLm51bSAqIE1MWDVFX05VTV9SUV9HUk9VUFM7 DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwcml2LT5uZXRkZXY7DQogDQogCW1seDVl X25ldGRldl9zZXRfdGNzKG5ldGRldik7DQogCW5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMo bmV0ZGV2LCBudW1fdHhxcyk7DQotCW5ldGlmX3NldF9yZWFsX251bV9yeF9xdWV1ZXMobmV0ZGV2 LCBwcml2LT5jaGFubmVscy5udW0pOw0KKwluZXRpZl9zZXRfcmVhbF9udW1fcnhfcXVldWVzKG5l dGRldiwgbnVtX3J4cXMpOw0KIA0KIAltbHg1ZV9idWlsZF90eDJzcV9tYXBzKHByaXYpOw0KIAlt bHg1ZV9hY3RpdmF0ZV9jaGFubmVscygmcHJpdi0+Y2hhbm5lbHMpOw0KQEAgLTI3OTksMTAgKzI4 OTUsMTQgQEAgdm9pZCBtbHg1ZV9hY3RpdmF0ZV9wcml2X2NoYW5uZWxzKHN0cnVjdCBtbHg1ZV9w cml2ICpwcml2KQ0KIA0KIAltbHg1ZV93YWl0X2NoYW5uZWxzX21pbl9yeF93cWVzKCZwcml2LT5j aGFubmVscyk7DQogCW1seDVlX3JlZGlyZWN0X3JxdHNfdG9fY2hhbm5lbHMocHJpdiwgJnByaXYt PmNoYW5uZWxzKTsNCisNCisJbWx4NWVfeHNrX3JlZGlyZWN0X3JxdHNfdG9fY2hhbm5lbHMocHJp diwgJnByaXYtPmNoYW5uZWxzKTsNCiB9DQogDQogdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3ByaXZf Y2hhbm5lbHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogew0KKwltbHg1ZV94c2tfcmVkaXJl Y3RfcnF0c190b19kcm9wKHByaXYsICZwcml2LT5jaGFubmVscyk7DQorDQogCW1seDVlX3JlZGly ZWN0X3JxdHNfdG9fZHJvcChwcml2KTsNCiANCiAJaWYgKG1seDVlX2lzX3Zwb3J0X3JlcChwcml2 KSkNCkBAIC0yODgxLDkgKzI5ODEsMTIgQEAgdm9pZCBtbHg1ZV90aW1lc3RhbXBfaW5pdChzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiBpbnQgbWx4NWVfb3Blbl9sb2NrZWQoc3RydWN0IG5ldF9k ZXZpY2UgKm5ldGRldikNCiB7DQogCXN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3By aXYobmV0ZGV2KTsNCisJYm9vbCBpc194ZHAgPSBwcml2LT5jaGFubmVscy5wYXJhbXMueGRwX3By b2c7DQogCWludCBlcnI7DQogDQogCXNldF9iaXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+ c3RhdGUpOw0KKwlpZiAoaXNfeGRwKQ0KKwkJbWx4NWVfeGRwX3NldF9vcGVuKHByaXYpOw0KIA0K IAllcnIgPSBtbHg1ZV9vcGVuX2NoYW5uZWxzKHByaXYsICZwcml2LT5jaGFubmVscyk7DQogCWlm IChlcnIpDQpAQCAtMjg5OCw2ICszMDAxLDggQEAgaW50IG1seDVlX29wZW5fbG9ja2VkKHN0cnVj dCBuZXRfZGV2aWNlICpuZXRkZXYpDQogCXJldHVybiAwOw0KIA0KIGVycl9jbGVhcl9zdGF0ZV9v cGVuZWRfZmxhZzoNCisJaWYgKGlzX3hkcCkNCisJCW1seDVlX3hkcF9zZXRfY2xvc2VkKHByaXYp Ow0KIAljbGVhcl9iaXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUpOw0KIAlyZXR1 cm4gZXJyOw0KIH0NCkBAIC0yOTI5LDYgKzMwMzQsOCBAQCBpbnQgbWx4NWVfY2xvc2VfbG9ja2Vk KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQogCWlmICghdGVzdF9iaXQoTUxYNUVfU1RBVEVf T1BFTkVELCAmcHJpdi0+c3RhdGUpKQ0KIAkJcmV0dXJuIDA7DQogDQorCWlmIChwcml2LT5jaGFu bmVscy5wYXJhbXMueGRwX3Byb2cpDQorCQltbHg1ZV94ZHBfc2V0X2Nsb3NlZChwcml2KTsNCiAJ Y2xlYXJfYml0KE1MWDVFX1NUQVRFX09QRU5FRCwgJnByaXYtPnN0YXRlKTsNCiANCiAJbmV0aWZf Y2Fycmllcl9vZmYocHJpdi0+bmV0ZGV2KTsNCkBAIC0zMTg1LDEzICszMjkyLDEzIEBAIGludCBt bHg1ZV9jcmVhdGVfaW5kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgYm9vbCBp bm5lcl90dGMpDQogCXJldHVybiBlcnI7DQogfQ0KIA0KLWludCBtbHg1ZV9jcmVhdGVfZGlyZWN0 X3RpcnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQoraW50IG1seDVlX2NyZWF0ZV9kaXJlY3Rf dGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX3RpciAqdGlycykNCiB7 DQotCWludCBuY2ggPSBtbHg1ZV9nZXRfbmV0ZGV2X21heF9jaGFubmVscyhwcml2LT5uZXRkZXYp Ow0KKwljb25zdCBpbnQgbWF4X25jaCA9IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHBy aXYtPm5ldGRldik7DQogCXN0cnVjdCBtbHg1ZV90aXIgKnRpcjsNCiAJdm9pZCAqdGlyYzsNCiAJ aW50IGlubGVuOw0KLQlpbnQgZXJyOw0KKwlpbnQgZXJyID0gMDsNCiAJdTMyICppbjsNCiAJaW50 IGl4Ow0KIA0KQEAgLTMyMDAsMjUgKzMzMDcsMjQgQEAgaW50IG1seDVlX2NyZWF0ZV9kaXJlY3Rf dGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJaWYgKCFpbikNCiAJCXJldHVybiAtRU5P TUVNOw0KIA0KLQlmb3IgKGl4ID0gMDsgaXggPCBuY2g7IGl4KyspIHsNCisJZm9yIChpeCA9IDA7 IGl4IDwgbWF4X25jaDsgaXgrKykgew0KIAkJbWVtc2V0KGluLCAwLCBpbmxlbik7DQotCQl0aXIg PSAmcHJpdi0+ZGlyZWN0X3RpcltpeF07DQorCQl0aXIgPSAmdGlyc1tpeF07DQogCQl0aXJjID0g TUxYNV9BRERSX09GKGNyZWF0ZV90aXJfaW4sIGluLCBjdHgpOw0KLQkJbWx4NWVfYnVpbGRfZGly ZWN0X3Rpcl9jdHgocHJpdiwgcHJpdi0+ZGlyZWN0X3RpcltpeF0ucnF0LnJxdG4sIHRpcmMpOw0K KwkJbWx4NWVfYnVpbGRfZGlyZWN0X3Rpcl9jdHgocHJpdiwgdGlyLT5ycXQucnF0biwgdGlyYyk7 DQogCQllcnIgPSBtbHg1ZV9jcmVhdGVfdGlyKHByaXYtPm1kZXYsIHRpciwgaW4sIGlubGVuKTsN Ci0JCWlmIChlcnIpDQorCQlpZiAodW5saWtlbHkoZXJyKSkNCiAJCQlnb3RvIGVycl9kZXN0cm95 X2NoX3RpcnM7DQogCX0NCiANCi0Ja3ZmcmVlKGluKTsNCi0NCi0JcmV0dXJuIDA7DQorCWdvdG8g b3V0Ow0KIA0KIGVycl9kZXN0cm95X2NoX3RpcnM6DQotCW1seDVfY29yZV93YXJuKHByaXYtPm1k ZXYsICJjcmVhdGUgZGlyZWN0IHRpcnMgZmFpbGVkLCAlZFxuIiwgZXJyKTsNCisJbWx4NV9jb3Jl X3dhcm4ocHJpdi0+bWRldiwgImNyZWF0ZSB0aXJzIGZhaWxlZCwgJWRcbiIsIGVycik7DQogCWZv ciAoaXgtLTsgaXggPj0gMDsgaXgtLSkNCi0JCW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYs ICZwcml2LT5kaXJlY3RfdGlyW2l4XSk7DQorCQltbHg1ZV9kZXN0cm95X3Rpcihwcml2LT5tZGV2 LCAmdGlyc1tpeF0pOw0KIA0KK291dDoNCiAJa3ZmcmVlKGluKTsNCiANCiAJcmV0dXJuIGVycjsN CkBAIC0zMjM4LDEzICszMzQ0LDEzIEBAIHZvaWQgbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJz KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBib29sIGlubmVyX3R0YykNCiAJCW1seDVlX2Rlc3Ry b3lfdGlyKHByaXYtPm1kZXYsICZwcml2LT5pbm5lcl9pbmRpcl90aXJbaV0pOw0KIH0NCiANCi12 b2lkIG1seDVlX2Rlc3Ryb3lfZGlyZWN0X3RpcnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQor dm9pZCBtbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBz dHJ1Y3QgbWx4NWVfdGlyICp0aXJzKQ0KIHsNCi0JaW50IG5jaCA9IG1seDVlX2dldF9uZXRkZXZf bWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQorCWNvbnN0IGludCBtYXhfbmNoID0gbWx4NWVf Z2V0X25ldGRldl9tYXhfY2hhbm5lbHMocHJpdi0+bmV0ZGV2KTsNCiAJaW50IGk7DQogDQotCWZv ciAoaSA9IDA7IGkgPCBuY2g7IGkrKykNCi0JCW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYs ICZwcml2LT5kaXJlY3RfdGlyW2ldKTsNCisJZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykN CisJCW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYsICZ0aXJzW2ldKTsNCiB9DQogDQogc3Rh dGljIGludCBtbHg1ZV9tb2RpZnlfY2hhbm5lbHNfc2NhdHRlcl9mY3Moc3RydWN0IG1seDVlX2No YW5uZWxzICpjaHMsIGJvb2wgZW5hYmxlKQ0KQEAgLTMzODYsMTEgKzM0OTIsMTIgQEAgdm9pZCBt bHg1ZV9mb2xkX3N3X3N0YXRzNjQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBydG5s X2xpbmtfc3RhdHM2NCAqcykNCiANCiAJZm9yIChpID0gMDsgaSA8IG1seDVlX2dldF9uZXRkZXZf bWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7IGkrKykgew0KIAkJc3RydWN0IG1seDVlX2NoYW5u ZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSAmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXTsNCisJCXN0 cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHMgPSAmY2hhbm5lbF9zdGF0cy0+eHNrcnE7 DQogCQlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnJx Ow0KIAkJaW50IGo7DQogDQotCQlzLT5yeF9wYWNrZXRzICAgKz0gcnFfc3RhdHMtPnBhY2tldHM7 DQotCQlzLT5yeF9ieXRlcyAgICAgKz0gcnFfc3RhdHMtPmJ5dGVzOw0KKwkJcy0+cnhfcGFja2V0 cyAgICs9IHJxX3N0YXRzLT5wYWNrZXRzICsgeHNrcnFfc3RhdHMtPnBhY2tldHM7DQorCQlzLT5y eF9ieXRlcyAgICAgKz0gcnFfc3RhdHMtPmJ5dGVzICsgeHNrcnFfc3RhdHMtPmJ5dGVzOw0KIA0K IAkJZm9yIChqID0gMDsgaiA8IHByaXYtPm1heF9vcGVuZWRfdGM7IGorKykgew0KIAkJCXN0cnVj dCBtbHg1ZV9zcV9zdGF0cyAqc3Ffc3RhdHMgPSAmY2hhbm5lbF9zdGF0cy0+c3Fbal07DQpAQCAt MzQ4OSw2ICszNTk2LDEzIEBAIHN0YXRpYyBpbnQgc2V0X2ZlYXR1cmVfbHJvKHN0cnVjdCBuZXRf ZGV2aWNlICpuZXRkZXYsIGJvb2wgZW5hYmxlKQ0KIA0KIAltdXRleF9sb2NrKCZwcml2LT5zdGF0 ZV9sb2NrKTsNCiANCisJaWYgKGVuYWJsZSAmJiBwcml2LT54c2sucmVmY250KSB7DQorCQluZXRk ZXZfd2FybihuZXRkZXYsICJMUk8gaXMgaW5jb21wYXRpYmxlIHdpdGggQUZfWERQICglaHUgWFNL cyBhcmUgYWN0aXZlKVxuIiwNCisJCQkgICAgcHJpdi0+eHNrLnJlZmNudCk7DQorCQllcnIgPSAt RUlOVkFMOw0KKwkJZ290byBvdXQ7DQorCX0NCisNCiAJb2xkX3BhcmFtcyA9ICZwcml2LT5jaGFu bmVscy5wYXJhbXM7DQogCWlmIChlbmFibGUgJiYgIU1MWDVFX0dFVF9QRkxBRyhvbGRfcGFyYW1z LCBNTFg1RV9QRkxBR19SWF9TVFJJRElOR19SUSkpIHsNCiAJCW5ldGRldl93YXJuKG5ldGRldiwg ImNhbid0IHNldCBMUk8gd2l0aCBsZWdhY3kgUlFcbiIpOw0KQEAgLTM1MDIsOCArMzYxNiw4IEBA IHN0YXRpYyBpbnQgc2V0X2ZlYXR1cmVfbHJvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGJv b2wgZW5hYmxlKQ0KIAluZXdfY2hhbm5lbHMucGFyYW1zLmxyb19lbiA9IGVuYWJsZTsNCiANCiAJ aWYgKG9sZF9wYXJhbXMtPnJxX3dxX3R5cGUgIT0gTUxYNV9XUV9UWVBFX0NZQ0xJQykgew0KLQkJ aWYgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRldiwgb2xkX3BhcmFtcykgPT0NCi0J CSAgICBtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsICZuZXdfY2hhbm5lbHMucGFy YW1zKSkNCisJCWlmIChtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIG9sZF9wYXJh bXMsIE5VTEwpID09DQorCQkgICAgbWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCAm bmV3X2NoYW5uZWxzLnBhcmFtcywgTlVMTCkpDQogCQkJcmVzZXQgPSBmYWxzZTsNCiAJfQ0KIA0K QEAgLTM2OTQsNiArMzgwOCw0MyBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgbWx4NWVfZml4 X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsDQogCXJldHVybiBmZWF0dXJlczsN CiB9DQogDQorc3RhdGljIGJvb2wgbWx4NWVfeHNrX3ZhbGlkYXRlX210dShzdHJ1Y3QgbmV0X2Rl dmljZSAqbmV0ZGV2LA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfY2hhbm5lbHMgKmNocywNCisJCQkJ ICAgc3RydWN0IG1seDVlX3BhcmFtcyAqbmV3X3BhcmFtcywNCisJCQkJICAgc3RydWN0IG1seDVf Y29yZV9kZXYgKm1kZXYpDQorew0KKwl1MTYgaXg7DQorDQorCWZvciAoaXggPSAwOyBpeCA8IGNo cy0+cGFyYW1zLm51bV9jaGFubmVsczsgaXgrKykgew0KKwkJc3RydWN0IHhkcF91bWVtICp1bWVt ID0gbWx4NWVfeHNrX2dldF91bWVtKCZjaHMtPnBhcmFtcywgY2hzLT5wYXJhbXMueHNrLCBpeCk7 DQorCQlzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtIHhzazsNCisNCisJCWlmICghdW1lbSkNCisJCQlj b250aW51ZTsNCisNCisJCW1seDVlX2J1aWxkX3hza19wYXJhbSh1bWVtLCAmeHNrKTsNCisNCisJ CWlmICghbWx4NWVfdmFsaWRhdGVfeHNrX3BhcmFtKG5ld19wYXJhbXMsICZ4c2ssIG1kZXYpKSB7 DQorCQkJdTMyIGhyID0gbWx4NWVfZ2V0X2xpbmVhcl9ycV9oZWFkcm9vbShuZXdfcGFyYW1zLCAm eHNrKTsNCisJCQlpbnQgbWF4X210dV9mcmFtZSwgbWF4X210dV9wYWdlLCBtYXhfbXR1Ow0KKw0K KwkJCS8qIFR3byBjcml0ZXJpYSBtdXN0IGJlIG1ldDoNCisJCQkgKiAxLiBIVyBNVFUgKyBhbGwg aGVhZHJvb21zIDw9IFhTSyBmcmFtZSBzaXplLg0KKwkJCSAqIDIuIFNpemUgb2YgU0tCcyBhbGxv Y2F0ZWQgb24gWERQX1BBU1MgPD0gUEFHRV9TSVpFLg0KKwkJCSAqLw0KKwkJCW1heF9tdHVfZnJh bWUgPSBNTFg1RV9IVzJTV19NVFUobmV3X3BhcmFtcywgeHNrLmNodW5rX3NpemUgLSBocik7DQor CQkJbWF4X210dV9wYWdlID0gbWx4NWVfeGRwX21heF9tdHUobmV3X3BhcmFtcywgJnhzayk7DQor CQkJbWF4X210dSA9IG1pbihtYXhfbXR1X2ZyYW1lLCBtYXhfbXR1X3BhZ2UpOw0KKw0KKwkJCW5l dGRldl9lcnIobmV0ZGV2LCAiTVRVICVkIGlzIHRvbyBiaWcgZm9yIGFuIFhTSyBydW5uaW5nIG9u IGNoYW5uZWwgJWh1LiBUcnkgTVRVIDw9ICVkXG4iLA0KKwkJCQkgICBuZXdfcGFyYW1zLT5zd19t dHUsIGl4LCBtYXhfbXR1KTsNCisJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorCX0NCisNCisJcmV0 dXJuIHRydWU7DQorfQ0KKw0KIGludCBtbHg1ZV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNl ICpuZXRkZXYsIGludCBuZXdfbXR1LA0KIAkJICAgICBjaGFuZ2VfaHdfbXR1X2NiIHNldF9tdHVf Y2IpDQogew0KQEAgLTM3MTQsMTggKzM4NjUsMzEgQEAgaW50IG1seDVlX2NoYW5nZV9tdHUoc3Ry dWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IG5ld19tdHUsDQogCW5ld19jaGFubmVscy5wYXJh bXMuc3dfbXR1ID0gbmV3X210dTsNCiANCiAJaWYgKHBhcmFtcy0+eGRwX3Byb2cgJiYNCi0JICAg ICFtbHg1ZV9yeF9pc19saW5lYXJfc2tiKCZuZXdfY2hhbm5lbHMucGFyYW1zKSkgew0KKwkgICAg IW1seDVlX3J4X2lzX2xpbmVhcl9za2IoJm5ld19jaGFubmVscy5wYXJhbXMsIE5VTEwpKSB7DQog CQluZXRkZXZfZXJyKG5ldGRldiwgIk1UVSglZCkgPiAlZCBpcyBub3QgYWxsb3dlZCB3aGlsZSBY RFAgZW5hYmxlZFxuIiwNCiAJCQkgICBuZXdfbXR1LCBtbHg1ZV94ZHBfbWF4X210dShwYXJhbXMs IE5VTEwpKTsNCiAJCWVyciA9IC1FSU5WQUw7DQogCQlnb3RvIG91dDsNCiAJfQ0KIA0KKwlpZiAo cHJpdi0+eHNrLnJlZmNudCAmJg0KKwkgICAgIW1seDVlX3hza192YWxpZGF0ZV9tdHUobmV0ZGV2 LCAmcHJpdi0+Y2hhbm5lbHMsDQorCQkJCSAgICAmbmV3X2NoYW5uZWxzLnBhcmFtcywgcHJpdi0+ bWRldikpIHsNCisJCWVyciA9IC1FSU5WQUw7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KIAlpZiAo cGFyYW1zLT5ycV93cV90eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9TVFJJRElOR19S USkgew0KLQkJYm9vbCBpc19saW5lYXIgPSBtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKHBy aXYtPm1kZXYsICZuZXdfY2hhbm5lbHMucGFyYW1zKTsNCi0JCXU4IHBwd19vbGQgPSBtbHg1ZV9t cHdxZV9sb2dfcGt0c19wZXJfd3FlKHBhcmFtcyk7DQotCQl1OCBwcHdfbmV3ID0gbWx4NWVfbXB3 cWVfbG9nX3BrdHNfcGVyX3dxZSgmbmV3X2NoYW5uZWxzLnBhcmFtcyk7DQorCQlib29sIGlzX2xp bmVhciA9IG1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IocHJpdi0+bWRldiwNCisJCQkJCQkJ ICAgICAgJm5ld19jaGFubmVscy5wYXJhbXMsDQorCQkJCQkJCSAgICAgIE5VTEwpOw0KKwkJdTgg cHB3X29sZCA9IG1seDVlX21wd3FlX2xvZ19wa3RzX3Blcl93cWUocGFyYW1zLCBOVUxMKTsNCisJ CXU4IHBwd19uZXcgPSBtbHg1ZV9tcHdxZV9sb2dfcGt0c19wZXJfd3FlKCZuZXdfY2hhbm5lbHMu cGFyYW1zLCBOVUxMKTsNCiANCisJCS8qIElmIFhTSyBpcyBhY3RpdmUsIFhTSyBSUXMgYXJlIGxp bmVhci4gKi8NCisJCWlzX2xpbmVhciB8PSBwcml2LT54c2sucmVmY250Ow0KKw0KKwkJLyogQWx3 YXlzIHJlc2V0IGluIGxpbmVhciBtb2RlIC0gaHdfbXR1IGlzIHVzZWQgaW4gZGF0YSBwYXRoLiAq Lw0KIAkJcmVzZXQgPSByZXNldCAmJiAoaXNfbGluZWFyIHx8IChwcHdfb2xkICE9IHBwd19uZXcp KTsNCiAJfQ0KIA0KQEAgLTQxNTgsNyArNDMyMiwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3hkcF9h bGxvd2VkKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpDQog CW5ld19jaGFubmVscy5wYXJhbXMgPSBwcml2LT5jaGFubmVscy5wYXJhbXM7DQogCW5ld19jaGFu bmVscy5wYXJhbXMueGRwX3Byb2cgPSBwcm9nOw0KIA0KLQlpZiAoIW1seDVlX3J4X2lzX2xpbmVh cl9za2IoJm5ld19jaGFubmVscy5wYXJhbXMpKSB7DQorCS8qIE5vIFhTSyBwYXJhbXM6IEFGX1hE UCBjYW4ndCBiZSBlbmFibGVkIHlldCBhdCB0aGUgcG9pbnQgb2Ygc2V0dGluZw0KKwkgKiB0aGUg WERQIHByb2dyYW0uDQorCSAqLw0KKwlpZiAoIW1seDVlX3J4X2lzX2xpbmVhcl9za2IoJm5ld19j aGFubmVscy5wYXJhbXMsIE5VTEwpKSB7DQogCQluZXRkZXZfd2FybihuZXRkZXYsICJYRFAgaXMg bm90IGFsbG93ZWQgd2l0aCBNVFUoJWQpID4gJWRcbiIsDQogCQkJICAgIG5ld19jaGFubmVscy5w YXJhbXMuc3dfbXR1LA0KIAkJCSAgICBtbHg1ZV94ZHBfbWF4X210dSgmbmV3X2NoYW5uZWxzLnBh cmFtcywgTlVMTCkpOw0KQEAgLTQxNjgsNiArNDMzNSwxNiBAQCBzdGF0aWMgaW50IG1seDVlX3hk cF9hbGxvd2VkKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cp DQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgaW50IG1seDVlX3hkcF91cGRhdGVfc3RhdGUo c3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQorew0KKwlpZiAocHJpdi0+Y2hhbm5lbHMucGFyYW1z LnhkcF9wcm9nKQ0KKwkJbWx4NWVfeGRwX3NldF9vcGVuKHByaXYpOw0KKwllbHNlDQorCQltbHg1 ZV94ZHBfc2V0X2Nsb3NlZChwcml2KTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBp bnQgbWx4NWVfeGRwX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgYnBmX3By b2cgKnByb2cpDQogew0KIAlzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5l dGRldik7DQpAQCAtNDIwNyw3ICs0Mzg0LDcgQEAgc3RhdGljIGludCBtbHg1ZV94ZHBfc2V0KHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZykNCiAJCW1seDVl X3NldF9ycV90eXBlKHByaXYtPm1kZXYsICZuZXdfY2hhbm5lbHMucGFyYW1zKTsNCiAJCW9sZF9w cm9nID0gcHJpdi0+Y2hhbm5lbHMucGFyYW1zLnhkcF9wcm9nOw0KIA0KLQkJZXJyID0gbWx4NWVf c2FmZV9zd2l0Y2hfY2hhbm5lbHMocHJpdiwgJm5ld19jaGFubmVscywgTlVMTCk7DQorCQllcnIg PSBtbHg1ZV9zYWZlX3N3aXRjaF9jaGFubmVscyhwcml2LCAmbmV3X2NoYW5uZWxzLCBtbHg1ZV94 ZHBfdXBkYXRlX3N0YXRlKTsNCiAJCWlmIChlcnIpDQogCQkJZ290byB1bmxvY2s7DQogCX0gZWxz ZSB7DQpAQCAtNDIzMSwxOSArNDQwOCwyOSBAQCBzdGF0aWMgaW50IG1seDVlX3hkcF9zZXQoc3Ry dWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKQ0KIAkgKi8NCiAJ Zm9yIChpID0gMDsgaSA8IHByaXYtPmNoYW5uZWxzLm51bTsgaSsrKSB7DQogCQlzdHJ1Y3QgbWx4 NWVfY2hhbm5lbCAqYyA9IHByaXYtPmNoYW5uZWxzLmNbaV07DQorCQlib29sIHhza19vcGVuID0g dGVzdF9iaXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ssIGMtPnN0YXRlKTsNCiANCiAJCWNsZWFy X2JpdChNTFg1RV9SUV9TVEFURV9FTkFCTEVELCAmYy0+cnEuc3RhdGUpOw0KKwkJaWYgKHhza19v cGVuKQ0KKwkJCWNsZWFyX2JpdChNTFg1RV9SUV9TVEFURV9FTkFCTEVELCAmYy0+eHNrcnEuc3Rh dGUpOw0KIAkJbmFwaV9zeW5jaHJvbml6ZSgmYy0+bmFwaSk7DQogCQkvKiBwcmV2ZW50IG1seDVl X3BvbGxfcnhfY3EgZnJvbSBhY2Nlc3NpbmcgcnEtPnhkcF9wcm9nICovDQogDQogCQlvbGRfcHJv ZyA9IHhjaGcoJmMtPnJxLnhkcF9wcm9nLCBwcm9nKTsNCisJCWlmIChvbGRfcHJvZykNCisJCQli cGZfcHJvZ19wdXQob2xkX3Byb2cpOw0KKw0KKwkJaWYgKHhza19vcGVuKSB7DQorCQkJb2xkX3By b2cgPSB4Y2hnKCZjLT54c2tycS54ZHBfcHJvZywgcHJvZyk7DQorCQkJaWYgKG9sZF9wcm9nKQ0K KwkJCQlicGZfcHJvZ19wdXQob2xkX3Byb2cpOw0KKwkJfQ0KIA0KIAkJc2V0X2JpdChNTFg1RV9S UV9TVEFURV9FTkFCTEVELCAmYy0+cnEuc3RhdGUpOw0KKwkJaWYgKHhza19vcGVuKQ0KKwkJCXNl dF9iaXQoTUxYNUVfUlFfU1RBVEVfRU5BQkxFRCwgJmMtPnhza3JxLnN0YXRlKTsNCiAJCS8qIG5h cGlfc2NoZWR1bGUgaW4gY2FzZSB3ZSBoYXZlIG1pc3NlZCBhbnl0aGluZyAqLw0KIAkJbmFwaV9z Y2hlZHVsZSgmYy0+bmFwaSk7DQotDQotCQlpZiAob2xkX3Byb2cpDQotCQkJYnBmX3Byb2dfcHV0 KG9sZF9wcm9nKTsNCiAJfQ0KIA0KIHVubG9jazoNCkBAIC00Mjc0LDYgKzQ0NjEsOSBAQCBzdGF0 aWMgaW50IG1seDVlX3hkcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2Jw ZiAqeGRwKQ0KIAljYXNlIFhEUF9RVUVSWV9QUk9HOg0KIAkJeGRwLT5wcm9nX2lkID0gbWx4NWVf eGRwX3F1ZXJ5KGRldik7DQogCQlyZXR1cm4gMDsNCisJY2FzZSBYRFBfU0VUVVBfWFNLX1VNRU06 DQorCQlyZXR1cm4gbWx4NWVfeHNrX3NldHVwX3VtZW0oZGV2LCB4ZHAtPnhzay51bWVtLA0KKwkJ CQkJICAgIHhkcC0+eHNrLnF1ZXVlX2lkKTsNCiAJZGVmYXVsdDoNCiAJCXJldHVybiAtRUlOVkFM Ow0KIAl9DQpAQCAtNDM1Niw2ICs0NTQ2LDcgQEAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3Bz IG1seDVlX25ldGRldl9vcHMgPSB7DQogCS5uZG9fdHhfdGltZW91dCAgICAgICAgICA9IG1seDVl X3R4X3RpbWVvdXQsDQogCS5uZG9fYnBmCQkgPSBtbHg1ZV94ZHAsDQogCS5uZG9feGRwX3htaXQg ICAgICAgICAgICA9IG1seDVlX3hkcF94bWl0LA0KKwkubmRvX3hza19hc3luY194bWl0ICAgICAg PSBtbHg1ZV94c2tfYXN5bmNfeG1pdCwNCiAjaWZkZWYgQ09ORklHX01MWDVfRU5fQVJGUw0KIAku bmRvX3J4X2Zsb3dfc3RlZXIJID0gbWx4NWVfcnhfZmxvd19zdGVlciwNCiAjZW5kaWYNCkBAIC00 NTA3LDExICs0Njk4LDEzIEBAIHZvaWQgbWx4NWVfYnVpbGRfcnFfcGFyYW1zKHN0cnVjdCBtbHg1 X2NvcmVfZGV2ICptZGV2LA0KIAkgKiAtIFN0cmlkaW5nIFJRIGNvbmZpZ3VyYXRpb24gaXMgbm90 IHBvc3NpYmxlL3N1cHBvcnRlZC4NCiAJICogLSBTbG93IFBDSSBoZXVyaXN0aWMuDQogCSAqIC0g TGVnYWN5IFJRIHdvdWxkIHVzZSBsaW5lYXIgU0tCIHdoaWxlIFN0cmlkaW5nIFJRIHdvdWxkIHVz ZSBub24tbGluZWFyLg0KKwkgKg0KKwkgKiBObyBYU0sgcGFyYW1zOiBjaGVja2luZyB0aGUgYXZh aWxhYmlsaXR5IG9mIHN0cmlkaW5nIFJRIGluIGdlbmVyYWwuDQogCSAqLw0KIAlpZiAoIXNsb3df cGNpX2hldXJpc3RpYyhtZGV2KSAmJg0KIAkgICAgbWx4NWVfc3RyaWRpbmdfcnFfcG9zc2libGUo bWRldiwgcGFyYW1zKSAmJg0KLQkgICAgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRl diwgcGFyYW1zKSB8fA0KLQkgICAgICFtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFtcykpKQ0K KwkgICAgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRldiwgcGFyYW1zLCBOVUxMKSB8 fA0KKwkgICAgICFtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFtcywgTlVMTCkpKQ0KIAkJTUxY NUVfU0VUX1BGTEFHKHBhcmFtcywgTUxYNUVfUEZMQUdfUlhfU1RSSURJTkdfUlEsIHRydWUpOw0K IAltbHg1ZV9zZXRfcnFfdHlwZShtZGV2LCBwYXJhbXMpOw0KIAltbHg1ZV9pbml0X3JxX3R5cGVf cGFyYW1zKG1kZXYsIHBhcmFtcyk7DQpAQCAtNDUzMyw2ICs0NzI2LDcgQEAgdm9pZCBtbHg1ZV9i dWlsZF9yc3NfcGFyYW1zKHN0cnVjdCBtbHg1ZV9yc3NfcGFyYW1zICpyc3NfcGFyYW1zLA0KIH0N CiANCiB2b2lkIG1seDVlX2J1aWxkX25pY19wYXJhbXMoc3RydWN0IG1seDVfY29yZV9kZXYgKm1k ZXYsDQorCQkJICAgIHN0cnVjdCBtbHg1ZV94c2sgKnhzaywNCiAJCQkgICAgc3RydWN0IG1seDVl X3Jzc19wYXJhbXMgKnJzc19wYXJhbXMsDQogCQkJICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBh cmFtcywNCiAJCQkgICAgdTE2IG1heF9jaGFubmVscywgdTE2IG10dSkNCkBAIC00NTY4LDkgKzQ3 NjIsMTEgQEAgdm9pZCBtbHg1ZV9idWlsZF9uaWNfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2 ICptZGV2LA0KIAkvKiBIVyBMUk8gKi8NCiANCiAJLyogVE9ETzogJiYgTUxYNV9DQVBfRVRIKG1k ZXYsIGxyb19jYXApICovDQotCWlmIChwYXJhbXMtPnJxX3dxX3R5cGUgPT0gTUxYNV9XUV9UWVBF X0xJTktFRF9MSVNUX1NUUklESU5HX1JRKQ0KLQkJaWYgKCFtbHg1ZV9yeF9tcHdxZV9pc19saW5l YXJfc2tiKG1kZXYsIHBhcmFtcykpDQorCWlmIChwYXJhbXMtPnJxX3dxX3R5cGUgPT0gTUxYNV9X UV9UWVBFX0xJTktFRF9MSVNUX1NUUklESU5HX1JRKSB7DQorCQkvKiBObyBYU0sgcGFyYW1zOiBj aGVja2luZyB0aGUgYXZhaWxhYmlsaXR5IG9mIHN0cmlkaW5nIFJRIGluIGdlbmVyYWwuICovDQor CQlpZiAoIW1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2IobWRldiwgcGFyYW1zLCBOVUxMKSkN CiAJCQlwYXJhbXMtPmxyb19lbiA9ICFzbG93X3BjaV9oZXVyaXN0aWMobWRldik7DQorCX0NCiAJ cGFyYW1zLT5scm9fdGltZW91dCA9IG1seDVlX2Nob29zZV9scm9fdGltZW91dChtZGV2LCBNTFg1 RV9ERUZBVUxUX0xST19USU1FT1VUKTsNCiANCiAJLyogQ1EgbW9kZXJhdGlvbiBwYXJhbXMgKi8N CkBAIC00NTg5LDYgKzQ3ODUsOSBAQCB2b2lkIG1seDVlX2J1aWxkX25pY19wYXJhbXMoc3RydWN0 IG1seDVfY29yZV9kZXYgKm1kZXYsDQogCW1seDVlX2J1aWxkX3Jzc19wYXJhbXMocnNzX3BhcmFt cywgcGFyYW1zLT5udW1fY2hhbm5lbHMpOw0KIAlwYXJhbXMtPnR1bm5lbGVkX29mZmxvYWRfZW4g PQ0KIAkJbWx4NWVfdHVubmVsX2lubmVyX2Z0X3N1cHBvcnRlZChtZGV2KTsNCisNCisJLyogQUZf WERQICovDQorCXBhcmFtcy0+eHNrID0geHNrOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBtbHg1ZV9z ZXRfbmV0ZGV2X2Rldl9hZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQpAQCAtNDc2MSw3 ICs0OTYwLDcgQEAgc3RhdGljIGludCBtbHg1ZV9uaWNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2Rl diAqbWRldiwNCiAJaWYgKGVycikNCiAJCXJldHVybiBlcnI7DQogDQotCW1seDVlX2J1aWxkX25p Y19wYXJhbXMobWRldiwgcnNzLCAmcHJpdi0+Y2hhbm5lbHMucGFyYW1zLA0KKwltbHg1ZV9idWls ZF9uaWNfcGFyYW1zKG1kZXYsICZwcml2LT54c2ssIHJzcywgJnByaXYtPmNoYW5uZWxzLnBhcmFt cywNCiAJCQkgICAgICAgbWx4NWVfZ2V0X25ldGRldl9tYXhfY2hhbm5lbHMobmV0ZGV2KSwNCiAJ CQkgICAgICAgbmV0ZGV2LT5tdHUpOw0KIA0KQEAgLTQ4MDMsNyArNTAwMiw3IEBAIHN0YXRpYyBp bnQgbWx4NWVfaW5pdF9uaWNfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogCWlmIChlcnIp DQogCQlnb3RvIGVycl9jbG9zZV9kcm9wX3JxOw0KIA0KLQllcnIgPSBtbHg1ZV9jcmVhdGVfZGly ZWN0X3JxdHMocHJpdik7DQorCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfcnF0cyhwcml2LCBw cml2LT5kaXJlY3RfdGlyKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Rlc3Ryb3lfaW5kaXJl Y3RfcnF0czsNCiANCkBAIC00ODExLDE0ICs1MDEwLDIyIEBAIHN0YXRpYyBpbnQgbWx4NWVfaW5p dF9uaWNfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogCWlmIChlcnIpDQogCQlnb3RvIGVy cl9kZXN0cm95X2RpcmVjdF9ycXRzOw0KIA0KLQllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3Rp cnMocHJpdik7DQorCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT5k aXJlY3RfdGlyKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Rlc3Ryb3lfaW5kaXJlY3RfdGly czsNCiANCisJZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF9ycXRzKHByaXYsIHByaXYtPnhza190 aXIpOw0KKwlpZiAodW5saWtlbHkoZXJyKSkNCisJCWdvdG8gZXJyX2Rlc3Ryb3lfZGlyZWN0X3Rp cnM7DQorDQorCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT54c2tf dGlyKTsNCisJaWYgKHVubGlrZWx5KGVycikpDQorCQlnb3RvIGVycl9kZXN0cm95X3hza19ycXRz Ow0KKw0KIAllcnIgPSBtbHg1ZV9jcmVhdGVfZmxvd19zdGVlcmluZyhwcml2KTsNCiAJaWYgKGVy cikgew0KIAkJbWx4NV9jb3JlX3dhcm4obWRldiwgImNyZWF0ZSBmbG93IHN0ZWVyaW5nIGZhaWxl ZCwgJWRcbiIsIGVycik7DQotCQlnb3RvIGVycl9kZXN0cm95X2RpcmVjdF90aXJzOw0KKwkJZ290 byBlcnJfZGVzdHJveV94c2tfdGlyczsNCiAJfQ0KIA0KIAllcnIgPSBtbHg1ZV90Y19uaWNfaW5p dChwcml2KTsNCkBAIC00ODI5LDEyICs1MDM2LDE2IEBAIHN0YXRpYyBpbnQgbWx4NWVfaW5pdF9u aWNfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogDQogZXJyX2Rlc3Ryb3lfZmxvd19zdGVl cmluZzoNCiAJbWx4NWVfZGVzdHJveV9mbG93X3N0ZWVyaW5nKHByaXYpOw0KK2Vycl9kZXN0cm95 X3hza190aXJzOg0KKwltbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYsIHByaXYtPnhza190 aXIpOw0KK2Vycl9kZXN0cm95X3hza19ycXRzOg0KKwltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRz KHByaXYsIHByaXYtPnhza190aXIpOw0KIGVycl9kZXN0cm95X2RpcmVjdF90aXJzOg0KLQltbHg1 ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYpOw0KKwltbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJz KHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIGVycl9kZXN0cm95X2luZGlyZWN0X3RpcnM6DQog CW1seDVlX2Rlc3Ryb3lfaW5kaXJlY3RfdGlycyhwcml2LCB0cnVlKTsNCiBlcnJfZGVzdHJveV9k aXJlY3RfcnF0czoNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2KTsNCisJbWx4NWVf ZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2LCBwcml2LT5kaXJlY3RfdGlyKTsNCiBlcnJfZGVzdHJv eV9pbmRpcmVjdF9ycXRzOg0KIAltbHg1ZV9kZXN0cm95X3JxdChwcml2LCAmcHJpdi0+aW5kaXJf cnF0KTsNCiBlcnJfY2xvc2VfZHJvcF9ycToNCkBAIC00ODQ4LDkgKzUwNTksMTEgQEAgc3RhdGlj IHZvaWQgbWx4NWVfY2xlYW51cF9uaWNfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogew0K IAltbHg1ZV90Y19uaWNfY2xlYW51cChwcml2KTsNCiAJbWx4NWVfZGVzdHJveV9mbG93X3N0ZWVy aW5nKHByaXYpOw0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYpOw0KKwltbHg1ZV9k ZXN0cm95X2RpcmVjdF90aXJzKHByaXYsIHByaXYtPnhza190aXIpOw0KKwltbHg1ZV9kZXN0cm95 X2RpcmVjdF9ycXRzKHByaXYsIHByaXYtPnhza190aXIpOw0KKwltbHg1ZV9kZXN0cm95X2RpcmVj dF90aXJzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIAltbHg1ZV9kZXN0cm95X2luZGlyZWN0 X3RpcnMocHJpdiwgdHJ1ZSk7DQotCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMocHJpdik7DQor CW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogCW1s eDVlX2Rlc3Ryb3lfcnF0KHByaXYsICZwcml2LT5pbmRpcl9ycXQpOw0KIAltbHg1ZV9jbG9zZV9k cm9wX3JxKCZwcml2LT5kcm9wX3JxKTsNCiAJbWx4NWVfZGVzdHJveV9xX2NvdW50ZXJzKHByaXYp Ow0KQEAgLTUwMDAsNyArNTIxMyw3IEBAIHN0cnVjdCBuZXRfZGV2aWNlICptbHg1ZV9jcmVhdGVf bmV0ZGV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KIA0KIAluZXRkZXYgPSBhbGxvY19l dGhlcmRldl9tcXMoc2l6ZW9mKHN0cnVjdCBtbHg1ZV9wcml2KSwNCiAJCQkJICAgIG5jaCAqIHBy b2ZpbGUtPm1heF90YywNCi0JCQkJICAgIG5jaCk7DQorCQkJCSAgICBuY2ggKiBNTFg1RV9OVU1f UlFfR1JPVVBTKTsNCiAJaWYgKCFuZXRkZXYpIHsNCiAJCW1seDVfY29yZV9lcnIobWRldiwgImFs bG9jX2V0aGVyZGV2X21xcygpIGZhaWxlZFxuIik7DQogCQlyZXR1cm4gTlVMTDsNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMNCmluZGV4IDlh ZWE5YzViMmNlOC4uM2IxODIzZmNmNGI1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMNCkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBzdGF0 aWMgaW50IG1seDVlX2luaXRfcmVwX3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAo ZXJyKQ0KIAkJZ290byBlcnJfY2xvc2VfZHJvcF9ycTsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRl X2RpcmVjdF9ycXRzKHByaXYpOw0KKwllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3JxdHMocHJp diwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogCWlmIChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2lu ZGlyZWN0X3JxdHM7DQogDQpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9p bml0X3JlcF9yeChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJaWYgKGVycikNCiAJCWdvdG8g ZXJyX2Rlc3Ryb3lfZGlyZWN0X3JxdHM7DQogDQotCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3Rf dGlycyhwcml2KTsNCisJZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF90aXJzKHByaXYsIHByaXYt PmRpcmVjdF90aXIpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZGVzdHJveV9pbmRpcmVjdF90 aXJzOw0KIA0KQEAgLTE1NTMsMTEgKzE1NTMsMTEgQEAgc3RhdGljIGludCBtbHg1ZV9pbml0X3Jl cF9yeChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiBlcnJfZGVzdHJveV90dGNfdGFibGU6DQog CW1seDVlX2Rlc3Ryb3lfdHRjX3RhYmxlKHByaXYsICZwcml2LT5mcy50dGMpOw0KIGVycl9kZXN0 cm95X2RpcmVjdF90aXJzOg0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYpOw0KKwlt bHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIGVycl9k ZXN0cm95X2luZGlyZWN0X3RpcnM6DQogCW1seDVlX2Rlc3Ryb3lfaW5kaXJlY3RfdGlycyhwcml2 LCBmYWxzZSk7DQogZXJyX2Rlc3Ryb3lfZGlyZWN0X3JxdHM6DQotCW1seDVlX2Rlc3Ryb3lfZGly ZWN0X3JxdHMocHJpdik7DQorCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMocHJpdiwgcHJpdi0+ ZGlyZWN0X3Rpcik7DQogZXJyX2Rlc3Ryb3lfaW5kaXJlY3RfcnF0czoNCiAJbWx4NWVfZGVzdHJv eV9ycXQocHJpdiwgJnByaXYtPmluZGlyX3JxdCk7DQogZXJyX2Nsb3NlX2Ryb3BfcnE6DQpAQCAt MTU3MSw5ICsxNTcxLDkgQEAgc3RhdGljIHZvaWQgbWx4NWVfY2xlYW51cF9yZXBfcngoc3RydWN0 IG1seDVlX3ByaXYgKnByaXYpDQogDQogCW1seDVfZGVsX2Zsb3dfcnVsZXMocnByaXYtPnZwb3J0 X3J4X3J1bGUpOw0KIAltbHg1ZV9kZXN0cm95X3R0Y190YWJsZShwcml2LCAmcHJpdi0+ZnMudHRj KTsNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2KTsNCisJbWx4NWVfZGVzdHJveV9k aXJlY3RfdGlycyhwcml2LCBwcml2LT5kaXJlY3RfdGlyKTsNCiAJbWx4NWVfZGVzdHJveV9pbmRp cmVjdF90aXJzKHByaXYsIGZhbHNlKTsNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2 KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2LCBwcml2LT5kaXJlY3RfdGlyKTsN CiAJbWx4NWVfZGVzdHJveV9ycXQocHJpdiwgJnByaXYtPmluZGlyX3JxdCk7DQogCW1seDVlX2Ns b3NlX2Ryb3BfcnEoJnByaXYtPmRyb3BfcnEpOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jDQppbmRleCA1ZDc2MmRhNmJmOWIuLjllZWRj Njc5Mzk4NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUv Y29yZS9lbl9yeC5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvZW5fcnguYw0KQEAgLTQ2LDYgKzQ2LDcgQEANCiAjaW5jbHVkZSAiZW5fYWNjZWwvdGxzX3J4 dHguaCINCiAjaW5jbHVkZSAibGliL2Nsb2NrLmgiDQogI2luY2x1ZGUgImVuL3hkcC5oIg0KKyNp bmNsdWRlICJlbi94c2svcnguaCINCiANCiBzdGF0aWMgaW5saW5lIGJvb2wgbWx4NWVfcnhfaHdf c3RhbXAoc3RydWN0IGh3dHN0YW1wX2NvbmZpZyAqY29uZmlnKQ0KIHsNCkBAIC0yMzQsOCArMjM1 LDggQEAgc3RhdGljIGlubGluZSBib29sIG1seDVlX3J4X2NhY2hlX2dldChzdHJ1Y3QgbWx4NWVf cnEgKnJxLA0KIAlyZXR1cm4gdHJ1ZTsNCiB9DQogDQotc3RhdGljIGlubGluZSBpbnQgbWx4NWVf cGFnZV9hbGxvY19tYXBwZWQoc3RydWN0IG1seDVlX3JxICpycSwNCi0JCQkJCSAgc3RydWN0IG1s eDVlX2RtYV9pbmZvICpkbWFfaW5mbykNCitzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9wYWdlX2Fs bG9jX3Bvb2woc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJCXN0cnVjdCBtbHg1ZV9kbWFfaW5m byAqZG1hX2luZm8pDQogew0KIAlpZiAobWx4NWVfcnhfY2FjaGVfZ2V0KHJxLCBkbWFfaW5mbykp DQogCQlyZXR1cm4gMDsNCkBAIC0yNTUsMTMgKzI1NiwyMyBAQCBzdGF0aWMgaW5saW5lIGludCBt bHg1ZV9wYWdlX2FsbG9jX21hcHBlZChzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KIAlyZXR1cm4gMDsN CiB9DQogDQorc3RhdGljIGlubGluZSBpbnQgbWx4NWVfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NWVf cnEgKnJxLA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvKQ0KK3sNCisJ aWYgKHJxLT51bWVtKQ0KKwkJcmV0dXJuIG1seDVlX3hza19wYWdlX2FsbG9jX3VtZW0ocnEsIGRt YV9pbmZvKTsNCisJZWxzZQ0KKwkJcmV0dXJuIG1seDVlX3BhZ2VfYWxsb2NfcG9vbChycSwgZG1h X2luZm8pOw0KK30NCisNCiB2b2lkIG1seDVlX3BhZ2VfZG1hX3VubWFwKHN0cnVjdCBtbHg1ZV9y cSAqcnEsIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8pDQogew0KIAlkbWFfdW5tYXBf cGFnZShycS0+cGRldiwgZG1hX2luZm8tPmFkZHIsIFBBR0VfU0laRSwgcnEtPmJ1ZmYubWFwX2Rp cik7DQogfQ0KIA0KLXZvaWQgbWx4NWVfcGFnZV9yZWxlYXNlKHN0cnVjdCBtbHg1ZV9ycSAqcnEs IHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8sDQotCQkJYm9vbCByZWN5Y2xlKQ0KK3Zv aWQgbWx4NWVfcGFnZV9yZWxlYXNlX2R5bmFtaWMoc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJ c3RydWN0IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbywNCisJCQkJYm9vbCByZWN5Y2xlKQ0KIHsN CiAJaWYgKGxpa2VseShyZWN5Y2xlKSkgew0KIAkJaWYgKG1seDVlX3J4X2NhY2hlX3B1dChycSwg ZG1hX2luZm8pKQ0KQEAgLTI3NSw2ICsyODYsMjAgQEAgdm9pZCBtbHg1ZV9wYWdlX3JlbGVhc2Uo c3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbywNCiAJ fQ0KIH0NCiANCitzdGF0aWMgaW5saW5lIHZvaWQgbWx4NWVfcGFnZV9yZWxlYXNlKHN0cnVjdCBt bHg1ZV9ycSAqcnEsDQorCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8s DQorCQkJCSAgICAgIGJvb2wgcmVjeWNsZSkNCit7DQorCWlmIChycS0+dW1lbSkNCisJCS8qIFRo ZSBgcmVjeWNsZWAgcGFyYW1ldGVyIGlzIGlnbm9yZWQsIGFuZCB0aGUgcGFnZSBpcyBhbHdheXMN CisJCSAqIHB1dCBpbnRvIHRoZSBSZXVzZSBSaW5nLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0 byByZXR1cm4NCisJCSAqIHRoZSBwYWdlIHRvIHRoZSB1c2Vyc3BhY2Ugd2hlbiB0aGUgaW50ZXJm YWNlIGdvZXMgZG93bi4NCisJCSAqLw0KKwkJbWx4NWVfeHNrX3BhZ2VfcmVsZWFzZShycSwgZG1h X2luZm8pOw0KKwllbHNlDQorCQltbHg1ZV9wYWdlX3JlbGVhc2VfZHluYW1pYyhycSwgZG1hX2lu Zm8sIHJlY3ljbGUpOw0KK30NCisNCiBzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9nZXRfcnhfZnJh ZyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KIAkJCQkgICAgc3RydWN0IG1seDVlX3dxZV9mcmFnX2lu Zm8gKmZyYWcpDQogew0KQEAgLTI4Niw3ICszMTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtbHg1 ZV9nZXRfcnhfZnJhZyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KIAkJICogb2Zmc2V0KSBzaG91bGQg anVzdCB1c2UgdGhlIG5ldyBvbmUgd2l0aG91dCByZXBsZW5pc2hpbmcgYWdhaW4NCiAJCSAqIGJ5 IHRoZW1zZWx2ZXMuDQogCQkgKi8NCi0JCWVyciA9IG1seDVlX3BhZ2VfYWxsb2NfbWFwcGVkKHJx LCBmcmFnLT5kaSk7DQorCQllcnIgPSBtbHg1ZV9wYWdlX2FsbG9jKHJxLCBmcmFnLT5kaSk7DQog DQogCXJldHVybiBlcnI7DQogfQ0KQEAgLTM1Miw2ICszNzcsMTMgQEAgc3RhdGljIGludCBtbHg1 ZV9hbGxvY19yeF93cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHUxNiBpeCwgdTggd3FlX2J1bGsp DQogCWludCBlcnI7DQogCWludCBpOw0KIA0KKwlpZiAocnEtPnVtZW0pIHsNCisJCWludCBwYWdl c19kZXNpcmVkID0gd3FlX2J1bGsgPDwgcnEtPndxZS5pbmZvLmxvZ19udW1fZnJhZ3M7DQorDQor CQlpZiAodW5saWtlbHkoIW1seDVlX3hza19wYWdlc19lbm91Z2hfdW1lbShycSwgcGFnZXNfZGVz aXJlZCkpKQ0KKwkJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQogCWZvciAoaSA9IDA7IGkgPCB3 cWVfYnVsazsgaSsrKSB7DQogCQlzdHJ1Y3QgbWx4NWVfcnhfd3FlX2N5YyAqd3FlID0gbWx4NV93 cV9jeWNfZ2V0X3dxZSh3cSwgaXggKyBpKTsNCiANCkBAIC0zOTksMTEgKzQzMSwxNyBAQCBtbHg1 ZV9jb3B5X3NrYl9oZWFkZXIoc3RydWN0IGRldmljZSAqcGRldiwgc3RydWN0IHNrX2J1ZmYgKnNr YiwNCiBzdGF0aWMgdm9pZA0KIG1seDVlX2ZyZWVfcnhfbXB3cWUoc3RydWN0IG1seDVlX3JxICpy cSwgc3RydWN0IG1seDVlX21wd19pbmZvICp3aSwgYm9vbCByZWN5Y2xlKQ0KIHsNCi0JY29uc3Qg Ym9vbCBub194ZHBfeG1pdCA9DQotCQliaXRtYXBfZW1wdHkod2ktPnhkcF94bWl0X2JpdG1hcCwg TUxYNV9NUFdSUV9QQUdFU19QRVJfV1FFKTsNCisJYm9vbCBub194ZHBfeG1pdDsNCiAJc3RydWN0 IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbyA9IHdpLT51bXIuZG1hX2luZm87DQogCWludCBpOw0K IA0KKwkvKiBBIGNvbW1vbiBjYXNlIGZvciBBRl9YRFAuICovDQorCWlmIChiaXRtYXBfZnVsbCh3 aS0+eGRwX3htaXRfYml0bWFwLCBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUpKQ0KKwkJcmV0dXJu Ow0KKw0KKwlub194ZHBfeG1pdCA9IGJpdG1hcF9lbXB0eSh3aS0+eGRwX3htaXRfYml0bWFwLA0K KwkJCQkgICBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUpOw0KKw0KIAlmb3IgKGkgPSAwOyBpIDwg TUxYNV9NUFdSUV9QQUdFU19QRVJfV1FFOyBpKyspDQogCQlpZiAobm9feGRwX3htaXQgfHwgIXRl c3RfYml0KGksIHdpLT54ZHBfeG1pdF9iaXRtYXApKQ0KIAkJCW1seDVlX3BhZ2VfcmVsZWFzZShy cSwgJmRtYV9pbmZvW2ldLCByZWN5Y2xlKTsNCkBAIC00NTIsNiArNDkwLDEyIEBAIHN0YXRpYyBp bnQgbWx4NWVfYWxsb2NfcnhfbXB3cWUoc3RydWN0IG1seDVlX3JxICpycSwgdTE2IGl4KQ0KIAlp bnQgZXJyOw0KIAlpbnQgaTsNCiANCisJaWYgKHJxLT51bWVtICYmDQorCSAgICB1bmxpa2VseSgh bWx4NWVfeHNrX3BhZ2VzX2Vub3VnaF91bWVtKHJxLCBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUp KSkgew0KKwkJZXJyID0gLUVOT01FTTsNCisJCWdvdG8gZXJyOw0KKwl9DQorDQogCXBpID0gbWx4 NV93cV9jeWNfY3RyMml4KHdxLCBzcS0+cGMpOw0KIAljb250aWdfd3FlYmJzX3Jvb20gPSBtbHg1 X3dxX2N5Y19nZXRfY29udGlnX3dxZWJicyh3cSwgcGkpOw0KIAlpZiAodW5saWtlbHkoY29udGln X3dxZWJic19yb29tIDwgTUxYNUVfVU1SX1dRRUJCUykpIHsNCkBAIC00NjMsNyArNTA3LDcgQEAg c3RhdGljIGludCBtbHg1ZV9hbGxvY19yeF9tcHdxZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCB1MTYg aXgpDQogCW1lbWNweSh1bXJfd3FlLCAmcnEtPm1wd3FlLnVtcl93cWUsIG9mZnNldG9mKHN0cnVj dCBtbHg1ZV91bXJfd3FlLCBpbmxpbmVfbXR0cykpOw0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgTUxY NV9NUFdSUV9QQUdFU19QRVJfV1FFOyBpKyssIGRtYV9pbmZvKyspIHsNCi0JCWVyciA9IG1seDVl X3BhZ2VfYWxsb2NfbWFwcGVkKHJxLCBkbWFfaW5mbyk7DQorCQllcnIgPSBtbHg1ZV9wYWdlX2Fs bG9jKHJxLCBkbWFfaW5mbyk7DQogCQlpZiAodW5saWtlbHkoZXJyKSkNCiAJCQlnb3RvIGVycl91 bm1hcDsNCiAJCXVtcl93cWUtPmlubGluZV9tdHRzW2ldLnB0YWcgPSBjcHVfdG9fYmU2NChkbWFf aW5mby0+YWRkciB8IE1MWDVfRU5fV1IpOw0KQEAgLTQ5MCw2ICs1MzQsOCBAQCBzdGF0aWMgaW50 IG1seDVlX2FsbG9jX3J4X21wd3FlKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHUxNiBpeCkNCiAJCWRt YV9pbmZvLS07DQogCQltbHg1ZV9wYWdlX3JlbGVhc2UocnEsIGRtYV9pbmZvLCB0cnVlKTsNCiAJ fQ0KKw0KK2VycjoNCiAJcnEtPnN0YXRzLT5idWZmX2FsbG9jX2VycisrOw0KIA0KIAlyZXR1cm4g ZXJyOw0KQEAgLTYwMyw2ICs2NDksNyBAQCBib29sIG1seDVlX3Bvc3RfcnhfbXB3cWVzKHN0cnVj dCBtbHg1ZV9ycSAqcnEpDQogCXN0cnVjdCBtbHg1ZV9pY29zcSAqc3EgPSAmcnEtPmNoYW5uZWwt Pmljb3NxOw0KIAlzdHJ1Y3QgbWx4NV93cV9sbCAqd3EgPSAmcnEtPm1wd3FlLndxOw0KIAl1OCAg dW1yX2NvbXBsZXRlZCA9IHJxLT5tcHdxZS51bXJfY29tcGxldGVkOw0KKwlpbnQgYWxsb2NfZXJy ID0gMDsNCiAJdTggIG1pc3NpbmcsIGk7DQogCXUxNiBoZWFkOw0KIA0KQEAgLTYyNyw3ICs2NzQs OSBAQCBib29sIG1seDVlX3Bvc3RfcnhfbXB3cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogCWhl YWQgPSBycS0+bXB3cWUuYWN0dWFsX3dxX2hlYWQ7DQogCWkgPSBtaXNzaW5nOw0KIAlkbyB7DQot CQlpZiAodW5saWtlbHkobWx4NWVfYWxsb2NfcnhfbXB3cWUocnEsIGhlYWQpKSkNCisJCWFsbG9j X2VyciA9IG1seDVlX2FsbG9jX3J4X21wd3FlKHJxLCBoZWFkKTsNCisNCisJCWlmICh1bmxpa2Vs eShhbGxvY19lcnIpKQ0KIAkJCWJyZWFrOw0KIAkJaGVhZCA9IG1seDVfd3FfbGxfZ2V0X3dxZV9u ZXh0X2l4KHdxLCBoZWFkKTsNCiAJfSB3aGlsZSAoLS1pKTsNCkBAIC02NDEsNiArNjkwLDEyIEBA IGJvb2wgbWx4NWVfcG9zdF9yeF9tcHdxZXMoc3RydWN0IG1seDVlX3JxICpycSkNCiAJcnEtPm1w d3FlLnVtcl9pbl9wcm9ncmVzcyArPSBycS0+bXB3cWUudW1yX2xhc3RfYnVsazsNCiAJcnEtPm1w d3FlLmFjdHVhbF93cV9oZWFkICAgPSBoZWFkOw0KIA0KKwkvKiBJZiBYU0sgRmlsbCBSaW5nIGRv ZXNuJ3QgaGF2ZSBlbm91Z2ggZnJhbWVzLCBidXN5IHBvbGwgYnkNCisJICogcmVzY2hlZHVsaW5n IHRoZSBOQVBJIHBvbGwuDQorCSAqLw0KKwlpZiAodW5saWtlbHkoYWxsb2NfZXJyID09IC1FTk9N RU0gJiYgcnEtPnVtZW0pKQ0KKwkJcmV0dXJuIHRydWU7DQorDQogCXJldHVybiBmYWxzZTsNCiB9 DQogDQpAQCAtMTAwOSw3ICsxMDY0LDcgQEAgbWx4NWVfc2tiX2Zyb21fY3FlX2xpbmVhcihzdHJ1 Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NV9jcWU2NCAqY3FlLA0KIAl9DQogDQogCXJjdV9y ZWFkX2xvY2soKTsNCi0JY29uc3VtZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwgdmEsICZy eF9oZWFkcm9vbSwgJmNxZV9iY250KTsNCisJY29uc3VtZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJx LCBkaSwgdmEsICZyeF9oZWFkcm9vbSwgJmNxZV9iY250LCBmYWxzZSk7DQogCXJjdV9yZWFkX3Vu bG9jaygpOw0KIAlpZiAoY29uc3VtZWQpDQogCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQg d2FzIGNvbnN1bWVkIGJ5IFhEUCAqLw0KQEAgLTEyMjMsNyArMTI3OCw3IEBAIG1seDVlX3NrYl9m cm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX21w d19pbmZvICp3aSwNCiAJcHJlZmV0Y2goZGF0YSk7DQogDQogCXJjdV9yZWFkX2xvY2soKTsNCi0J Y29uc3VtZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwgdmEsICZyeF9oZWFkcm9vbSwgJmNx ZV9iY250MzIpOw0KKwljb25zdW1lZCA9IG1seDVlX3hkcF9oYW5kbGUocnEsIGRpLCB2YSwgJnJ4 X2hlYWRyb29tLCAmY3FlX2JjbnQzMiwgZmFsc2UpOw0KIAlyY3VfcmVhZF91bmxvY2soKTsNCiAJ aWYgKGNvbnN1bWVkKSB7DQogCQlpZiAoX190ZXN0X2FuZF9jbGVhcl9iaXQoTUxYNUVfUlFfRkxB R19YRFBfWE1JVCwgcnEtPmZsYWdzKSkNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jDQppbmRleCA0ODNkMzIxZDIxNTEuLjVmNTQwZGI0 N2NjOSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbl9zdGF0cy5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvZW5fc3RhdHMuYw0KQEAgLTEwNCw3ICsxMDQsMzMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBj b3VudGVyX2Rlc2Mgc3dfc3RhdHNfZGVzY1tdID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfU1RBVChz dHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIGNoX3BvbGwpIH0sDQogCXsgTUxYNUVfREVDTEFSRV9TVEFU KHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgY2hfYXJtKSB9LA0KIAl7IE1MWDVFX0RFQ0xBUkVfU1RB VChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIGNoX2FmZl9jaGFuZ2UpIH0sDQorCXsgTUxYNUVfREVD TEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgY2hfZm9yY2VfaXJxKSB9LA0KIAl7IE1M WDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIGNoX2VxX3JlYXJtKSB9LA0K Kwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19wYWNr ZXRzKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4 X3hza19ieXRlcykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0 YXRzLCByeF94c2tfY3N1bV9jb21wbGV0ZSkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3Ry dWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfY3N1bV91bm5lY2Vzc2FyeSkgfSwNCisJeyBNTFg1 RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfY3N1bV91bm5lY2Vz c2FyeV9pbm5lcikgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0 YXRzLCByeF94c2tfY3N1bV9ub25lKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3Qg bWx4NWVfc3dfc3RhdHMsIHJ4X3hza19lY25fbWFyaykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NU QVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfcmVtb3ZlZF92bGFuX3BhY2tldHMpIH0s DQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgcnhfeHNrX3hk cF9kcm9wKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMs IHJ4X3hza194ZHBfcmVkaXJlY3QpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBt bHg1ZV9zd19zdGF0cywgcnhfeHNrX3dxZV9lcnIpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFU KHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgcnhfeHNrX21wd3FlX2ZpbGxlcl9jcWVzKSB9LA0KKwl7 IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19tcHdxZV9m aWxsZXJfc3RyaWRlcykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3 X3N0YXRzLCByeF94c2tfb3ZlcnNpemVfcGt0c19zd19kcm9wKSB9LA0KKwl7IE1MWDVFX0RFQ0xB UkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19idWZmX2FsbG9jX2VycikgfSwN CisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfY3Fl X2NvbXByZXNzX2Jsa3MpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9z d19zdGF0cywgcnhfeHNrX2NxZV9jb21wcmVzc19wa3RzKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVf U1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19jb25nc3RfdW1yKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19hcmZzX2Vycikg fSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCB0eF94c2tf eG1pdCkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCB0 eF94c2tfbXB3cWUpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19z dGF0cywgdHhfeHNrX2lubG53KSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4 NWVfc3dfc3RhdHMsIHR4X3hza19mdWxsKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1 Y3QgbWx4NWVfc3dfc3RhdHMsIHR4X3hza19lcnIpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFU KHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgdHhfeHNrX2NxZXMpIH0sDQogfTsNCiANCiAjZGVmaW5l IE5VTV9TV19DT1VOVEVSUwkJCUFSUkFZX1NJWkUoc3dfc3RhdHNfZGVzYykNCkBAIC0xNDQsNiAr MTcwLDggQEAgc3RhdGljIHZvaWQgbWx4NWVfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4 NWVfcHJpdiAqcHJpdikNCiAJCQkmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXTsNCiAJCXN0cnVjdCBt bHg1ZV94ZHBzcV9zdGF0cyAqeGRwc3FfcmVkX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnhkcHNx Ow0KIAkJc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzICp4ZHBzcV9zdGF0cyA9ICZjaGFubmVsX3N0 YXRzLT5ycV94ZHBzcTsNCisJCXN0cnVjdCBtbHg1ZV94ZHBzcV9zdGF0cyAqeHNrc3Ffc3RhdHMg PSAmY2hhbm5lbF9zdGF0cy0+eHNrc3E7DQorCQlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnhza3Jx X3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnhza3JxOw0KIAkJc3RydWN0IG1seDVlX3JxX3N0YXRz ICpycV9zdGF0cyA9ICZjaGFubmVsX3N0YXRzLT5ycTsNCiAJCXN0cnVjdCBtbHg1ZV9jaF9zdGF0 cyAqY2hfc3RhdHMgPSAmY2hhbm5lbF9zdGF0cy0+Y2g7DQogCQlpbnQgajsNCkBAIC0xODYsNiAr MjE0LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4 NWVfcHJpdiAqcHJpdikNCiAJCXMtPmNoX3BvbGwgICAgICAgICs9IGNoX3N0YXRzLT5wb2xsOw0K IAkJcy0+Y2hfYXJtICAgICAgICAgKz0gY2hfc3RhdHMtPmFybTsNCiAJCXMtPmNoX2FmZl9jaGFu Z2UgICs9IGNoX3N0YXRzLT5hZmZfY2hhbmdlOw0KKwkJcy0+Y2hfZm9yY2VfaXJxICAgKz0gY2hf c3RhdHMtPmZvcmNlX2lycTsNCiAJCXMtPmNoX2VxX3JlYXJtICAgICs9IGNoX3N0YXRzLT5lcV9y ZWFybTsNCiAJCS8qIHhkcCByZWRpcmVjdCAqLw0KIAkJcy0+dHhfeGRwX3htaXQgICAgKz0geGRw c3FfcmVkX3N0YXRzLT54bWl0Ow0KQEAgLTE5NCw2ICsyMjMsMzIgQEAgc3RhdGljIHZvaWQgbWx4 NWVfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJCXMtPnR4 X3hkcF9mdWxsICAgICs9IHhkcHNxX3JlZF9zdGF0cy0+ZnVsbDsNCiAJCXMtPnR4X3hkcF9lcnIg ICAgICs9IHhkcHNxX3JlZF9zdGF0cy0+ZXJyOw0KIAkJcy0+dHhfeGRwX2NxZXMgICAgKz0geGRw c3FfcmVkX3N0YXRzLT5jcWVzOw0KKwkJLyogQUZfWERQIHplcm8tY29weSAqLw0KKwkJcy0+cnhf eHNrX3BhY2tldHMgICAgICAgICAgICAgICAgKz0geHNrcnFfc3RhdHMtPnBhY2tldHM7DQorCQlz LT5yeF94c2tfYnl0ZXMgICAgICAgICAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Ynl0ZXM7DQor CQlzLT5yeF94c2tfY3N1bV9jb21wbGV0ZSAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Y3N1bV9j b21wbGV0ZTsNCisJCXMtPnJ4X3hza19jc3VtX3VubmVjZXNzYXJ5ICAgICAgICs9IHhza3JxX3N0 YXRzLT5jc3VtX3VubmVjZXNzYXJ5Ow0KKwkJcy0+cnhfeHNrX2NzdW1fdW5uZWNlc3NhcnlfaW5u ZXIgKz0geHNrcnFfc3RhdHMtPmNzdW1fdW5uZWNlc3NhcnlfaW5uZXI7DQorCQlzLT5yeF94c2tf Y3N1bV9ub25lICAgICAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Y3N1bV9ub25lOw0KKwkJcy0+ cnhfeHNrX2Vjbl9tYXJrICAgICAgICAgICAgICAgKz0geHNrcnFfc3RhdHMtPmVjbl9tYXJrOw0K KwkJcy0+cnhfeHNrX3JlbW92ZWRfdmxhbl9wYWNrZXRzICAgKz0geHNrcnFfc3RhdHMtPnJlbW92 ZWRfdmxhbl9wYWNrZXRzOw0KKwkJcy0+cnhfeHNrX3hkcF9kcm9wICAgICAgICAgICAgICAgKz0g eHNrcnFfc3RhdHMtPnhkcF9kcm9wOw0KKwkJcy0+cnhfeHNrX3hkcF9yZWRpcmVjdCAgICAgICAg ICAgKz0geHNrcnFfc3RhdHMtPnhkcF9yZWRpcmVjdDsNCisJCXMtPnJ4X3hza193cWVfZXJyICAg ICAgICAgICAgICAgICs9IHhza3JxX3N0YXRzLT53cWVfZXJyOw0KKwkJcy0+cnhfeHNrX21wd3Fl X2ZpbGxlcl9jcWVzICAgICAgKz0geHNrcnFfc3RhdHMtPm1wd3FlX2ZpbGxlcl9jcWVzOw0KKwkJ cy0+cnhfeHNrX21wd3FlX2ZpbGxlcl9zdHJpZGVzICAgKz0geHNrcnFfc3RhdHMtPm1wd3FlX2Zp bGxlcl9zdHJpZGVzOw0KKwkJcy0+cnhfeHNrX292ZXJzaXplX3BrdHNfc3dfZHJvcCAgKz0geHNr cnFfc3RhdHMtPm92ZXJzaXplX3BrdHNfc3dfZHJvcDsNCisJCXMtPnJ4X3hza19idWZmX2FsbG9j X2VyciAgICAgICAgICs9IHhza3JxX3N0YXRzLT5idWZmX2FsbG9jX2VycjsNCisJCXMtPnJ4X3hz a19jcWVfY29tcHJlc3NfYmxrcyAgICAgICs9IHhza3JxX3N0YXRzLT5jcWVfY29tcHJlc3NfYmxr czsNCisJCXMtPnJ4X3hza19jcWVfY29tcHJlc3NfcGt0cyAgICAgICs9IHhza3JxX3N0YXRzLT5j cWVfY29tcHJlc3NfcGt0czsNCisJCXMtPnJ4X3hza19jb25nc3RfdW1yICAgICAgICAgICAgICs9 IHhza3JxX3N0YXRzLT5jb25nc3RfdW1yOw0KKwkJcy0+cnhfeHNrX2FyZnNfZXJyICAgICAgICAg ICAgICAgKz0geHNrcnFfc3RhdHMtPmFyZnNfZXJyOw0KKwkJcy0+dHhfeHNrX3htaXQgICAgICAg ICAgICAgICAgICAgKz0geHNrc3Ffc3RhdHMtPnhtaXQ7DQorCQlzLT50eF94c2tfbXB3cWUgICAg ICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+bXB3cWU7DQorCQlzLT50eF94c2tfaW5sbncg ICAgICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+aW5sbnc7DQorCQlzLT50eF94c2tfZnVs bCAgICAgICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+ZnVsbDsNCisJCXMtPnR4X3hza19l cnIgICAgICAgICAgICAgICAgICAgICs9IHhza3NxX3N0YXRzLT5lcnI7DQorCQlzLT50eF94c2tf Y3FlcyAgICAgICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+Y3FlczsNCiANCiAJCWZvciAo aiA9IDA7IGogPCBwcml2LT5tYXhfb3BlbmVkX3RjOyBqKyspIHsNCiAJCQlzdHJ1Y3QgbWx4NWVf c3Ffc3RhdHMgKnNxX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnNxW2pdOw0KQEAgLTEyNjYsMTEg KzEzMjEsNDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb3VudGVyX2Rlc2MgeGRwc3Ffc3RhdHNf ZGVzY1tdID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfWERQU1FfU1RBVChzdHJ1Y3QgbWx4NWVfeGRw c3Ffc3RhdHMsIGNxZXMpIH0sDQogfTsNCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvdW50ZXJf ZGVzYyB4c2tycV9zdGF0c19kZXNjW10gPSB7DQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFU KHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgcGFja2V0cykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hT S1JRX1NUQVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBieXRlcykgfSwNCisJeyBNTFg1RV9ERUNM QVJFX1hTS1JRX1NUQVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBjc3VtX2NvbXBsZXRlKSB9LA0K Kwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNzdW1f dW5uZWNlc3NhcnkpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1 ZV9ycV9zdGF0cywgY3N1bV91bm5lY2Vzc2FyeV9pbm5lcikgfSwNCisJeyBNTFg1RV9ERUNMQVJF X1hTS1JRX1NUQVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBjc3VtX25vbmUpIH0sDQorCXsgTUxY NUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgZWNuX21hcmspIH0s DQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgcmVt b3ZlZF92bGFuX3BhY2tldHMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVj dCBtbHg1ZV9ycV9zdGF0cywgeGRwX2Ryb3ApIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9T VEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgeGRwX3JlZGlyZWN0KSB9LA0KKwl7IE1MWDVFX0RF Q0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIHdxZV9lcnIpIH0sDQorCXsg TUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgbXB3cWVfZmls bGVyX2NxZXMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9y cV9zdGF0cywgbXB3cWVfZmlsbGVyX3N0cmlkZXMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tS UV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgb3ZlcnNpemVfcGt0c19zd19kcm9wKSB9LA0K Kwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGJ1ZmZf YWxsb2NfZXJyKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVf cnFfc3RhdHMsIGNxZV9jb21wcmVzc19ibGtzKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFf U1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNxZV9jb21wcmVzc19wa3RzKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNvbmdzdF91bXIp IH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywg YXJmc19lcnIpIH0sDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvdW50ZXJfZGVzYyB4 c2tzcV9zdGF0c19kZXNjW10gPSB7DQorCXsgTUxYNUVfREVDTEFSRV9YU0tTUV9TVEFUKHN0cnVj dCBtbHg1ZV94ZHBzcV9zdGF0cywgeG1pdCkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1NRX1NU QVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBtcHdxZSkgfSwNCisJeyBNTFg1RV9ERUNMQVJF X1hTS1NRX1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBpbmxudykgfSwNCisJeyBNTFg1 RV9ERUNMQVJFX1hTS1NRX1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBmdWxsKSB9LA0K Kwl7IE1MWDVFX0RFQ0xBUkVfWFNLU1FfU1RBVChzdHJ1Y3QgbWx4NWVfeGRwc3Ffc3RhdHMsIGVy cikgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1NRX1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0 YXRzLCBjcWVzKSB9LA0KK307DQorDQogc3RhdGljIGNvbnN0IHN0cnVjdCBjb3VudGVyX2Rlc2Mg Y2hfc3RhdHNfZGVzY1tdID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVChzdHJ1Y3QgbWx4 NWVfY2hfc3RhdHMsIGV2ZW50cykgfSwNCiAJeyBNTFg1RV9ERUNMQVJFX0NIX1NUQVQoc3RydWN0 IG1seDVlX2NoX3N0YXRzLCBwb2xsKSB9LA0KIAl7IE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVChzdHJ1 Y3QgbWx4NWVfY2hfc3RhdHMsIGFybSkgfSwNCiAJeyBNTFg1RV9ERUNMQVJFX0NIX1NUQVQoc3Ry dWN0IG1seDVlX2NoX3N0YXRzLCBhZmZfY2hhbmdlKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfQ0hf U1RBVChzdHJ1Y3QgbWx4NWVfY2hfc3RhdHMsIGZvcmNlX2lycSkgfSwNCiAJeyBNTFg1RV9ERUNM QVJFX0NIX1NUQVQoc3RydWN0IG1seDVlX2NoX3N0YXRzLCBlcV9yZWFybSkgfSwNCiB9Ow0KIA0K QEAgLTEyNzgsNiArMTM2NSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY291bnRlcl9kZXNjIGNo X3N0YXRzX2Rlc2NbXSA9IHsNCiAjZGVmaW5lIE5VTV9TUV9TVEFUUwkJCUFSUkFZX1NJWkUoc3Ff c3RhdHNfZGVzYykNCiAjZGVmaW5lIE5VTV9YRFBTUV9TVEFUUwkJCUFSUkFZX1NJWkUoeGRwc3Ff c3RhdHNfZGVzYykNCiAjZGVmaW5lIE5VTV9SUV9YRFBTUV9TVEFUUwkJQVJSQVlfU0laRShycV94 ZHBzcV9zdGF0c19kZXNjKQ0KKyNkZWZpbmUgTlVNX1hTS1JRX1NUQVRTCQkJQVJSQVlfU0laRSh4 c2tycV9zdGF0c19kZXNjKQ0KKyNkZWZpbmUgTlVNX1hTS1NRX1NUQVRTCQkJQVJSQVlfU0laRSh4 c2tzcV9zdGF0c19kZXNjKQ0KICNkZWZpbmUgTlVNX0NIX1NUQVRTCQkJQVJSQVlfU0laRShjaF9z dGF0c19kZXNjKQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVfZ3JwX2NoYW5uZWxzX2dldF9udW1fc3Rh dHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQpAQCAtMTI4OCwxMyArMTM3NywxNiBAQCBzdGF0 aWMgaW50IG1seDVlX2dycF9jaGFubmVsc19nZXRfbnVtX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2 ICpwcml2KQ0KIAkgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICsNCiAJICAgICAgIChO VU1fU1FfU1RBVFMgKiBtYXhfbmNoICogcHJpdi0+bWF4X29wZW5lZF90YykgKw0KIAkgICAgICAg KE5VTV9SUV9YRFBTUV9TVEFUUyAqIG1heF9uY2gpICsNCi0JICAgICAgIChOVU1fWERQU1FfU1RB VFMgKiBtYXhfbmNoKTsNCisJICAgICAgIChOVU1fWERQU1FfU1RBVFMgKiBtYXhfbmNoKSArDQor CSAgICAgICAoTlVNX1hTS1JRX1NUQVRTICogbWF4X25jaCAqIHByaXYtPnhzay5ldmVyX3VzZWQp ICsNCisJICAgICAgIChOVU1fWFNLU1FfU1RBVFMgKiBtYXhfbmNoICogcHJpdi0+eHNrLmV2ZXJf dXNlZCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVfZ3JwX2NoYW5uZWxzX2ZpbGxfc3RyaW5n cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTggKmRhdGEsDQogCQkJCQkgICBpbnQgaWR4KQ0K IHsNCiAJaW50IG1heF9uY2ggPSBtbHg1ZV9nZXRfbmV0ZGV2X21heF9jaGFubmVscyhwcml2LT5u ZXRkZXYpOw0KKwlib29sIGlzX3hzayA9IHByaXYtPnhzay5ldmVyX3VzZWQ7DQogCWludCBpLCBq LCB0YzsNCiANCiAJZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykNCkBAIC0xMzA2LDYgKzEz OTgsOSBAQCBzdGF0aWMgaW50IG1seDVlX2dycF9jaGFubmVsc19maWxsX3N0cmluZ3Moc3RydWN0 IG1seDVlX3ByaXYgKnByaXYsIHU4ICpkYXRhLA0KIAkJZm9yIChqID0gMDsgaiA8IE5VTV9SUV9T VEFUUzsgaisrKQ0KIAkJCXNwcmludGYoZGF0YSArIChpZHgrKykgKiBFVEhfR1NUUklOR19MRU4s DQogCQkJCXJxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LCBpKTsNCisJCWZvciAoaiA9IDA7IGogPCBO VU1fWFNLUlFfU1RBVFMgKiBpc194c2s7IGorKykNCisJCQlzcHJpbnRmKGRhdGEgKyAoaWR4Kysp ICogRVRIX0dTVFJJTkdfTEVOLA0KKwkJCQl4c2tycV9zdGF0c19kZXNjW2pdLmZvcm1hdCwgaSk7 DQogCQlmb3IgKGogPSAwOyBqIDwgTlVNX1JRX1hEUFNRX1NUQVRTOyBqKyspDQogCQkJc3ByaW50 ZihkYXRhICsgKGlkeCsrKSAqIEVUSF9HU1RSSU5HX0xFTiwNCiAJCQkJcnFfeGRwc3Ffc3RhdHNf ZGVzY1tqXS5mb3JtYXQsIGkpOw0KQEAgLTEzMTgsMTAgKzE0MTMsMTQgQEAgc3RhdGljIGludCBt bHg1ZV9ncnBfY2hhbm5lbHNfZmlsbF9zdHJpbmdzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1 OCAqZGF0YSwNCiAJCQkJCXNxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LA0KIAkJCQkJcHJpdi0+Y2hh bm5lbF90YzJ0eHFbaV1bdGNdKTsNCiANCi0JZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykN CisJZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykgew0KKwkJZm9yIChqID0gMDsgaiA8IE5V TV9YU0tTUV9TVEFUUyAqIGlzX3hzazsgaisrKQ0KKwkJCXNwcmludGYoZGF0YSArIChpZHgrKykg KiBFVEhfR1NUUklOR19MRU4sDQorCQkJCXhza3NxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LCBpKTsN CiAJCWZvciAoaiA9IDA7IGogPCBOVU1fWERQU1FfU1RBVFM7IGorKykNCiAJCQlzcHJpbnRmKGRh dGEgKyAoaWR4KyspICogRVRIX0dTVFJJTkdfTEVOLA0KIAkJCQl4ZHBzcV9zdGF0c19kZXNjW2pd LmZvcm1hdCwgaSk7DQorCX0NCiANCiAJcmV0dXJuIGlkeDsNCiB9DQpAQCAtMTMzMCw2ICsxNDI5 LDcgQEAgc3RhdGljIGludCBtbHg1ZV9ncnBfY2hhbm5lbHNfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4 NWVfcHJpdiAqcHJpdiwgdTY0ICpkYXRhLA0KIAkJCQkJIGludCBpZHgpDQogew0KIAlpbnQgbWF4 X25jaCA9IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQorCWJv b2wgaXNfeHNrID0gcHJpdi0+eHNrLmV2ZXJfdXNlZDsNCiAJaW50IGksIGosIHRjOw0KIA0KIAlm b3IgKGkgPSAwOyBpIDwgbWF4X25jaDsgaSsrKQ0KQEAgLTEzNDMsNiArMTQ0MywxMCBAQCBzdGF0 aWMgaW50IG1seDVlX2dycF9jaGFubmVsc19maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LCB1NjQgKmRhdGEsDQogCQkJZGF0YVtpZHgrK10gPQ0KIAkJCQlNTFg1RV9SRUFEX0NUUjY0 X0NQVSgmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXS5ycSwNCiAJCQkJCQkgICAgIHJxX3N0YXRzX2Rl c2MsIGopOw0KKwkJZm9yIChqID0gMDsgaiA8IE5VTV9YU0tSUV9TVEFUUyAqIGlzX3hzazsgaisr KQ0KKwkJCWRhdGFbaWR4KytdID0NCisJCQkJTUxYNUVfUkVBRF9DVFI2NF9DUFUoJnByaXYtPmNo YW5uZWxfc3RhdHNbaV0ueHNrcnEsDQorCQkJCQkJICAgICB4c2tycV9zdGF0c19kZXNjLCBqKTsN CiAJCWZvciAoaiA9IDA7IGogPCBOVU1fUlFfWERQU1FfU1RBVFM7IGorKykNCiAJCQlkYXRhW2lk eCsrXSA9DQogCQkJCU1MWDVFX1JFQURfQ1RSNjRfQ1BVKCZwcml2LT5jaGFubmVsX3N0YXRzW2ld LnJxX3hkcHNxLA0KQEAgLTEzNTYsMTEgKzE0NjAsMTYgQEAgc3RhdGljIGludCBtbHg1ZV9ncnBf Y2hhbm5lbHNfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTY0ICpkYXRhLA0K IAkJCQkJTUxYNUVfUkVBRF9DVFI2NF9DUFUoJnByaXYtPmNoYW5uZWxfc3RhdHNbaV0uc3FbdGNd LA0KIAkJCQkJCQkgICAgIHNxX3N0YXRzX2Rlc2MsIGopOw0KIA0KLQlmb3IgKGkgPSAwOyBpIDwg bWF4X25jaDsgaSsrKQ0KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X25jaDsgaSsrKSB7DQorCQlmb3Ig KGogPSAwOyBqIDwgTlVNX1hTS1NRX1NUQVRTICogaXNfeHNrOyBqKyspDQorCQkJZGF0YVtpZHgr K10gPQ0KKwkJCQlNTFg1RV9SRUFEX0NUUjY0X0NQVSgmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXS54 c2tzcSwNCisJCQkJCQkgICAgIHhza3NxX3N0YXRzX2Rlc2MsIGopOw0KIAkJZm9yIChqID0gMDsg aiA8IE5VTV9YRFBTUV9TVEFUUzsgaisrKQ0KIAkJCWRhdGFbaWR4KytdID0NCiAJCQkJTUxYNUVf UkVBRF9DVFI2NF9DUFUoJnByaXYtPmNoYW5uZWxfc3RhdHNbaV0ueGRwc3EsDQogCQkJCQkJICAg ICB4ZHBzcV9zdGF0c19kZXNjLCBqKTsNCisJfQ0KIA0KIAlyZXR1cm4gaWR4Ow0KIH0NCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMu aCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oDQpp bmRleCBjZGRkY2M0Njk3MWIuLmZiM2FkNzIzMWUxMSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oDQorKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaA0KQEAgLTQ2LDYgKzQ2LDgg QEANCiAjZGVmaW5lIE1MWDVFX0RFQ0xBUkVfVFhfU1RBVCh0eXBlLCBmbGQpICJ0eCVkXyIjZmxk LCBvZmZzZXRvZih0eXBlLCBmbGQpDQogI2RlZmluZSBNTFg1RV9ERUNMQVJFX1hEUFNRX1NUQVQo dHlwZSwgZmxkKSAidHglZF94ZHBfIiNmbGQsIG9mZnNldG9mKHR5cGUsIGZsZCkNCiAjZGVmaW5l IE1MWDVFX0RFQ0xBUkVfUlFfWERQU1FfU1RBVCh0eXBlLCBmbGQpICJyeCVkX3hkcF90eF8iI2Zs ZCwgb2Zmc2V0b2YodHlwZSwgZmxkKQ0KKyNkZWZpbmUgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFU KHR5cGUsIGZsZCkgInJ4JWRfeHNrXyIjZmxkLCBvZmZzZXRvZih0eXBlLCBmbGQpDQorI2RlZmlu ZSBNTFg1RV9ERUNMQVJFX1hTS1NRX1NUQVQodHlwZSwgZmxkKSAidHglZF94c2tfIiNmbGQsIG9m ZnNldG9mKHR5cGUsIGZsZCkNCiAjZGVmaW5lIE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVCh0eXBlLCBm bGQpICJjaCVkXyIjZmxkLCBvZmZzZXRvZih0eXBlLCBmbGQpDQogDQogc3RydWN0IGNvdW50ZXJf ZGVzYyB7DQpAQCAtMTE2LDEyICsxMTgsMzkgQEAgc3RydWN0IG1seDVlX3N3X3N0YXRzIHsNCiAJ dTY0IGNoX3BvbGw7DQogCXU2NCBjaF9hcm07DQogCXU2NCBjaF9hZmZfY2hhbmdlOw0KKwl1NjQg Y2hfZm9yY2VfaXJxOw0KIAl1NjQgY2hfZXFfcmVhcm07DQogDQogI2lmZGVmIENPTkZJR19NTFg1 X0VOX1RMUw0KIAl1NjQgdHhfdGxzX29vbzsNCiAJdTY0IHR4X3Rsc19yZXN5bmNfYnl0ZXM7DQog I2VuZGlmDQorDQorCXU2NCByeF94c2tfcGFja2V0czsNCisJdTY0IHJ4X3hza19ieXRlczsNCisJ dTY0IHJ4X3hza19jc3VtX2NvbXBsZXRlOw0KKwl1NjQgcnhfeHNrX2NzdW1fdW5uZWNlc3Nhcnk7 DQorCXU2NCByeF94c2tfY3N1bV91bm5lY2Vzc2FyeV9pbm5lcjsNCisJdTY0IHJ4X3hza19jc3Vt X25vbmU7DQorCXU2NCByeF94c2tfZWNuX21hcms7DQorCXU2NCByeF94c2tfcmVtb3ZlZF92bGFu X3BhY2tldHM7DQorCXU2NCByeF94c2tfeGRwX2Ryb3A7DQorCXU2NCByeF94c2tfeGRwX3JlZGly ZWN0Ow0KKwl1NjQgcnhfeHNrX3dxZV9lcnI7DQorCXU2NCByeF94c2tfbXB3cWVfZmlsbGVyX2Nx ZXM7DQorCXU2NCByeF94c2tfbXB3cWVfZmlsbGVyX3N0cmlkZXM7DQorCXU2NCByeF94c2tfb3Zl cnNpemVfcGt0c19zd19kcm9wOw0KKwl1NjQgcnhfeHNrX2J1ZmZfYWxsb2NfZXJyOw0KKwl1NjQg cnhfeHNrX2NxZV9jb21wcmVzc19ibGtzOw0KKwl1NjQgcnhfeHNrX2NxZV9jb21wcmVzc19wa3Rz Ow0KKwl1NjQgcnhfeHNrX2NvbmdzdF91bXI7DQorCXU2NCByeF94c2tfYXJmc19lcnI7DQorCXU2 NCB0eF94c2tfeG1pdDsNCisJdTY0IHR4X3hza19tcHdxZTsNCisJdTY0IHR4X3hza19pbmxudzsN CisJdTY0IHR4X3hza19mdWxsOw0KKwl1NjQgdHhfeHNrX2VycjsNCisJdTY0IHR4X3hza19jcWVz Ow0KIH07DQogDQogc3RydWN0IG1seDVlX3Fjb3VudGVyX3N0YXRzIHsNCkBAIC0yNTYsNiArMjg1 LDcgQEAgc3RydWN0IG1seDVlX2NoX3N0YXRzIHsNCiAJdTY0IHBvbGw7DQogCXU2NCBhcm07DQog CXU2NCBhZmZfY2hhbmdlOw0KKwl1NjQgZm9yY2VfaXJxOw0KIAl1NjQgZXFfcmVhcm07DQogfTsN CiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUv ZW5fdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4 cnguYw0KaW5kZXggZDJiOGNlNWRmNTljLi45YWUzMjdlODBkNmQgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhyeC5jDQorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhyeC5jDQpAQCAtMzMsNiAr MzMsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9pcnEuaD4NCiAjaW5jbHVkZSAiZW4uaCINCiAjaW5j bHVkZSAiZW4veGRwLmgiDQorI2luY2x1ZGUgImVuL3hzay90eC5oIg0KIA0KIHN0YXRpYyBpbmxp bmUgYm9vbCBtbHg1ZV9jaGFubmVsX25vX2FmZmluaXR5X2NoYW5nZShzdHJ1Y3QgbWx4NWVfY2hh bm5lbCAqYykNCiB7DQpAQCAtODcsNyArODgsMTIgQEAgaW50IG1seDVlX25hcGlfcG9sbChzdHJ1 Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpDQogCXN0cnVjdCBtbHg1ZV9jaGFubmVs ICpjID0gY29udGFpbmVyX29mKG5hcGksIHN0cnVjdCBtbHg1ZV9jaGFubmVsLA0KIAkJCQkJICAg ICAgIG5hcGkpOw0KIAlzdHJ1Y3QgbWx4NWVfY2hfc3RhdHMgKmNoX3N0YXRzID0gYy0+c3RhdHM7 DQorCXN0cnVjdCBtbHg1ZV94ZHBzcSAqeHNrc3EgPSAmYy0+eHNrc3E7DQorCXN0cnVjdCBtbHg1 ZV9ycSAqeHNrcnEgPSAmYy0+eHNrcnE7DQogCXN0cnVjdCBtbHg1ZV9ycSAqcnEgPSAmYy0+cnE7 DQorCWJvb2wgeHNrX29wZW4gPSB0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgYy0+ c3RhdGUpOw0KKwlib29sIGFmZl9jaGFuZ2UgPSBmYWxzZTsNCisJYm9vbCBidXN5X3hzayA9IGZh bHNlOw0KIAlib29sIGJ1c3kgPSBmYWxzZTsNCiAJaW50IHdvcmtfZG9uZSA9IDA7DQogCWludCBp Ow0KQEAgLTEwMywxOCArMTA5LDMyIEBAIGludCBtbHg1ZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlf c3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQ0KIAkJYnVzeSB8PSBtbHg1ZV9wb2xsX3hkcHNxX2Nx KCZjLT5ycV94ZHBzcS5jcSk7DQogDQogCWlmIChsaWtlbHkoYnVkZ2V0KSkgeyAvKiBidWRnZXQ9 MCBtZWFuczogZG9uJ3QgcG9sbCByeCByaW5ncyAqLw0KLQkJd29ya19kb25lID0gbWx4NWVfcG9s bF9yeF9jcSgmcnEtPmNxLCBidWRnZXQpOw0KKwkJaWYgKHhza19vcGVuKQ0KKwkJCXdvcmtfZG9u ZSA9IG1seDVlX3BvbGxfcnhfY3EoJnhza3JxLT5jcSwgYnVkZ2V0KTsNCisNCisJCWlmIChsaWtl bHkoYnVkZ2V0IC0gd29ya19kb25lKSkNCisJCQl3b3JrX2RvbmUgKz0gbWx4NWVfcG9sbF9yeF9j cSgmcnEtPmNxLCBidWRnZXQgLSB3b3JrX2RvbmUpOw0KKw0KIAkJYnVzeSB8PSB3b3JrX2RvbmUg PT0gYnVkZ2V0Ow0KIAl9DQogDQogCW1seDVlX3BvbGxfaWNvX2NxKCZjLT5pY29zcS5jcSk7DQog DQogCWJ1c3kgfD0gcnEtPnBvc3Rfd3FlcyhycSk7DQorCWlmICh4c2tfb3Blbikgew0KKwkJbWx4 NWVfcG9sbF9pY29fY3EoJmMtPnhza2ljb3NxLmNxKTsNCisJCWJ1c3kgfD0gbWx4NWVfcG9sbF94 ZHBzcV9jcSgmeHNrc3EtPmNxKTsNCisJCWJ1c3lfeHNrIHw9IG1seDVlX3hza190eCh4c2tzcSwg TUxYNUVfVFhfWFNLX1BPTExfQlVER0VUKTsNCisJCWJ1c3lfeHNrIHw9IHhza3JxLT5wb3N0X3dx ZXMoeHNrcnEpOw0KKwl9DQorDQorCWJ1c3kgfD0gYnVzeV94c2s7DQogDQogCWlmIChidXN5KSB7 DQogCQlpZiAobGlrZWx5KG1seDVlX2NoYW5uZWxfbm9fYWZmaW5pdHlfY2hhbmdlKGMpKSkNCiAJ CQlyZXR1cm4gYnVkZ2V0Ow0KIAkJY2hfc3RhdHMtPmFmZl9jaGFuZ2UrKzsNCisJCWFmZl9jaGFu Z2UgPSB0cnVlOw0KIAkJaWYgKGJ1ZGdldCAmJiB3b3JrX2RvbmUgPT0gYnVkZ2V0KQ0KIAkJCXdv cmtfZG9uZS0tOw0KIAl9DQpAQCAtMTM1LDYgKzE1NSwxOCBAQCBpbnQgbWx4NWVfbmFwaV9wb2xs KHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkNCiAJbWx4NWVfY3FfYXJtKCZj LT5pY29zcS5jcSk7DQogCW1seDVlX2NxX2FybSgmYy0+eGRwc3EuY3EpOw0KIA0KKwlpZiAoeHNr X29wZW4pIHsNCisJCW1seDVlX2hhbmRsZV9yeF9kaW0oeHNrcnEpOw0KKwkJbWx4NWVfY3FfYXJt KCZjLT54c2tpY29zcS5jcSk7DQorCQltbHg1ZV9jcV9hcm0oJnhza3NxLT5jcSk7DQorCQltbHg1 ZV9jcV9hcm0oJnhza3JxLT5jcSk7DQorCX0NCisNCisJaWYgKHVubGlrZWx5KGFmZl9jaGFuZ2Ug JiYgYnVzeV94c2spKSB7DQorCQltbHg1ZV90cmlnZ2VyX2lycSgmYy0+aWNvc3EpOw0KKwkJY2hf c3RhdHMtPmZvcmNlX2lycSsrOw0KKwl9DQorDQogCXJldHVybiB3b3JrX2RvbmU7DQogfQ0KIA0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9p Yi9pcG9pYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2li L2lwb2liLmMNCmluZGV4IDljYTQ5MmI0MzBkOC4uZGE4MWE1YTdiOGU5IDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMNCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5j DQpAQCAtODcsNyArODcsNyBAQCBpbnQgbWx4NWlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq bWRldiwNCiAJbWx4NWVfc2V0X25ldGRldl9tdHVfYm91bmRhcmllcyhwcml2KTsNCiAJbmV0ZGV2 LT5tdHUgPSBuZXRkZXYtPm1heF9tdHU7DQogDQotCW1seDVlX2J1aWxkX25pY19wYXJhbXMobWRl diwgJnByaXYtPnJzc19wYXJhbXMsICZwcml2LT5jaGFubmVscy5wYXJhbXMsDQorCW1seDVlX2J1 aWxkX25pY19wYXJhbXMobWRldiwgTlVMTCwgJnByaXYtPnJzc19wYXJhbXMsICZwcml2LT5jaGFu bmVscy5wYXJhbXMsDQogCQkJICAgICAgIG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKG5l dGRldiksDQogCQkJICAgICAgIG5ldGRldi0+bXR1KTsNCiAJbWx4NWlfYnVpbGRfbmljX3BhcmFt cyhtZGV2LCAmcHJpdi0+Y2hhbm5lbHMucGFyYW1zKTsNCkBAIC0zNjUsNyArMzY1LDcgQEAgc3Rh dGljIGludCBtbHg1aV9pbml0X3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAoZXJy KQ0KIAkJZ290byBlcnJfY2xvc2VfZHJvcF9ycTsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRlX2Rp cmVjdF9ycXRzKHByaXYpOw0KKwllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3JxdHMocHJpdiwg cHJpdi0+ZGlyZWN0X3Rpcik7DQogCWlmIChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2luZGly ZWN0X3JxdHM7DQogDQpAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgbWx4NWlfaW5pdF9y eChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Rlc3Ry b3lfZGlyZWN0X3JxdHM7DQogDQotCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhwcml2 KTsNCisJZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF90aXJzKHByaXYsIHByaXYtPmRpcmVjdF90 aXIpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZGVzdHJveV9pbmRpcmVjdF90aXJzOw0KIA0K QEAgLTM4NCwxMSArMzg0LDExIEBAIHN0YXRpYyBpbnQgbWx4NWlfaW5pdF9yeChzdHJ1Y3QgbWx4 NWVfcHJpdiAqcHJpdikNCiAJcmV0dXJuIDA7DQogDQogZXJyX2Rlc3Ryb3lfZGlyZWN0X3RpcnM6 DQotCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3RpcnMocHJpdik7DQorCW1seDVlX2Rlc3Ryb3lfZGly ZWN0X3RpcnMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogZXJyX2Rlc3Ryb3lfaW5kaXJlY3Rf dGlyczoNCiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHByaXYsIHRydWUpOw0KIGVycl9k ZXN0cm95X2RpcmVjdF9ycXRzOg0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYpOw0K KwltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIGVy cl9kZXN0cm95X2luZGlyZWN0X3JxdHM6DQogCW1seDVlX2Rlc3Ryb3lfcnF0KHByaXYsICZwcml2 LT5pbmRpcl9ycXQpOw0KIGVycl9jbG9zZV9kcm9wX3JxOg0KQEAgLTQwMSw5ICs0MDEsOSBAQCBz dGF0aWMgaW50IG1seDVpX2luaXRfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogc3RhdGlj IHZvaWQgbWx4NWlfY2xlYW51cF9yeChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiB7DQogCW1s eDVpX2Rlc3Ryb3lfZmxvd19zdGVlcmluZyhwcml2KTsNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3Rf dGlycyhwcml2KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT5kaXJl Y3RfdGlyKTsNCiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHByaXYsIHRydWUpOw0KLQlt bHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYpOw0KKwltbHg1ZV9kZXN0cm95X2RpcmVjdF9y cXRzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIAltbHg1ZV9kZXN0cm95X3JxdChwcml2LCAm cHJpdi0+aW5kaXJfcnF0KTsNCiAJbWx4NWVfY2xvc2VfZHJvcF9ycSgmcHJpdi0+ZHJvcF9ycSk7 DQogCW1seDVlX2Rlc3Ryb3lfcV9jb3VudGVycyhwcml2KTsNCi0tIA0KMi4xOS4xDQoNCg==