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=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 C09D5C43219 for ; Tue, 30 Apr 2019 18:13:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E526D20854 for ; Tue, 30 Apr 2019 18:13:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="hCeNE9PZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726797AbfD3SNr (ORCPT ); Tue, 30 Apr 2019 14:13:47 -0400 Received: from mail-eopbgr30059.outbound.protection.outlook.com ([40.107.3.59]:50702 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727061AbfD3SNr (ORCPT ); Tue, 30 Apr 2019 14:13:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zPr0ditMUvDcws5+bIX88qgGAK6HvQJyeP2NMwHgiEE=; b=hCeNE9PZPKDpBC1IjhvKmFJOaU8FGlp5pSQNNmvoifhXc7YH8Eml4EhD+irShmuGBCIqRAMglkxaqeFqEs29KR5kTn7jmpZHuRthWEbtG77YUnA8H/Ij3gYW2RZQKbeBgerOKhpyUE5/uBI+xHmk1jBI//RYygMJqWAYw/pBQXY= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB5553.eurprd05.prod.outlook.com (20.177.119.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.15; Tue, 30 Apr 2019 18:13:10 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::cc18:150a:7740:1e2f]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::cc18:150a:7740:1e2f%2]) with mapi id 15.20.1856.008; Tue, 30 Apr 2019 18:13:10 +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 v2 16/16] net/mlx5e: Add XSK support Thread-Topic: [PATCH bpf-next v2 16/16] net/mlx5e: Add XSK support Thread-Index: AQHU/4Be3TWmekNZxUGiW+qsiQ/ssg== Date: Tue, 30 Apr 2019 18:13:10 +0000 Message-ID: <20190430181215.15305-17-maximmi@mellanox.com> References: <20190430181215.15305-1-maximmi@mellanox.com> In-Reply-To: <20190430181215.15305-1-maximmi@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0250.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::22) 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: c2f671a0-cf59-4fbb-2228-08d6cd978043 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:AM6PR05MB5553; x-ms-traffictypediagnostic: AM6PR05MB5553: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 00235A1EEF x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(366004)(396003)(136003)(346002)(376002)(39860400002)(189003)(199004)(6506007)(3846002)(26005)(478600001)(316002)(97736004)(6116002)(446003)(76176011)(4326008)(476003)(486006)(8676002)(110136005)(52116002)(81166006)(6436002)(50226002)(54906003)(8936002)(99286004)(11346002)(81156014)(2616005)(66946007)(66556008)(256004)(66476007)(64756008)(66446008)(73956011)(36756003)(305945005)(71200400001)(71190400001)(30864003)(14444005)(107886003)(102836004)(68736007)(86362001)(7736002)(186003)(66066001)(6486002)(1076003)(386003)(53946003)(5660300002)(53936002)(25786009)(6512007)(14454004)(7416002)(2906002)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB5553;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: ZAiwjlES0URVZmvmmzTB08YYr1Kfi5Rq41h9fgLlqdkasEBetZDRZIKwbXjq8pn1VV+Oe59xA9qP2wigGVEktZuCwJ5nevRTwen5gpqOZAWqWzNGFhddod/S2J5EL9F1Hvf8FQEM42odBUEYj2vxGi8rVuBhXX4MEfexwBtGpl3rwHDcvs/E9X+LW7iBQKaSwvz0hbkGNjeE0PH7PRkAgdmb3cp9ZvDw8+hwKpgHF7kW00E1jvl4l0d6t2Yzrjmt1y06n5FW8eLHOpCt+FCGUyh2/AzbnGExQFZgS1pAgf3cWEr6zT03jDV5Msg89Rna8hDOKDYv5Vtz+HHBbw/GlG8TFvpqdIQDiL9wahsoECTMva3H8BaLC9qNKIDhYVja5NH+de8lg2GhYh1KmCBS0zRV51+iKmwnnMqbje3mq14= 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: c2f671a0-cf59-4fbb-2228-08d6cd978043 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Apr 2019 18:13:10.1277 (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-Transport-CrossTenantHeadersStamped: AM6PR05MB5553 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org VGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciBBRl9YRFAgemVyby1jb3B5IFJYIGFuZCBUWC4N Cg0KV2UgY3JlYXRlIGEgZGVkaWNhdGVkIFhTSyBSUSBpbnNpZGUgdGhlIGNoYW5uZWwsIGl0IG1l YW5zIHRoYXQgdHdvDQpSUXMgYXJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHk6IG9uZSBmb3Igbm9u LVhTSyB0cmFmZmljIGFuZCB0aGUgb3RoZXINCmZvciBYU0sgdHJhZmZpYy4gVGhleSBuZWVkIHRv IGJlIGRpc3Rpbmd1aXNoZWQgdGhvdWdoLiBVc2UgdGhlIE1TQiBvZg0KdGhlIDMyLWJpdCBxdWV1 ZSBpbmRleCB0byBpbmRpY2F0ZSBpdCdzIHRoZSBYU0sgUlEgaW4gYW4gWERQIHByb2dyYW0uDQpX aGVuIGNvbmZpZ3VyaW5nIGZsb3cgc3RlZXJpbmcgd2l0aCBldGh0b29sLCB1c2UgYHVzZXItZGVm IDFgIHRvIHNlbGVjdA0KdGhlIFhTSyBSUSwgZS5nLjoNCg0KZXRodG9vbCAtTiBldGgwIGZsb3ct dHlwZSB1ZHA0IGRzdC1wb3J0IDQyNDIgYWN0aW9uIDMgdXNlci1kZWYgMQ0KDQpYU0sgcmVxdWly ZXMgZGlmZmVyZW50IHBhZ2UgYWxsb2NhdGlvbiBhbmQgcmVsZWFzZSByb3V0aW5lcy4gU3VjaA0K ZnVuY3Rpb25zIGFzIG1seDVlX3thbGxvYyxmcmVlfV9yeF9tcHdxZSBhbmQgbWx4NWVfe2dldCxw dXR9X3J4X2ZyYWcgYXJlDQpnZW5lcmljIGVub3VnaCB0byBiZSB1c2VkIGZvciBib3RoIHJlZ3Vs YXIgYW5kIFhTSyBSUXMsIGFuZCB0aGV5IHVzZSB0aGUNCm1seDVlX3BhZ2Vfe2FsbG9jLHJlbGVh c2V9IHdyYXBwZXJzIGFyb3VuZCB0aGUgcmVhbCBhbGxvY2F0aW9uDQpmdW5jdGlvbnMuIEZ1bmN0 aW9uIHBvaW50ZXJzIGFyZSBub3QgdXNlZCB0byBhdm9pZCBsb3NpbmcgdGhlDQpwZXJmb3JtYW5j ZSB3aXRoIHJldHBvbGluZXMuIFdoZXJldmVyIGl0J3MgY2VydGFpbiB0aGF0IHRoZSByZWd1bGFy DQoobm9uLVhTSykgcGFnZSByZWxlYXNlIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLCBpdCdzIGNh bGxlZCBkaXJlY3RseS4NCg0KT25seSB0aGUgc3RhdHMgdGhhdCBjb3VsZCBiZSBtZWFuaW5nZnVs IGZvciBYU0sgYXJlIGV4cG9zZWQgdG8gdGhlDQp1c2Vyc3BhY2UuIFRob3NlIHRoYXQgZG9uJ3Qg dGFrZSBwYXJ0IGluIHRoZSBYU0sgZmxvdyBhcmUgbm90DQpjb25zaWRlcmVkLg0KDQpOb3RlIHRo YXQgd2UgZG9uJ3Qgd2FpdCBmb3IgV1FFcyBvbiB0aGUgWFNLIFJRICh1bmxpa2UgdGhlIHJlZ3Vs YXIgUlEpLA0KYmVjYXVzZSB0aGUgbmV3ZXIgeGRwc29jayBzYW1wbGUgZG9lc24ndCBwcm92aWRl IGFueSBGaWxsIFJpbmcgZW50cmllcw0KYXQgdGhlIHNldHVwIHN0YWdlLg0KDQpXZSBjcmVhdGUg YSBkZWRpY2F0ZWQgWFNLIFNRIGluIHRoZSBjaGFubmVsLiBUaGlzIHNlcGFyYXRpb24gaGFzIGl0 cw0KYWR2YW50YWdlczoNCg0KMS4gV2hlbiB0aGUgVU1FTSBpcyBjbG9zZWQsIHRoZSBYU0sgU1Eg Y2FuIGFsc28gYmUgY2xvc2VkIGFuZCBzdG9wDQpyZWNlaXZpbmcgY29tcGxldGlvbnMuIElmIGFu IGV4aXN0aW5nIFNRIHdhcyB1c2VkIGZvciBYU0ssIGl0IHdvdWxkDQpjb250aW51ZSByZWNlaXZp bmcgY29tcGxldGlvbnMgZm9yIHRoZSBwYWNrZXRzIG9mIHRoZSBjbG9zZWQgc29ja2V0LiBJZg0K YSBuZXcgVU1FTSB3YXMgb3BlbmVkIGF0IHRoYXQgcG9pbnQsIGl0IHdvdWxkIHN0YXJ0IGdldHRp bmcgY29tcGxldGlvbnMNCnRoYXQgZG9uJ3QgYmVsb25nIHRvIGl0Lg0KDQoyLiBDYWxjdWxhdGlu ZyBzdGF0aXN0aWNzIHNlcGFyYXRlbHkuDQoNCldoZW4gdGhlIHVzZXJzcGFjZSBraWNrcyB0aGUg VFgsIHRoZSBkcml2ZXIgdHJpZ2dlcnMgYSBoYXJkd2FyZQ0KaW50ZXJydXB0IGJ5IHBvc3Rpbmcg YSBOT1AgdG8gYSBkZWRpY2F0ZWQgWFNLIElDTyAoaW50ZXJuYWwgY29udHJvbA0Kb3BlcmF0aW9u cykgU1EsIGluIG9yZGVyIHRvIHRyaWdnZXIgTkFQSSBvbiB0aGUgcmlnaHQgQ1BVIGNvcmUuIFRo aXMgWFNLDQpJQ08gU1EgaXMgcHJvdGVjdGVkIGJ5IGEgc3BpbmxvY2ssIGFzIHRoZSB1c2Vyc3Bh Y2UgYXBwbGljYXRpb24gbWF5IGtpY2sNCnRoZSBUWCBmcm9tIGFueSBjb3JlLg0KDQpTdG9yZSB0 aGUgcG9pbnRlcnMgdG8gdGhlIFVNRU1zIGluIHRoZSBuZXQgZGV2aWNlIHByaXZhdGUgY29udGV4 dCwNCmluZGVwZW5kZW50bHkgZnJvbSB0aGUga2VybmVsLiBUaGlzIHdheSB0aGUgZHJpdmVyIGNh biBkaXN0aW5ndWlzaA0KYmV0d2VlbiB0aGUgemVyby1jb3B5IGFuZCBub24temVyby1jb3B5IFVN RU1zLiBUaGUga2VybmVsIGZ1bmN0aW9uDQp4ZHBfZ2V0X3VtZW1fZnJvbV9xaWQgZG9lcyBub3Qg Y2FyZSBhYm91dCB0aGlzIGRpZmZlcmVuY2UsIGJ1dCB0aGUNCmRyaXZlciBpcyBvbmx5IGludGVy ZXN0ZWQgaW4gemVyby1jb3B5IFVNRU1zLCBwYXJ0aWN1bGFybHksIG9uIHRoZQ0KY2xlYW51cCBp dCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gY2xvc2UgdGhlIFhTSyBSUSBhbmQgU1Egb3Igbm90IGJ5 DQpsb29raW5nIGF0IHRoZSBwcmVzZW5jZSBvZiB0aGUgVU1FTS4gVXNlIHN0YXRlX2xvY2sgdG8g cHJvdGVjdCB0aGUNCmFjY2VzcyB0byB0aGlzIGFyZWEgb2YgVU1FTSBwb2ludGVycy4NCg0KTFJP IGlzbid0IGNvbXBhdGlibGUgd2l0aCBYRFAsIGJ1dCB0aGVyZSBtYXkgYmUgYWN0aXZlIFVNRU1z IHdoaWxlDQpYRFAgaXMgb2ZmLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCBkb24ndCBhbGxvdyBMUk8g dG8gZW5zdXJlIFhEUCBjYW4NCmJlIHJlZW5hYmxlZCBhdCBhbnkgdGltZS4NCg0KVGhlIHZhbGlk YXRpb24gb2YgWFNLIHBhcmFtZXRlcnMgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBYU0sgcXVldWVz DQpvcGVuLiBIb3dldmVyLCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgZG93biBvciB0aGUgWERQIHBy b2dyYW0gaXNuJ3QNCnNldCwgaXQncyBzdGlsbCBwb3NzaWJsZSB0byBoYXZlIGFjdGl2ZSBBRl9Y RFAgc29ja2V0cyBhbmQgZXZlbiB0bw0Kb3BlbiBuZXcsIGJ1dCB0aGUgWFNLIHF1ZXVlcyB3aWxs IGJlIGNsb3NlZC4gVG8gY292ZXIgdGhlc2UgY2FzZXMsDQpwZXJmb3JtIHRoZSB2YWxpZGF0aW9u IGFsc28gaW4gdGhlc2UgZmxvd3M6DQoNCjEuIEEgbmV3IFVNRU0gaXMgcmVnaXN0ZXJlZCwgYnV0 IHRoZSBYU0sgcXVldWVzIGFyZW4ndCBnb2luZyB0byBiZQ0KY3JlYXRlZCBkdWUgdG8gbWlzc2lu ZyBYRFAgcHJvZ3JhbSBvciBpbnRlcmZhY2UgYmVpbmcgZG93bi4NCg0KMi4gTVRVIGNoYW5nZXMg d2hpbGUgdGhlcmUgYXJlIFVNRU1zIHJlZ2lzdGVyZWQuDQoNCkhhdmluZyB0aGlzIGVhcmx5IGNo ZWNrIHByZXZlbnRzIG1seDVlX29wZW5fY2hhbm5lbHMgZnJvbSBmYWlsaW5nDQphdCBhIGxhdGVy IHN0YWdlLCB3aGVyZSByZWNvdmVyeSBpcyBpbXBvc3NpYmxlIGFuZCB0aGUgYXBwbGljYXRpb24N CmhhcyBubyBjaGFuY2UgdG8gaGFuZGxlIHRoZSBlcnJvciwgYmVjYXVzZSBpdCBnb3QgdGhlIHN1 Y2Nlc3NmdWwNCnJldHVybiB2YWx1ZSBmb3IgYW4gTVRVIGNoYW5nZSBvciBYU0sgb3BlbiBvcGVy YXRpb24uDQoNClNpZ25lZC1vZmYtYnk6IE1heGltIE1pa2l0eWFuc2tpeSA8bWF4aW1taUBtZWxs YW5veC5jb20+DQpSZXZpZXdlZC1ieTogVGFyaXEgVG91a2FuIDx0YXJpcXRAbWVsbGFub3guY29t Pg0KQWNrZWQtYnk6IFNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbWVsbGFub3guY29tPg0KLS0tDQog Li4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUgIHwgICAyICstDQog ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggIHwgIDkwICsrKy0N CiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5jICAgfCAgNTMgKy0N CiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5oICAgfCAgNDYgKy0N CiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYyAgfCAxMDMgKysr LQ0KIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oICB8ICAxOCAr LQ0KIC4uLi9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL01ha2VmaWxlICAgICAgICB8ICAgMSAr DQogLi4uL2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguYyAgIHwgMTkyICsr KysrKysNCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9yeC5oICAgfCAg MjcgKw0KIC4uLi9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmMgICAgICAgICB8IDIy MCArKysrKysrKw0KIC4uLi9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmggICAgICAg ICB8ICAyNSArDQogLi4uL2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYyAg IHwgMTA4ICsrKysNCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5o ICAgfCAgMTUgKw0KIC4uLi9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3VtZW0u YyB8IDI1MiArKysrKysrKysNCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hz ay91bWVtLmggfCAgMzQgKysNCiAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0 aHRvb2wuYyAgfCAgMjEgKy0NCiAuLi4vbWVsbGFub3gvbWx4NS9jb3JlL2VuX2ZzX2V0aHRvb2wu YyAgICAgICAgfCAgNDQgKy0NCiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl9tYWluLmMgfCA1MDYgKysrKysrKysrKysrLS0tLS0tDQogLi4uL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgIHwgIDEyICstDQogLi4uL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fcnguYyAgIHwgIDc3ICsrLQ0KIC4uLi9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZW5fc3RhdHMuYyAgICB8IDExNSArKystDQogLi4uL2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbl9zdGF0cy5oICAgIHwgIDMwICsrDQogLi4uL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhyeC5jIHwgIDM0ICstDQogLi4uL2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jIHwgIDE0ICstDQogMjQgZmlsZXMgY2hhbmdlZCwg MTc4OCBpbnNlcnRpb25zKCspLCAyNTEgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svTWFrZWZpbGUN CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuL3hzay9yeC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmMNCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu L3hzay9zZXR1cC5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbi94c2svdHguYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmgNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay91 bWVtLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuL3hzay91bWVtLmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9NYWtlZmlsZQ0KaW5kZXggM2RiYmUzYjY0M2IzLi44NTM0NzljMzY3 YmYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUv TWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9N YWtlZmlsZQ0KQEAgLTIzLDcgKzIzLDcgQEAgbWx4NV9jb3JlLXkgOj0JbWFpbi5vIGNtZC5vIGRl YnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXA0KIG1seDVfY29yZS0kKENPTkZJ R19NTFg1X0NPUkVfRU4pICs9IGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRv b2wubyBcDQogCQllbl90eC5vIGVuX3J4Lm8gZW5fZGltLm8gZW5fdHhyeC5vIGVuL3hkcC5vIGVu X3N0YXRzLm8gXA0KIAkJZW5fc2VsZnRlc3QubyBlbi9wb3J0Lm8gZW4vbW9uaXRvcl9zdGF0cy5v IGVuL3JlcG9ydGVyX3R4Lm8gXA0KLQkJZW4vcGFyYW1zLm8NCisJCWVuL3BhcmFtcy5vIGVuL3hz ay91bWVtLm8gZW4veHNrL3NldHVwLm8gZW4veHNrL3J4Lm8gZW4veHNrL3R4Lm8NCiANCiAjDQog IyBOZXRkZXYgZXh0cmENCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi5oDQppbmRleCA4Y2IyOGU1NjA0ZjAuLjI2ZjE2MGMwOWJlOSAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oDQorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaA0KQEAgLTEzNyw2ICsxMzcsNyBA QCBzdHJ1Y3QgcGFnZV9wb29sOw0KICNkZWZpbmUgTUxYNUVfTUFYX05VTV9DSEFOTkVMUyAgICAg ICAgIChNTFg1RV9JTkRJUl9SUVRfU0laRSA+PiAxKQ0KICNkZWZpbmUgTUxYNUVfTUFYX05VTV9T UVMgICAgICAgICAgICAgIChNTFg1RV9NQVhfTlVNX0NIQU5ORUxTICogTUxYNUVfTUFYX05VTV9U QykNCiAjZGVmaW5lIE1MWDVFX1RYX0NRX1BPTExfQlVER0VUICAgICAgICAxMjgNCisjZGVmaW5l IE1MWDVFX1RYX1hTS19QT0xMX0JVREdFVCAgICAgICA2NA0KICNkZWZpbmUgTUxYNUVfU1FfUkVD T1ZFUl9NSU5fSU5URVJWQUwgIDUwMCAvKiBtc2VjcyAqLw0KIA0KICNkZWZpbmUgTUxYNUVfVU1S X1dRRV9JTkxJTkVfU1ogXA0KQEAgLTI1MCw2ICsyNTEsNyBAQCBzdHJ1Y3QgbWx4NWVfcGFyYW1z IHsNCiAJdTMyIGxyb190aW1lb3V0Ow0KIAl1MzIgcGZsYWdzOw0KIAlzdHJ1Y3QgYnBmX3Byb2cg KnhkcF9wcm9nOw0KKwlzdHJ1Y3QgbWx4NWVfeHNrICp4c2s7DQogCXVuc2lnbmVkIGludCBzd19t dHU7DQogCWludCBoYXJkX210dTsNCiB9Ow0KQEAgLTM5OCw4ICs0MDAsMTQgQEAgc3RydWN0IG1s eDVlX3R4cXNxIHsNCiB9IF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7DQogDQogc3RydWN0 IG1seDVlX2RtYV9pbmZvIHsNCi0Jc3RydWN0IHBhZ2UgICAgICpwYWdlOw0KLQlkbWFfYWRkcl90 ICAgICAgYWRkcjsNCisJZG1hX2FkZHJfdCBhZGRyOw0KKwl1bmlvbiB7DQorCQlzdHJ1Y3QgcGFn ZSAqcGFnZTsNCisJCXN0cnVjdCB7DQorCQkJdTY0IGhhbmRsZTsNCisJCQl2b2lkICpkYXRhOw0K KwkJfSB4c2s7DQorCX07DQogfTsNCiANCiAvKiBYRFAgcGFja2V0cyBjYW4gYmUgdHJhbnNtaXR0 ZWQgaW4gZGlmZmVyZW50IHdheXMuIE9uIGNvbXBsZXRpb24sIHdlIG5lZWQgdG8NCkBAIC00NjYs OSArNDc0LDExIEBAIHN0cnVjdCBtbHg1ZV94ZHBfbXB3cWUgew0KIH07DQogDQogc3RydWN0IG1s eDVlX3hkcHNxOw0KK3R5cGVkZWYgaW50ICgqbWx4NWVfZnBfeG1pdF94ZHBfZnJhbWVfY2hlY2sp KHN0cnVjdCBtbHg1ZV94ZHBzcSAqKTsNCiB0eXBlZGVmIGJvb2wgKCptbHg1ZV9mcF94bWl0X3hk cF9mcmFtZSkoc3RydWN0IG1seDVlX3hkcHNxICosDQogCQkJCQlzdHJ1Y3QgbWx4NWVfeGRwX3ht aXRfZGF0YSAqLA0KLQkJCQkJc3RydWN0IG1seDVlX3hkcF9pbmZvICopOw0KKwkJCQkJc3RydWN0 IG1seDVlX3hkcF9pbmZvICosDQorCQkJCQlpbnQpOw0KIA0KIHN0cnVjdCBtbHg1ZV94ZHBzcSB7 DQogCS8qIGRhdGEgcGF0aCAqLw0KQEAgLTQ4Niw4ICs0OTYsMTAgQEAgc3RydWN0IG1seDVlX3hk cHNxIHsNCiAJc3RydWN0IG1seDVlX2NxICAgICAgICAgICAgY3E7DQogDQogCS8qIHJlYWQgb25s eSAqLw0KKwlzdHJ1Y3QgeGRwX3VtZW0gICAgICAgICAgICp1bWVtOw0KIAlzdHJ1Y3QgbWx4NV93 cV9jeWMgICAgICAgICB3cTsNCiAJc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzICAqc3RhdHM7DQor CW1seDVlX2ZwX3htaXRfeGRwX2ZyYW1lX2NoZWNrIHhtaXRfeGRwX2ZyYW1lX2NoZWNrOw0KIAlt bHg1ZV9mcF94bWl0X3hkcF9mcmFtZSAgICB4bWl0X3hkcF9mcmFtZTsNCiAJc3RydWN0IHsNCiAJ CXN0cnVjdCBtbHg1ZV94ZHBfd3FlX2luZm8gKndxZV9pbmZvOw0KQEAgLTYxOCw2ICs2MzAsNyBA QCBzdHJ1Y3QgbWx4NWVfcnEgew0KIAkJfSBtcHdxZTsNCiAJfTsNCiAJc3RydWN0IHsNCisJCXUx NiAgICAgICAgICAgIHVtZW1faGVhZHJvb207DQogCQl1MTYgICAgICAgICAgICBoZWFkcm9vbTsN CiAJCXU4ICAgICAgICAgICAgIG1hcF9kaXI7ICAgLyogZG1hIG1hcCBkaXJlY3Rpb24gKi8NCiAJ fSBidWZmOw0KQEAgLTY0OCw2ICs2NjEsMTAgQEAgc3RydWN0IG1seDVlX3JxIHsNCiAJREVDTEFS RV9CSVRNQVAoZmxhZ3MsIDgpOw0KIAlzdHJ1Y3QgcGFnZV9wb29sICAgICAgKnBhZ2VfcG9vbDsN CiANCisJLyogQUZfWERQIHplcm8tY29weSAqLw0KKwlzdHJ1Y3QgemVyb19jb3B5X2FsbG9jYXRv ciB6Y2E7DQorCXN0cnVjdCB4ZHBfdW1lbSAgICAgICAqdW1lbTsNCisNCiAJLyogY29udHJvbCAq Lw0KIAlzdHJ1Y3QgbWx4NV93cV9jdHJsICAgIHdxX2N0cmw7DQogCV9fYmUzMiAgICAgICAgICAg ICAgICAgbWtleV9iZTsNCkBAIC02NjAsNiArNjc3LDExIEBAIHN0cnVjdCBtbHg1ZV9ycSB7DQog CXN0cnVjdCB4ZHBfcnhxX2luZm8gICAgeGRwX3J4cTsNCiB9IF9fX19jYWNoZWxpbmVfYWxpZ25l ZF9pbl9zbXA7DQogDQorZW51bSBtbHg1ZV9jaGFubmVsX3N0YXRlIHsNCisJTUxYNUVfQ0hBTk5F TF9TVEFURV9YU0ssDQorCU1MWDVFX0NIQU5ORUxfTlVNX1NUQVRFUw0KK307DQorDQogc3RydWN0 IG1seDVlX2NoYW5uZWwgew0KIAkvKiBkYXRhIHBhdGggKi8NCiAJc3RydWN0IG1seDVlX3JxICAg ICAgICAgICAgcnE7DQpAQCAtNjc2LDYgKzY5OCwxMyBAQCBzdHJ1Y3QgbWx4NWVfY2hhbm5lbCB7 DQogCS8qIFhEUF9SRURJUkVDVCAqLw0KIAlzdHJ1Y3QgbWx4NWVfeGRwc3EgICAgICAgICB4ZHBz cTsNCiANCisJLyogQUZfWERQIHplcm8tY29weSAqLw0KKwlzdHJ1Y3QgbWx4NWVfcnEgICAgICAg ICAgICB4c2tycTsNCisJc3RydWN0IG1seDVlX3hkcHNxICAgICAgICAgeHNrc3E7DQorCXN0cnVj dCBtbHg1ZV9pY29zcSAgICAgICAgIHhza2ljb3NxOw0KKwkvKiB4c2tpY29zcSBjYW4gYmUgYWNj ZXNzZWQgZnJvbSBhbnkgQ1BVIC0gdGhlIHNwaW5sb2NrIHByb3RlY3RzIGl0LiAqLw0KKwlzcGlu bG9ja190ICAgICAgICAgICAgICAgICB4c2tpY29zcV9sb2NrOw0KKw0KIAkvKiBkYXRhIHBhdGgg LSBhY2Nlc3NlZCBwZXIgbmFwaSBwb2xsICovDQogCXN0cnVjdCBpcnFfZGVzYyAqaXJxX2Rlc2M7 DQogCXN0cnVjdCBtbHg1ZV9jaF9zdGF0cyAgICAgKnN0YXRzOw0KQEAgLTY4NCw2ICs3MTMsNyBA QCBzdHJ1Y3QgbWx4NWVfY2hhbm5lbCB7DQogCXN0cnVjdCBtbHg1ZV9wcml2ICAgICAgICAgKnBy aXY7DQogCXN0cnVjdCBtbHg1X2NvcmVfZGV2ICAgICAgKm1kZXY7DQogCXN0cnVjdCBod3RzdGFt cF9jb25maWcgICAgKnRzdGFtcDsNCisJREVDTEFSRV9CSVRNQVAoc3RhdGUsIE1MWDVFX0NIQU5O RUxfTlVNX1NUQVRFUyk7DQogCWludCAgICAgICAgICAgICAgICAgICAgICAgIGl4Ow0KIAlpbnQg ICAgICAgICAgICAgICAgICAgICAgICBjcHU7DQogCWNwdW1hc2tfdmFyX3QgICAgICAgICAgICAg IHhwc19jcHVtYXNrOw0KQEAgLTY5OSwxNCArNzI5LDE3IEBAIHN0cnVjdCBtbHg1ZV9jaGFubmVs X3N0YXRzIHsNCiAJc3RydWN0IG1seDVlX2NoX3N0YXRzIGNoOw0KIAlzdHJ1Y3QgbWx4NWVfc3Ff c3RhdHMgc3FbTUxYNUVfTUFYX05VTV9UQ107DQogCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyBycTsN CisJc3RydWN0IG1seDVlX3JxX3N0YXRzIHhza3JxOw0KIAlzdHJ1Y3QgbWx4NWVfeGRwc3Ffc3Rh dHMgcnFfeGRwc3E7DQogCXN0cnVjdCBtbHg1ZV94ZHBzcV9zdGF0cyB4ZHBzcTsNCisJc3RydWN0 IG1seDVlX3hkcHNxX3N0YXRzIHhza3NxOw0KIH0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3Nt cDsNCiANCiBlbnVtIHsNCiAJTUxYNUVfU1RBVEVfT1BFTkVELA0KIAlNTFg1RV9TVEFURV9ERVNU Uk9ZSU5HLA0KIAlNTFg1RV9TVEFURV9YRFBfVFhfRU5BQkxFRCwNCisJTUxYNUVfU1RBVEVfWERQ X09QRU4sDQogfTsNCiANCiBzdHJ1Y3QgbWx4NWVfcnF0IHsNCkBAIC03MzksNiArNzcyLDE3IEBA IHN0cnVjdCBtbHg1ZV9tb2RpZnlfc3FfcGFyYW0gew0KIAlpbnQgcmxfaW5kZXg7DQogfTsNCiAN CitzdHJ1Y3QgbWx4NWVfeHNrIHsNCisJLyogVU1FTXMgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IGZy b20gY2hhbm5lbHMsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0bw0KKwkgKiBsb3NlIHRoZW0gd2hl biBjaGFubmVscyBhcmUgcmVjcmVhdGVkLiBUaGUga2VybmVsIGFsc28gc3RvcmVzIFVNRU1zLA0K KwkgKiBidXQgaXQgZG9lc24ndCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHplcm8tY29weSBhbmQgbm9u LXplcm8tY29weSBVTUVNcywNCisJICogc28gcmVseSBvbiBvdXIgbWVjaGFuaXNtLg0KKwkgKi8N CisJc3RydWN0IHhkcF91bWVtICoqdW1lbXM7DQorCXUxNiByZWZjbnQ7DQorCWJvb2wgZXZlcl91 c2VkOw0KK307DQorDQogc3RydWN0IG1seDVlX3ByaXYgew0KIAkvKiBwcml2IGRhdGEgcGF0aCBm aWVsZHMgLSBzdGFydCAqLw0KIAlzdHJ1Y3QgbWx4NWVfdHhxc3EgKnR4cTJzcVtNTFg1RV9NQVhf TlVNX0NIQU5ORUxTICogTUxYNUVfTUFYX05VTV9UQ107DQpAQCAtNzU5LDYgKzgwMyw3IEBAIHN0 cnVjdCBtbHg1ZV9wcml2IHsNCiAJc3RydWN0IG1seDVlX3RpciAgICAgICAgICAgaW5kaXJfdGly W01MWDVFX05VTV9JTkRJUl9USVJTXTsNCiAJc3RydWN0IG1seDVlX3RpciAgICAgICAgICAgaW5u ZXJfaW5kaXJfdGlyW01MWDVFX05VTV9JTkRJUl9USVJTXTsNCiAJc3RydWN0IG1seDVlX3RpciAg ICAgICAgICAgZGlyZWN0X3RpcltNTFg1RV9NQVhfTlVNX0NIQU5ORUxTXTsNCisJc3RydWN0IG1s eDVlX3RpciAgICAgICAgICAgeHNrX3RpcltNTFg1RV9NQVhfTlVNX0NIQU5ORUxTXTsNCiAJc3Ry dWN0IG1seDVlX3Jzc19wYXJhbXMgICAgcnNzX3BhcmFtczsNCiAJdTMyICAgICAgICAgICAgICAg ICAgICAgICAgdHhfcmF0ZXNbTUxYNUVfTUFYX05VTV9TUVNdOw0KIA0KQEAgLTc5NSw2ICs4NDAs NyBAQCBzdHJ1Y3QgbWx4NWVfcHJpdiB7DQogCXN0cnVjdCBtbHg1ZV90bHMgICAgICAgICAgKnRs czsNCiAjZW5kaWYNCiAJc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICp0eF9yZXBvcnRl cjsNCisJc3RydWN0IG1seDVlX3hzayAgICAgICAgICAgeHNrOw0KIH07DQogDQogc3RydWN0IG1s eDVlX3Byb2ZpbGUgew0KQEAgLTgzOCw4ICs4ODQsOSBAQCBib29sIG1seDVlX3N0cmlkaW5nX3Jx X3Bvc3NpYmxlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KIAkJCQlzdHJ1Y3QgbWx4NWVf cGFyYW1zICpwYXJhbXMpOw0KIA0KIHZvaWQgbWx4NWVfcGFnZV9kbWFfdW5tYXAoc3RydWN0IG1s eDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbyk7DQotdm9pZCBtbHg1 ZV9wYWdlX3JlbGVhc2Uoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZv ICpkbWFfaW5mbywNCi0JCQlib29sIHJlY3ljbGUpOw0KK3ZvaWQgbWx4NWVfcGFnZV9yZWxlYXNl X2R5bmFtaWMoc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJc3RydWN0IG1seDVlX2RtYV9pbmZv ICpkbWFfaW5mbywNCisJCQkJYm9vbCByZWN5Y2xlKTsNCiB2b2lkIG1seDVlX2hhbmRsZV9yeF9j cWUoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVfY3FlNjQgKmNxZSk7DQogdm9pZCBt bHg1ZV9oYW5kbGVfcnhfY3FlX21wd3JxKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBtbHg1 X2NxZTY0ICpjcWUpOw0KIGJvb2wgbWx4NWVfcG9zdF9yeF93cWVzKHN0cnVjdCBtbHg1ZV9ycSAq cnEpOw0KQEAgLTg5OSw2ICs5NDYsMzAgQEAgdm9pZCBtbHg1ZV9idWlsZF9pbmRpcl90aXJfY3R4 X2hhc2goc3RydWN0IG1seDVlX3Jzc19wYXJhbXMgKnJzc19wYXJhbXMsDQogdm9pZCBtbHg1ZV9t b2RpZnlfdGlyc19oYXNoKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICppbiwgaW50IGlu bGVuKTsNCiBzdHJ1Y3QgbWx4NWVfdGlyY19jb25maWcgbWx4NWVfdGlyY19nZXRfZGVmYXVsdF9j b25maWcoZW51bSBtbHg1ZV90cmFmZmljX3R5cGVzIHR0KTsNCiANCitzdHJ1Y3QgbWx4NWVfeHNr X3BhcmFtOw0KKw0KK3N0cnVjdCBtbHg1ZV9ycV9wYXJhbTsNCitpbnQgbWx4NWVfb3Blbl9ycShz dHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJ ICBzdHJ1Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFtLCBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4 c2ssDQorCQkgIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgc3RydWN0IG1seDVlX3JxICpycSk7DQor aW50IG1seDVlX3dhaXRfZm9yX21pbl9yeF93cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIGludCB3 YWl0X3RpbWUpOw0KK3ZvaWQgbWx4NWVfZGVhY3RpdmF0ZV9ycShzdHJ1Y3QgbWx4NWVfcnEgKnJx KTsNCit2b2lkIG1seDVlX2Nsb3NlX3JxKHN0cnVjdCBtbHg1ZV9ycSAqcnEpOw0KKw0KK3N0cnVj dCBtbHg1ZV9zcV9wYXJhbTsNCitpbnQgbWx4NWVfb3Blbl9pY29zcShzdHJ1Y3QgbWx4NWVfY2hh bm5lbCAqYywgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJICAgICBzdHJ1Y3QgbWx4 NWVfc3FfcGFyYW0gKnBhcmFtLCBzdHJ1Y3QgbWx4NWVfaWNvc3EgKnNxKTsNCit2b2lkIG1seDVl X2Nsb3NlX2ljb3NxKHN0cnVjdCBtbHg1ZV9pY29zcSAqc3EpOw0KK2ludCBtbHg1ZV9vcGVuX3hk cHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLCBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMs DQorCQkgICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0sIHN0cnVjdCB4ZHBfdW1lbSAq dW1lbSwNCisJCSAgICAgc3RydWN0IG1seDVlX3hkcHNxICpzcSwgYm9vbCBpc19yZWRpcmVjdCk7 DQordm9pZCBtbHg1ZV9jbG9zZV94ZHBzcShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKTsNCisNCitz dHJ1Y3QgbWx4NWVfY3FfcGFyYW07DQoraW50IG1seDVlX29wZW5fY3Eoc3RydWN0IG1seDVlX2No YW5uZWwgKmMsIHN0cnVjdCBuZXRfZGltX2NxX21vZGVyIG1vZGVyLA0KKwkJICBzdHJ1Y3QgbWx4 NWVfY3FfcGFyYW0gKnBhcmFtLCBzdHJ1Y3QgbWx4NWVfY3EgKmNxKTsNCit2b2lkIG1seDVlX2Ns b3NlX2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EpOw0KKw0KIGludCBtbHg1ZV9vcGVuX2xvY2tlZChz dHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTsNCiBpbnQgbWx4NWVfY2xvc2VfbG9ja2VkKHN0cnVj dCBuZXRfZGV2aWNlICpuZXRkZXYpOw0KIA0KQEAgLTEwNjksMTAgKzExNDAsMTAgQEAgaW50IG1s eDVlX2NyZWF0ZV9pbmRpcmVjdF9ycXQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpOw0KIGludCBt bHg1ZV9jcmVhdGVfaW5kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgYm9vbCBp bm5lcl90dGMpOw0KIHZvaWQgbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHN0cnVjdCBtbHg1 ZV9wcml2ICpwcml2LCBib29sIGlubmVyX3R0Yyk7DQogDQotaW50IG1seDVlX2NyZWF0ZV9kaXJl Y3RfcnF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdik7DQotdm9pZCBtbHg1ZV9kZXN0cm95X2Rp cmVjdF9ycXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KTsNCi1pbnQgbWx4NWVfY3JlYXRlX2Rp cmVjdF90aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KTsNCi12b2lkIG1seDVlX2Rlc3Ryb3lf ZGlyZWN0X3RpcnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpOw0KK2ludCBtbHg1ZV9jcmVhdGVf ZGlyZWN0X3JxdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg1ZV90aXIgKnRp cnMpOw0KK3ZvaWQgbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAq cHJpdiwgc3RydWN0IG1seDVlX3RpciAqdGlycyk7DQoraW50IG1seDVlX2NyZWF0ZV9kaXJlY3Rf dGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX3RpciAqdGlycyk7DQor dm9pZCBtbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBz dHJ1Y3QgbWx4NWVfdGlyICp0aXJzKTsNCiB2b2lkIG1seDVlX2Rlc3Ryb3lfcnF0KHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfcnF0ICpycXQpOw0KIA0KIGludCBtbHg1ZV9j cmVhdGVfdGlzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LCBpbnQgdGMsDQpAQCAtMTE0Myw2 ICsxMjE0LDcgQEAgdm9pZCBtbHg1ZV9kZXRhY2hfbmV0ZGV2KHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2KTsNCiB2b2lkIG1seDVlX2Rlc3Ryb3lfbmV0ZGV2KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2 KTsNCiB2b2lkIG1seDVlX3NldF9uZXRkZXZfbXR1X2JvdW5kYXJpZXMoc3RydWN0IG1seDVlX3By aXYgKnByaXYpOw0KIHZvaWQgbWx4NWVfYnVpbGRfbmljX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3Jl X2RldiAqbWRldiwNCisJCQkgICAgc3RydWN0IG1seDVlX3hzayAqeHNrLA0KIAkJCSAgICBzdHJ1 Y3QgbWx4NWVfcnNzX3BhcmFtcyAqcnNzX3BhcmFtcywNCiAJCQkgICAgc3RydWN0IG1seDVlX3Bh cmFtcyAqcGFyYW1zLA0KIAkJCSAgICB1MTYgbWF4X2NoYW5uZWxzLCB1MTYgbXR1KTsNCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcGFyYW1z LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcGFyYW1zLmMN CmluZGV4IDBkZTkwOGIxMmZjYy4uNzkzMDFkMTE2NjY3IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5jDQorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcGFyYW1zLmMNCkBAIC00OSw0OCAr NDksNTYgQEAgdTMyIG1seDVlX3J4X2dldF9saW5lYXJfZnJhZ19zeihzdHJ1Y3QgbWx4NWVfcGFy YW1zICpwYXJhbXMsDQogCXJldHVybiBmcmFnX3N6Ow0KIH0NCiANCi11OCBtbHg1ZV9tcHdxZV9s b2dfcGt0c19wZXJfd3FlKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCit1OCBtbHg1ZV9t cHdxZV9sb2dfcGt0c19wZXJfd3FlKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJ c3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrKQ0KIHsNCi0JdTMyIGxpbmVhcl9mcmFnX3N6ID0g bWx4NWVfcnhfZ2V0X2xpbmVhcl9mcmFnX3N6KHBhcmFtcywgTlVMTCk7DQorCXUzMiBsaW5lYXJf ZnJhZ19zeiA9IG1seDVlX3J4X2dldF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIHhzayk7DQogDQog CXJldHVybiBNTFg1X01QV1JRX0xPR19XUUVfU1ogLSBvcmRlcl9iYXNlXzIobGluZWFyX2ZyYWdf c3opOw0KIH0NCiANCi1ib29sIG1seDVlX3J4X2lzX2xpbmVhcl9za2Ioc3RydWN0IG1seDVlX3Bh cmFtcyAqcGFyYW1zKQ0KK2Jvb2wgbWx4NWVfcnhfaXNfbGluZWFyX3NrYihzdHJ1Y3QgbWx4NWVf cGFyYW1zICpwYXJhbXMsDQorCQkJICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzaykNCiB7 DQotCXUzMiBmcmFnX3N6ID0gbWx4NWVfcnhfZ2V0X2xpbmVhcl9mcmFnX3N6KHBhcmFtcywgTlVM TCk7DQorCS8qIEFGX1hEUCBhbGxvY2F0ZXMgU0tCcyBvbiBYRFBfUEFTUyAtIGVuc3VyZSB0aGV5 IGRvbid0IG9jY3VweSBtb3JlDQorCSAqIHRoYW4gb25lIHBhZ2UuIEZvciB0aGlzLCBjaGVjayBi b3RoIHdpdGggYW5kIHdpdGhvdXQgeHNrLg0KKwkgKi8NCisJdTMyIGxpbmVhcl9mcmFnX3N6ID0g bWF4KG1seDVlX3J4X2dldF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIHhzayksDQorCQkJCSBtbHg1 ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCBOVUxMKSk7DQogDQotCXJldHVybiAhcGFy YW1zLT5scm9fZW4gJiYgZnJhZ19zeiA8PSBQQUdFX1NJWkU7DQorCXJldHVybiAhcGFyYW1zLT5s cm9fZW4gJiYgbGluZWFyX2ZyYWdfc3ogPD0gUEFHRV9TSVpFOw0KIH0NCiANCiAjZGVmaW5lIE1M WDVfTUFYX01QV1FFX0xPR19XUUVfU1RSSURFX1NaICgoQklUKF9fbWx4NV9iaXRfc3ood3EsIGxv Z193cWVfc3RyaWRlX3NpemUpKSAtIDEpICsgXA0KIAkJCQkJICBNTFg1X01QV1FFX0xPR19TVFJJ REVfU1pfQkFTRSkNCiBib29sIG1seDVlX3J4X21wd3FlX2lzX2xpbmVhcl9za2Ioc3RydWN0IG1s eDVfY29yZV9kZXYgKm1kZXYsDQotCQkJCSAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKQ0K KwkJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJICBzdHJ1Y3QgbWx4NWVf eHNrX3BhcmFtICp4c2spDQogew0KLQl1MzIgZnJhZ19zeiA9IG1seDVlX3J4X2dldF9saW5lYXJf ZnJhZ19zeihwYXJhbXMsIE5VTEwpOw0KKwl1MzIgbGluZWFyX2ZyYWdfc3ogPSBtbHg1ZV9yeF9n ZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCB4c2spOw0KIAlzOCBzaWduZWRfbG9nX251bV9zdHJp ZGVzX3BhcmFtOw0KIAl1OCBsb2dfbnVtX3N0cmlkZXM7DQogDQotCWlmICghbWx4NWVfcnhfaXNf bGluZWFyX3NrYihwYXJhbXMpKQ0KKwlpZiAoIW1seDVlX3J4X2lzX2xpbmVhcl9za2IocGFyYW1z LCB4c2spKQ0KIAkJcmV0dXJuIGZhbHNlOw0KIA0KLQlpZiAob3JkZXJfYmFzZV8yKGZyYWdfc3op ID4gTUxYNV9NQVhfTVBXUUVfTE9HX1dRRV9TVFJJREVfU1opDQorCWlmIChvcmRlcl9iYXNlXzIo bGluZWFyX2ZyYWdfc3opID4gTUxYNV9NQVhfTVBXUUVfTE9HX1dRRV9TVFJJREVfU1opDQogCQly ZXR1cm4gZmFsc2U7DQogDQogCWlmIChNTFg1X0NBUF9HRU4obWRldiwgZXh0X3N0cmlkZV9udW1f cmFuZ2UpKQ0KIAkJcmV0dXJuIHRydWU7DQogDQotCWxvZ19udW1fc3RyaWRlcyA9IE1MWDVfTVBX UlFfTE9HX1dRRV9TWiAtIG9yZGVyX2Jhc2VfMihmcmFnX3N6KTsNCisJbG9nX251bV9zdHJpZGVz ID0gTUxYNV9NUFdSUV9MT0dfV1FFX1NaIC0gb3JkZXJfYmFzZV8yKGxpbmVhcl9mcmFnX3N6KTsN CiAJc2lnbmVkX2xvZ19udW1fc3RyaWRlc19wYXJhbSA9DQogCQkoczgpbG9nX251bV9zdHJpZGVz IC0gTUxYNV9NUFdRRV9MT0dfTlVNX1NUUklERVNfQkFTRTsNCiANCiAJcmV0dXJuIHNpZ25lZF9s b2dfbnVtX3N0cmlkZXNfcGFyYW0gPj0gMDsNCiB9DQogDQotdTggbWx4NWVfbXB3cWVfZ2V0X2xv Z19ycV9zaXplKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCit1OCBtbHg1ZV9tcHdxZV9n ZXRfbG9nX3JxX3NpemUoc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgICBz dHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spDQogew0KLQl1OCBsb2dfcGt0c19wZXJfd3FlID0g bWx4NWVfbXB3cWVfbG9nX3BrdHNfcGVyX3dxZShwYXJhbXMpOw0KKwl1OCBsb2dfcGt0c19wZXJf d3FlID0gbWx4NWVfbXB3cWVfbG9nX3BrdHNfcGVyX3dxZShwYXJhbXMsIHhzayk7DQogDQogCS8q IE51bWJlcnMgYXJlIHVuc2lnbmVkLCBkb24ndCBzdWJ0cmFjdCB0byBhdm9pZCB1bmRlcmZsb3cu ICovDQogCWlmIChwYXJhbXMtPmxvZ19ycV9tdHVfZnJhbWVzIDwNCkBAIC0xMDEsMjcgKzEwOSwz MCBAQCB1OCBtbHg1ZV9tcHdxZV9nZXRfbG9nX3JxX3NpemUoc3RydWN0IG1seDVlX3BhcmFtcyAq cGFyYW1zKQ0KIH0NCiANCiB1OCBtbHg1ZV9tcHdxZV9nZXRfbG9nX3N0cmlkZV9zaXplKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KLQkJCQkgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJh bXMpDQorCQkJCSAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJICAgc3RydWN0 IG1seDVlX3hza19wYXJhbSAqeHNrKQ0KIHsNCi0JaWYgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVh cl9za2IobWRldiwgcGFyYW1zKSkNCi0JCXJldHVybiBvcmRlcl9iYXNlXzIobWx4NWVfcnhfZ2V0 X2xpbmVhcl9mcmFnX3N6KHBhcmFtcywgTlVMTCkpOw0KKwlpZiAobWx4NWVfcnhfbXB3cWVfaXNf bGluZWFyX3NrYihtZGV2LCBwYXJhbXMsIHhzaykpDQorCQlyZXR1cm4gb3JkZXJfYmFzZV8yKG1s eDVlX3J4X2dldF9saW5lYXJfZnJhZ19zeihwYXJhbXMsIHhzaykpOw0KIA0KIAlyZXR1cm4gTUxY NV9NUFdSUV9ERUZfTE9HX1NUUklERV9TWihtZGV2KTsNCiB9DQogDQogdTggbWx4NWVfbXB3cWVf Z2V0X2xvZ19udW1fc3RyaWRlcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCi0JCQkJICAg c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKQ0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfcGFyYW1z ICpwYXJhbXMsDQorCQkJCSAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzaykNCiB7DQogCXJl dHVybiBNTFg1X01QV1JRX0xPR19XUUVfU1ogLQ0KLQkJbWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJp ZGVfc2l6ZShtZGV2LCBwYXJhbXMpOw0KKwkJbWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJpZGVfc2l6 ZShtZGV2LCBwYXJhbXMsIHhzayk7DQogfQ0KIA0KIHUxNiBtbHg1ZV9nZXRfcnFfaGVhZHJvb20o c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQotCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpw YXJhbXMpDQorCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICBzdHJ1Y3Qg bWx4NWVfeHNrX3BhcmFtICp4c2spDQogew0KIAlib29sIGlzX2xpbmVhcl9za2IgPSAocGFyYW1z LT5ycV93cV90eXBlID09IE1MWDVfV1FfVFlQRV9DWUNMSUMpID8NCi0JCW1seDVlX3J4X2lzX2xp bmVhcl9za2IocGFyYW1zKSA6DQotCQltbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYs IHBhcmFtcyk7DQorCQltbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFtcywgeHNrKSA6DQorCQlt bHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFtcywgeHNrKTsNCiANCi0JcmV0 dXJuIGlzX2xpbmVhcl9za2IgPyBtbHg1ZV9nZXRfbGluZWFyX3JxX2hlYWRyb29tKHBhcmFtcywg TlVMTCkgOiAwOw0KKwlyZXR1cm4gaXNfbGluZWFyX3NrYiA/IG1seDVlX2dldF9saW5lYXJfcnFf aGVhZHJvb20ocGFyYW1zLCB4c2spIDogMDsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5oIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5oDQppbmRleCBmODM0MTdiODIyYmYu LjM1MmU0ODBmYTQ2OSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi9wYXJhbXMuaA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2VuL3BhcmFtcy5oDQpAQCAtNDYsMTYgKzQ2LDQ4IEBAIHUxNiBtbHg1ZV9n ZXRfbGluZWFyX3JxX2hlYWRyb29tKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCiAJCQkJ IHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzayk7DQogdTMyIG1seDVlX3J4X2dldF9saW5lYXJf ZnJhZ19zeihzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQogCQkJCXN0cnVjdCBtbHg1ZV94 c2tfcGFyYW0gKnhzayk7DQotdTggbWx4NWVfbXB3cWVfbG9nX3BrdHNfcGVyX3dxZShzdHJ1Y3Qg bWx4NWVfcGFyYW1zICpwYXJhbXMpOw0KLWJvb2wgbWx4NWVfcnhfaXNfbGluZWFyX3NrYihzdHJ1 Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMpOw0KK3U4IG1seDVlX21wd3FlX2xvZ19wa3RzX3Blcl93 cWUoc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQlzdHJ1Y3QgbWx4NWVfeHNrX3Bh cmFtICp4c2spOw0KK2Jvb2wgbWx4NWVfcnhfaXNfbGluZWFyX3NrYihzdHJ1Y3QgbWx4NWVfcGFy YW1zICpwYXJhbXMsDQorCQkJICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzayk7DQogYm9v bCBtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2 LA0KLQkJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcyk7DQotdTggbWx4NWVfbXB3cWVf Z2V0X2xvZ19ycV9zaXplKHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcyk7DQorCQkJCSAgc3Ry dWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0g Knhzayk7DQordTggbWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHN0cnVjdCBtbHg1ZV9wYXJh bXMgKnBhcmFtcywNCisJCQkgICAgICAgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrKTsNCiB1 OCBtbHg1ZV9tcHdxZV9nZXRfbG9nX3N0cmlkZV9zaXplKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpt ZGV2LA0KLQkJCQkgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMpOw0KKwkJCQkgICBzdHJ1 Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJCSAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0g Knhzayk7DQogdTggbWx4NWVfbXB3cWVfZ2V0X2xvZ19udW1fc3RyaWRlcyhzdHJ1Y3QgbWx4NV9j b3JlX2RldiAqbWRldiwNCi0JCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zKTsNCisJ CQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVf eHNrX3BhcmFtICp4c2spOw0KIHUxNiBtbHg1ZV9nZXRfcnFfaGVhZHJvb20oc3RydWN0IG1seDVf Y29yZV9kZXYgKm1kZXYsDQotCQkJICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMpOw0KKwkJ CSAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgc3RydWN0IG1seDVlX3hza19w YXJhbSAqeHNrKTsNCisNCisvKiBCdWlsZCBxdWV1ZSBwYXJhbWV0ZXJzICovDQorDQordm9pZCBt bHg1ZV9idWlsZF9ycV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgIHN0cnVj dCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhz aywNCisJCQkgIHN0cnVjdCBtbHg1ZV9ycV9wYXJhbSAqcGFyYW0pOw0KK3ZvaWQgbWx4NWVfYnVp bGRfc3FfcGFyYW1fY29tbW9uKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCQkgc3RydWN0 IG1seDVlX3NxX3BhcmFtICpwYXJhbSk7DQordm9pZCBtbHg1ZV9idWlsZF9yeF9jcV9wYXJhbShz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBh cmFtcywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzaywNCisJCQkgICAgIHN0 cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0pOw0KK3ZvaWQgbWx4NWVfYnVpbGRfdHhfY3FfcGFy YW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfcGFyYW1z ICpwYXJhbXMsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBhcmFtKTsNCit2b2lk IG1seDVlX2J1aWxkX2ljb19jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkg ICAgICB1OCBsb2dfd3Ffc2l6ZSwNCisJCQkgICAgICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBh cmFtKTsNCit2b2lkIG1seDVlX2J1aWxkX2ljb3NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LA0KKwkJCSAgICAgdTggbG9nX3dxX3NpemUsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfc3Ff cGFyYW0gKnBhcmFtKTsNCit2b2lkIG1seDVlX2J1aWxkX3hkcHNxX3BhcmFtKHN0cnVjdCBtbHg1 ZV9wcml2ICpwcml2LA0KKwkJCSAgICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJ CSAgICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSk7DQogDQogI2VuZGlmIC8qIF9fTUxY NV9FTl9QQVJBTVNfSF9fICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuL3hkcC5jDQppbmRleCBlZTk5ZWZkZTkxNDMuLmIwYjk4MmNmNjliYiAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAu Yw0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5j DQpAQCAtMzEsNiArMzEsNyBAQA0KICAqLw0KIA0KICNpbmNsdWRlIDxsaW51eC9icGZfdHJhY2Uu aD4NCisjaW5jbHVkZSA8bmV0L3hkcF9zb2NrLmg+DQogI2luY2x1ZGUgImVuL3hkcC5oIg0KICNp bmNsdWRlICJlbi9wYXJhbXMuaCINCiANCkBAIC0xMTMsMTIgKzExNCwxMiBAQCBtbHg1ZV94bWl0 X3hkcF9idWZmKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHN0cnVjdCBtbHg1ZV9ycSAqcnEsDQog CQl4ZHBpLnBhZ2UuZGkgICAgPSAqZGk7DQogCX0NCiANCi0JcmV0dXJuIHNxLT54bWl0X3hkcF9m cmFtZShzcSwgJnhkcHR4ZCwgJnhkcGkpOw0KKwlyZXR1cm4gc3EtPnhtaXRfeGRwX2ZyYW1lKHNx LCAmeGRwdHhkLCAmeGRwaSwgMCk7DQogfQ0KIA0KIC8qIHJldHVybnMgdHJ1ZSBpZiBwYWNrZXQg d2FzIGNvbnN1bWVkIGJ5IHhkcCAqLw0KIGJvb2wgbWx4NWVfeGRwX2hhbmRsZShzdHJ1Y3QgbWx4 NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRpLA0KLQkJICAgICAgdm9pZCAqdmEs IHUxNiAqcnhfaGVhZHJvb20sIHUzMiAqbGVuKQ0KKwkJICAgICAgdm9pZCAqdmEsIHUxNiAqcnhf aGVhZHJvb20sIHUzMiAqbGVuLCBib29sIHhzaykNCiB7DQogCXN0cnVjdCBicGZfcHJvZyAqcHJv ZyA9IFJFQURfT05DRShycS0+eGRwX3Byb2cpOw0KIAlzdHJ1Y3QgeGRwX2J1ZmYgeGRwOw0KQEAg LTEzMiw5ICsxMzMsMTMgQEAgYm9vbCBtbHg1ZV94ZHBfaGFuZGxlKHN0cnVjdCBtbHg1ZV9ycSAq cnEsIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZGksDQogCXhkcF9zZXRfZGF0YV9tZXRhX2ludmFs aWQoJnhkcCk7DQogCXhkcC5kYXRhX2VuZCA9IHhkcC5kYXRhICsgKmxlbjsNCiAJeGRwLmRhdGFf aGFyZF9zdGFydCA9IHZhOw0KKwlpZiAoeHNrKQ0KKwkJeGRwLmhhbmRsZSA9IGRpLT54c2suaGFu ZGxlOw0KIAl4ZHAucnhxID0gJnJxLT54ZHBfcnhxOw0KIA0KIAlhY3QgPSBicGZfcHJvZ19ydW5f eGRwKHByb2csICZ4ZHApOw0KKwlpZiAoeHNrKQ0KKwkJeGRwLmhhbmRsZSArPSB4ZHAuZGF0YSAt IHhkcC5kYXRhX2hhcmRfc3RhcnQ7DQogCXN3aXRjaCAoYWN0KSB7DQogCWNhc2UgWERQX1BBU1M6 DQogCQkqcnhfaGVhZHJvb20gPSB4ZHAuZGF0YSAtIHhkcC5kYXRhX2hhcmRfc3RhcnQ7DQpAQCAt MTUyLDcgKzE1Nyw4IEBAIGJvb2wgbWx4NWVfeGRwX2hhbmRsZShzdHJ1Y3QgbWx4NWVfcnEgKnJx LCBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRpLA0KIAkJCWdvdG8geGRwX2Fib3J0Ow0KIAkJX19z ZXRfYml0KE1MWDVFX1JRX0ZMQUdfWERQX1hNSVQsIHJxLT5mbGFncyk7DQogCQlfX3NldF9iaXQo TUxYNUVfUlFfRkxBR19YRFBfUkVESVJFQ1QsIHJxLT5mbGFncyk7DQotCQltbHg1ZV9wYWdlX2Rt YV91bm1hcChycSwgZGkpOw0KKwkJaWYgKCF4c2spDQorCQkJbWx4NWVfcGFnZV9kbWFfdW5tYXAo cnEsIGRpKTsNCiAJCXJxLT5zdGF0cy0+eGRwX3JlZGlyZWN0Kys7DQogCQlyZXR1cm4gdHJ1ZTsN CiAJZGVmYXVsdDoNCkBAIC0yMDYsNyArMjEyLDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfeGRwX21w d3FlX3Nlc3Npb25fc3RhcnQoc3RydWN0IG1seDVlX3hkcHNxICpzcSkNCiAJc3RhdHMtPm1wd3Fl Kys7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX3hkcF9tcHdxZV9jb21wbGV0ZShzdHJ1Y3Qg bWx4NWVfeGRwc3EgKnNxKQ0KK3ZvaWQgbWx4NWVfeGRwX21wd3FlX2NvbXBsZXRlKHN0cnVjdCBt bHg1ZV94ZHBzcSAqc3EpDQogew0KIAlzdHJ1Y3QgbWx4NV93cV9jeWMgICAgICAgKndxICAgID0g JnNxLT53cTsNCiAJc3RydWN0IG1seDVlX3hkcF9tcHdxZSAqc2Vzc2lvbiA9ICZzcS0+bXB3cWU7 DQpAQCAtMjI5LDkgKzIzNSwzMiBAQCBzdGF0aWMgdm9pZCBtbHg1ZV94ZHBfbXB3cWVfY29tcGxl dGUoc3RydWN0IG1seDVlX3hkcHNxICpzcSkNCiAJc2Vzc2lvbi0+d3FlID0gTlVMTDsgLyogQ2xv c2Ugc2Vzc2lvbiAqLw0KIH0NCiANCitlbnVtIHsNCisJTUxYNUVfWERQX0NIRUNLX09LID0gMSwN CisJTUxYNUVfWERQX0NIRUNLX1NUQVJUX01QV1FFID0gMiwNCit9Ow0KKw0KK3N0YXRpYyBpbnQg bWx4NWVfeG1pdF94ZHBfZnJhbWVfY2hlY2tfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSkN Cit7DQorCWlmICh1bmxpa2VseSghc3EtPm1wd3FlLndxZSkpIHsNCisJCWlmICh1bmxpa2VseSgh bWx4NWVfd3FjX2hhc19yb29tX2Zvcigmc3EtPndxLCBzcS0+Y2MsIHNxLT5wYywNCisJCQkJCQkg ICAgIE1MWDVfU0VORF9XUUVfTUFYX1dRRUJCUykpKSB7DQorCQkJLyogU1EgaXMgZnVsbCwgcmlu ZyBkb29yYmVsbCAqLw0KKwkJCW1seDVlX3htaXRfeGRwX2Rvb3JiZWxsKHNxKTsNCisJCQlzcS0+ c3RhdHMtPmZ1bGwrKzsNCisJCQlyZXR1cm4gLUVCVVNZOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIE1M WDVFX1hEUF9DSEVDS19TVEFSVF9NUFdRRTsNCisJfQ0KKw0KKwlyZXR1cm4gTUxYNUVfWERQX0NI RUNLX09LOw0KK30NCisNCiBzdGF0aWMgYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFtZV9tcHdxZShz dHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLA0KIAkJCQkgICAgICAgc3RydWN0IG1seDVlX3hkcF94bWl0 X2RhdGEgKnhkcHR4ZCwNCi0JCQkJICAgICAgIHN0cnVjdCBtbHg1ZV94ZHBfaW5mbyAqeGRwaSkN CisJCQkJICAgICAgIHN0cnVjdCBtbHg1ZV94ZHBfaW5mbyAqeGRwaSwNCisJCQkJICAgICAgIGlu dCBjaGVja19yZXN1bHQpDQogew0KIAlzdHJ1Y3QgbWx4NWVfeGRwX21wd3FlICpzZXNzaW9uID0g JnNxLT5tcHdxZTsNCiAJc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzICpzdGF0cyA9IHNxLT5zdGF0 czsNCkBAIC0yNDEsMTUgKzI3MCwxNiBAQCBzdGF0aWMgYm9vbCBtbHg1ZV94bWl0X3hkcF9mcmFt ZV9tcHdxZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLA0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQog DQotCWlmICh1bmxpa2VseSghc2Vzc2lvbi0+d3FlKSkgew0KLQkJaWYgKHVubGlrZWx5KCFtbHg1 ZV93cWNfaGFzX3Jvb21fZm9yKCZzcS0+d3EsIHNxLT5jYywgc3EtPnBjLA0KLQkJCQkJCSAgICAg TUxYNV9TRU5EX1dRRV9NQVhfV1FFQkJTKSkpIHsNCi0JCQkvKiBTUSBpcyBmdWxsLCByaW5nIGRv b3JiZWxsICovDQotCQkJbWx4NWVfeG1pdF94ZHBfZG9vcmJlbGwoc3EpOw0KLQkJCXN0YXRzLT5m dWxsKys7DQotCQkJcmV0dXJuIGZhbHNlOw0KLQkJfQ0KKwlpZiAoIWNoZWNrX3Jlc3VsdCkNCisJ CWNoZWNrX3Jlc3VsdCA9IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrX21wd3FlKHNxKTsNCisJ aWYgKHVubGlrZWx5KGNoZWNrX3Jlc3VsdCA8IDApKQ0KKwkJcmV0dXJuIGZhbHNlOw0KIA0KKwlp ZiAoY2hlY2tfcmVzdWx0ID09IE1MWDVFX1hEUF9DSEVDS19TVEFSVF9NUFdRRSkgew0KKwkJLyog U3RhcnQgdGhlIHNlc3Npb24gd2hlbiBub3RoaW5nIGNhbiBmYWlsLCBzbyBpdCdzIGd1YXJhbnRl ZWQNCisJCSAqIHRoYXQgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHNlc3Npb24sIGl0IGhhcyBhdCBs ZWFzdCBvbmUgZHNlZywNCisJCSAqIGFuZCBpdCdzIHNhZmUgdG8gY29tcGxldGUgaXQgYXQgYW55 IHRpbWUuDQorCQkgKi8NCiAJCW1seDVlX3hkcF9tcHdxZV9zZXNzaW9uX3N0YXJ0KHNxKTsNCiAJ fQ0KIA0KQEAgLTI2NCw5ICsyOTQsMjIgQEAgc3RhdGljIGJvb2wgbWx4NWVfeG1pdF94ZHBfZnJh bWVfbXB3cWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwNCiAJcmV0dXJuIHRydWU7DQogfQ0KIA0K K3N0YXRpYyBpbnQgbWx4NWVfeG1pdF94ZHBfZnJhbWVfY2hlY2soc3RydWN0IG1seDVlX3hkcHNx ICpzcSkNCit7DQorCWlmICh1bmxpa2VseSghbWx4NWVfd3FjX2hhc19yb29tX2Zvcigmc3EtPndx LCBzcS0+Y2MsIHNxLT5wYywgMSkpKSB7DQorCQkvKiBTUSBpcyBmdWxsLCByaW5nIGRvb3JiZWxs ICovDQorCQltbHg1ZV94bWl0X3hkcF9kb29yYmVsbChzcSk7DQorCQlzcS0+c3RhdHMtPmZ1bGwr KzsNCisJCXJldHVybiAtRUJVU1k7DQorCX0NCisNCisJcmV0dXJuIE1MWDVFX1hEUF9DSEVDS19P SzsNCit9DQorDQogc3RhdGljIGJvb2wgbWx4NWVfeG1pdF94ZHBfZnJhbWUoc3RydWN0IG1seDVl X3hkcHNxICpzcSwNCiAJCQkJIHN0cnVjdCBtbHg1ZV94ZHBfeG1pdF9kYXRhICp4ZHB0eGQsDQot CQkJCSBzdHJ1Y3QgbWx4NWVfeGRwX2luZm8gKnhkcGkpDQorCQkJCSBzdHJ1Y3QgbWx4NWVfeGRw X2luZm8gKnhkcGksDQorCQkJCSBpbnQgY2hlY2tfcmVzdWx0KQ0KIHsNCiAJc3RydWN0IG1seDVf d3FfY3ljICAgICAgICp3cSAgID0gJnNxLT53cTsNCiAJdTE2ICAgICAgICAgICAgICAgICAgICAg ICBwaSAgID0gbWx4NV93cV9jeWNfY3RyMml4KHdxLCBzcS0+cGMpOw0KQEAgLTI4OCwxMiArMzMx LDEwIEBAIHN0YXRpYyBib29sIG1seDVlX3htaXRfeGRwX2ZyYW1lKHN0cnVjdCBtbHg1ZV94ZHBz cSAqc3EsDQogCQlyZXR1cm4gZmFsc2U7DQogCX0NCiANCi0JaWYgKHVubGlrZWx5KCFtbHg1ZV93 cWNfaGFzX3Jvb21fZm9yKHdxLCBzcS0+Y2MsIHNxLT5wYywgMSkpKSB7DQotCQkvKiBTUSBpcyBm dWxsLCByaW5nIGRvb3JiZWxsICovDQotCQltbHg1ZV94bWl0X3hkcF9kb29yYmVsbChzcSk7DQot CQlzdGF0cy0+ZnVsbCsrOw0KKwlpZiAoIWNoZWNrX3Jlc3VsdCkNCisJCWNoZWNrX3Jlc3VsdCA9 IG1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrKHNxKTsNCisJaWYgKHVubGlrZWx5KGNoZWNrX3Jl c3VsdCA8IDApKQ0KIAkJcmV0dXJuIGZhbHNlOw0KLQl9DQogDQogCWNzZWctPmZtX2NlX3NlID0g MDsNCiANCkBAIC0zMjMsNiArMzY0LDcgQEAgc3RhdGljIGJvb2wgbWx4NWVfeG1pdF94ZHBfZnJh bWUoc3RydWN0IG1seDVlX3hkcHNxICpzcSwNCiANCiBzdGF0aWMgdm9pZCBtbHg1ZV9mcmVlX3hk cHNxX2Rlc2Moc3RydWN0IG1seDVlX3hkcHNxICpzcSwNCiAJCQkJICBzdHJ1Y3QgbWx4NWVfeGRw X3dxZV9pbmZvICp3aSwNCisJCQkJICB1MzIgKnhza19mcmFtZXMsDQogCQkJCSAgYm9vbCByZWN5 Y2xlKQ0KIHsNCiAJc3RydWN0IG1seDVlX3hkcF9pbmZvX2ZpZm8gKnhkcGlfZmlmbyA9ICZzcS0+ ZGIueGRwaV9maWZvOw0KQEAgLTM0MCw3ICszODIsMTEgQEAgc3RhdGljIHZvaWQgbWx4NWVfZnJl ZV94ZHBzcV9kZXNjKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsDQogCQkJYnJlYWs7DQogCQljYXNl IE1MWDVFX1hEUF9YTUlUX01PREVfUEFHRToNCiAJCQkvKiBYRFBfVFggZnJvbSB0aGUgcmVndWxh ciBSUSAqLw0KLQkJCW1seDVlX3BhZ2VfcmVsZWFzZSh4ZHBpLnBhZ2UucnEsICZ4ZHBpLnBhZ2Uu ZGksIHJlY3ljbGUpOw0KKwkJCW1seDVlX3BhZ2VfcmVsZWFzZV9keW5hbWljKHhkcGkucGFnZS5y cSwgJnhkcGkucGFnZS5kaSwgcmVjeWNsZSk7DQorCQkJYnJlYWs7DQorCQljYXNlIE1MWDVFX1hE UF9YTUlUX01PREVfWFNLOg0KKwkJCS8qIEFGX1hEUCBzZW5kICovDQorCQkJKCp4c2tfZnJhbWVz KSsrOw0KIAkJCWJyZWFrOw0KIAkJZGVmYXVsdDoNCiAJCQlXQVJOX09OX09OQ0UodHJ1ZSk7DQpA QCAtMzUyLDYgKzM5OCw3IEBAIGJvb2wgbWx4NWVfcG9sbF94ZHBzcV9jcShzdHJ1Y3QgbWx4NWVf Y3EgKmNxKQ0KIHsNCiAJc3RydWN0IG1seDVlX3hkcHNxICpzcTsNCiAJc3RydWN0IG1seDVfY3Fl NjQgKmNxZTsNCisJdTMyIHhza19mcmFtZXMgPSAwOw0KIAl1MTYgc3FjYzsNCiAJaW50IGk7DQog DQpAQCAtMzkzLDEwICs0NDAsMTMgQEAgYm9vbCBtbHg1ZV9wb2xsX3hkcHNxX2NxKHN0cnVjdCBt bHg1ZV9jcSAqY3EpDQogDQogCQkJc3FjYyArPSB3aS0+bnVtX3dxZWJiczsNCiANCi0JCQltbHg1 ZV9mcmVlX3hkcHNxX2Rlc2Moc3EsIHdpLCB0cnVlKTsNCisJCQltbHg1ZV9mcmVlX3hkcHNxX2Rl c2Moc3EsIHdpLCAmeHNrX2ZyYW1lcywgdHJ1ZSk7DQogCQl9IHdoaWxlICghbGFzdF93cWUpOw0K IAl9IHdoaWxlICgoKytpIDwgTUxYNUVfVFhfQ1FfUE9MTF9CVURHRVQpICYmIChjcWUgPSBtbHg1 X2Nxd3FfZ2V0X2NxZSgmY3EtPndxKSkpOw0KIA0KKwlpZiAoeHNrX2ZyYW1lcykNCisJCXhza191 bWVtX2NvbXBsZXRlX3R4KHNxLT51bWVtLCB4c2tfZnJhbWVzKTsNCisNCiAJc3EtPnN0YXRzLT5j cWVzICs9IGk7DQogDQogCW1seDVfY3F3cV91cGRhdGVfZGJfcmVjb3JkKCZjcS0+d3EpOw0KQEAg LTQxMCw2ICs0NjAsOCBAQCBib29sIG1seDVlX3BvbGxfeGRwc3FfY3Eoc3RydWN0IG1seDVlX2Nx ICpjcSkNCiANCiB2b2lkIG1seDVlX2ZyZWVfeGRwc3FfZGVzY3Moc3RydWN0IG1seDVlX3hkcHNx ICpzcSkNCiB7DQorCXUzMiB4c2tfZnJhbWVzID0gMDsNCisNCiAJd2hpbGUgKHNxLT5jYyAhPSBz cS0+cGMpIHsNCiAJCXN0cnVjdCBtbHg1ZV94ZHBfd3FlX2luZm8gKndpOw0KIAkJdTE2IGNpOw0K QEAgLTQxOSw4ICs0NzEsMTEgQEAgdm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2NzKHN0cnVjdCBt bHg1ZV94ZHBzcSAqc3EpDQogDQogCQlzcS0+Y2MgKz0gd2ktPm51bV93cWViYnM7DQogDQotCQlt bHg1ZV9mcmVlX3hkcHNxX2Rlc2Moc3EsIHdpLCBmYWxzZSk7DQorCQltbHg1ZV9mcmVlX3hkcHNx X2Rlc2Moc3EsIHdpLCAmeHNrX2ZyYW1lcywgZmFsc2UpOw0KIAl9DQorDQorCWlmICh4c2tfZnJh bWVzKQ0KKwkJeHNrX3VtZW1fY29tcGxldGVfdHgoc3EtPnVtZW0sIHhza19mcmFtZXMpOw0KIH0N CiANCiBpbnQgbWx4NWVfeGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG4sIHN0 cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsDQpAQCAtNDY2LDcgKzUyMSw3IEBAIGludCBtbHg1ZV94 ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbiwgc3RydWN0IHhkcF9mcmFtZSAq KmZyYW1lcywNCiAJCXhkcGkuZnJhbWUueGRwZiAgICAgPSB4ZHBmOw0KIAkJeGRwaS5mcmFtZS5k bWFfYWRkciA9IHhkcHR4ZC5kbWFfYWRkcjsNCiANCi0JCWlmICh1bmxpa2VseSghc3EtPnhtaXRf eGRwX2ZyYW1lKHNxLCAmeGRwdHhkLCAmeGRwaSkpKSB7DQorCQlpZiAodW5saWtlbHkoIXNxLT54 bWl0X3hkcF9mcmFtZShzcSwgJnhkcHR4ZCwgJnhkcGksIDApKSkgew0KIAkJCWRtYV91bm1hcF9z aW5nbGUoc3EtPnBkZXYsIHhkcHR4ZC5kbWFfYWRkciwNCiAJCQkJCSB4ZHB0eGQubGVuLCBETUFf VE9fREVWSUNFKTsNCiAJCQl4ZHBfcmV0dXJuX2ZyYW1lX3J4X25hcGkoeGRwZik7DQpAQCAtNTAw LDYgKzU1NSw4IEBAIHZvaWQgbWx4NWVfeGRwX3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG1seDVl X3JxICpycSkNCiANCiB2b2lkIG1seDVlX3NldF94bWl0X2ZwKHN0cnVjdCBtbHg1ZV94ZHBzcSAq c3EsIGJvb2wgaXNfbXB3KQ0KIHsNCisJc3EtPnhtaXRfeGRwX2ZyYW1lX2NoZWNrID0gaXNfbXB3 ID8NCisJCW1seDVlX3htaXRfeGRwX2ZyYW1lX2NoZWNrX21wd3FlIDogbWx4NWVfeG1pdF94ZHBf ZnJhbWVfY2hlY2s7DQogCXNxLT54bWl0X3hkcF9mcmFtZSA9IGlzX21wdyA/DQogCQltbHg1ZV94 bWl0X3hkcF9mcmFtZV9tcHdxZSA6IG1seDVlX3htaXRfeGRwX2ZyYW1lOw0KIH0NCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmggYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgNCmluZGV4IDky MDBjYjlmNDk5Yi4uMmQ5MzRjOGQzODA3IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5oDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmgNCkBAIC00Miw3ICs0Miw4IEBADQogc3RydWN0 IG1seDVlX3hza19wYXJhbTsNCiBpbnQgbWx4NWVfeGRwX21heF9tdHUoc3RydWN0IG1seDVlX3Bh cmFtcyAqcGFyYW1zLCBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KIGJvb2wgbWx4NWVf eGRwX2hhbmRsZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRp LA0KLQkJICAgICAgdm9pZCAqdmEsIHUxNiAqcnhfaGVhZHJvb20sIHUzMiAqbGVuKTsNCisJCSAg ICAgIHZvaWQgKnZhLCB1MTYgKnJ4X2hlYWRyb29tLCB1MzIgKmxlbiwgYm9vbCB4c2spOw0KK3Zv aWQgbWx4NWVfeGRwX21wd3FlX2NvbXBsZXRlKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpOw0KIGJv b2wgbWx4NWVfcG9sbF94ZHBzcV9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxKTsNCiB2b2lkIG1seDVl X2ZyZWVfeGRwc3FfZGVzY3Moc3RydWN0IG1seDVlX3hkcHNxICpzcSk7DQogdm9pZCBtbHg1ZV9z ZXRfeG1pdF9mcChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBib29sIGlzX21wdyk7DQpAQCAtNjcs NiArNjgsMjEgQEAgc3RhdGljIGlubGluZSBib29sIG1seDVlX3hkcF90eF9pc19lbmFibGVkKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlyZXR1cm4gdGVzdF9iaXQoTUxYNUVfU1RBVEVfWERQ X1RYX0VOQUJMRUQsICZwcml2LT5zdGF0ZSk7DQogfQ0KIA0KK3N0YXRpYyBpbmxpbmUgdm9pZCBt bHg1ZV94ZHBfc2V0X29wZW4oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQorew0KKwlzZXRfYml0 KE1MWDVFX1NUQVRFX1hEUF9PUEVOLCAmcHJpdi0+c3RhdGUpOw0KK30NCisNCitzdGF0aWMgaW5s aW5lIHZvaWQgbWx4NWVfeGRwX3NldF9jbG9zZWQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQor ew0KKwljbGVhcl9iaXQoTUxYNUVfU1RBVEVfWERQX09QRU4sICZwcml2LT5zdGF0ZSk7DQorfQ0K Kw0KK3N0YXRpYyBpbmxpbmUgYm9vbCBtbHg1ZV94ZHBfaXNfb3BlbihzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdikNCit7DQorCXJldHVybiB0ZXN0X2JpdChNTFg1RV9TVEFURV9YRFBfT1BFTiwgJnBy aXYtPnN0YXRlKTsNCit9DQorDQogc3RhdGljIGlubGluZSB2b2lkIG1seDVlX3htaXRfeGRwX2Rv b3JiZWxsKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpDQogew0KIAlpZiAoc3EtPmRvb3JiZWxsX2Nz ZWcpIHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvZW4veHNrL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuL3hzay9NYWtlZmlsZQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uNWVlNDI5OTE5MDBhDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL01ha2VmaWxlDQpAQCAtMCwwICsxIEBADQor c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKS8uLi8uLg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uNmE1NTU3M2VjOGYyDQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4LmMN CkBAIC0wLDAgKzEsMTkyIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg T1IgTGludXgtT3BlbklCDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xv Z2llcy4gKi8NCisNCisjaW5jbHVkZSAicnguaCINCisjaW5jbHVkZSAiZW4veGRwLmgiDQorI2lu Y2x1ZGUgPG5ldC94ZHBfc29jay5oPg0KKw0KKy8qIFJYIGRhdGEgcGF0aCAqLw0KKw0KK2Jvb2wg bWx4NWVfeHNrX3BhZ2VzX2Vub3VnaF91bWVtKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIGludCBjb3Vu dCkNCit7DQorCS8qIENoZWNrIGluIGFkdmFuY2UgdGhhdCB3ZSBoYXZlIGVub3VnaCBmcmFtZXMs IGluc3RlYWQgb2YgYWxsb2NhdGluZw0KKwkgKiBvbmUtYnktb25lLCBmYWlsaW5nIGFuZCBtb3Zp bmcgZnJhbWVzIHRvIHRoZSBSZXVzZSBSaW5nLg0KKwkgKi8NCisJcmV0dXJuIHhza191bWVtX2hh c19hZGRyc19ycShycS0+dW1lbSwgY291bnQpOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3BhZ2Vf YWxsb2NfdW1lbShzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJCSAgICAgIHN0cnVjdCBtbHg1ZV9k bWFfaW5mbyAqZG1hX2luZm8pDQorew0KKwlzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0gPSBycS0+dW1l bTsNCisJdTY0IGhhbmRsZTsNCisNCisJaWYgKCF4c2tfdW1lbV9wZWVrX2FkZHJfcnEodW1lbSwg JmhhbmRsZSkpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJZG1hX2luZm8tPnhzay5oYW5kbGUg PSBoYW5kbGUgKyBycS0+YnVmZi51bWVtX2hlYWRyb29tOw0KKwlkbWFfaW5mby0+eHNrLmRhdGEg PSB4ZHBfdW1lbV9nZXRfZGF0YSh1bWVtLCBkbWFfaW5mby0+eHNrLmhhbmRsZSk7DQorDQorCS8q IE5vIG5lZWQgdG8gYWRkIGhlYWRyb29tIHRvIHRoZSBETUEgYWRkcmVzcy4gSW4gc3RyaWRpbmcg UlEgY2FzZSwgd2UNCisJICoganVzdCBwcm92aWRlIHBhZ2VzIGZvciBVTVIsIGFuZCBoZWFkcm9v bSBpcyBjb3VudGVkIGF0IHRoZSBzZXR1cA0KKwkgKiBzdGFnZSB3aGVuIGNyZWF0aW5nIGEgV1FF LiBJbiBub24tc3RyaWRpbmcgUlEgY2FzZSwgaGVhZHJvb20gaXMNCisJICogYWNjb3VudGVkIGlu IG1seDVlX2FsbG9jX3J4X3dxZS4NCisJICovDQorCWRtYV9pbmZvLT5hZGRyID0geGRwX3VtZW1f Z2V0X2RtYSh1bWVtLCBoYW5kbGUpOw0KKw0KKwl4c2tfdW1lbV9kaXNjYXJkX2FkZHJfcnEodW1l bSk7DQorDQorCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHJxLT5wZGV2LCBkbWFfaW5mby0+ YWRkciwgUEFHRV9TSVpFLA0KKwkJCQkgICBETUFfQklESVJFQ1RJT05BTCk7DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQgbWx4NWVfeHNrX3JlY3ljbGVfZnJhbWUo c3RydWN0IG1seDVlX3JxICpycSwgdTY0IGhhbmRsZSkNCit7DQorCXhza191bWVtX2ZxX3JldXNl KHJxLT51bWVtLCBoYW5kbGUgJiBycS0+dW1lbS0+Y2h1bmtfbWFzayk7DQorfQ0KKw0KKy8qIFhT S1JRIHVzZXMgcGFnZXMgZnJvbSBVTUVNLCB0aGV5IG11c3Qgbm90IGJlIHJlbGVhc2VkLiBUaGV5 IGFyZSByZXR1cm5lZCB0bw0KKyAqIHRoZSB1c2Vyc3BhY2UgaWYgcG9zc2libGUsIGFuZCBpZiBu b3QsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHJldXNlIHRoZW0NCisgKiBpbiB0aGUgZHJp dmVyLg0KKyAqLw0KK3ZvaWQgbWx4NWVfeHNrX3BhZ2VfcmVsZWFzZShzdHJ1Y3QgbWx4NWVfcnEg KnJxLA0KKwkJCSAgICBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvKQ0KK3sNCisJbWx4 NWVfeHNrX3JlY3ljbGVfZnJhbWUocnEsIGRtYV9pbmZvLT54c2suaGFuZGxlKTsNCit9DQorDQor LyogUmV0dXJuIGEgZnJhbWUgYmFjayB0byB0aGUgaGFyZHdhcmUgdG8gZmlsbCBpbiBhZ2Fpbi4g SXQgaXMgdXNlZCBieSBYRFAgd2hlbg0KKyAqIHRoZSBYRFAgcHJvZ3JhbSByZXR1cm5zIFhEUF9U WCBvciBYRFBfUkVESVJFQ1Qgbm90IHRvIGFuIFhTS01BUC4NCisgKi8NCit2b2lkIG1seDVlX3hz a196Y2FfZnJlZShzdHJ1Y3QgemVyb19jb3B5X2FsbG9jYXRvciAqemNhLCB1bnNpZ25lZCBsb25n IGhhbmRsZSkNCit7DQorCXN0cnVjdCBtbHg1ZV9ycSAqcnEgPSBjb250YWluZXJfb2YoemNhLCBz dHJ1Y3QgbWx4NWVfcnEsIHpjYSk7DQorDQorCW1seDVlX3hza19yZWN5Y2xlX2ZyYW1lKHJxLCBo YW5kbGUpOw0KK30NCisNCitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm1seDVlX3hza19jb25zdHJ1 Y3Rfc2tiKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHZvaWQgKmRhdGEsDQorCQkJCQkgICAgICAgdTMy IGNxZV9iY250KQ0KK3sNCisJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCisNCisJc2tiID0gbmFwaV9h bGxvY19za2IocnEtPmNxLm5hcGksIGNxZV9iY250KTsNCisJaWYgKHVubGlrZWx5KCFza2IpKSB7 DQorCQlycS0+c3RhdHMtPmJ1ZmZfYWxsb2NfZXJyKys7DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0K Kw0KKwlza2JfcHV0X2RhdGEoc2tiLCBkYXRhLCBjcWVfYmNudCk7DQorDQorCXJldHVybiBza2I7 DQorfQ0KKw0KK3N0cnVjdCBza19idWZmICptbHg1ZV94c2tfc2tiX2Zyb21fY3FlX21wd3JxX2xp bmVhcihzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJCQkJCSAgICBzdHJ1Y3QgbWx4NWVfbXB3X2lu Zm8gKndpLA0KKwkJCQkJCSAgICB1MTYgY3FlX2JjbnQsDQorCQkJCQkJICAgIHUzMiBoZWFkX29m ZnNldCwNCisJCQkJCQkgICAgdTMyIHBhZ2VfaWR4KQ0KK3sNCisJc3RydWN0IG1seDVlX2RtYV9p bmZvICpkaSA9ICZ3aS0+dW1yLmRtYV9pbmZvW3BhZ2VfaWR4XTsNCisJdTE2IHJ4X2hlYWRyb29t ID0gcnEtPmJ1ZmYuaGVhZHJvb20gLSBycS0+YnVmZi51bWVtX2hlYWRyb29tOw0KKwl1MzIgY3Fl X2JjbnQzMiA9IGNxZV9iY250Ow0KKwl2b2lkICp2YSwgKmRhdGE7DQorCXUzMiBmcmFnX3NpemU7 DQorCWJvb2wgY29uc3VtZWQ7DQorDQorCS8qIENoZWNrIHBhY2tldCBzaXplLiBOb3RlIExSTyBk b2Vzbid0IHVzZSBsaW5lYXIgU0tCICovDQorCWlmICh1bmxpa2VseShjcWVfYmNudCA+IHJxLT5o d19tdHUpKSB7DQorCQlycS0+c3RhdHMtPm92ZXJzaXplX3BrdHNfc3dfZHJvcCsrOw0KKwkJcmV0 dXJuIE5VTEw7DQorCX0NCisNCisJLyogaGVhZF9vZmZzZXQgaXMgbm90IHVzZWQgaW4gdGhpcyBm dW5jdGlvbiwgYmVjYXVzZSBkaS0+eHNrLmRhdGEgYW5kDQorCSAqIGRpLT5hZGRyIHBvaW50IGRp cmVjdGx5IHRvIHRoZSBuZWNlc3NhcnkgcGxhY2UuIEZ1cnRoZXJtb3JlLCBpbiB0aGUNCisJICog Y3VycmVudCBpbXBsZW1lbnRhdGlvbiwgb25lIHBhZ2UgPSBvbmUgcGFja2V0ID0gb25lIGZyYW1l LCBzbw0KKwkgKiBoZWFkX29mZnNldCBzaG91bGQgYWx3YXlzIGJlIDAuDQorCSAqLw0KKwlXQVJO X09OX09OQ0UoaGVhZF9vZmZzZXQpOw0KKw0KKwl2YSAgICAgICAgICAgICA9IGRpLT54c2suZGF0 YTsNCisJZGF0YSAgICAgICAgICAgPSB2YSArIHJ4X2hlYWRyb29tOw0KKwlmcmFnX3NpemUgICAg ICA9IHJxLT5idWZmLmhlYWRyb29tICsgY3FlX2JjbnQzMjsNCisNCisJZG1hX3N5bmNfc2luZ2xl X2Zvcl9jcHUocnEtPnBkZXYsIGRpLT5hZGRyLCBmcmFnX3NpemUsIERNQV9CSURJUkVDVElPTkFM KTsNCisJcHJlZmV0Y2goZGF0YSk7DQorDQorCXJjdV9yZWFkX2xvY2soKTsNCisJY29uc3VtZWQg PSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwgdmEsICZyeF9oZWFkcm9vbSwgJmNxZV9iY250MzIs IHRydWUpOw0KKwlyY3VfcmVhZF91bmxvY2soKTsNCisNCisJLyogUG9zc2libGUgZmxvd3M6DQor CSAqIC0gWERQX1JFRElSRUNUIHRvIFhTS01BUDoNCisJICogICBUaGUgcGFnZSBpcyBvd25lZCBi eSB0aGUgdXNlcnNwYWNlIGZyb20gbm93Lg0KKwkgKiAtIFhEUF9UWCBhbmQgb3RoZXIgWERQX1JF RElSRUNUczoNCisJICogICBUaGUgcGFnZSB3YXMgcmV0dXJuZWQgYnkgWkNBIGFuZCByZWN5Y2xl ZC4NCisJICogLSBYRFBfRFJPUDoNCisJICogICBSZWN5Y2xlIHRoZSBwYWdlLg0KKwkgKiAtIFhE UF9QQVNTOg0KKwkgKiAgIEFsbG9jYXRlIGFuIFNLQiwgY29weSB0aGUgZGF0YSBhbmQgcmVjeWNs ZSB0aGUgcGFnZS4NCisJICoNCisJICogUGFnZXMgdG8gYmUgcmVjeWNsZWQgZ28gdG8gdGhlIFJl dXNlIFJpbmcgb24gTVBXUUUgZGVhbGxvY2F0aW9uLiBJdHMNCisJICogc2l6ZSBpcyB0aGUgc2Ft ZSBhcyB0aGUgRHJpdmVyIFJYIFJpbmcncyBzaXplLCBhbmQgcGFnZXMgZm9yIFdRRXMgYXJlDQor CSAqIGFsbG9jYXRlZCBmaXJzdCBmcm9tIHRoZSBSZXVzZSBSaW5nLCBzbyBpdCBoYXMgZW5vdWdo IHNwYWNlLg0KKwkgKi8NCisNCisJaWYgKGxpa2VseShjb25zdW1lZCkpIHsNCisJCWlmIChsaWtl bHkoX190ZXN0X2FuZF9jbGVhcl9iaXQoTUxYNUVfUlFfRkxBR19YRFBfWE1JVCwgcnEtPmZsYWdz KSkpDQorCQkJX19zZXRfYml0KHBhZ2VfaWR4LCB3aS0+eGRwX3htaXRfYml0bWFwKTsgLyogbm9u LWF0b21pYyAqLw0KKwkJcmV0dXJuIE5VTEw7IC8qIHBhZ2UvcGFja2V0IHdhcyBjb25zdW1lZCBi eSBYRFAgKi8NCisJfQ0KKw0KKwkvKiBYRFBfUEFTUzogY29weSB0aGUgZGF0YSBmcm9tIHRoZSBV TUVNIHRvIGEgbmV3IFNLQiBhbmQgcmV1c2UgdGhlDQorCSAqIGZyYW1lLiBPbiBTS0IgYWxsb2Nh dGlvbiBmYWlsdXJlLCBOVUxMIGlzIHJldHVybmVkLg0KKwkgKi8NCisJcmV0dXJuIG1seDVlX3hz a19jb25zdHJ1Y3Rfc2tiKHJxLCBkYXRhLCBjcWVfYmNudDMyKTsNCit9DQorDQorc3RydWN0IHNr X2J1ZmYgKm1seDVlX3hza19za2JfZnJvbV9jcWVfbGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEs DQorCQkJCQkgICAgICBzdHJ1Y3QgbWx4NV9jcWU2NCAqY3FlLA0KKwkJCQkJICAgICAgc3RydWN0 IG1seDVlX3dxZV9mcmFnX2luZm8gKndpLA0KKwkJCQkJICAgICAgdTMyIGNxZV9iY250KQ0KK3sN CisJc3RydWN0IG1seDVlX2RtYV9pbmZvICpkaSA9IHdpLT5kaTsNCisJdTE2IHJ4X2hlYWRyb29t ID0gcnEtPmJ1ZmYuaGVhZHJvb20gLSBycS0+YnVmZi51bWVtX2hlYWRyb29tOw0KKwl2b2lkICp2 YSwgKmRhdGE7DQorCWJvb2wgY29uc3VtZWQ7DQorCXUzMiBmcmFnX3NpemU7DQorDQorCS8qIHdp LT5vZmZzZXQgaXMgbm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYmVjYXVzZSBkaS0+eHNrLmRh dGEgYW5kDQorCSAqIGRpLT5hZGRyIHBvaW50IGRpcmVjdGx5IHRvIHRoZSBuZWNlc3NhcnkgcGxh Y2UuIEZ1cnRoZXJtb3JlLCBpbiB0aGUNCisJICogY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgb25l IHBhZ2UgPSBvbmUgcGFja2V0ID0gb25lIGZyYW1lLCBzbw0KKwkgKiB3aS0+b2Zmc2V0IHNob3Vs ZCBhbHdheXMgYmUgMC4NCisJICovDQorCVdBUk5fT05fT05DRSh3aS0+b2Zmc2V0KTsNCisNCisJ dmEgICAgICAgICAgICAgPSBkaS0+eHNrLmRhdGE7DQorCWRhdGEgICAgICAgICAgID0gdmEgKyBy eF9oZWFkcm9vbTsNCisJZnJhZ19zaXplICAgICAgPSBycS0+YnVmZi5oZWFkcm9vbSArIGNxZV9i Y250Ow0KKw0KKwlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShycS0+cGRldiwgZGktPmFkZHIsIGZy YWdfc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpOw0KKwlwcmVmZXRjaChkYXRhKTsNCisNCisJaWYg KHVubGlrZWx5KGdldF9jcWVfb3Bjb2RlKGNxZSkgIT0gTUxYNV9DUUVfUkVTUF9TRU5EKSkgew0K KwkJcnEtPnN0YXRzLT53cWVfZXJyKys7DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0KKw0KKwlyY3Vf cmVhZF9sb2NrKCk7DQorCWNvbnN1bWVkID0gbWx4NWVfeGRwX2hhbmRsZShycSwgZGksIHZhLCAm cnhfaGVhZHJvb20sICZjcWVfYmNudCwgdHJ1ZSk7DQorCXJjdV9yZWFkX3VubG9jaygpOw0KKw0K KwlpZiAobGlrZWx5KGNvbnN1bWVkKSkNCisJCXJldHVybiBOVUxMOyAvKiBwYWdlL3BhY2tldCB3 YXMgY29uc3VtZWQgYnkgWERQICovDQorDQorCS8qIFhEUF9QQVNTOiBjb3B5IHRoZSBkYXRhIGZy b20gdGhlIFVNRU0gdG8gYSBuZXcgU0tCLiBUaGUgZnJhbWUgcmV1c2UNCisJICogd2lsbCBiZSBo YW5kbGVkIGJ5IG1seDVlX3B1dF9yeF9mcmFnLg0KKwkgKiBPbiBTS0IgYWxsb2NhdGlvbiBmYWls dXJlLCBOVUxMIGlzIHJldHVybmVkLg0KKwkgKi8NCisJcmV0dXJuIG1seDVlX3hza19jb25zdHJ1 Y3Rfc2tiKHJxLCBkYXRhLCBjcWVfYmNudCk7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguaCBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svcnguaA0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMzA3YjkyM2ExMzYxDQotLS0gL2Rldi9udWxsDQorKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4LmgNCkBA IC0wLDAgKzEsMjcgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBM aW51eC1PcGVuSUIgKi8NCisvKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVsbGFub3ggVGVjaG5vbG9n aWVzLiAqLw0KKw0KKyNpZm5kZWYgX19NTFg1X0VOX1hTS19SWF9IX18NCisjZGVmaW5lIF9fTUxY NV9FTl9YU0tfUlhfSF9fDQorDQorI2luY2x1ZGUgImVuLmgiDQorDQorLyogUlggZGF0YSBwYXRo ICovDQorDQorYm9vbCBtbHg1ZV94c2tfcGFnZXNfZW5vdWdoX3VtZW0oc3RydWN0IG1seDVlX3Jx ICpycSwgaW50IGNvdW50KTsNCitpbnQgbWx4NWVfeHNrX3BhZ2VfYWxsb2NfdW1lbShzdHJ1Y3Qg bWx4NWVfcnEgKnJxLA0KKwkJCSAgICAgIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8p Ow0KK3ZvaWQgbWx4NWVfeHNrX3BhZ2VfcmVsZWFzZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJ CSAgICBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvKTsNCit2b2lkIG1seDVlX3hza196 Y2FfZnJlZShzdHJ1Y3QgemVyb19jb3B5X2FsbG9jYXRvciAqemNhLCB1bnNpZ25lZCBsb25nIGhh bmRsZSk7DQorc3RydWN0IHNrX2J1ZmYgKm1seDVlX3hza19za2JfZnJvbV9jcWVfbXB3cnFfbGlu ZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEsDQorCQkJCQkJICAgIHN0cnVjdCBtbHg1ZV9tcHdfaW5m byAqd2ksDQorCQkJCQkJICAgIHUxNiBjcWVfYmNudCwNCisJCQkJCQkgICAgdTMyIGhlYWRfb2Zm c2V0LA0KKwkJCQkJCSAgICB1MzIgcGFnZV9pZHgpOw0KK3N0cnVjdCBza19idWZmICptbHg1ZV94 c2tfc2tiX2Zyb21fY3FlX2xpbmVhcihzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KKwkJCQkJICAgICAg c3RydWN0IG1seDVfY3FlNjQgKmNxZSwNCisJCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV93cWVfZnJh Z19pbmZvICp3aSwNCisJCQkJCSAgICAgIHUzMiBjcWVfYmNudCk7DQorDQorI2VuZGlmIC8qIF9f TUxYNV9FTl9YU0tfUlhfSF9fICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9zZXR1cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9zZXR1cC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAwLi5mMmQ4YzQ2NWI2MWINCi0tLSAvZGV2L251bGwNCisrKyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svc2V0dXAuYw0KQEAg LTAsMCArMSwyMjAgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBM aW51eC1PcGVuSUINCisvKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVsbGFub3ggVGVjaG5vbG9naWVz LiAqLw0KKw0KKyNpbmNsdWRlICJzZXR1cC5oIg0KKyNpbmNsdWRlICJlbi9wYXJhbXMuaCINCisN Citib29sIG1seDVlX3ZhbGlkYXRlX3hza19wYXJhbShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJh bXMsDQorCQkJICAgICAgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrLA0KKwkJCSAgICAgIHN0 cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KQ0KK3sNCisJLyogQUZfWERQIGRvZXNuJ3Qgc3VwcG9y dCBmcmFtZXMgbGFyZ2VyIHRoYW4gUEFHRV9TSVpFLCBhbmQgdGhlIGN1cnJlbnQNCisJICogbWx4 NWUgWERQIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZSBwYWNrZXRzIHBl ciBwYWdlLg0KKwkgKi8NCisJaWYgKHhzay0+Y2h1bmtfc2l6ZSAhPSBQQUdFX1NJWkUpDQorCQly ZXR1cm4gZmFsc2U7DQorDQorCS8qIEN1cnJlbnQgTVRVIGFuZCBYU0sgaGVhZHJvb20gZG9uJ3Qg YWxsb3cgcGFja2V0cyB0byBmaXQgdGhlIGZyYW1lcy4gKi8NCisJaWYgKG1seDVlX3J4X2dldF9s aW5lYXJfZnJhZ19zeihwYXJhbXMsIHhzaykgPiB4c2stPmNodW5rX3NpemUpDQorCQlyZXR1cm4g ZmFsc2U7DQorDQorCS8qIGZyYWdfc3ogaXMgZGlmZmVyZW50IGZvciByZWd1bGFyIGFuZCBYU0sg UlFzLCBzbyBlbnN1cmUgdGhhdCBsaW5lYXINCisJICogU0tCIG1vZGUgaXMgcG9zc2libGUuDQor CSAqLw0KKwlzd2l0Y2ggKHBhcmFtcy0+cnFfd3FfdHlwZSkgew0KKwljYXNlIE1MWDVfV1FfVFlQ RV9MSU5LRURfTElTVF9TVFJJRElOR19SUToNCisJCXJldHVybiBtbHg1ZV9yeF9tcHdxZV9pc19s aW5lYXJfc2tiKG1kZXYsIHBhcmFtcywgeHNrKTsNCisJZGVmYXVsdDogLyogTUxYNV9XUV9UWVBF X0NZQ0xJQyAqLw0KKwkJcmV0dXJuIG1seDVlX3J4X2lzX2xpbmVhcl9za2IocGFyYW1zLCB4c2sp Ow0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3hza2ljb3NxX3BhcmFtKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCQkgICAgICAgdTggbG9nX3dxX3NpemUsDQorCQkJ CSAgICAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtKQ0KK3sNCisJdm9pZCAqc3FjID0g cGFyYW0tPnNxYzsNCisJdm9pZCAqd3EgPSBNTFg1X0FERFJfT0Yoc3FjLCBzcWMsIHdxKTsNCisN CisJbWx4NWVfYnVpbGRfc3FfcGFyYW1fY29tbW9uKHByaXYsIHBhcmFtKTsNCisNCisJTUxYNV9T RVQod3EsIHdxLCBsb2dfd3Ffc3osIGxvZ193cV9zaXplKTsNCit9DQorDQorc3RhdGljIHZvaWQg bWx4NWVfYnVpbGRfeHNrX2NwYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkJICAg c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfeHNrX3Bh cmFtICp4c2ssDQorCQkJCSAgIHN0cnVjdCBtbHg1ZV9jaGFubmVsX3BhcmFtICpjcGFyYW0pDQor ew0KKwljb25zdCB1OCB4c2tpY29zcV9zaXplID0gTUxYNUVfUEFSQU1TX01JTklNVU1fTE9HX1NR X1NJWkU7DQorDQorCW1seDVlX2J1aWxkX3JxX3BhcmFtKHByaXYsIHBhcmFtcywgeHNrLCAmY3Bh cmFtLT5ycSk7DQorCW1seDVlX2J1aWxkX3hkcHNxX3BhcmFtKHByaXYsIHBhcmFtcywgJmNwYXJh bS0+eGRwX3NxKTsNCisJbWx4NWVfYnVpbGRfeHNraWNvc3FfcGFyYW0ocHJpdiwgeHNraWNvc3Ff c2l6ZSwgJmNwYXJhbS0+aWNvc3EpOw0KKwltbHg1ZV9idWlsZF9yeF9jcV9wYXJhbShwcml2LCBw YXJhbXMsIHhzaywgJmNwYXJhbS0+cnhfY3EpOw0KKwltbHg1ZV9idWlsZF90eF9jcV9wYXJhbShw cml2LCBwYXJhbXMsICZjcGFyYW0tPnR4X2NxKTsNCisJbWx4NWVfYnVpbGRfaWNvX2NxX3BhcmFt KHByaXYsIHhza2ljb3NxX3NpemUsICZjcGFyYW0tPmljb3NxX2NxKTsNCit9DQorDQoraW50IG1s eDVlX29wZW5feHNrKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfcGFyYW1z ICpwYXJhbXMsDQorCQkgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ssIHN0cnVjdCB4ZHBf dW1lbSAqdW1lbSwNCisJCSAgIHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQ0KK3sNCisJc3RydWN0 IG1seDVlX2NoYW5uZWxfcGFyYW0gY3BhcmFtID0ge307DQorCXN0cnVjdCBuZXRfZGltX2NxX21v ZGVyIGljb2NxX21vZGVyID0ge307DQorCWludCBlcnI7DQorDQorCWlmICghbWx4NWVfdmFsaWRh dGVfeHNrX3BhcmFtKHBhcmFtcywgeHNrLCBwcml2LT5tZGV2KSkNCisJCXJldHVybiAtRUlOVkFM Ow0KKw0KKwltbHg1ZV9idWlsZF94c2tfY3BhcmFtKHByaXYsIHBhcmFtcywgeHNrLCAmY3BhcmFt KTsNCisNCisJZXJyID0gbWx4NWVfb3Blbl9jcShjLCBwYXJhbXMtPnJ4X2NxX21vZGVyYXRpb24s ICZjcGFyYW0ucnhfY3EsICZjLT54c2tycS5jcSk7DQorCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJ cmV0dXJuIGVycjsNCisNCisJZXJyID0gbWx4NWVfb3Blbl9ycShjLCBwYXJhbXMsICZjcGFyYW0u cnEsIHhzaywgdW1lbSwgJmMtPnhza3JxKTsNCisJaWYgKHVubGlrZWx5KGVycikpDQorCQlnb3Rv IGVycl9jbG9zZV9yeF9jcTsNCisNCisJZXJyID0gbWx4NWVfb3Blbl9jcShjLCBwYXJhbXMtPnR4 X2NxX21vZGVyYXRpb24sICZjcGFyYW0udHhfY3EsICZjLT54c2tzcS5jcSk7DQorCWlmICh1bmxp a2VseShlcnIpKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJLyogQ3JlYXRlIGEgc2VwYXJhdGUgU1Es IHNvIHRoYXQgd2hlbiB0aGUgVU1FTSBpcyBkaXNhYmxlZCwgd2UgY291bGQNCisJICogY2xvc2Ug dGhpcyBTUSBzYWZlbHkgYW5kIHN0b3AgcmVjZWl2aW5nIENRRXMuIEluIG90aGVyIGNhc2UsIGUu Zy4sIGlmDQorCSAqIHRoZSBYRFBTUSB3YXMgdXNlZCBpbnN0ZWFkLCB3ZSBtaWdodCBydW4gaW50 byB0cm91YmxlIHdoZW4gdGhlIFVNRU0NCisJICogaXMgZGlzYWJsZWQgYW5kIHRoZW4gcmVlbmFi bGVkLCBidXQgdGhlIFNRIGNvbnRpbnVlcyByZWNlaXZpbmcgQ1FFcw0KKwkgKiBmcm9tIHRoZSBv bGQgVU1FTS4NCisJICovDQorCWVyciA9IG1seDVlX29wZW5feGRwc3EoYywgcGFyYW1zLCAmY3Bh cmFtLnhkcF9zcSwgdW1lbSwgJmMtPnhza3NxLCB0cnVlKTsNCisJaWYgKHVubGlrZWx5KGVycikp DQorCQlnb3RvIGVycl9jbG9zZV90eF9jcTsNCisNCisJZXJyID0gbWx4NWVfb3Blbl9jcShjLCBp Y29jcV9tb2RlciwgJmNwYXJhbS5pY29zcV9jcSwgJmMtPnhza2ljb3NxLmNxKTsNCisJaWYgKHVu bGlrZWx5KGVycikpDQorCQlnb3RvIGVycl9jbG9zZV9zcTsNCisNCisJLyogQ3JlYXRlIGEgZGVk aWNhdGVkIFNRIGZvciBwb3N0aW5nIE5PUHMgd2hlbmV2ZXIgd2UgbmVlZCBhbiBJUlEgdG8gYmUN CisJICogdHJpZ2dlcmVkIGFuZCBOQVBJIHRvIGJlIGNhbGxlZCBvbiB0aGUgY29ycmVjdCBDUFUu DQorCSAqLw0KKwllcnIgPSBtbHg1ZV9vcGVuX2ljb3NxKGMsIHBhcmFtcywgJmNwYXJhbS5pY29z cSwgJmMtPnhza2ljb3NxKTsNCisJaWYgKHVubGlrZWx5KGVycikpDQorCQlnb3RvIGVycl9jbG9z ZV9pY29jcTsNCisNCisJc3Bpbl9sb2NrX2luaXQoJmMtPnhza2ljb3NxX2xvY2spOw0KKw0KKwlz ZXRfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBjLT5zdGF0ZSk7DQorDQorCXJldHVybiAw Ow0KKw0KK2Vycl9jbG9zZV9pY29jcToNCisJbWx4NWVfY2xvc2VfY3EoJmMtPnhza2ljb3NxLmNx KTsNCisNCitlcnJfY2xvc2Vfc3E6DQorCW1seDVlX2Nsb3NlX3hkcHNxKCZjLT54c2tzcSk7DQor DQorZXJyX2Nsb3NlX3R4X2NxOg0KKwltbHg1ZV9jbG9zZV9jcSgmYy0+eHNrc3EuY3EpOw0KKw0K K2Vycl9jbG9zZV9yeF9jcToNCisJbWx4NWVfY2xvc2VfY3EoJmMtPnhza3JxLmNxKTsNCisNCisJ cmV0dXJuIGVycjsNCit9DQorDQordm9pZCBtbHg1ZV9jbG9zZV94c2soc3RydWN0IG1seDVlX2No YW5uZWwgKmMpDQorew0KKwljbGVhcl9iaXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ssIGMtPnN0 YXRlKTsNCisJbmFwaV9zeW5jaHJvbml6ZSgmYy0+bmFwaSk7DQorDQorCW1seDVlX2Nsb3NlX3Jx KCZjLT54c2tycSk7DQorCW1seDVlX2Nsb3NlX2NxKCZjLT54c2tycS5jcSk7DQorCW1seDVlX2Ns b3NlX2ljb3NxKCZjLT54c2tpY29zcSk7DQorCW1seDVlX2Nsb3NlX2NxKCZjLT54c2tpY29zcS5j cSk7DQorCW1seDVlX2Nsb3NlX3hkcHNxKCZjLT54c2tzcSk7DQorCW1seDVlX2Nsb3NlX2NxKCZj LT54c2tzcS5jcSk7DQorfQ0KKw0KK3ZvaWQgbWx4NWVfYWN0aXZhdGVfeHNrKHN0cnVjdCBtbHg1 ZV9jaGFubmVsICpjKQ0KK3sNCisJc2V0X2JpdChNTFg1RV9SUV9TVEFURV9FTkFCTEVELCAmYy0+ eHNrcnEuc3RhdGUpOw0KKwkvKiBUWCBxdWV1ZSBpcyBjcmVhdGVkIGFjdGl2ZS4gKi8NCisJbWx4 NWVfdHJpZ2dlcl9pcnEoJmMtPnhza2ljb3NxKTsNCit9DQorDQordm9pZCBtbHg1ZV9kZWFjdGl2 YXRlX3hzayhzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCit7DQorCW1seDVlX2RlYWN0aXZhdGVf cnEoJmMtPnhza3JxKTsNCisJLyogVFggcXVldWUgaXMgZGlzYWJsZWQgb24gY2xvc2UuICovDQor fQ0KKw0KK3N0YXRpYyBpbnQgbWx4NWVfcmVkaXJlY3RfeHNrX3JxdChzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdiwgdTE2IGl4LCB1MzIgcnFuKQ0KK3sNCisJc3RydWN0IG1seDVlX3JlZGlyZWN0X3Jx dF9wYXJhbSBkaXJlY3RfcnJwID0gew0KKwkJLmlzX3JzcyA9IGZhbHNlLA0KKwkJew0KKwkJCS5y cW4gPSBycW4sDQorCQl9LA0KKwl9Ow0KKw0KKwl1MzIgcnF0biA9IHByaXYtPnhza190aXJbaXhd LnJxdC5ycXRuOw0KKw0KKwlyZXR1cm4gbWx4NWVfcmVkaXJlY3RfcnF0KHByaXYsIHJxdG4sIDEs IGRpcmVjdF9ycnApOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdF90b19jaGFu bmVsKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYykNCit7 DQorCXJldHVybiBtbHg1ZV9yZWRpcmVjdF94c2tfcnF0KHByaXYsIGMtPml4LCBjLT54c2tycS5y cW4pOw0KK30NCisNCitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdF90b19kcm9wKHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2LCB1MTYgaXgpDQorew0KKwlyZXR1cm4gbWx4NWVfcmVkaXJlY3RfeHNr X3JxdChwcml2LCBpeCwgcHJpdi0+ZHJvcF9ycS5ycW4pOw0KK30NCisNCitpbnQgbWx4NWVfeHNr X3JlZGlyZWN0X3JxdHNfdG9fY2hhbm5lbHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVj dCBtbHg1ZV9jaGFubmVscyAqY2hzKQ0KK3sNCisJaW50IGVyciwgaTsNCisNCisJaWYgKCFwcml2 LT54c2sucmVmY250KQ0KKwkJcmV0dXJuIDA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBjaHMtPm51 bTsgaSsrKSB7DQorCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyA9IGNocy0+Y1tpXTsNCisNCisJ CWlmICghdGVzdF9iaXQoTUxYNUVfQ0hBTk5FTF9TVEFURV9YU0ssIGMtPnN0YXRlKSkNCisJCQlj b250aW51ZTsNCisNCisJCWVyciA9IG1seDVlX3hza19yZWRpcmVjdF9ycXRfdG9fY2hhbm5lbChw cml2LCBjKTsNCisJCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJCWdvdG8gZXJyX3N0b3A7DQorCX0N CisNCisJcmV0dXJuIDA7DQorDQorZXJyX3N0b3A6DQorCWZvciAoaS0tOyBpID49IDA7IGktLSkg ew0KKwkJaWYgKCF0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgY2hzLT5jW2ldLT5z dGF0ZSkpDQorCQkJY29udGludWU7DQorDQorCQltbHg1ZV94c2tfcmVkaXJlY3RfcnF0X3RvX2Ry b3AocHJpdiwgaSk7DQorCX0NCisNCisJcmV0dXJuIGVycjsNCit9DQorDQordm9pZCBtbHg1ZV94 c2tfcmVkaXJlY3RfcnF0c190b19kcm9wKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qg bWx4NWVfY2hhbm5lbHMgKmNocykNCit7DQorCWludCBpOw0KKw0KKwlpZiAoIXByaXYtPnhzay5y ZWZjbnQpDQorCQlyZXR1cm47DQorDQorCWZvciAoaSA9IDA7IGkgPCBjaHMtPm51bTsgaSsrKSB7 DQorCQlpZiAoIXRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBjaHMtPmNbaV0tPnN0 YXRlKSkNCisJCQljb250aW51ZTsNCisNCisJCW1seDVlX3hza19yZWRpcmVjdF9ycXRfdG9fZHJv cChwcml2LCBpKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3NldHVwLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLjBkZDExYjgxYzA0Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9zZXR1cC5oDQpAQCAt MCwwICsxLDI1IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTGlu dXgtT3BlbklCICovDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xvZ2ll cy4gKi8NCisNCisjaWZuZGVmIF9fTUxYNV9FTl9YU0tfU0VUVVBfSF9fDQorI2RlZmluZSBfX01M WDVfRU5fWFNLX1NFVFVQX0hfXw0KKw0KKyNpbmNsdWRlICJlbi5oIg0KKw0KK3N0cnVjdCBtbHg1 ZV94c2tfcGFyYW07DQorDQorYm9vbCBtbHg1ZV92YWxpZGF0ZV94c2tfcGFyYW0oc3RydWN0IG1s eDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhz aywNCisJCQkgICAgICBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldik7DQoraW50IG1seDVlX29w ZW5feHNrKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJh bXMsDQorCQkgICBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ssIHN0cnVjdCB4ZHBfdW1lbSAq dW1lbSwNCisJCSAgIHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKTsNCit2b2lkIG1seDVlX2Nsb3Nl X3hzayhzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyk7DQordm9pZCBtbHg1ZV9hY3RpdmF0ZV94c2so c3RydWN0IG1seDVlX2NoYW5uZWwgKmMpOw0KK3ZvaWQgbWx4NWVfZGVhY3RpdmF0ZV94c2soc3Ry dWN0IG1seDVlX2NoYW5uZWwgKmMpOw0KK2ludCBtbHg1ZV94c2tfcmVkaXJlY3RfcnF0X3RvX2No YW5uZWwoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKTsN CitpbnQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdF90b19kcm9wKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LCB1MTYgaXgpOw0KK2ludCBtbHg1ZV94c2tfcmVkaXJlY3RfcnF0c190b19jaGFubmVscyhz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IG1seDVlX2NoYW5uZWxzICpjaHMpOw0KK3Zv aWQgbWx4NWVfeHNrX3JlZGlyZWN0X3JxdHNfdG9fZHJvcChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwgc3RydWN0IG1seDVlX2NoYW5uZWxzICpjaHMpOw0KKw0KKyNlbmRpZiAvKiBfX01MWDVfRU5f WFNLX1NFVFVQX0hfXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbi94c2svdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi94c2svdHguYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwMC4uOWE3MmI1OTgzOWJhDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmMNCkBAIC0wLDAgKzEsMTA4IEBA DQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTGludXgtT3BlbklCDQor LyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xvZ2llcy4gKi8NCisNCisjaW5j bHVkZSAidHguaCINCisjaW5jbHVkZSAidW1lbS5oIg0KKyNpbmNsdWRlICJlbi94ZHAuaCINCisj aW5jbHVkZSA8bmV0L3hkcF9zb2NrLmg+DQorDQoraW50IG1seDVlX3hza19hc3luY194bWl0KHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBxaWQpDQorew0KKwlzdHJ1Y3QgbWx4NWVfcHJpdiAq cHJpdiA9IG5ldGRldl9wcml2KGRldik7DQorCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjOw0KKw0K KwlpZiAodW5saWtlbHkoIW1seDVlX3hkcF9pc19vcGVuKHByaXYpKSkNCisJCXJldHVybiAtRU5F VERPV047DQorDQorCWlmICh1bmxpa2VseSghbWx4NWVfeHNrX2lzX3ZhbGlkX3FpZChwcml2LCBx aWQpKSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwljID0gcHJpdi0+Y2hhbm5lbHMuY1txaWRd Ow0KKw0KKwlpZiAodW5saWtlbHkoIXRlc3RfYml0KE1MWDVFX0NIQU5ORUxfU1RBVEVfWFNLLCBj LT5zdGF0ZSkpKQ0KKwkJcmV0dXJuIC1FTlhJTzsNCisNCisJaWYgKCFuYXBpX2lmX3NjaGVkdWxl ZF9tYXJrX21pc3NlZCgmYy0+bmFwaSkpIHsNCisJCXNwaW5fbG9jaygmYy0+eHNraWNvc3FfbG9j ayk7DQorCQltbHg1ZV90cmlnZ2VyX2lycSgmYy0+eHNraWNvc3EpOw0KKwkJc3Bpbl91bmxvY2so JmMtPnhza2ljb3NxX2xvY2spOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCisvKiBXaGVu IFRYIGZhaWxzIChiZWNhdXNlIG9mIHRoZSBzaXplIG9mIHRoZSBwYWNrZXQpLCB3ZSBuZWVkIHRv IGdldCBjb21wbGV0aW9ucw0KKyAqIGluIG9yZGVyLCBzbyBwb3N0IGEgTk9QIHRvIGdldCBhIENR RS4gU2luY2UgQUZfWERQIGRvZXNuJ3QgZGlzdGluZ3Vpc2gNCisgKiBiZXR3ZWVuIHN1Y2Nlc3Nm dWwgVFggYW5kIGVycm9ycywgaGFuZGxpbmcgaW4gbWx4NWVfcG9sbF94ZHBzcV9jcSBpcyB0aGUN CisgKiBzYW1lLg0KKyAqLw0KK3N0YXRpYyB2b2lkIG1seDVlX3hza190eF9wb3N0X2VycihzdHJ1 Y3QgbWx4NWVfeGRwc3EgKnNxLA0KKwkJCQkgIHN0cnVjdCBtbHg1ZV94ZHBfaW5mbyAqeGRwaSkN Cit7DQorCXUxNiBwaSA9IG1seDVfd3FfY3ljX2N0cjJpeCgmc3EtPndxLCBzcS0+cGMpOw0KKwlz dHJ1Y3QgbWx4NWVfeGRwX3dxZV9pbmZvICp3aSA9ICZzcS0+ZGIud3FlX2luZm9bcGldOw0KKwlz dHJ1Y3QgbWx4NWVfdHhfd3FlICpub3B3cWU7DQorDQorCXdpLT5udW1fd3FlYmJzID0gMTsNCisJ d2ktPm51bV9wa3RzID0gMTsNCisNCisJbm9wd3FlID0gbWx4NWVfcG9zdF9ub3AoJnNxLT53cSwg c3EtPnNxbiwgJnNxLT5wYyk7DQorCW1seDVlX3hkcGlfZmlmb19wdXNoKCZzcS0+ZGIueGRwaV9m aWZvLCB4ZHBpKTsNCisJc3EtPmRvb3JiZWxsX2NzZWcgPSAmbm9wd3FlLT5jdHJsOw0KK30NCisN Citib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNpZ25lZCBpbnQg YnVkZ2V0KQ0KK3sNCisJc3RydWN0IHhkcF91bWVtICp1bWVtID0gc3EtPnVtZW07DQorCXN0cnVj dCBtbHg1ZV94ZHBfaW5mbyB4ZHBpOw0KKwlzdHJ1Y3QgbWx4NWVfeGRwX3htaXRfZGF0YSB4ZHB0 eGQ7DQorCWJvb2wgd29ya19kb25lID0gdHJ1ZTsNCisJYm9vbCBmbHVzaCA9IGZhbHNlOw0KKw0K Kwl4ZHBpLm1vZGUgPSBNTFg1RV9YRFBfWE1JVF9NT0RFX1hTSzsNCisNCisJZm9yICg7IGJ1ZGdl dDsgYnVkZ2V0LS0pIHsNCisJCWludCBjaGVja19yZXN1bHQgPSBzcS0+eG1pdF94ZHBfZnJhbWVf Y2hlY2soc3EpOw0KKwkJc3RydWN0IHhkcF9kZXNjIGRlc2M7DQorDQorCQlpZiAodW5saWtlbHko Y2hlY2tfcmVzdWx0IDwgMCkpIHsNCisJCQl3b3JrX2RvbmUgPSBmYWxzZTsNCisJCQlicmVhazsN CisJCX0NCisNCisJCWlmICgheHNrX3VtZW1fY29uc3VtZV90eCh1bWVtLCAmZGVzYykpIHsNCisJ CQkvKiBUWCB3aWxsIGdldCBzdHVjayB1bnRpbCBzb21ldGhpbmcgd2FrZXMgaXQgdXAgYnkNCisJ CQkgKiB0cmlnZ2VyaW5nIE5BUEkuIEN1cnJlbnRseSBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlDQor CQkJICogYXBwbGljYXRpb24gY2FsbHMgc2VuZHRvKCkgaWYgdGhlcmUgYXJlIGNvbnN1bWVkLCBi dXQNCisJCQkgKiBub3QgY29tcGxldGVkIGZyYW1lcy4NCisJCQkgKi8NCisJCQlicmVhazsNCisJ CX0NCisNCisJCXhkcHR4ZC5kbWFfYWRkciA9IHhkcF91bWVtX2dldF9kbWEodW1lbSwgZGVzYy5h ZGRyKTsNCisJCXhkcHR4ZC5kYXRhID0geGRwX3VtZW1fZ2V0X2RhdGEodW1lbSwgZGVzYy5hZGRy KTsNCisJCXhkcHR4ZC5sZW4gPSBkZXNjLmxlbjsNCisNCisJCWRtYV9zeW5jX3NpbmdsZV9mb3Jf ZGV2aWNlKHNxLT5wZGV2LCB4ZHB0eGQuZG1hX2FkZHIsDQorCQkJCQkgICB4ZHB0eGQubGVuLCBE TUFfQklESVJFQ1RJT05BTCk7DQorDQorCQlpZiAodW5saWtlbHkoIXNxLT54bWl0X3hkcF9mcmFt ZShzcSwgJnhkcHR4ZCwgJnhkcGksIGNoZWNrX3Jlc3VsdCkpKSB7DQorCQkJaWYgKHNxLT5tcHdx ZS53cWUpDQorCQkJCW1seDVlX3hkcF9tcHdxZV9jb21wbGV0ZShzcSk7DQorDQorCQkJbWx4NWVf eHNrX3R4X3Bvc3RfZXJyKHNxLCAmeGRwaSk7DQorCQl9DQorDQorCQlmbHVzaCA9IHRydWU7DQor CX0NCisNCisJaWYgKGZsdXNoKSB7DQorCQlpZiAoc3EtPm1wd3FlLndxZSkNCisJCQltbHg1ZV94 ZHBfbXB3cWVfY29tcGxldGUoc3EpOw0KKwkJbWx4NWVfeG1pdF94ZHBfZG9vcmJlbGwoc3EpOw0K Kw0KKwkJeHNrX3VtZW1fY29uc3VtZV90eF9kb25lKHVtZW0pOw0KKwl9DQorDQorCXJldHVybiAh KGJ1ZGdldCAmJiB3b3JrX2RvbmUpOw0KK30NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLjdhZGQxOGJmNzhkOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5oDQpAQCAtMCww ICsxLDE1IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTGludXgt T3BlbklCICovDQorLyogQ29weXJpZ2h0IChjKSAyMDE5IE1lbGxhbm94IFRlY2hub2xvZ2llcy4g Ki8NCisNCisjaWZuZGVmIF9fTUxYNV9FTl9YU0tfVFhfSF9fDQorI2RlZmluZSBfX01MWDVfRU5f WFNLX1RYX0hfXw0KKw0KKyNpbmNsdWRlICJlbi5oIg0KKw0KKy8qIFRYIGRhdGEgcGF0aCAqLw0K Kw0KK2ludCBtbHg1ZV94c2tfYXN5bmNfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIg cWlkKTsNCisNCitib29sIG1seDVlX3hza190eChzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCB1bnNp Z25lZCBpbnQgYnVkZ2V0KTsNCisNCisjZW5kaWYgLyogX19NTFg1X0VOX1hTS19UWF9IX18gKi8N CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4v eHNrL3VtZW0uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94 c2svdW1lbS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5jOTkx N2M1N2YwNTQNCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbi94c2svdW1lbS5jDQpAQCAtMCwwICsxLDI1MiBAQA0KKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIExpbnV4LU9wZW5JQg0KKy8qIENvcHlyaWdo dCAoYykgMjAxOSBNZWxsYW5veCBUZWNobm9sb2dpZXMuICovDQorDQorI2luY2x1ZGUgPG5ldC94 ZHBfc29jay5oPg0KKyNpbmNsdWRlICJ1bWVtLmgiDQorI2luY2x1ZGUgInNldHVwLmgiDQorI2lu Y2x1ZGUgImVuL3BhcmFtcy5oIg0KKw0KK3N0YXRpYyBpbnQgbWx4NWVfeHNrX21hcF91bWVtKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCSAgICAgIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSkN Cit7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPm1kZXYtPmRldmljZTsNCisJdTMyIGk7 DQorDQorCWZvciAoaSA9IDA7IGkgPCB1bWVtLT5ucGdzOyBpKyspIHsNCisJCWRtYV9hZGRyX3Qg ZG1hID0gZG1hX21hcF9wYWdlKGRldiwgdW1lbS0+cGdzW2ldLCAwLCBQQUdFX1NJWkUsDQorCQkJ CQkgICAgICBETUFfQklESVJFQ1RJT05BTCk7DQorDQorCQlpZiAodW5saWtlbHkoZG1hX21hcHBp bmdfZXJyb3IoZGV2LCBkbWEpKSkNCisJCQlnb3RvIGVycl91bm1hcDsNCisJCXVtZW0tPnBhZ2Vz W2ldLmRtYSA9IGRtYTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCisNCitlcnJfdW5tYXA6DQorCXdo aWxlIChpLS0pIHsNCisJCWRtYV91bm1hcF9wYWdlKGRldiwgdW1lbS0+cGFnZXNbaV0uZG1hLCBQ QUdFX1NJWkUsDQorCQkJICAgICAgIERNQV9CSURJUkVDVElPTkFMKTsNCisJCXVtZW0tPnBhZ2Vz W2ldLmRtYSA9IDA7DQorCX0NCisNCisJcmV0dXJuIC1FTk9NRU07DQorfQ0KKw0KK3N0YXRpYyB2 b2lkIG1seDVlX3hza191bm1hcF91bWVtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCQkg c3RydWN0IHhkcF91bWVtICp1bWVtKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ bWRldi0+ZGV2aWNlOw0KKwl1MzIgaTsNCisNCisJZm9yIChpID0gMDsgaSA8IHVtZW0tPm5wZ3M7 IGkrKykgew0KKwkJZG1hX3VubWFwX3BhZ2UoZGV2LCB1bWVtLT5wYWdlc1tpXS5kbWEsIFBBR0Vf U0laRSwNCisJCQkgICAgICAgRE1BX0JJRElSRUNUSU9OQUwpOw0KKwkJdW1lbS0+cGFnZXNbaV0u ZG1hID0gMDsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50IG1seDVlX3hza19nZXRfdW1lbXMoc3Ry dWN0IG1seDVlX3hzayAqeHNrKQ0KK3sNCisJaWYgKCF4c2stPnVtZW1zKSB7DQorCQl4c2stPnVt ZW1zID0ga2NhbGxvYyhNTFg1RV9NQVhfTlVNX0NIQU5ORUxTLA0KKwkJCQkgICAgIHNpemVvZigq eHNrLT51bWVtcyksIEdGUF9LRVJORUwpOw0KKwkJaWYgKHVubGlrZWx5KCF4c2stPnVtZW1zKSkN CisJCQlyZXR1cm4gLUVOT01FTTsNCisJfQ0KKw0KKwl4c2stPnJlZmNudCsrOw0KKwl4c2stPmV2 ZXJfdXNlZCA9IHRydWU7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBtbHg1 ZV94c2tfcHV0X3VtZW1zKHN0cnVjdCBtbHg1ZV94c2sgKnhzaykNCit7DQorCWlmICghLS14c2st PnJlZmNudCkgew0KKwkJa2ZyZWUoeHNrLT51bWVtcyk7DQorCQl4c2stPnVtZW1zID0gTlVMTDsN CisJfQ0KK30NCisNCitzdGF0aWMgaW50IG1seDVlX3hza19hZGRfdW1lbShzdHJ1Y3QgbWx4NWVf eHNrICp4c2ssIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgdTE2IGl4KQ0KK3sNCisJaW50IGVycjsN CisNCisJZXJyID0gbWx4NWVfeHNrX2dldF91bWVtcyh4c2spOw0KKwlpZiAodW5saWtlbHkoZXJy KSkNCisJCXJldHVybiBlcnI7DQorDQorCXhzay0+dW1lbXNbaXhdID0gdW1lbTsNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1seDVlX3hza19yZW1vdmVfdW1lbShzdHJ1Y3QgbWx4 NWVfeHNrICp4c2ssIHUxNiBpeCkNCit7DQorCXhzay0+dW1lbXNbaXhdID0gTlVMTDsNCisNCisJ bWx4NWVfeHNrX3B1dF91bWVtcyh4c2spOw0KK30NCisNCitzdGF0aWMgYm9vbCBtbHg1ZV94c2tf aXNfdW1lbV9zYW5lKHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSkNCit7DQorCXJldHVybiB1bWVtLT5o ZWFkcm9vbSA8PSAweGZmZmYgJiYgdW1lbS0+Y2h1bmtfc2l6ZV9ub2hyIDw9IDB4ZmZmZjsNCit9 DQorDQordm9pZCBtbHg1ZV9idWlsZF94c2tfcGFyYW0oc3RydWN0IHhkcF91bWVtICp1bWVtLCBz dHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spDQorew0KKwl4c2stPmhlYWRyb29tID0gdW1lbS0+ aGVhZHJvb207DQorCXhzay0+Y2h1bmtfc2l6ZSA9IHVtZW0tPmNodW5rX3NpemVfbm9ociArIHVt ZW0tPmhlYWRyb29tOw0KK30NCisNCitzdGF0aWMgaW50IG1seDVlX3hza19lbmFibGVfbG9ja2Vk KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCQkgICBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0s IHUxNiBpeCkNCit7DQorCXN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcyA9ICZwcml2LT5jaGFu bmVscy5wYXJhbXM7DQorCXN0cnVjdCBtbHg1ZV94c2tfcGFyYW0geHNrOw0KKwlzdHJ1Y3QgbWx4 NWVfY2hhbm5lbCAqYzsNCisJaW50IGVycjsNCisNCisJaWYgKHVubGlrZWx5KG1seDVlX3hza19n ZXRfdW1lbSgmcHJpdi0+Y2hhbm5lbHMucGFyYW1zLCAmcHJpdi0+eHNrLCBpeCkpKQ0KKwkJcmV0 dXJuIC1FQlVTWTsNCisNCisJaWYgKHVubGlrZWx5KCFtbHg1ZV94c2tfaXNfdW1lbV9zYW5lKHVt ZW0pKSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwllcnIgPSBtbHg1ZV94c2tfbWFwX3VtZW0o cHJpdiwgdW1lbSk7DQorCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJ ZXJyID0gbWx4NWVfeHNrX2FkZF91bWVtKCZwcml2LT54c2ssIHVtZW0sIGl4KTsNCisJaWYgKHVu bGlrZWx5KGVycikpDQorCQlnb3RvIGVycl91bm1hcF91bWVtOw0KKw0KKwltbHg1ZV9idWlsZF94 c2tfcGFyYW0odW1lbSwgJnhzayk7DQorDQorCWlmICghdGVzdF9iaXQoTUxYNUVfU1RBVEVfT1BF TkVELCAmcHJpdi0+c3RhdGUpKSB7DQorCQkvKiBYU0sgb2JqZWN0cyB3aWxsIGJlIGNyZWF0ZWQg b24gb3Blbi4gKi8NCisJCWdvdG8gdmFsaWRhdGVfY2xvc2VkOw0KKwl9DQorDQorCWlmICghcGFy YW1zLT54ZHBfcHJvZykgew0KKwkJLyogWFNLIG9iamVjdHMgd2lsbCBiZSBjcmVhdGVkIHdoZW4g YW4gWERQIHByb2dyYW0gaXMgc2V0LA0KKwkJICogYW5kIHRoZSBjaGFubmVscyBhcmUgcmVvcGVu ZWQuDQorCQkgKi8NCisJCWdvdG8gdmFsaWRhdGVfY2xvc2VkOw0KKwl9DQorDQorCWMgPSBwcml2 LT5jaGFubmVscy5jW2l4XTsNCisNCisJZXJyID0gbWx4NWVfb3Blbl94c2socHJpdiwgcGFyYW1z LCAmeHNrLCB1bWVtLCBjKTsNCisJaWYgKHVubGlrZWx5KGVycikpDQorCQlnb3RvIGVycl9yZW1v dmVfdW1lbTsNCisNCisJbWx4NWVfYWN0aXZhdGVfeHNrKGMpOw0KKw0KKwkvKiBEb24ndCB3YWl0 IGZvciBXUUVzLCBiZWNhdXNlIHRoZSBuZXdlciB4ZHBzb2NrIHNhbXBsZSBkb2Vzbid0IHByb3Zp ZGUNCisJICogYW55IEZpbGwgUmluZyBlbnRyaWVzIGF0IHRoZSBzZXR1cCBzdGFnZS4NCisJICov DQorDQorCWVyciA9IG1seDVlX3hza19yZWRpcmVjdF9ycXRfdG9fY2hhbm5lbChwcml2LCBwcml2 LT5jaGFubmVscy5jW2l4XSk7DQorCWlmICh1bmxpa2VseShlcnIpKQ0KKwkJZ290byBlcnJfZGVh Y3RpdmF0ZTsNCisNCisJcmV0dXJuIDA7DQorDQorZXJyX2RlYWN0aXZhdGU6DQorCW1seDVlX2Rl YWN0aXZhdGVfeHNrKGMpOw0KKwltbHg1ZV9jbG9zZV94c2soYyk7DQorDQorZXJyX3JlbW92ZV91 bWVtOg0KKwltbHg1ZV94c2tfcmVtb3ZlX3VtZW0oJnByaXYtPnhzaywgaXgpOw0KKw0KK2Vycl91 bm1hcF91bWVtOg0KKwltbHg1ZV94c2tfdW5tYXBfdW1lbShwcml2LCB1bWVtKTsNCisNCisJcmV0 dXJuIGVycjsNCisNCit2YWxpZGF0ZV9jbG9zZWQ6DQorCS8qIENoZWNrIHRoZSBjb25maWd1cmF0 aW9uIGluIGFkdmFuY2UsIHJhdGhlciB0aGFuIGZhaWwgYXQgYSBsYXRlciBzdGFnZQ0KKwkgKiAo aW4gbWx4NWVfeGRwX3NldCBvciBvbiBvcGVuKSBhbmQgZW5kIHVwIHdpdGggbm8gY2hhbm5lbHMu DQorCSAqLw0KKwlpZiAoIW1seDVlX3ZhbGlkYXRlX3hza19wYXJhbShwYXJhbXMsICZ4c2ssIHBy aXYtPm1kZXYpKSB7DQorCQllcnIgPSAtRUlOVkFMOw0KKwkJZ290byBlcnJfcmVtb3ZlX3VtZW07 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbWx4NWVfeHNrX2Rpc2Fi bGVfbG9ja2VkKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1MTYgaXgpDQorew0KKwlzdHJ1Y3Qg eGRwX3VtZW0gKnVtZW0gPSBtbHg1ZV94c2tfZ2V0X3VtZW0oJnByaXYtPmNoYW5uZWxzLnBhcmFt cywNCisJCQkJCQkgICAmcHJpdi0+eHNrLCBpeCk7DQorCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpj Ow0KKw0KKwlpZiAodW5saWtlbHkoIXVtZW0pKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCWlm ICghdGVzdF9iaXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUpKQ0KKwkJZ290byBy ZW1vdmVfdW1lbTsNCisNCisJLyogWFNLIFJRIGFuZCBTUSBhcmUgb25seSBjcmVhdGVkIGlmIFhE UCBwcm9ncmFtIGlzIHNldC4gKi8NCisJaWYgKCFwcml2LT5jaGFubmVscy5wYXJhbXMueGRwX3By b2cpDQorCQlnb3RvIHJlbW92ZV91bWVtOw0KKw0KKwljID0gcHJpdi0+Y2hhbm5lbHMuY1tpeF07 DQorCW1seDVlX3hza19yZWRpcmVjdF9ycXRfdG9fZHJvcChwcml2LCBpeCk7DQorCW1seDVlX2Rl YWN0aXZhdGVfeHNrKGMpOw0KKwltbHg1ZV9jbG9zZV94c2soYyk7DQorDQorcmVtb3ZlX3VtZW06 DQorCW1seDVlX3hza19yZW1vdmVfdW1lbSgmcHJpdi0+eHNrLCBpeCk7DQorCW1seDVlX3hza191 bm1hcF91bWVtKHByaXYsIHVtZW0pOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlu dCBtbHg1ZV94c2tfZW5hYmxlX3VtZW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCB4 ZHBfdW1lbSAqdW1lbSwNCisJCQkJIHUxNiBpeCkNCit7DQorCWludCBlcnI7DQorDQorCW11dGV4 X2xvY2soJnByaXYtPnN0YXRlX2xvY2spOw0KKwllcnIgPSBtbHg1ZV94c2tfZW5hYmxlX2xvY2tl ZChwcml2LCB1bWVtLCBpeCk7DQorCW11dGV4X3VubG9jaygmcHJpdi0+c3RhdGVfbG9jayk7DQor DQorCXJldHVybiBlcnI7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbWx4NWVfeHNrX2Rpc2FibGVfdW1l bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IGl4KQ0KK3sNCisJaW50IGVycjsNCisNCisJ bXV0ZXhfbG9jaygmcHJpdi0+c3RhdGVfbG9jayk7DQorCWVyciA9IG1seDVlX3hza19kaXNhYmxl X2xvY2tlZChwcml2LCBpeCk7DQorCW11dGV4X3VubG9jaygmcHJpdi0+c3RhdGVfbG9jayk7DQor DQorCXJldHVybiBlcnI7DQorfQ0KKw0KK2ludCBtbHg1ZV94c2tfc2V0dXBfdW1lbShzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0sIHUxNiBxaWQpDQorew0KKwlz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7DQorDQorCWlmICh1bmxp a2VseSghbWx4NWVfeHNrX2lzX3ZhbGlkX3FpZChwcml2LCBxaWQpKSkNCisJCXJldHVybiAtRUlO VkFMOw0KKw0KKwlyZXR1cm4gdW1lbSA/IG1seDVlX3hza19lbmFibGVfdW1lbShwcml2LCB1bWVt LCBxaWQpIDoNCisJCSAgICAgIG1seDVlX3hza19kaXNhYmxlX3VtZW0ocHJpdiwgcWlkKTsNCit9 DQorDQoraW50IG1seDVlX3hza19yZXNpemVfcmV1c2VxKHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwg dTMyIG5lbnRyaWVzKQ0KK3sNCisJc3RydWN0IHhkcF91bWVtX2ZxX3JldXNlICpyZXVzZXE7DQor DQorCXJldXNlcSA9IHhza19yZXVzZXFfcHJlcGFyZShuZW50cmllcyk7DQorCWlmICh1bmxpa2Vs eSghcmV1c2VxKSkNCisJCXJldHVybiAtRU5PTUVNOw0KKwl4c2tfcmV1c2VxX2ZyZWUoeHNrX3Jl dXNlcV9zd2FwKHVtZW0sIHJldXNlcSkpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay91bWVtLmgg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3VtZW0uaA0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMTA1M2VjZGYxZDg4DQot LS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvZW4veHNrL3VtZW0uaA0KQEAgLTAsMCArMSwzNCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wIE9SIExpbnV4LU9wZW5JQiAqLw0KKy8qIENvcHlyaWdodCAoYykgMjAx OSBNZWxsYW5veCBUZWNobm9sb2dpZXMuICovDQorDQorI2lmbmRlZiBfX01MWDVfRU5fWFNLX1VN RU1fSF9fDQorI2RlZmluZSBfX01MWDVfRU5fWFNLX1VNRU1fSF9fDQorDQorI2luY2x1ZGUgImVu LmgiDQorDQorc3RhdGljIGlubGluZSBib29sIG1seDVlX3hza19pc192YWxpZF9xaWQoc3RydWN0 IG1seDVlX3ByaXYgKnByaXYsIHUxNiBxaWQpDQorew0KKwlyZXR1cm4gcWlkIDwgcHJpdi0+Y2hh bm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsNCit9DQorDQorc3RhdGljIGlubGluZSBzdHJ1Y3Qg eGRwX3VtZW0gKm1seDVlX3hza19nZXRfdW1lbShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMs DQorCQkJCQkJICBzdHJ1Y3QgbWx4NWVfeHNrICp4c2ssIHUxNiBpeCkNCit7DQorCWlmICgheHNr IHx8ICF4c2stPnVtZW1zKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWlmICh1bmxpa2VseShpeCA+ PSBwYXJhbXMtPm51bV9jaGFubmVscykpDQorCQlyZXR1cm4gTlVMTDsNCisNCisJcmV0dXJuIHhz ay0+dW1lbXNbaXhdOw0KK30NCisNCitzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtOw0KK3ZvaWQgbWx4 NWVfYnVpbGRfeHNrX3BhcmFtKHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwgc3RydWN0IG1seDVlX3hz a19wYXJhbSAqeHNrKTsNCisNCisvKiAubmRvX2JwZiBjYWxsYmFjay4gKi8NCitpbnQgbWx4NWVf eHNrX3NldHVwX3VtZW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhkcF91bWVtICp1 bWVtLCB1MTYgcWlkKTsNCisNCitpbnQgbWx4NWVfeHNrX3Jlc2l6ZV9yZXVzZXEoc3RydWN0IHhk cF91bWVtICp1bWVtLCB1MzIgbmVudHJpZXMpOw0KKw0KKyNlbmRpZiAvKiBfX01MWDVfRU5fWFNL X1VNRU1fSF9fICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbl9ldGh0b29sLmMNCmluZGV4IDc2YTNkMDFhNDg5ZS4uMDEwMjc5YTNlODYxIDEw MDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0 aHRvb2wuYw0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu X2V0aHRvb2wuYw0KQEAgLTMyLDYgKzMyLDcgQEANCiANCiAjaW5jbHVkZSAiZW4uaCINCiAjaW5j bHVkZSAiZW4vcG9ydC5oIg0KKyNpbmNsdWRlICJlbi94c2svdW1lbS5oIg0KICNpbmNsdWRlICJs aWIvY2xvY2suaCINCiANCiB2b2lkIG1seDVlX2V0aHRvb2xfZ2V0X2RydmluZm8oc3RydWN0IG1s eDVlX3ByaXYgKnByaXYsDQpAQCAtNDAzLDYgKzQwNCw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dl dF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KIGludCBtbHg1ZV9ldGh0b29sX3Nl dF9jaGFubmVscyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiAJCQkgICAgICAgc3RydWN0IGV0 aHRvb2xfY2hhbm5lbHMgKmNoKQ0KIHsNCisJc3RydWN0IG1seDVlX3BhcmFtcyAqY3VyX3BhcmFt cyA9ICZwcml2LT5jaGFubmVscy5wYXJhbXM7DQogCXVuc2lnbmVkIGludCBjb3VudCA9IGNoLT5j b21iaW5lZF9jb3VudDsNCiAJc3RydWN0IG1seDVlX2NoYW5uZWxzIG5ld19jaGFubmVscyA9IHt9 Ow0KIAlib29sIGFyZnNfZW5hYmxlZDsNCkBAIC00MTQsMTYgKzQxNiwzMSBAQCBpbnQgbWx4NWVf ZXRodG9vbF9zZXRfY2hhbm5lbHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCQlyZXR1cm4g LUVJTlZBTDsNCiAJfQ0KIA0KLQlpZiAocHJpdi0+Y2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVs cyA9PSBjb3VudCkNCisJaWYgKGN1cl9wYXJhbXMtPm51bV9jaGFubmVscyA9PSBjb3VudCkNCiAJ CXJldHVybiAwOw0KIA0KIAltdXRleF9sb2NrKCZwcml2LT5zdGF0ZV9sb2NrKTsNCiANCisJLyog RG9uJ3QgYWxsb3cgY2xvc2luZyB0aGUgY2hhbm5lbHMgaWYgdGhleSBoYXZlIGFuIGFjdGl2ZSBY U0suICovDQorCWlmIChwcml2LT54c2sucmVmY250KSB7DQorCQl1MTYgaXg7DQorDQorCQkvKiBD aGVjayB0aGUgY2hhbm5lbHMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgY2xvc2VkLiAqLw0KKwkJZm9y IChpeCA9IGN1cl9wYXJhbXMtPm51bV9jaGFubmVscyAtIDE7IGl4ID49IGNvdW50OyBpeC0tKSB7 DQorCQkJaWYgKG1seDVlX3hza19nZXRfdW1lbShjdXJfcGFyYW1zLCAmcHJpdi0+eHNrLCBpeCkp IHsNCisJCQkJZXJyID0gLUVJTlZBTDsNCisJCQkJbmV0ZGV2X2Vycihwcml2LT5uZXRkZXYsICIl czogQUZfWERQIGlzIGFjdGl2ZSBvbiBjaGFubmVsICVodSwgY2Fubm90IHJlZHVjZSB0aGUgbnVt YmVyIG9mIGNoYW5uZWxzXG4iLA0KKwkJCQkJICAgX19mdW5jX18sIGl4KTsNCisJCQkJZ290byBv dXQ7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQogCW5ld19jaGFubmVscy5wYXJhbXMgPSBwcml2LT5j aGFubmVscy5wYXJhbXM7DQogCW5ld19jaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzID0gY291 bnQ7DQogDQogCWlmICghdGVzdF9iaXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUp KSB7DQotCQlwcml2LT5jaGFubmVscy5wYXJhbXMgPSBuZXdfY2hhbm5lbHMucGFyYW1zOw0KKwkJ KmN1cl9wYXJhbXMgPSBuZXdfY2hhbm5lbHMucGFyYW1zOw0KIAkJaWYgKCFuZXRpZl9pc19yeGZo X2NvbmZpZ3VyZWQocHJpdi0+bmV0ZGV2KSkNCiAJCQltbHg1ZV9idWlsZF9kZWZhdWx0X2luZGly X3JxdChwcml2LT5yc3NfcGFyYW1zLmluZGlyZWN0aW9uX3JxdCwNCiAJCQkJCQkgICAgICBNTFg1 RV9JTkRJUl9SUVRfU0laRSwgY291bnQpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbl9mc19ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZnNfZXRodG9vbC5jDQppbmRleCA0NDIxYzEwZjU4 YWUuLjkyNDFlNjQwYzhlNCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbl9mc19ldGh0b29sLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9lbl9mc19ldGh0b29sLmMNCkBAIC0zOTIsNiArMzkyLDIwIEBA IHN0YXRpYyBib29sIG91dGVyX2hlYWRlcl96ZXJvKHUzMiAqbWF0Y2hfY3JpdGVyaWEpDQogCQkJ CQkJICBzaXplIC0gMSk7DQogfQ0KIA0KKyNkZWZpbmUgTUxYNUVfVVNFUkRFRl9GTEFHX1hTSyBC SVRfVUxMKDApDQorDQorc3RhdGljIGJvb2wgaXNfcnVsZV94c2soc3RydWN0IGV0aHRvb2xfcnhf Zmxvd19zcGVjICpmcykNCit7DQorCXU2NCB1c2VyZGVmOw0KKw0KKwlpZiAoIShmcy0+Zmxvd190 eXBlICYgRkxPV19FWFQpKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwl1c2VyZGVmID0gYmU2NF90 b19jcHUoKigoX19iZTY0ICopZnMtPmhfZXh0LmRhdGEpKTsNCisNCisJcmV0dXJuIHVzZXJkZWYg JiBNTFg1RV9VU0VSREVGX0ZMQUdfWFNLOw0KK30NCisNCiBzdGF0aWMgc3RydWN0IG1seDVfZmxv d19oYW5kbGUgKg0KIGFkZF9ldGh0b29sX2Zsb3dfcnVsZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwNCiAJCSAgICAgIHN0cnVjdCBtbHg1X2Zsb3dfdGFibGUgKmZ0LA0KQEAgLTQxNCw2ICs0Mjgs OSBAQCBhZGRfZXRodG9vbF9mbG93X3J1bGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCWlm IChmcy0+cmluZ19jb29raWUgPT0gUlhfQ0xTX0ZMT1dfRElTQykgew0KIAkJZmxvd19hY3QuYWN0 aW9uID0gTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX0RST1A7DQogCX0gZWxzZSB7DQorCQlzdHJ1 Y3QgbWx4NWVfdGlyICp0aXIgPSBpc19ydWxlX3hzayhmcykgPyBwcml2LT54c2tfdGlyDQorCQkJ CQkJCTogcHJpdi0+ZGlyZWN0X3RpcjsNCisNCiAJCWRzdCA9IGt6YWxsb2Moc2l6ZW9mKCpkc3Qp LCBHRlBfS0VSTkVMKTsNCiAJCWlmICghZHN0KSB7DQogCQkJZXJyID0gLUVOT01FTTsNCkBAIC00 MjEsNyArNDM4LDcgQEAgYWRkX2V0aHRvb2xfZmxvd19ydWxlKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LA0KIAkJfQ0KIA0KIAkJZHN0LT50eXBlID0gTUxYNV9GTE9XX0RFU1RJTkFUSU9OX1RZUEVf VElSOw0KLQkJZHN0LT50aXJfbnVtID0gcHJpdi0+ZGlyZWN0X3Rpcltmcy0+cmluZ19jb29raWVd LnRpcm47DQorCQlkc3QtPnRpcl9udW0gPSB0aXJbZnMtPnJpbmdfY29va2llXS50aXJuOw0KIAkJ Zmxvd19hY3QuYWN0aW9uID0gTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX0ZXRF9ERVNUOw0KIAl9 DQogDQpAQCAtNTc4LDE0ICs1OTUsMjcgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90Y3B1ZHA2KHN0 cnVjdCBldGh0b29sX3J4X2Zsb3dfc3BlYyAqZnMpDQogCXJldHVybiArK250dXBsZXM7DQogfQ0K IA0KLXN0YXRpYyBpbnQgdmFsaWRhdGVfdmxhbihzdHJ1Y3QgZXRodG9vbF9yeF9mbG93X3NwZWMg KmZzKQ0KK3N0YXRpYyBpbnQgdmFsaWRhdGVfZXh0KHN0cnVjdCBldGh0b29sX3J4X2Zsb3dfc3Bl YyAqZnMpDQogew0KLQlpZiAoZnMtPm1fZXh0LnZsYW5fZXR5cGUgfHwNCi0JICAgIGZzLT5tX2V4 dC52bGFuX3RjaSAhPSBjcHVfdG9fYmUxNihWTEFOX1ZJRF9NQVNLKSkNCisJdTY0IHVzZXJkZWZf bWFzazsNCisJdTY0IHVzZXJkZWY7DQorDQorCWlmIChmcy0+bV9leHQudmxhbl9ldHlwZSkNCiAJ CXJldHVybiAtRUlOVkFMOw0KIA0KLQlpZiAoZnMtPm1fZXh0LnZsYW5fdGNpICYmDQotCSAgICAo YmUxNl90b19jcHUoZnMtPmhfZXh0LnZsYW5fdGNpKSA+PSBWTEFOX05fVklEKSkNCisJaWYgKGZz LT5tX2V4dC52bGFuX3RjaSkgew0KKwkJaWYgKGZzLT5tX2V4dC52bGFuX3RjaSAhPSBjcHVfdG9f YmUxNihWTEFOX1ZJRF9NQVNLKSkNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJCWlmIChiZTE2 X3RvX2NwdShmcy0+aF9leHQudmxhbl90Y2kpID49IFZMQU5fTl9WSUQpDQorCQkJcmV0dXJuIC1F SU5WQUw7DQorCX0NCisNCisJdXNlcmRlZiA9IGJlNjRfdG9fY3B1KCooKF9fYmU2NCAqKWZzLT5o X2V4dC5kYXRhKSk7DQorCXVzZXJkZWZfbWFzayA9IGJlNjRfdG9fY3B1KCooKF9fYmU2NCAqKWZz LT5tX2V4dC5kYXRhKSk7DQorCWlmICh1c2VyZGVmICYgfk1MWDVFX1VTRVJERUZfRkxBR19YU0sp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYgKHVzZXJkZWZfbWFzayAhPSB+KDBVTEwpKQ0KIAkJ cmV0dXJuIC1FSU5WQUw7DQogDQogCXJldHVybiAxOw0KQEAgLTYzOCw3ICs2NjgsNyBAQCBzdGF0 aWMgaW50IHZhbGlkYXRlX2Zsb3coc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCQlyZXR1cm4g LUVOT1RTVVBQOw0KIAl9DQogCWlmICgoZnMtPmZsb3dfdHlwZSAmIEZMT1dfRVhUKSkgew0KLQkJ cmV0ID0gdmFsaWRhdGVfdmxhbihmcyk7DQorCQlyZXQgPSB2YWxpZGF0ZV9leHQoZnMpOw0KIAkJ aWYgKHJldCA8IDApDQogCQkJcmV0dXJuIHJldDsNCiAJCW51bV90dXBsZXMgKz0gcmV0Ow0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWlu LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jDQpp bmRleCAzYjJkN2ExZmE3ZGYuLjFmN2Y1MGNhNjFkMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMNCisrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMNCkBAIC0zOCw2ICszOCw3IEBA DQogI2luY2x1ZGUgPGxpbnV4L2JwZi5oPg0KICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4N CiAjaW5jbHVkZSA8bmV0L3BhZ2VfcG9vbC5oPg0KKyNpbmNsdWRlIDxuZXQveGRwX3NvY2suaD4N CiAjaW5jbHVkZSAiZXN3aXRjaC5oIg0KICNpbmNsdWRlICJlbi5oIg0KICNpbmNsdWRlICJlbl90 Yy5oIg0KQEAgLTU2LDYgKzU3LDEwIEBADQogI2luY2x1ZGUgImVuL21vbml0b3Jfc3RhdHMuaCIN CiAjaW5jbHVkZSAiZW4vcmVwb3J0ZXIuaCINCiAjaW5jbHVkZSAiZW4vcGFyYW1zLmgiDQorI2lu Y2x1ZGUgImVuL3hzay91bWVtLmgiDQorI2luY2x1ZGUgImVuL3hzay9zZXR1cC5oIg0KKyNpbmNs dWRlICJlbi94c2svcnguaCINCisjaW5jbHVkZSAiZW4veHNrL3R4LmgiDQogDQogYm9vbCBtbHg1 ZV9jaGVja19mcmFnbWVudGVkX3N0cmlkaW5nX3JxX2NhcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq bWRldikNCiB7DQpAQCAtODUsMTggKzkwLDMxIEBAIHZvaWQgbWx4NWVfaW5pdF9ycV90eXBlX3Bh cmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCiAJbWx4NV9jb3JlX2luZm8obWRldiwg Ik1MWDVFOiBTdHJkUnEoJWQpIFJxU3ooJWxkKSBTdHJkU3ooJWxkKSBSeENxZUNtcHJzcyglZClc biIsDQogCQkgICAgICAgcGFyYW1zLT5ycV93cV90eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURf TElTVF9TVFJJRElOR19SUSwNCiAJCSAgICAgICBwYXJhbXMtPnJxX3dxX3R5cGUgPT0gTUxYNV9X UV9UWVBFX0xJTktFRF9MSVNUX1NUUklESU5HX1JRID8NCi0JCSAgICAgICBCSVQobWx4NWVfbXB3 cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcykpIDoNCisJCSAgICAgICBCSVQobWx4NWVfbXB3cWVf Z2V0X2xvZ19ycV9zaXplKHBhcmFtcywgTlVMTCkpIDoNCiAJCSAgICAgICBCSVQocGFyYW1zLT5s b2dfcnFfbXR1X2ZyYW1lcyksDQotCQkgICAgICAgQklUKG1seDVlX21wd3FlX2dldF9sb2dfc3Ry aWRlX3NpemUobWRldiwgcGFyYW1zKSksDQorCQkgICAgICAgQklUKG1seDVlX21wd3FlX2dldF9s b2dfc3RyaWRlX3NpemUobWRldiwgcGFyYW1zLCBOVUxMKSksDQogCQkgICAgICAgTUxYNUVfR0VU X1BGTEFHKHBhcmFtcywgTUxYNUVfUEZMQUdfUlhfQ1FFX0NPTVBSRVNTKSk7DQogfQ0KIA0KIGJv b2wgbWx4NWVfc3RyaWRpbmdfcnFfcG9zc2libGUoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYs DQogCQkJCXN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCiB7DQotCXJldHVybiBtbHg1ZV9j aGVja19mcmFnbWVudGVkX3N0cmlkaW5nX3JxX2NhcChtZGV2KSAmJg0KLQkJIU1MWDVfSVBTRUNf REVWKG1kZXYpICYmDQotCQkhKHBhcmFtcy0+eGRwX3Byb2cgJiYgIW1seDVlX3J4X21wd3FlX2lz X2xpbmVhcl9za2IobWRldiwgcGFyYW1zKSk7DQorCWlmICghbWx4NWVfY2hlY2tfZnJhZ21lbnRl ZF9zdHJpZGluZ19ycV9jYXAobWRldikpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCWlmIChNTFg1 X0lQU0VDX0RFVihtZGV2KSkNCisJCXJldHVybiBmYWxzZTsNCisNCisJaWYgKHBhcmFtcy0+eGRw X3Byb2cpIHsNCisJCS8qIFhTSyBwYXJhbXMgYXJlIG5vdCBjb25zaWRlcmVkIGhlcmUuIElmIHN0 cmlkaW5nIFJRIGlzIGluIHVzZSwNCisJCSAqIGFuZCBhbiBYU0sgaXMgYmVpbmcgb3BlbmVkLCBt bHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiIHdpbGwNCisJCSAqIGJlIGNhbGxlZCB3aXRoIHRo ZSBrbm93biBYU0sgcGFyYW1zLg0KKwkJICovDQorCQlpZiAoIW1seDVlX3J4X21wd3FlX2lzX2xp bmVhcl9za2IobWRldiwgcGFyYW1zLCBOVUxMKSkNCisJCQlyZXR1cm4gZmFsc2U7DQorCX0NCisN CisJcmV0dXJuIHRydWU7DQogfQ0KIA0KIHZvaWQgbWx4NWVfc2V0X3JxX3R5cGUoc3RydWN0IG1s eDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcykNCkBAIC0zNjUs NiArMzgzLDggQEAgc3RhdGljIHZvaWQgbWx4NWVfZnJlZV9kaV9saXN0KHN0cnVjdCBtbHg1ZV9y cSAqcnEpDQogDQogc3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfY2hhbm5l bCAqYywNCiAJCQkgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkgIHN0cnVjdCBt bHg1ZV94c2tfcGFyYW0gKnhzaywNCisJCQkgIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwNCiAJCQkg IHN0cnVjdCBtbHg1ZV9ycV9wYXJhbSAqcnFwLA0KIAkJCSAgc3RydWN0IG1seDVlX3JxICpycSkN CiB7DQpAQCAtMzcyLDYgKzM5Miw4IEBAIHN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfcnEoc3RydWN0 IG1seDVlX2NoYW5uZWwgKmMsDQogCXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gYy0+bWRl djsNCiAJdm9pZCAqcnFjID0gcnFwLT5ycWM7DQogCXZvaWQgKnJxY193cSA9IE1MWDVfQUREUl9P RihycWMsIHJxYywgd3EpOw0KKwl1MzIgbnVtX3hza19mcmFtZXMgPSAwOw0KKwl1MzIgcnFfeGRw X2l4Ow0KIAl1MzIgcG9vbF9zaXplOw0KIAlpbnQgd3Ffc3o7DQogCWludCBlcnI7DQpAQCAtMzg4 LDggKzQxMCwxMyBAQCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVjdCBtbHg1ZV9jaGFu bmVsICpjLA0KIAlycS0+aXggICAgICA9IGMtPml4Ow0KIAlycS0+bWRldiAgICA9IG1kZXY7DQog CXJxLT5od19tdHUgID0gTUxYNUVfU1cySFdfTVRVKHBhcmFtcywgcGFyYW1zLT5zd19tdHUpOw0K LQlycS0+c3RhdHMgICA9ICZjLT5wcml2LT5jaGFubmVsX3N0YXRzW2MtPml4XS5ycTsNCiAJcnEt PnhkcHNxICAgPSAmYy0+cnFfeGRwc3E7DQorCXJxLT51bWVtICAgID0gdW1lbTsNCisNCisJaWYg KHJxLT51bWVtKQ0KKwkJcnEtPnN0YXRzID0gJmMtPnByaXYtPmNoYW5uZWxfc3RhdHNbYy0+aXhd Lnhza3JxOw0KKwllbHNlDQorCQlycS0+c3RhdHMgPSAmYy0+cHJpdi0+Y2hhbm5lbF9zdGF0c1tj LT5peF0ucnE7DQogDQogCXJxLT54ZHBfcHJvZyA9IHBhcmFtcy0+eGRwX3Byb2cgPyBicGZfcHJv Z19pbmMocGFyYW1zLT54ZHBfcHJvZykgOiBOVUxMOw0KIAlpZiAoSVNfRVJSKHJxLT54ZHBfcHJv ZykpIHsNCkBAIC0zOTgsMTIgKzQyNSwxNiBAQCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0 cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAkJZ290byBlcnJfcnFfd3FfZGVzdHJveTsNCiAJfQ0K IA0KLQllcnIgPSB4ZHBfcnhxX2luZm9fcmVnKCZycS0+eGRwX3J4cSwgcnEtPm5ldGRldiwgcnEt Pml4KTsNCisJcnFfeGRwX2l4ID0gcnEtPml4Ow0KKwlpZiAoeHNrKQ0KKwkJcnFfeGRwX2l4IHw9 IFhEUF9RSURfRkxBR19YU0tSUTsNCisJZXJyID0geGRwX3J4cV9pbmZvX3JlZygmcnEtPnhkcF9y eHEsIHJxLT5uZXRkZXYsIHJxX3hkcF9peCk7DQogCWlmIChlcnIgPCAwKQ0KIAkJZ290byBlcnJf cnFfd3FfZGVzdHJveTsNCiANCiAJcnEtPmJ1ZmYubWFwX2RpciA9IHJxLT54ZHBfcHJvZyA/IERN QV9CSURJUkVDVElPTkFMIDogRE1BX0ZST01fREVWSUNFOw0KLQlycS0+YnVmZi5oZWFkcm9vbSA9 IG1seDVlX2dldF9ycV9oZWFkcm9vbShtZGV2LCBwYXJhbXMpOw0KKwlycS0+YnVmZi5oZWFkcm9v bSA9IG1seDVlX2dldF9ycV9oZWFkcm9vbShtZGV2LCBwYXJhbXMsIHhzayk7DQorCXJxLT5idWZm LnVtZW1faGVhZHJvb20gPSB4c2sgPyB4c2stPmhlYWRyb29tIDogMDsNCiAJcG9vbF9zaXplID0g MSA8PCBwYXJhbXMtPmxvZ19ycV9tdHVfZnJhbWVzOw0KIA0KIAlzd2l0Y2ggKHJxLT53cV90eXBl KSB7DQpAQCAtNDE3LDcgKzQ0OCwxMiBAQCBzdGF0aWMgaW50IG1seDVlX2FsbG9jX3JxKHN0cnVj dCBtbHg1ZV9jaGFubmVsICpjLA0KIA0KIAkJd3Ffc3ogPSBtbHg1X3dxX2xsX2dldF9zaXplKCZy cS0+bXB3cWUud3EpOw0KIA0KLQkJcG9vbF9zaXplID0gTUxYNV9NUFdSUV9QQUdFU19QRVJfV1FF IDw8IG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6ZShwYXJhbXMpOw0KKwkJaWYgKHhzaykNCisJ CQludW1feHNrX2ZyYW1lcyA9IHdxX3N6IDw8DQorCQkJCW1seDVlX21wd3FlX2dldF9sb2dfbnVt X3N0cmlkZXMobWRldiwgcGFyYW1zLCB4c2spOw0KKw0KKwkJcG9vbF9zaXplID0gTUxYNV9NUFdS UV9QQUdFU19QRVJfV1FFIDw8DQorCQkJbWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFt cywgeHNrKTsNCiANCiAJCXJxLT5wb3N0X3dxZXMgPSBtbHg1ZV9wb3N0X3J4X21wd3FlczsNCiAJ CXJxLT5kZWFsbG9jX3dxZSA9IG1seDVlX2RlYWxsb2NfcnhfbXB3cWU7DQpAQCAtNDM2LDEyICs0 NzIsMTUgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAq YywNCiAJCQlnb3RvIGVycl9ycV93cV9kZXN0cm95Ow0KIAkJfQ0KIA0KLQkJcnEtPm1wd3FlLnNr Yl9mcm9tX2NxZV9tcHdycSA9DQotCQkJbWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2 LCBwYXJhbXMpID8NCi0JCQltbHg1ZV9za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyIDoNCi0JCQlt bHg1ZV9za2JfZnJvbV9jcWVfbXB3cnFfbm9ubGluZWFyOw0KLQkJcnEtPm1wd3FlLmxvZ19zdHJp ZGVfc3ogPSBtbHg1ZV9tcHdxZV9nZXRfbG9nX3N0cmlkZV9zaXplKG1kZXYsIHBhcmFtcyk7DQot CQlycS0+bXB3cWUubnVtX3N0cmlkZXMgPSBCSVQobWx4NWVfbXB3cWVfZ2V0X2xvZ19udW1fc3Ry aWRlcyhtZGV2LCBwYXJhbXMpKTsNCisJCXJxLT5tcHdxZS5za2JfZnJvbV9jcWVfbXB3cnEgPSB4 c2sgPw0KKwkJCW1seDVlX3hza19za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyIDoNCisJCQltbHg1 ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFtcywgTlVMTCkgPw0KKwkJCQltbHg1 ZV9za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyIDoNCisJCQkJbWx4NWVfc2tiX2Zyb21fY3FlX21w d3JxX25vbmxpbmVhcjsNCisNCisJCXJxLT5tcHdxZS5sb2dfc3RyaWRlX3N6ID0gbWx4NWVfbXB3 cWVfZ2V0X2xvZ19zdHJpZGVfc2l6ZShtZGV2LCBwYXJhbXMsIHhzayk7DQorCQlycS0+bXB3cWUu bnVtX3N0cmlkZXMgPQ0KKwkJCUJJVChtbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJpZGVzKG1k ZXYsIHBhcmFtcywgeHNrKSk7DQogDQogCQllcnIgPSBtbHg1ZV9jcmVhdGVfcnFfdW1yX21rZXko bWRldiwgcnEpOw0KIAkJaWYgKGVycikNCkBAIC00NjIsNiArNTAxLDkgQEAgc3RhdGljIGludCBt bHg1ZV9hbGxvY19ycShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCiANCiAJCXdxX3N6ID0gbWx4 NV93cV9jeWNfZ2V0X3NpemUoJnJxLT53cWUud3EpOw0KIA0KKwkJaWYgKHhzaykNCisJCQludW1f eHNrX2ZyYW1lcyA9IHdxX3N6IDw8IHJxLT53cWUuaW5mby5sb2dfbnVtX2ZyYWdzOw0KKw0KIAkJ cnEtPndxZS5pbmZvID0gcnFwLT5mcmFnc19pbmZvOw0KIAkJcnEtPndxZS5mcmFncyA9DQogCQkJ a3Z6YWxsb2Nfbm9kZShhcnJheV9zaXplKHNpemVvZigqcnEtPndxZS5mcmFncyksDQpAQCAtNDc1 LDYgKzUxNyw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfcnEoc3RydWN0IG1seDVlX2NoYW5u ZWwgKmMsDQogCQllcnIgPSBtbHg1ZV9pbml0X2RpX2xpc3QocnEsIHdxX3N6LCBjLT5jcHUpOw0K IAkJaWYgKGVycikNCiAJCQlnb3RvIGVycl9mcmVlOw0KKw0KIAkJcnEtPnBvc3Rfd3FlcyA9IG1s eDVlX3Bvc3Rfcnhfd3FlczsNCiAJCXJxLT5kZWFsbG9jX3dxZSA9IG1seDVlX2RlYWxsb2Nfcnhf d3FlOw0KIA0KQEAgLTQ5MCwzMyArNTMzLDUxIEBAIHN0YXRpYyBpbnQgbWx4NWVfYWxsb2NfcnEo c3RydWN0IG1seDVlX2NoYW5uZWwgKmMsDQogCQkJZ290byBlcnJfZnJlZTsNCiAJCX0NCiANCi0J CXJxLT53cWUuc2tiX2Zyb21fY3FlID0gbWx4NWVfcnhfaXNfbGluZWFyX3NrYihwYXJhbXMpID8N Ci0JCQltbHg1ZV9za2JfZnJvbV9jcWVfbGluZWFyIDoNCi0JCQltbHg1ZV9za2JfZnJvbV9jcWVf bm9ubGluZWFyOw0KKwkJcnEtPndxZS5za2JfZnJvbV9jcWUgPSB4c2sgPw0KKwkJCW1seDVlX3hz a19za2JfZnJvbV9jcWVfbGluZWFyIDoNCisJCQltbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFt cywgTlVMTCkgPw0KKwkJCQltbHg1ZV9za2JfZnJvbV9jcWVfbGluZWFyIDoNCisJCQkJbWx4NWVf c2tiX2Zyb21fY3FlX25vbmxpbmVhcjsNCisNCiAJCXJxLT5ta2V5X2JlID0gYy0+bWtleV9iZTsN CiAJfQ0KIA0KLQkvKiBDcmVhdGUgYSBwYWdlX3Bvb2wgYW5kIHJlZ2lzdGVyIGl0IHdpdGggcnhx ICovDQotCXBwX3BhcmFtcy5vcmRlciAgICAgPSAwOw0KLQlwcF9wYXJhbXMuZmxhZ3MgICAgID0g MDsgLyogTm8taW50ZXJuYWwgRE1BIG1hcHBpbmcgaW4gcGFnZV9wb29sICovDQotCXBwX3BhcmFt cy5wb29sX3NpemUgPSBwb29sX3NpemU7DQotCXBwX3BhcmFtcy5uaWQgICAgICAgPSBjcHVfdG9f bm9kZShjLT5jcHUpOw0KLQlwcF9wYXJhbXMuZGV2ICAgICAgID0gYy0+cGRldjsNCi0JcHBfcGFy YW1zLmRtYV9kaXIgICA9IHJxLT5idWZmLm1hcF9kaXI7DQotDQotCS8qIHBhZ2VfcG9vbCBjYW4g YmUgdXNlZCBldmVuIHdoZW4gdGhlcmUgaXMgbm8gcnEtPnhkcF9wcm9nLA0KLQkgKiBnaXZlbiBw YWdlX3Bvb2wgZG9lcyBub3QgaGFuZGxlIERNQSBtYXBwaW5nIHRoZXJlIGlzIG5vDQotCSAqIHJl cXVpcmVkIHN0YXRlIHRvIGNsZWFyLiBBbmQgcGFnZV9wb29sIGdyYWNlZnVsbHkgaGFuZGxlDQot CSAqIGVsZXZhdGVkIHJlZmNudC4NCi0JICovDQotCXJxLT5wYWdlX3Bvb2wgPSBwYWdlX3Bvb2xf Y3JlYXRlKCZwcF9wYXJhbXMpOw0KLQlpZiAoSVNfRVJSKHJxLT5wYWdlX3Bvb2wpKSB7DQotCQll cnIgPSBQVFJfRVJSKHJxLT5wYWdlX3Bvb2wpOw0KLQkJcnEtPnBhZ2VfcG9vbCA9IE5VTEw7DQot CQlnb3RvIGVycl9mcmVlOw0KKwlpZiAoeHNrKSB7DQorCQllcnIgPSBtbHg1ZV94c2tfcmVzaXpl X3JldXNlcSh1bWVtLCBudW1feHNrX2ZyYW1lcyk7DQorCQlpZiAodW5saWtlbHkoZXJyKSkgew0K KwkJCW1seDVfY29yZV9lcnIobWRldiwgIlVuYWJsZSB0byBhbGxvY2F0ZSB0aGUgUmV1c2UgUmlu ZyBmb3IgJXUgZnJhbWVzXG4iLA0KKwkJCQkgICAgICBudW1feHNrX2ZyYW1lcyk7DQorCQkJZ290 byBlcnJfZnJlZTsNCisJCX0NCisNCisJCXJxLT56Y2EuZnJlZSA9IG1seDVlX3hza196Y2FfZnJl ZTsNCisJCWVyciA9IHhkcF9yeHFfaW5mb19yZWdfbWVtX21vZGVsKCZycS0+eGRwX3J4cSwNCisJ CQkJCQkgTUVNX1RZUEVfWkVST19DT1BZLA0KKwkJCQkJCSAmcnEtPnpjYSk7DQorCX0gZWxzZSB7 DQorCQkvKiBDcmVhdGUgYSBwYWdlX3Bvb2wgYW5kIHJlZ2lzdGVyIGl0IHdpdGggcnhxICovDQor CQlwcF9wYXJhbXMub3JkZXIgICAgID0gMDsNCisJCXBwX3BhcmFtcy5mbGFncyAgICAgPSAwOyAv KiBOby1pbnRlcm5hbCBETUEgbWFwcGluZyBpbiBwYWdlX3Bvb2wgKi8NCisJCXBwX3BhcmFtcy5w b29sX3NpemUgPSBwb29sX3NpemU7DQorCQlwcF9wYXJhbXMubmlkICAgICAgID0gY3B1X3RvX25v ZGUoYy0+Y3B1KTsNCisJCXBwX3BhcmFtcy5kZXYgICAgICAgPSBjLT5wZGV2Ow0KKwkJcHBfcGFy YW1zLmRtYV9kaXIgICA9IHJxLT5idWZmLm1hcF9kaXI7DQorDQorCQkvKiBwYWdlX3Bvb2wgY2Fu IGJlIHVzZWQgZXZlbiB3aGVuIHRoZXJlIGlzIG5vIHJxLT54ZHBfcHJvZywNCisJCSAqIGdpdmVu IHBhZ2VfcG9vbCBkb2VzIG5vdCBoYW5kbGUgRE1BIG1hcHBpbmcgdGhlcmUgaXMgbm8NCisJCSAq IHJlcXVpcmVkIHN0YXRlIHRvIGNsZWFyLiBBbmQgcGFnZV9wb29sIGdyYWNlZnVsbHkgaGFuZGxl DQorCQkgKiBlbGV2YXRlZCByZWZjbnQuDQorCQkgKi8NCisJCXJxLT5wYWdlX3Bvb2wgPSBwYWdl X3Bvb2xfY3JlYXRlKCZwcF9wYXJhbXMpOw0KKwkJaWYgKElTX0VSUihycS0+cGFnZV9wb29sKSkg ew0KKwkJCWVyciA9IFBUUl9FUlIocnEtPnBhZ2VfcG9vbCk7DQorCQkJcnEtPnBhZ2VfcG9vbCA9 IE5VTEw7DQorCQkJZ290byBlcnJfZnJlZTsNCisJCX0NCisJCWVyciA9IHhkcF9yeHFfaW5mb19y ZWdfbWVtX21vZGVsKCZycS0+eGRwX3J4cSwNCisJCQkJCQkgTUVNX1RZUEVfUEFHRV9QT09MLA0K KwkJCQkJCSBycS0+cGFnZV9wb29sKTsNCiAJfQ0KLQllcnIgPSB4ZHBfcnhxX2luZm9fcmVnX21l bV9tb2RlbCgmcnEtPnhkcF9yeHEsDQotCQkJCQkgTUVNX1RZUEVfUEFHRV9QT09MLCBycS0+cGFn ZV9wb29sKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2ZyZWU7DQogDQpAQCAtNjE1LDcgKzY3 NiwxMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9mcmVlX3JxKHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQog CSAgICAgaSA9IChpICsgMSkgJiAoTUxYNUVfQ0FDSEVfU0laRSAtIDEpKSB7DQogCQlzdHJ1Y3Qg bWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvID0gJnJxLT5wYWdlX2NhY2hlLnBhZ2VfY2FjaGVbaV07 DQogDQotCQltbHg1ZV9wYWdlX3JlbGVhc2UocnEsIGRtYV9pbmZvLCBmYWxzZSk7DQorCQkvKiBX aXRoIEFGX1hEUCwgcGFnZV9jYWNoZSBpcyBub3QgdXNlZCwgc28gdGhpcyBsb29wIGlzIG5vdA0K KwkJICogZW50ZXJlZCwgYW5kIGl0J3Mgc2FmZSB0byBjYWxsIG1seDVlX3BhZ2VfcmVsZWFzZV9k eW5hbWljDQorCQkgKiBkaXJlY3RseS4NCisJCSAqLw0KKwkJbWx4NWVfcGFnZV9yZWxlYXNlX2R5 bmFtaWMocnEsIGRtYV9pbmZvLCBmYWxzZSk7DQogCX0NCiAJbWx4NV93cV9kZXN0cm95KCZycS0+ d3FfY3RybCk7DQogfQ0KQEAgLTc1MCw3ICs4MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9kZXN0 cm95X3JxKHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogCW1seDVfY29yZV9kZXN0cm95X3JxKHJxLT5t ZGV2LCBycS0+cnFuKTsNCiB9DQogDQotc3RhdGljIGludCBtbHg1ZV93YWl0X2Zvcl9taW5fcnhf d3FlcyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBpbnQgd2FpdF90aW1lKQ0KK2ludCBtbHg1ZV93YWl0 X2Zvcl9taW5fcnhfd3FlcyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBpbnQgd2FpdF90aW1lKQ0KIHsN CiAJdW5zaWduZWQgbG9uZyBleHBfdGltZSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKHdh aXRfdGltZSk7DQogCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjID0gcnEtPmNoYW5uZWw7DQpAQCAt ODA4LDE0ICs4NzMsMTMgQEAgc3RhdGljIHZvaWQgbWx4NWVfZnJlZV9yeF9kZXNjcyhzdHJ1Y3Qg bWx4NWVfcnEgKnJxKQ0KIA0KIH0NCiANCi1zdGF0aWMgaW50IG1seDVlX29wZW5fcnEoc3RydWN0 IG1seDVlX2NoYW5uZWwgKmMsDQotCQkJIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCi0J CQkgc3RydWN0IG1seDVlX3JxX3BhcmFtICpwYXJhbSwNCi0JCQkgc3RydWN0IG1seDVlX3JxICpy cSkNCitpbnQgbWx4NWVfb3Blbl9ycShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywgc3RydWN0IG1s eDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJICBzdHJ1Y3QgbWx4NWVfcnFfcGFyYW0gKnBhcmFtLCBz dHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2ssDQorCQkgIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwg c3RydWN0IG1seDVlX3JxICpycSkNCiB7DQogCWludCBlcnI7DQogDQotCWVyciA9IG1seDVlX2Fs bG9jX3JxKGMsIHBhcmFtcywgcGFyYW0sIHJxKTsNCisJZXJyID0gbWx4NWVfYWxsb2NfcnEoYywg cGFyYW1zLCB4c2ssIHVtZW0sIHBhcmFtLCBycSk7DQogCWlmIChlcnIpDQogCQlyZXR1cm4gZXJy Ow0KIA0KQEAgLTg1MywxMyArOTE3LDEzIEBAIHN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX3Jx KHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogCW1seDVlX3RyaWdnZXJfaXJxKCZycS0+Y2hhbm5lbC0+ aWNvc3EpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3JxKHN0cnVjdCBt bHg1ZV9ycSAqcnEpDQordm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3JxKHN0cnVjdCBtbHg1ZV9ycSAq cnEpDQogew0KIAljbGVhcl9iaXQoTUxYNUVfUlFfU1RBVEVfRU5BQkxFRCwgJnJxLT5zdGF0ZSk7 DQogCW5hcGlfc3luY2hyb25pemUoJnJxLT5jaGFubmVsLT5uYXBpKTsgLyogcHJldmVudCBtbHg1 ZV9wb3N0X3J4X3dxZXMgKi8NCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfY2xvc2VfcnEoc3Ry dWN0IG1seDVlX3JxICpycSkNCit2b2lkIG1seDVlX2Nsb3NlX3JxKHN0cnVjdCBtbHg1ZV9ycSAq cnEpDQogew0KIAljYW5jZWxfd29ya19zeW5jKCZycS0+ZGltLndvcmspOw0KIAltbHg1ZV9kZXN0 cm95X3JxKHJxKTsNCkBAIC05MTIsNiArOTc2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxvY194 ZHBzcV9kYihzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLCBpbnQgbnVtYSkNCiANCiBzdGF0aWMgaW50 IG1seDVlX2FsbG9jX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAkJCSAgICAgc3Ry dWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgICAgc3RydWN0IHhkcF91bWVtICp1bWVt LA0KIAkJCSAgICAgc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSwNCiAJCQkgICAgIHN0cnVj dCBtbHg1ZV94ZHBzcSAqc3EsDQogCQkJICAgICBib29sIGlzX3JlZGlyZWN0KQ0KQEAgLTkyNyw5 ICs5OTIsMTMgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxvY194ZHBzcShzdHJ1Y3QgbWx4NWVfY2hh bm5lbCAqYywNCiAJc3EtPnVhcl9tYXAgICA9IG1kZXYtPm1seDVlX3Jlcy5iZnJlZy5tYXA7DQog CXNxLT5taW5faW5saW5lX21vZGUgPSBwYXJhbXMtPnR4X21pbl9pbmxpbmVfbW9kZTsNCiAJc3Et Pmh3X210dSAgICA9IE1MWDVFX1NXMkhXX01UVShwYXJhbXMsIHBhcmFtcy0+c3dfbXR1KTsNCi0J c3EtPnN0YXRzICAgICA9IGlzX3JlZGlyZWN0ID8NCi0JCSZjLT5wcml2LT5jaGFubmVsX3N0YXRz W2MtPml4XS54ZHBzcSA6DQotCQkmYy0+cHJpdi0+Y2hhbm5lbF9zdGF0c1tjLT5peF0ucnFfeGRw c3E7DQorCXNxLT51bWVtICAgICAgPSB1bWVtOw0KKw0KKwlzcS0+c3RhdHMgPSBzcS0+dW1lbSA/ DQorCQkmYy0+cHJpdi0+Y2hhbm5lbF9zdGF0c1tjLT5peF0ueHNrc3EgOg0KKwkJaXNfcmVkaXJl Y3QgPw0KKwkJCSZjLT5wcml2LT5jaGFubmVsX3N0YXRzW2MtPml4XS54ZHBzcSA6DQorCQkJJmMt PnByaXYtPmNoYW5uZWxfc3RhdHNbYy0+aXhdLnJxX3hkcHNxOw0KIA0KIAlwYXJhbS0+d3EuZGJf bnVtYV9ub2RlID0gY3B1X3RvX25vZGUoYy0+Y3B1KTsNCiAJZXJyID0gbWx4NV93cV9jeWNfY3Jl YXRlKG1kZXYsICZwYXJhbS0+d3EsIHNxY193cSwgd3EsICZzcS0+d3FfY3RybCk7DQpAQCAtMTMw OCwxMCArMTM3Nyw4IEBAIHN0YXRpYyB2b2lkIG1seDVlX3R4X2Vycl9jcWVfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKnJlY292ZXJfd29yaykNCiAJbWx4NWVfdHhfcmVwb3J0ZXJfZXJyX2NxZShz cSk7DQogfQ0KIA0KLXN0YXRpYyBpbnQgbWx4NWVfb3Blbl9pY29zcShzdHJ1Y3QgbWx4NWVfY2hh bm5lbCAqYywNCi0JCQkgICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KLQkJCSAgICBz dHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtLA0KLQkJCSAgICBzdHJ1Y3QgbWx4NWVfaWNvc3Eg KnNxKQ0KK2ludCBtbHg1ZV9vcGVuX2ljb3NxKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLCBzdHJ1 Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkgICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAq cGFyYW0sIHN0cnVjdCBtbHg1ZV9pY29zcSAqc3EpDQogew0KIAlzdHJ1Y3QgbWx4NWVfY3JlYXRl X3NxX3BhcmFtIGNzcCA9IHt9Ow0KIAlpbnQgZXJyOw0KQEAgLTEzMzcsNyArMTQwNCw3IEBAIHN0 YXRpYyBpbnQgbWx4NWVfb3Blbl9pY29zcShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCiAJcmV0 dXJuIGVycjsNCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfY2xvc2VfaWNvc3Eoc3RydWN0IG1s eDVlX2ljb3NxICpzcSkNCit2b2lkIG1seDVlX2Nsb3NlX2ljb3NxKHN0cnVjdCBtbHg1ZV9pY29z cSAqc3EpDQogew0KIAlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyA9IHNxLT5jaGFubmVsOw0KIA0K QEAgLTEzNDgsMTYgKzE0MTUsMTQgQEAgc3RhdGljIHZvaWQgbWx4NWVfY2xvc2VfaWNvc3Eoc3Ry dWN0IG1seDVlX2ljb3NxICpzcSkNCiAJbWx4NWVfZnJlZV9pY29zcShzcSk7DQogfQ0KIA0KLXN0 YXRpYyBpbnQgbWx4NWVfb3Blbl94ZHBzcShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCi0JCQkg ICAgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KLQkJCSAgICBzdHJ1Y3QgbWx4NWVfc3Ff cGFyYW0gKnBhcmFtLA0KLQkJCSAgICBzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxLA0KLQkJCSAgICBi b29sIGlzX3JlZGlyZWN0KQ0KK2ludCBtbHg1ZV9vcGVuX3hkcHNxKHN0cnVjdCBtbHg1ZV9jaGFu bmVsICpjLCBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkgICAgIHN0cnVjdCBtbHg1 ZV9zcV9wYXJhbSAqcGFyYW0sIHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSwNCisJCSAgICAgc3RydWN0 IG1seDVlX3hkcHNxICpzcSwgYm9vbCBpc19yZWRpcmVjdCkNCiB7DQogCXN0cnVjdCBtbHg1ZV9j cmVhdGVfc3FfcGFyYW0gY3NwID0ge307DQogCWludCBlcnI7DQogDQotCWVyciA9IG1seDVlX2Fs bG9jX3hkcHNxKGMsIHBhcmFtcywgcGFyYW0sIHNxLCBpc19yZWRpcmVjdCk7DQorCWVyciA9IG1s eDVlX2FsbG9jX3hkcHNxKGMsIHBhcmFtcywgdW1lbSwgcGFyYW0sIHNxLCBpc19yZWRpcmVjdCk7 DQogCWlmIChlcnIpDQogCQlyZXR1cm4gZXJyOw0KIA0KQEAgLTE0MTEsNyArMTQ3Niw3IEBAIHN0 YXRpYyBpbnQgbWx4NWVfb3Blbl94ZHBzcShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCiAJcmV0 dXJuIGVycjsNCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfY2xvc2VfeGRwc3Eoc3RydWN0IG1s eDVlX3hkcHNxICpzcSkNCit2b2lkIG1seDVlX2Nsb3NlX3hkcHNxKHN0cnVjdCBtbHg1ZV94ZHBz cSAqc3EpDQogew0KIAlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYyA9IHNxLT5jaGFubmVsOw0KIA0K QEAgLTE1NDAsMTAgKzE2MDUsOCBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9kZXN0cm95X2NxKHN0cnVj dCBtbHg1ZV9jcSAqY3EpDQogCW1seDVfY29yZV9kZXN0cm95X2NxKGNxLT5tZGV2LCAmY3EtPm1j cSk7DQogfQ0KIA0KLXN0YXRpYyBpbnQgbWx4NWVfb3Blbl9jcShzdHJ1Y3QgbWx4NWVfY2hhbm5l bCAqYywNCi0JCQkgc3RydWN0IG5ldF9kaW1fY3FfbW9kZXIgbW9kZXIsDQotCQkJIHN0cnVjdCBt bHg1ZV9jcV9wYXJhbSAqcGFyYW0sDQotCQkJIHN0cnVjdCBtbHg1ZV9jcSAqY3EpDQoraW50IG1s eDVlX29wZW5fY3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsIHN0cnVjdCBuZXRfZGltX2NxX21v ZGVyIG1vZGVyLA0KKwkJICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBhcmFtLCBzdHJ1Y3QgbWx4 NWVfY3EgKmNxKQ0KIHsNCiAJc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBjLT5tZGV2Ow0K IAlpbnQgZXJyOw0KQEAgLTE1NjYsNyArMTYyOSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfb3Blbl9j cShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYywNCiAJcmV0dXJuIGVycjsNCiB9DQogDQotc3RhdGlj IHZvaWQgbWx4NWVfY2xvc2VfY3Eoc3RydWN0IG1seDVlX2NxICpjcSkNCit2b2lkIG1seDVlX2Ns b3NlX2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EpDQogew0KIAltbHg1ZV9kZXN0cm95X2NxKGNxKTsN CiAJbWx4NWVfZnJlZV9jcShjcSk7DQpAQCAtMTc4MCwxNyArMTg0MywxNyBAQCBzdGF0aWMgaW50 IG1seDVlX29wZW5fcXVldWVzKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjLA0KIAkJZ290byBlcnJf Y2xvc2VfaWNvc3E7DQogDQogCWlmIChjLT54ZHApIHsNCi0JCWVyciA9IG1seDVlX29wZW5feGRw c3EoYywgcGFyYW1zLCAmY3BhcmFtLT54ZHBfc3EsDQorCQllcnIgPSBtbHg1ZV9vcGVuX3hkcHNx KGMsIHBhcmFtcywgJmNwYXJhbS0+eGRwX3NxLCBOVUxMLA0KIAkJCQkgICAgICAgJmMtPnJxX3hk cHNxLCBmYWxzZSk7DQogCQlpZiAoZXJyKQ0KIAkJCWdvdG8gZXJyX2Nsb3NlX3NxczsNCiAJfQ0K IA0KLQllcnIgPSBtbHg1ZV9vcGVuX3JxKGMsIHBhcmFtcywgJmNwYXJhbS0+cnEsICZjLT5ycSk7 DQorCWVyciA9IG1seDVlX29wZW5fcnEoYywgcGFyYW1zLCAmY3BhcmFtLT5ycSwgTlVMTCwgTlVM TCwgJmMtPnJxKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Nsb3NlX3hkcF9zcTsNCiANCi0J ZXJyID0gbWx4NWVfb3Blbl94ZHBzcShjLCBwYXJhbXMsICZjcGFyYW0tPnhkcF9zcSwgJmMtPnhk cHNxLCB0cnVlKTsNCisJZXJyID0gbWx4NWVfb3Blbl94ZHBzcShjLCBwYXJhbXMsICZjcGFyYW0t PnhkcF9zcSwgTlVMTCwgJmMtPnhkcHNxLCB0cnVlKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJy X2Nsb3NlX3JxOw0KIA0KQEAgLTE4NTAsMTAgKzE5MTMsMTIgQEAgc3RhdGljIHZvaWQgbWx4NWVf Y2xvc2VfcXVldWVzKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQ0KIHN0YXRpYyBpbnQgbWx4NWVf b3Blbl9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsDQogCQkJICAgICAg c3RydWN0IG1seDVlX3BhcmFtcyAqcGFyYW1zLA0KIAkJCSAgICAgIHN0cnVjdCBtbHg1ZV9jaGFu bmVsX3BhcmFtICpjcGFyYW0sDQorCQkJICAgICAgc3RydWN0IHhkcF91bWVtICp1bWVtLA0KIAkJ CSAgICAgIHN0cnVjdCBtbHg1ZV9jaGFubmVsICoqY3ApDQogew0KIAlpbnQgY3B1ID0gY3B1bWFz a19maXJzdChtbHg1X2NvbXBfaXJxX2dldF9hZmZpbml0eV9tYXNrKHByaXYtPm1kZXYsIGl4KSk7 DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwcml2LT5uZXRkZXY7DQorCXN0cnVjdCBt bHg1ZV94c2tfcGFyYW0geHNrOw0KIAlzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYzsNCiAJdW5zaWdu ZWQgaW50IGlycTsNCiAJaW50IGVycjsNCkBAIC0xODkwLDEwICsxOTU1LDIwIEBAIHN0YXRpYyBp bnQgbWx4NWVfb3Blbl9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsDQog CWlmICh1bmxpa2VseShlcnIpKQ0KIAkJZ290byBlcnJfbmFwaV9kZWw7DQogDQorCWlmICh1bWVt KSB7DQorCQltbHg1ZV9idWlsZF94c2tfcGFyYW0odW1lbSwgJnhzayk7DQorCQllcnIgPSBtbHg1 ZV9vcGVuX3hzayhwcml2LCBwYXJhbXMsICZ4c2ssIHVtZW0sIGMpOw0KKwkJaWYgKHVubGlrZWx5 KGVycikpDQorCQkJZ290byBlcnJfY2xvc2VfcXVldWVzOw0KKwl9DQorDQogCSpjcCA9IGM7DQog DQogCXJldHVybiAwOw0KIA0KK2Vycl9jbG9zZV9xdWV1ZXM6DQorCW1seDVlX2Nsb3NlX3F1ZXVl cyhjKTsNCisNCiBlcnJfbmFwaV9kZWw6DQogCW5ldGlmX25hcGlfZGVsKCZjLT5uYXBpKTsNCiAJ bWx4NWVfZnJlZV94cHNfY3B1bWFzayhjKTsNCkBAIC0xOTEyLDEyICsxOTg3LDE4IEBAIHN0YXRp YyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpDQog CQltbHg1ZV9hY3RpdmF0ZV90eHFzcSgmYy0+c3FbdGNdKTsNCiAJbWx4NWVfYWN0aXZhdGVfcnEo JmMtPnJxKTsNCiAJbmV0aWZfc2V0X3hwc19xdWV1ZShjLT5uZXRkZXYsIGMtPnhwc19jcHVtYXNr LCBjLT5peCk7DQorDQorCWlmICh0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgYy0+ c3RhdGUpKQ0KKwkJbWx4NWVfYWN0aXZhdGVfeHNrKGMpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBt bHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpDQogew0KIAlp bnQgdGM7DQogDQorCWlmICh0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgYy0+c3Rh dGUpKQ0KKwkJbWx4NWVfZGVhY3RpdmF0ZV94c2soYyk7DQorDQogCW1seDVlX2RlYWN0aXZhdGVf cnEoJmMtPnJxKTsNCiAJZm9yICh0YyA9IDA7IHRjIDwgYy0+bnVtX3RjOyB0YysrKQ0KIAkJbWx4 NWVfZGVhY3RpdmF0ZV90eHFzcSgmYy0+c3FbdGNdKTsNCkBAIC0xOTI1LDYgKzIwMDYsOCBAQCBz dGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwg KmMpDQogDQogc3RhdGljIHZvaWQgbWx4NWVfY2xvc2VfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hh bm5lbCAqYykNCiB7DQorCWlmICh0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgYy0+ c3RhdGUpKQ0KKwkJbWx4NWVfY2xvc2VfeHNrKGMpOw0KIAltbHg1ZV9jbG9zZV9xdWV1ZXMoYyk7 DQogCW5ldGlmX25hcGlfZGVsKCZjLT5uYXBpKTsNCiAJbWx4NWVfZnJlZV94cHNfY3B1bWFzayhj KTsNCkBAIC0xOTM2LDYgKzIwMTksNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9jbG9zZV9jaGFubmVs KHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQ0KIA0KIHN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3Jx X2ZyYWdzX2luZm8oc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQogCQkJCSAgICAgIHN0cnVj dCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkJICAgICAgc3RydWN0IG1seDVlX3hza19wYXJh bSAqeHNrLA0KIAkJCQkgICAgICBzdHJ1Y3QgbWx4NWVfcnFfZnJhZ3NfaW5mbyAqaW5mbykNCiB7 DQogCXUzMiBieXRlX2NvdW50ID0gTUxYNUVfU1cySFdfTVRVKHBhcmFtcywgcGFyYW1zLT5zd19t dHUpOw0KQEAgLTE5NDgsMTAgKzIwMzIsMTAgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfcnFf ZnJhZ3NfaW5mbyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCiAJCWJ5dGVfY291bnQgKz0g TUxYNUVfTUVUQURBVEFfRVRIRVJfTEVOOw0KICNlbmRpZg0KIA0KLQlpZiAobWx4NWVfcnhfaXNf bGluZWFyX3NrYihwYXJhbXMpKSB7DQorCWlmIChtbHg1ZV9yeF9pc19saW5lYXJfc2tiKHBhcmFt cywgeHNrKSkgew0KIAkJaW50IGZyYWdfc3RyaWRlOw0KIA0KLQkJZnJhZ19zdHJpZGUgPSBtbHg1 ZV9yeF9nZXRfbGluZWFyX2ZyYWdfc3oocGFyYW1zLCBOVUxMKTsNCisJCWZyYWdfc3RyaWRlID0g bWx4NWVfcnhfZ2V0X2xpbmVhcl9mcmFnX3N6KHBhcmFtcywgeHNrKTsNCiAJCWZyYWdfc3RyaWRl ID0gcm91bmR1cF9wb3dfb2ZfdHdvKGZyYWdfc3RyaWRlKTsNCiANCiAJCWluZm8tPmFyclswXS5m cmFnX3NpemUgPSBieXRlX2NvdW50Ow0KQEAgLTIwMDksOSArMjA5MywxMCBAQCBzdGF0aWMgdTgg bWx4NWVfZ2V0X3JxX2xvZ193cV9zeih2b2lkICpycWMpDQogCXJldHVybiBNTFg1X0dFVCh3cSwg d3EsIGxvZ193cV9zeik7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3JxX3BhcmFt KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KLQkJCQkgc3RydWN0IG1seDVlX3BhcmFtcyAqcGFy YW1zLA0KLQkJCQkgc3RydWN0IG1seDVlX3JxX3BhcmFtICpwYXJhbSkNCit2b2lkIG1seDVlX2J1 aWxkX3JxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KKwkJCSAgc3RydWN0IG1seDVl X3BhcmFtcyAqcGFyYW1zLA0KKwkJCSAgc3RydWN0IG1seDVlX3hza19wYXJhbSAqeHNrLA0KKwkJ CSAgc3RydWN0IG1seDVlX3JxX3BhcmFtICpwYXJhbSkNCiB7DQogCXN0cnVjdCBtbHg1X2NvcmVf ZGV2ICptZGV2ID0gcHJpdi0+bWRldjsNCiAJdm9pZCAqcnFjID0gcGFyYW0tPnJxYzsNCkBAIC0y MDIxLDE2ICsyMTA2LDE2IEBAIHN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3JxX3BhcmFtKHN0cnVj dCBtbHg1ZV9wcml2ICpwcml2LA0KIAlzd2l0Y2ggKHBhcmFtcy0+cnFfd3FfdHlwZSkgew0KIAlj YXNlIE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9TVFJJRElOR19SUToNCiAJCU1MWDVfU0VUKHdx LCB3cSwgbG9nX3dxZV9udW1fb2Zfc3RyaWRlcywNCi0JCQkgbWx4NWVfbXB3cWVfZ2V0X2xvZ19u dW1fc3RyaWRlcyhtZGV2LCBwYXJhbXMpIC0NCisJCQkgbWx4NWVfbXB3cWVfZ2V0X2xvZ19udW1f c3RyaWRlcyhtZGV2LCBwYXJhbXMsIHhzaykgLQ0KIAkJCSBNTFg1X01QV1FFX0xPR19OVU1fU1RS SURFU19CQVNFKTsNCiAJCU1MWDVfU0VUKHdxLCB3cSwgbG9nX3dxZV9zdHJpZGVfc2l6ZSwNCi0J CQkgbWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJpZGVfc2l6ZShtZGV2LCBwYXJhbXMpIC0NCisJCQkg bWx4NWVfbXB3cWVfZ2V0X2xvZ19zdHJpZGVfc2l6ZShtZGV2LCBwYXJhbXMsIHhzaykgLQ0KIAkJ CSBNTFg1X01QV1FFX0xPR19TVFJJREVfU1pfQkFTRSk7DQotCQlNTFg1X1NFVCh3cSwgd3EsIGxv Z193cV9zeiwgbWx4NWVfbXB3cWVfZ2V0X2xvZ19ycV9zaXplKHBhcmFtcykpOw0KKwkJTUxYNV9T RVQod3EsIHdxLCBsb2dfd3Ffc3osIG1seDVlX21wd3FlX2dldF9sb2dfcnFfc2l6ZShwYXJhbXMs IHhzaykpOw0KIAkJYnJlYWs7DQogCWRlZmF1bHQ6IC8qIE1MWDVfV1FfVFlQRV9DWUNMSUMgKi8N CiAJCU1MWDVfU0VUKHdxLCB3cSwgbG9nX3dxX3N6LCBwYXJhbXMtPmxvZ19ycV9tdHVfZnJhbWVz KTsNCi0JCW1seDVlX2J1aWxkX3JxX2ZyYWdzX2luZm8obWRldiwgcGFyYW1zLCAmcGFyYW0tPmZy YWdzX2luZm8pOw0KKwkJbWx4NWVfYnVpbGRfcnFfZnJhZ3NfaW5mbyhtZGV2LCBwYXJhbXMsIHhz aywgJnBhcmFtLT5mcmFnc19pbmZvKTsNCiAJCW5kc2VncyA9IHBhcmFtLT5mcmFnc19pbmZvLm51 bV9mcmFnczsNCiAJfQ0KIA0KQEAgLTIwNjEsOCArMjE0Niw4IEBAIHN0YXRpYyB2b2lkIG1seDVl X2J1aWxkX2Ryb3BfcnFfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogCXBhcmFtLT53 cS5idWZfbnVtYV9ub2RlID0gZGV2X3RvX25vZGUobWRldi0+ZGV2aWNlKTsNCiB9DQogDQotc3Rh dGljIHZvaWQgbWx4NWVfYnVpbGRfc3FfcGFyYW1fY29tbW9uKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LA0KLQkJCQkJc3RydWN0IG1seDVlX3NxX3BhcmFtICpwYXJhbSkNCit2b2lkIG1seDVlX2J1 aWxkX3NxX3BhcmFtX2NvbW1vbihzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkJIHN0cnVj dCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0pDQogew0KIAl2b2lkICpzcWMgPSBwYXJhbS0+c3FjOw0K IAl2b2lkICp3cSA9IE1MWDVfQUREUl9PRihzcWMsIHNxYywgd3EpOw0KQEAgLTIwOTgsOSArMjE4 MywxMCBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9jb21tb25fY3FfcGFyYW0oc3RydWN0IG1s eDVlX3ByaXYgKnByaXYsDQogCQlNTFg1X1NFVChjcWMsIGNxYywgY3FlX3N6LCBDUUVfU1RSSURF XzEyOF9QQUQpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9yeF9jcV9wYXJhbShz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9wYXJhbXMgKnBh cmFtcywNCi0JCQkJICAgIHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0pDQordm9pZCBtbHg1 ZV9idWlsZF9yeF9jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCisJCQkgICAgIHN0 cnVjdCBtbHg1ZV9wYXJhbXMgKnBhcmFtcywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV94c2tfcGFy YW0gKnhzaywNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0pDQogew0KIAlz dHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiA9IHByaXYtPm1kZXY7DQogCXZvaWQgKmNxYyA9IHBh cmFtLT5jcWM7DQpAQCAtMjEwOCw4ICsyMTk0LDggQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRf cnhfY3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogDQogCXN3aXRjaCAocGFyYW1z LT5ycV93cV90eXBlKSB7DQogCWNhc2UgTUxYNV9XUV9UWVBFX0xJTktFRF9MSVNUX1NUUklESU5H X1JROg0KLQkJbG9nX2NxX3NpemUgPSBtbHg1ZV9tcHdxZV9nZXRfbG9nX3JxX3NpemUocGFyYW1z KSArDQotCQkJbWx4NWVfbXB3cWVfZ2V0X2xvZ19udW1fc3RyaWRlcyhtZGV2LCBwYXJhbXMpOw0K KwkJbG9nX2NxX3NpemUgPSBtbHg1ZV9tcHdxZV9nZXRfbG9nX3JxX3NpemUocGFyYW1zLCB4c2sp ICsNCisJCQltbHg1ZV9tcHdxZV9nZXRfbG9nX251bV9zdHJpZGVzKG1kZXYsIHBhcmFtcywgeHNr KTsNCiAJCWJyZWFrOw0KIAlkZWZhdWx0OiAvKiBNTFg1X1dRX1RZUEVfQ1lDTElDICovDQogCQls b2dfY3Ffc2l6ZSA9IHBhcmFtcy0+bG9nX3JxX210dV9mcmFtZXM7DQpAQCAtMjEyNSw5ICsyMjEx LDkgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfcnhfY3FfcGFyYW0oc3RydWN0IG1seDVlX3By aXYgKnByaXYsDQogCXBhcmFtLT5jcV9wZXJpb2RfbW9kZSA9IHBhcmFtcy0+cnhfY3FfbW9kZXJh dGlvbi5jcV9wZXJpb2RfbW9kZTsNCiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfdHhf Y3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQotCQkJCSAgICBzdHJ1Y3QgbWx4NWVf cGFyYW1zICpwYXJhbXMsDQotCQkJCSAgICBzdHJ1Y3QgbWx4NWVfY3FfcGFyYW0gKnBhcmFtKQ0K K3ZvaWQgbWx4NWVfYnVpbGRfdHhfY3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQor CQkJICAgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQorCQkJICAgICBzdHJ1Y3QgbWx4 NWVfY3FfcGFyYW0gKnBhcmFtKQ0KIHsNCiAJdm9pZCAqY3FjID0gcGFyYW0tPmNxYzsNCiANCkBA IC0yMTM3LDkgKzIyMjMsOSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF90eF9jcV9wYXJhbShz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwNCiAJcGFyYW0tPmNxX3BlcmlvZF9tb2RlID0gcGFyYW1z LT50eF9jcV9tb2RlcmF0aW9uLmNxX3BlcmlvZF9tb2RlOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBt bHg1ZV9idWlsZF9pY29fY3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQotCQkJCSAg ICAgdTggbG9nX3dxX3NpemUsDQotCQkJCSAgICAgc3RydWN0IG1seDVlX2NxX3BhcmFtICpwYXJh bSkNCit2b2lkIG1seDVlX2J1aWxkX2ljb19jcV9wYXJhbShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwNCisJCQkgICAgICB1OCBsb2dfd3Ffc2l6ZSwNCisJCQkgICAgICBzdHJ1Y3QgbWx4NWVfY3Ff cGFyYW0gKnBhcmFtKQ0KIHsNCiAJdm9pZCAqY3FjID0gcGFyYW0tPmNxYzsNCiANCkBAIC0yMTUw LDkgKzIyMzYsOSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9pY29fY3FfcGFyYW0oc3RydWN0 IG1seDVlX3ByaXYgKnByaXYsDQogCXBhcmFtLT5jcV9wZXJpb2RfbW9kZSA9IE5FVF9ESU1fQ1Ff UEVSSU9EX01PREVfU1RBUlRfRlJPTV9FUUU7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG1seDVlX2J1 aWxkX2ljb3NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KLQkJCQkgICAgdTggbG9n X3dxX3NpemUsDQotCQkJCSAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtKQ0KK3ZvaWQg bWx4NWVfYnVpbGRfaWNvc3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJICAg ICB1OCBsb2dfd3Ffc2l6ZSwNCisJCQkgICAgIHN0cnVjdCBtbHg1ZV9zcV9wYXJhbSAqcGFyYW0p DQogew0KIAl2b2lkICpzcWMgPSBwYXJhbS0+c3FjOw0KIAl2b2lkICp3cSA9IE1MWDVfQUREUl9P RihzcWMsIHNxYywgd3EpOw0KQEAgLTIxNjMsOSArMjI0OSw5IEBAIHN0YXRpYyB2b2lkIG1seDVl X2J1aWxkX2ljb3NxX3BhcmFtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KIAlNTFg1X1NFVChz cWMsIHNxYywgcmVnX3VtciwgTUxYNV9DQVBfRVRIKHByaXYtPm1kZXYsIHJlZ191bXJfc3EpKTsN CiB9DQogDQotc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfeGRwc3FfcGFyYW0oc3RydWN0IG1seDVl X3ByaXYgKnByaXYsDQotCQkJCSAgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQotCQkJ CSAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtKQ0KK3ZvaWQgbWx4NWVfYnVpbGRfeGRw c3FfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVf cGFyYW1zICpwYXJhbXMsDQorCQkJICAgICBzdHJ1Y3QgbWx4NWVfc3FfcGFyYW0gKnBhcmFtKQ0K IHsNCiAJdm9pZCAqc3FjID0gcGFyYW0tPnNxYzsNCiAJdm9pZCAqd3EgPSBNTFg1X0FERFJfT0Yo c3FjLCBzcWMsIHdxKTsNCkBAIC0yMTkzLDE0ICsyMjc5LDE0IEBAIHN0YXRpYyB2b2lkIG1seDVl X2J1aWxkX2NoYW5uZWxfcGFyYW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogew0KIAl1OCBp Y29zcV9sb2dfd3Ffc3o7DQogDQotCW1seDVlX2J1aWxkX3JxX3BhcmFtKHByaXYsIHBhcmFtcywg JmNwYXJhbS0+cnEpOw0KKwltbHg1ZV9idWlsZF9ycV9wYXJhbShwcml2LCBwYXJhbXMsIE5VTEws ICZjcGFyYW0tPnJxKTsNCiANCiAJaWNvc3FfbG9nX3dxX3N6ID0gbWx4NWVfYnVpbGRfaWNvc3Ff bG9nX3dxX3N6KHBhcmFtcywgJmNwYXJhbS0+cnEpOw0KIA0KIAltbHg1ZV9idWlsZF9zcV9wYXJh bShwcml2LCBwYXJhbXMsICZjcGFyYW0tPnNxKTsNCiAJbWx4NWVfYnVpbGRfeGRwc3FfcGFyYW0o cHJpdiwgcGFyYW1zLCAmY3BhcmFtLT54ZHBfc3EpOw0KIAltbHg1ZV9idWlsZF9pY29zcV9wYXJh bShwcml2LCBpY29zcV9sb2dfd3Ffc3osICZjcGFyYW0tPmljb3NxKTsNCi0JbWx4NWVfYnVpbGRf cnhfY3FfcGFyYW0ocHJpdiwgcGFyYW1zLCAmY3BhcmFtLT5yeF9jcSk7DQorCW1seDVlX2J1aWxk X3J4X2NxX3BhcmFtKHByaXYsIHBhcmFtcywgTlVMTCwgJmNwYXJhbS0+cnhfY3EpOw0KIAltbHg1 ZV9idWlsZF90eF9jcV9wYXJhbShwcml2LCBwYXJhbXMsICZjcGFyYW0tPnR4X2NxKTsNCiAJbWx4 NWVfYnVpbGRfaWNvX2NxX3BhcmFtKHByaXYsIGljb3NxX2xvZ193cV9zeiwgJmNwYXJhbS0+aWNv c3FfY3EpOw0KIH0NCkBAIC0yMjIxLDcgKzIzMDcsMTIgQEAgaW50IG1seDVlX29wZW5fY2hhbm5l bHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsDQogDQogCW1seDVlX2J1aWxkX2NoYW5uZWxfcGFy YW0ocHJpdiwgJmNocy0+cGFyYW1zLCBjcGFyYW0pOw0KIAlmb3IgKGkgPSAwOyBpIDwgY2hzLT5u dW07IGkrKykgew0KLQkJZXJyID0gbWx4NWVfb3Blbl9jaGFubmVsKHByaXYsIGksICZjaHMtPnBh cmFtcywgY3BhcmFtLCAmY2hzLT5jW2ldKTsNCisJCXN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IE5V TEw7DQorDQorCQlpZiAoY2hzLT5wYXJhbXMueGRwX3Byb2cpDQorCQkJdW1lbSA9IG1seDVlX3hz a19nZXRfdW1lbSgmY2hzLT5wYXJhbXMsIGNocy0+cGFyYW1zLnhzaywgaSk7DQorDQorCQllcnIg PSBtbHg1ZV9vcGVuX2NoYW5uZWwocHJpdiwgaSwgJmNocy0+cGFyYW1zLCBjcGFyYW0sIHVtZW0s ICZjaHMtPmNbaV0pOw0KIAkJaWYgKGVycikNCiAJCQlnb3RvIGVycl9jbG9zZV9jaGFubmVsczsN CiAJfQ0KQEAgLTIyNjMsNiArMjM1NCwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3dhaXRfY2hhbm5l bHNfbWluX3J4X3dxZXMoc3RydWN0IG1seDVlX2NoYW5uZWxzICpjaHMpDQogCQlpbnQgdGltZW91 dCA9IGVyciA/IDAgOiBNTFg1RV9SUV9XUUVTX1RJTUVPVVQ7DQogDQogCQllcnIgfD0gbWx4NWVf d2FpdF9mb3JfbWluX3J4X3dxZXMoJmNocy0+Y1tpXS0+cnEsIHRpbWVvdXQpOw0KKw0KKwkJLyog RG9uJ3Qgd2FpdCBvbiB0aGUgWFNLIFJRLCBiZWNhdXNlIHRoZSBuZXdlciB4ZHBzb2NrIHNhbXBs ZQ0KKwkJICogZG9lc24ndCBwcm92aWRlIGFueSBGaWxsIFJpbmcgZW50cmllcyBhdCB0aGUgc2V0 dXAgc3RhZ2UuDQorCQkgKi8NCiAJfQ0KIA0KIAlyZXR1cm4gZXJyID8gLUVUSU1FRE9VVCA6IDA7 DQpAQCAtMjMzNSwzNSArMjQzMCwzNSBAQCBpbnQgbWx4NWVfY3JlYXRlX2luZGlyZWN0X3JxdChz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJcmV0dXJuIGVycjsNCiB9DQogDQotaW50IG1seDVl X2NyZWF0ZV9kaXJlY3RfcnF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCitpbnQgbWx4NWVf Y3JlYXRlX2RpcmVjdF9ycXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVf dGlyICp0aXJzKQ0KIHsNCi0Jc3RydWN0IG1seDVlX3JxdCAqcnF0Ow0KKwljb25zdCBpbnQgbWF4 X25jaCA9IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQogCWlu dCBlcnI7DQogCWludCBpeDsNCiANCi0JZm9yIChpeCA9IDA7IGl4IDwgbWx4NWVfZ2V0X25ldGRl dl9tYXhfY2hhbm5lbHMocHJpdi0+bmV0ZGV2KTsgaXgrKykgew0KLQkJcnF0ID0gJnByaXYtPmRp cmVjdF90aXJbaXhdLnJxdDsNCi0JCWVyciA9IG1seDVlX2NyZWF0ZV9ycXQocHJpdiwgMSAvKnNp emUgKi8sIHJxdCk7DQotCQlpZiAoZXJyKQ0KKwlmb3IgKGl4ID0gMDsgaXggPCBtYXhfbmNoOyBp eCsrKSB7DQorCQllcnIgPSBtbHg1ZV9jcmVhdGVfcnF0KHByaXYsIDEgLypzaXplICovLCAmdGly c1tpeF0ucnF0KTsNCisJCWlmICh1bmxpa2VseShlcnIpKQ0KIAkJCWdvdG8gZXJyX2Rlc3Ryb3lf cnF0czsNCiAJfQ0KIA0KIAlyZXR1cm4gMDsNCiANCiBlcnJfZGVzdHJveV9ycXRzOg0KLQltbHg1 X2NvcmVfd2Fybihwcml2LT5tZGV2LCAiY3JlYXRlIGRpcmVjdCBycXRzIGZhaWxlZCwgJWRcbiIs IGVycik7DQorCW1seDVfY29yZV93YXJuKHByaXYtPm1kZXYsICJjcmVhdGUgcnF0cyBmYWlsZWQs ICVkXG4iLCBlcnIpOw0KIAlmb3IgKGl4LS07IGl4ID49IDA7IGl4LS0pDQotCQltbHg1ZV9kZXN0 cm95X3JxdChwcml2LCAmcHJpdi0+ZGlyZWN0X3RpcltpeF0ucnF0KTsNCisJCW1seDVlX2Rlc3Ry b3lfcnF0KHByaXYsICZ0aXJzW2l4XS5ycXQpOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCiANCi12 b2lkIG1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQor dm9pZCBtbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBz dHJ1Y3QgbWx4NWVfdGlyICp0aXJzKQ0KIHsNCisJY29uc3QgaW50IG1heF9uY2ggPSBtbHg1ZV9n ZXRfbmV0ZGV2X21heF9jaGFubmVscyhwcml2LT5uZXRkZXYpOw0KIAlpbnQgaTsNCiANCi0JZm9y IChpID0gMDsgaSA8IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7 IGkrKykNCi0JCW1seDVlX2Rlc3Ryb3lfcnF0KHByaXYsICZwcml2LT5kaXJlY3RfdGlyW2ldLnJx dCk7DQorCWZvciAoaSA9IDA7IGkgPCBtYXhfbmNoOyBpKyspDQorCQltbHg1ZV9kZXN0cm95X3Jx dChwcml2LCAmdGlyc1tpXS5ycXQpOw0KIH0NCiANCiBzdGF0aWMgaW50IG1seDVlX3J4X2hhc2hf Zm4oaW50IGhmdW5jKQ0KQEAgLTI3OTksMTAgKzI4OTQsMTQgQEAgdm9pZCBtbHg1ZV9hY3RpdmF0 ZV9wcml2X2NoYW5uZWxzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIA0KIAltbHg1ZV93YWl0 X2NoYW5uZWxzX21pbl9yeF93cWVzKCZwcml2LT5jaGFubmVscyk7DQogCW1seDVlX3JlZGlyZWN0 X3JxdHNfdG9fY2hhbm5lbHMocHJpdiwgJnByaXYtPmNoYW5uZWxzKTsNCisNCisJbWx4NWVfeHNr X3JlZGlyZWN0X3JxdHNfdG9fY2hhbm5lbHMocHJpdiwgJnByaXYtPmNoYW5uZWxzKTsNCiB9DQog DQogdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3ByaXZfY2hhbm5lbHMoc3RydWN0IG1seDVlX3ByaXYg KnByaXYpDQogew0KKwltbHg1ZV94c2tfcmVkaXJlY3RfcnF0c190b19kcm9wKHByaXYsICZwcml2 LT5jaGFubmVscyk7DQorDQogCW1seDVlX3JlZGlyZWN0X3JxdHNfdG9fZHJvcChwcml2KTsNCiAN CiAJaWYgKG1seDVlX2lzX3Zwb3J0X3JlcChwcml2KSkNCkBAIC0yODgxLDkgKzI5ODAsMTIgQEAg dm9pZCBtbHg1ZV90aW1lc3RhbXBfaW5pdChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiBpbnQg bWx4NWVfb3Blbl9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikNCiB7DQogCXN0cnVj dCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsNCisJYm9vbCBpc194ZHAg PSBwcml2LT5jaGFubmVscy5wYXJhbXMueGRwX3Byb2c7DQogCWludCBlcnI7DQogDQogCXNldF9i aXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUpOw0KKwlpZiAoaXNfeGRwKQ0KKwkJ bWx4NWVfeGRwX3NldF9vcGVuKHByaXYpOw0KIA0KIAllcnIgPSBtbHg1ZV9vcGVuX2NoYW5uZWxz KHByaXYsICZwcml2LT5jaGFubmVscyk7DQogCWlmIChlcnIpDQpAQCAtMjg5OCw2ICszMDAwLDgg QEAgaW50IG1seDVlX29wZW5fbG9ja2VkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQogCXJl dHVybiAwOw0KIA0KIGVycl9jbGVhcl9zdGF0ZV9vcGVuZWRfZmxhZzoNCisJaWYgKGlzX3hkcCkN CisJCW1seDVlX3hkcF9zZXRfY2xvc2VkKHByaXYpOw0KIAljbGVhcl9iaXQoTUxYNUVfU1RBVEVf T1BFTkVELCAmcHJpdi0+c3RhdGUpOw0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC0yOTI5LDYgKzMw MzMsOCBAQCBpbnQgbWx4NWVfY2xvc2VfbG9ja2VkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYp DQogCWlmICghdGVzdF9iaXQoTUxYNUVfU1RBVEVfT1BFTkVELCAmcHJpdi0+c3RhdGUpKQ0KIAkJ cmV0dXJuIDA7DQogDQorCWlmIChwcml2LT5jaGFubmVscy5wYXJhbXMueGRwX3Byb2cpDQorCQlt bHg1ZV94ZHBfc2V0X2Nsb3NlZChwcml2KTsNCiAJY2xlYXJfYml0KE1MWDVFX1NUQVRFX09QRU5F RCwgJnByaXYtPnN0YXRlKTsNCiANCiAJbmV0aWZfY2Fycmllcl9vZmYocHJpdi0+bmV0ZGV2KTsN CkBAIC0zMTg1LDEzICszMjkxLDEzIEBAIGludCBtbHg1ZV9jcmVhdGVfaW5kaXJlY3RfdGlycyhz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgYm9vbCBpbm5lcl90dGMpDQogCXJldHVybiBlcnI7DQog fQ0KIA0KLWludCBtbHg1ZV9jcmVhdGVfZGlyZWN0X3RpcnMoc3RydWN0IG1seDVlX3ByaXYgKnBy aXYpDQoraW50IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwgc3RydWN0IG1seDVlX3RpciAqdGlycykNCiB7DQotCWludCBuY2ggPSBtbHg1ZV9nZXRfbmV0 ZGV2X21heF9jaGFubmVscyhwcml2LT5uZXRkZXYpOw0KKwljb25zdCBpbnQgbWF4X25jaCA9IG1s eDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQogCXN0cnVjdCBtbHg1 ZV90aXIgKnRpcjsNCiAJdm9pZCAqdGlyYzsNCiAJaW50IGlubGVuOw0KLQlpbnQgZXJyOw0KKwlp bnQgZXJyID0gMDsNCiAJdTMyICppbjsNCiAJaW50IGl4Ow0KIA0KQEAgLTMyMDAsMjUgKzMzMDYs MjQgQEAgaW50IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp dikNCiAJaWYgKCFpbikNCiAJCXJldHVybiAtRU5PTUVNOw0KIA0KLQlmb3IgKGl4ID0gMDsgaXgg PCBuY2g7IGl4KyspIHsNCisJZm9yIChpeCA9IDA7IGl4IDwgbWF4X25jaDsgaXgrKykgew0KIAkJ bWVtc2V0KGluLCAwLCBpbmxlbik7DQotCQl0aXIgPSAmcHJpdi0+ZGlyZWN0X3RpcltpeF07DQor CQl0aXIgPSAmdGlyc1tpeF07DQogCQl0aXJjID0gTUxYNV9BRERSX09GKGNyZWF0ZV90aXJfaW4s IGluLCBjdHgpOw0KLQkJbWx4NWVfYnVpbGRfZGlyZWN0X3Rpcl9jdHgocHJpdiwgcHJpdi0+ZGly ZWN0X3RpcltpeF0ucnF0LnJxdG4sIHRpcmMpOw0KKwkJbWx4NWVfYnVpbGRfZGlyZWN0X3Rpcl9j dHgocHJpdiwgdGlyLT5ycXQucnF0biwgdGlyYyk7DQogCQllcnIgPSBtbHg1ZV9jcmVhdGVfdGly KHByaXYtPm1kZXYsIHRpciwgaW4sIGlubGVuKTsNCi0JCWlmIChlcnIpDQorCQlpZiAodW5saWtl bHkoZXJyKSkNCiAJCQlnb3RvIGVycl9kZXN0cm95X2NoX3RpcnM7DQogCX0NCiANCi0Ja3ZmcmVl KGluKTsNCi0NCi0JcmV0dXJuIDA7DQorCWdvdG8gb3V0Ow0KIA0KIGVycl9kZXN0cm95X2NoX3Rp cnM6DQotCW1seDVfY29yZV93YXJuKHByaXYtPm1kZXYsICJjcmVhdGUgZGlyZWN0IHRpcnMgZmFp bGVkLCAlZFxuIiwgZXJyKTsNCisJbWx4NV9jb3JlX3dhcm4ocHJpdi0+bWRldiwgImNyZWF0ZSB0 aXJzIGZhaWxlZCwgJWRcbiIsIGVycik7DQogCWZvciAoaXgtLTsgaXggPj0gMDsgaXgtLSkNCi0J CW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYsICZwcml2LT5kaXJlY3RfdGlyW2l4XSk7DQor CQltbHg1ZV9kZXN0cm95X3Rpcihwcml2LT5tZGV2LCAmdGlyc1tpeF0pOw0KIA0KK291dDoNCiAJ a3ZmcmVlKGluKTsNCiANCiAJcmV0dXJuIGVycjsNCkBAIC0zMjM4LDEzICszMzQzLDEzIEBAIHZv aWQgbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBi b29sIGlubmVyX3R0YykNCiAJCW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYsICZwcml2LT5p bm5lcl9pbmRpcl90aXJbaV0pOw0KIH0NCiANCi12b2lkIG1seDVlX2Rlc3Ryb3lfZGlyZWN0X3Rp cnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQordm9pZCBtbHg1ZV9kZXN0cm95X2RpcmVjdF90 aXJzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NWVfdGlyICp0aXJzKQ0KIHsN Ci0JaW50IG5jaCA9IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7 DQorCWNvbnN0IGludCBtYXhfbmNoID0gbWx4NWVfZ2V0X25ldGRldl9tYXhfY2hhbm5lbHMocHJp di0+bmV0ZGV2KTsNCiAJaW50IGk7DQogDQotCWZvciAoaSA9IDA7IGkgPCBuY2g7IGkrKykNCi0J CW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYtPm1kZXYsICZwcml2LT5kaXJlY3RfdGlyW2ldKTsNCisJ Zm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykNCisJCW1seDVlX2Rlc3Ryb3lfdGlyKHByaXYt Pm1kZXYsICZ0aXJzW2ldKTsNCiB9DQogDQogc3RhdGljIGludCBtbHg1ZV9tb2RpZnlfY2hhbm5l bHNfc2NhdHRlcl9mY3Moc3RydWN0IG1seDVlX2NoYW5uZWxzICpjaHMsIGJvb2wgZW5hYmxlKQ0K QEAgLTMzODYsMTEgKzM0OTEsMTIgQEAgdm9pZCBtbHg1ZV9mb2xkX3N3X3N0YXRzNjQoc3RydWN0 IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcykNCiANCiAJZm9y IChpID0gMDsgaSA8IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7 IGkrKykgew0KIAkJc3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSAm cHJpdi0+Y2hhbm5lbF9zdGF0c1tpXTsNCisJCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFf c3RhdHMgPSAmY2hhbm5lbF9zdGF0cy0+eHNrcnE7DQogCQlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMg KnJxX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnJxOw0KIAkJaW50IGo7DQogDQotCQlzLT5yeF9w YWNrZXRzICAgKz0gcnFfc3RhdHMtPnBhY2tldHM7DQotCQlzLT5yeF9ieXRlcyAgICAgKz0gcnFf c3RhdHMtPmJ5dGVzOw0KKwkJcy0+cnhfcGFja2V0cyAgICs9IHJxX3N0YXRzLT5wYWNrZXRzICsg eHNrcnFfc3RhdHMtPnBhY2tldHM7DQorCQlzLT5yeF9ieXRlcyAgICAgKz0gcnFfc3RhdHMtPmJ5 dGVzICsgeHNrcnFfc3RhdHMtPmJ5dGVzOw0KIA0KIAkJZm9yIChqID0gMDsgaiA8IHByaXYtPm1h eF9vcGVuZWRfdGM7IGorKykgew0KIAkJCXN0cnVjdCBtbHg1ZV9zcV9zdGF0cyAqc3Ffc3RhdHMg PSAmY2hhbm5lbF9zdGF0cy0+c3Fbal07DQpAQCAtMzQ4OSw2ICszNTk1LDEzIEBAIHN0YXRpYyBp bnQgc2V0X2ZlYXR1cmVfbHJvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGJvb2wgZW5hYmxl KQ0KIA0KIAltdXRleF9sb2NrKCZwcml2LT5zdGF0ZV9sb2NrKTsNCiANCisJaWYgKGVuYWJsZSAm JiBwcml2LT54c2sucmVmY250KSB7DQorCQluZXRkZXZfd2FybihuZXRkZXYsICJMUk8gaXMgaW5j b21wYXRpYmxlIHdpdGggQUZfWERQICglaHUgWFNLcyBhcmUgYWN0aXZlKVxuIiwNCisJCQkgICAg cHJpdi0+eHNrLnJlZmNudCk7DQorCQllcnIgPSAtRUlOVkFMOw0KKwkJZ290byBvdXQ7DQorCX0N CisNCiAJb2xkX3BhcmFtcyA9ICZwcml2LT5jaGFubmVscy5wYXJhbXM7DQogCWlmIChlbmFibGUg JiYgIU1MWDVFX0dFVF9QRkxBRyhvbGRfcGFyYW1zLCBNTFg1RV9QRkxBR19SWF9TVFJJRElOR19S USkpIHsNCiAJCW5ldGRldl93YXJuKG5ldGRldiwgImNhbid0IHNldCBMUk8gd2l0aCBsZWdhY3kg UlFcbiIpOw0KQEAgLTM1MDIsOCArMzYxNSw4IEBAIHN0YXRpYyBpbnQgc2V0X2ZlYXR1cmVfbHJv KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGJvb2wgZW5hYmxlKQ0KIAluZXdfY2hhbm5lbHMu cGFyYW1zLmxyb19lbiA9IGVuYWJsZTsNCiANCiAJaWYgKG9sZF9wYXJhbXMtPnJxX3dxX3R5cGUg IT0gTUxYNV9XUV9UWVBFX0NZQ0xJQykgew0KLQkJaWYgKG1seDVlX3J4X21wd3FlX2lzX2xpbmVh cl9za2IobWRldiwgb2xkX3BhcmFtcykgPT0NCi0JCSAgICBtbHg1ZV9yeF9tcHdxZV9pc19saW5l YXJfc2tiKG1kZXYsICZuZXdfY2hhbm5lbHMucGFyYW1zKSkNCisJCWlmIChtbHg1ZV9yeF9tcHdx ZV9pc19saW5lYXJfc2tiKG1kZXYsIG9sZF9wYXJhbXMsIE5VTEwpID09DQorCQkgICAgbWx4NWVf cnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCAmbmV3X2NoYW5uZWxzLnBhcmFtcywgTlVMTCkp DQogCQkJcmVzZXQgPSBmYWxzZTsNCiAJfQ0KIA0KQEAgLTM2ODgsNiArMzgwMSw0MyBAQCBzdGF0 aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgbWx4NWVfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNl ICpuZXRkZXYsDQogCXJldHVybiBmZWF0dXJlczsNCiB9DQogDQorc3RhdGljIGJvb2wgbWx4NWVf eHNrX3ZhbGlkYXRlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LA0KKwkJCQkgICBzdHJ1 Y3QgbWx4NWVfY2hhbm5lbHMgKmNocywNCisJCQkJICAgc3RydWN0IG1seDVlX3BhcmFtcyAqbmV3 X3BhcmFtcywNCisJCQkJICAgc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpDQorew0KKwl1MTYg aXg7DQorDQorCWZvciAoaXggPSAwOyBpeCA8IGNocy0+cGFyYW1zLm51bV9jaGFubmVsczsgaXgr Kykgew0KKwkJc3RydWN0IHhkcF91bWVtICp1bWVtID0gbWx4NWVfeHNrX2dldF91bWVtKCZjaHMt PnBhcmFtcywgY2hzLT5wYXJhbXMueHNrLCBpeCk7DQorCQlzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFt IHhzazsNCisNCisJCWlmICghdW1lbSkNCisJCQljb250aW51ZTsNCisNCisJCW1seDVlX2J1aWxk X3hza19wYXJhbSh1bWVtLCAmeHNrKTsNCisNCisJCWlmICghbWx4NWVfdmFsaWRhdGVfeHNrX3Bh cmFtKG5ld19wYXJhbXMsICZ4c2ssIG1kZXYpKSB7DQorCQkJdTMyIGhyID0gbWx4NWVfZ2V0X2xp bmVhcl9ycV9oZWFkcm9vbShuZXdfcGFyYW1zLCAmeHNrKTsNCisJCQlpbnQgbWF4X210dV9mcmFt ZSwgbWF4X210dV9wYWdlLCBtYXhfbXR1Ow0KKw0KKwkJCS8qIFR3byBjcml0ZXJpYSBtdXN0IGJl IG1ldDoNCisJCQkgKiAxLiBIVyBNVFUgKyBhbGwgaGVhZHJvb21zIDw9IFhTSyBmcmFtZSBzaXpl Lg0KKwkJCSAqIDIuIFNpemUgb2YgU0tCcyBhbGxvY2F0ZWQgb24gWERQX1BBU1MgPD0gUEFHRV9T SVpFLg0KKwkJCSAqLw0KKwkJCW1heF9tdHVfZnJhbWUgPSBNTFg1RV9IVzJTV19NVFUobmV3X3Bh cmFtcywgeHNrLmNodW5rX3NpemUgLSBocik7DQorCQkJbWF4X210dV9wYWdlID0gbWx4NWVfeGRw X21heF9tdHUobmV3X3BhcmFtcywgJnhzayk7DQorCQkJbWF4X210dSA9IG1pbihtYXhfbXR1X2Zy YW1lLCBtYXhfbXR1X3BhZ2UpOw0KKw0KKwkJCW5ldGRldl9lcnIobmV0ZGV2LCAiTVRVICVkIGlz IHRvbyBiaWcgZm9yIGFuIFhTSyBydW5uaW5nIG9uIGNoYW5uZWwgJWh1LiBUcnkgTVRVIDw9ICVk XG4iLA0KKwkJCQkgICBuZXdfcGFyYW1zLT5zd19tdHUsIGl4LCBtYXhfbXR1KTsNCisJCQlyZXR1 cm4gZmFsc2U7DQorCQl9DQorCX0NCisNCisJcmV0dXJuIHRydWU7DQorfQ0KKw0KIGludCBtbHg1 ZV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBuZXdfbXR1LA0KIAkJ ICAgICBjaGFuZ2VfaHdfbXR1X2NiIHNldF9tdHVfY2IpDQogew0KQEAgLTM3MDgsMTggKzM4NTgs MzEgQEAgaW50IG1seDVlX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50 IG5ld19tdHUsDQogCW5ld19jaGFubmVscy5wYXJhbXMuc3dfbXR1ID0gbmV3X210dTsNCiANCiAJ aWYgKHBhcmFtcy0+eGRwX3Byb2cgJiYNCi0JICAgICFtbHg1ZV9yeF9pc19saW5lYXJfc2tiKCZu ZXdfY2hhbm5lbHMucGFyYW1zKSkgew0KKwkgICAgIW1seDVlX3J4X2lzX2xpbmVhcl9za2IoJm5l d19jaGFubmVscy5wYXJhbXMsIE5VTEwpKSB7DQogCQluZXRkZXZfZXJyKG5ldGRldiwgIk1UVSgl ZCkgPiAlZCBpcyBub3QgYWxsb3dlZCB3aGlsZSBYRFAgZW5hYmxlZFxuIiwNCiAJCQkgICBuZXdf bXR1LCBtbHg1ZV94ZHBfbWF4X210dShwYXJhbXMsIE5VTEwpKTsNCiAJCWVyciA9IC1FSU5WQUw7 DQogCQlnb3RvIG91dDsNCiAJfQ0KIA0KKwlpZiAocHJpdi0+eHNrLnJlZmNudCAmJg0KKwkgICAg IW1seDVlX3hza192YWxpZGF0ZV9tdHUobmV0ZGV2LCAmcHJpdi0+Y2hhbm5lbHMsDQorCQkJCSAg ICAmbmV3X2NoYW5uZWxzLnBhcmFtcywgcHJpdi0+bWRldikpIHsNCisJCWVyciA9IC1FSU5WQUw7 DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KIAlpZiAocGFyYW1zLT5ycV93cV90eXBlID09IE1MWDVf V1FfVFlQRV9MSU5LRURfTElTVF9TVFJJRElOR19SUSkgew0KLQkJYm9vbCBpc19saW5lYXIgPSBt bHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKHByaXYtPm1kZXYsICZuZXdfY2hhbm5lbHMucGFy YW1zKTsNCi0JCXU4IHBwd19vbGQgPSBtbHg1ZV9tcHdxZV9sb2dfcGt0c19wZXJfd3FlKHBhcmFt cyk7DQotCQl1OCBwcHdfbmV3ID0gbWx4NWVfbXB3cWVfbG9nX3BrdHNfcGVyX3dxZSgmbmV3X2No YW5uZWxzLnBhcmFtcyk7DQorCQlib29sIGlzX2xpbmVhciA9IG1seDVlX3J4X21wd3FlX2lzX2xp bmVhcl9za2IocHJpdi0+bWRldiwNCisJCQkJCQkJICAgICAgJm5ld19jaGFubmVscy5wYXJhbXMs DQorCQkJCQkJCSAgICAgIE5VTEwpOw0KKwkJdTggcHB3X29sZCA9IG1seDVlX21wd3FlX2xvZ19w a3RzX3Blcl93cWUocGFyYW1zLCBOVUxMKTsNCisJCXU4IHBwd19uZXcgPSBtbHg1ZV9tcHdxZV9s b2dfcGt0c19wZXJfd3FlKCZuZXdfY2hhbm5lbHMucGFyYW1zLCBOVUxMKTsNCiANCisJCS8qIElm IFhTSyBpcyBhY3RpdmUsIFhTSyBSUXMgYXJlIGxpbmVhci4gKi8NCisJCWlzX2xpbmVhciB8PSBw cml2LT54c2sucmVmY250Ow0KKw0KKwkJLyogQWx3YXlzIHJlc2V0IGluIGxpbmVhciBtb2RlIC0g aHdfbXR1IGlzIHVzZWQgaW4gZGF0YSBwYXRoLiAqLw0KIAkJcmVzZXQgPSByZXNldCAmJiAoaXNf bGluZWFyIHx8IChwcHdfb2xkICE9IHBwd19uZXcpKTsNCiAJfQ0KIA0KQEAgLTQxNDksNyArNDMx MiwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3hkcF9hbGxvd2VkKHN0cnVjdCBtbHg1ZV9wcml2ICpw cml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpDQogCW5ld19jaGFubmVscy5wYXJhbXMgPSBwcml2 LT5jaGFubmVscy5wYXJhbXM7DQogCW5ld19jaGFubmVscy5wYXJhbXMueGRwX3Byb2cgPSBwcm9n Ow0KIA0KLQlpZiAoIW1seDVlX3J4X2lzX2xpbmVhcl9za2IoJm5ld19jaGFubmVscy5wYXJhbXMp KSB7DQorCS8qIE5vIFhTSyBwYXJhbXM6IEFGX1hEUCBjYW4ndCBiZSBlbmFibGVkIHlldCBhdCB0 aGUgcG9pbnQgb2Ygc2V0dGluZw0KKwkgKiB0aGUgWERQIHByb2dyYW0uDQorCSAqLw0KKwlpZiAo IW1seDVlX3J4X2lzX2xpbmVhcl9za2IoJm5ld19jaGFubmVscy5wYXJhbXMsIE5VTEwpKSB7DQog CQluZXRkZXZfd2FybihuZXRkZXYsICJYRFAgaXMgbm90IGFsbG93ZWQgd2l0aCBNVFUoJWQpID4g JWRcbiIsDQogCQkJICAgIG5ld19jaGFubmVscy5wYXJhbXMuc3dfbXR1LA0KIAkJCSAgICBtbHg1 ZV94ZHBfbWF4X210dSgmbmV3X2NoYW5uZWxzLnBhcmFtcywgTlVMTCkpOw0KQEAgLTQyMTMsMTkg KzQzNzksMjkgQEAgc3RhdGljIGludCBtbHg1ZV94ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpu ZXRkZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZykNCiAJICovDQogCWZvciAoaSA9IDA7IGkgPCBw cml2LT5jaGFubmVscy5udW07IGkrKykgew0KIAkJc3RydWN0IG1seDVlX2NoYW5uZWwgKmMgPSBw cml2LT5jaGFubmVscy5jW2ldOw0KKwkJYm9vbCB4c2tfb3BlbiA9IHRlc3RfYml0KE1MWDVFX0NI QU5ORUxfU1RBVEVfWFNLLCBjLT5zdGF0ZSk7DQogDQogCQljbGVhcl9iaXQoTUxYNUVfUlFfU1RB VEVfRU5BQkxFRCwgJmMtPnJxLnN0YXRlKTsNCisJCWlmICh4c2tfb3BlbikNCisJCQljbGVhcl9i aXQoTUxYNUVfUlFfU1RBVEVfRU5BQkxFRCwgJmMtPnhza3JxLnN0YXRlKTsNCiAJCW5hcGlfc3lu Y2hyb25pemUoJmMtPm5hcGkpOw0KIAkJLyogcHJldmVudCBtbHg1ZV9wb2xsX3J4X2NxIGZyb20g YWNjZXNzaW5nIHJxLT54ZHBfcHJvZyAqLw0KIA0KIAkJb2xkX3Byb2cgPSB4Y2hnKCZjLT5ycS54 ZHBfcHJvZywgcHJvZyk7DQorCQlpZiAob2xkX3Byb2cpDQorCQkJYnBmX3Byb2dfcHV0KG9sZF9w cm9nKTsNCisNCisJCWlmICh4c2tfb3Blbikgew0KKwkJCW9sZF9wcm9nID0geGNoZygmYy0+eHNr cnEueGRwX3Byb2csIHByb2cpOw0KKwkJCWlmIChvbGRfcHJvZykNCisJCQkJYnBmX3Byb2dfcHV0 KG9sZF9wcm9nKTsNCisJCX0NCiANCiAJCXNldF9iaXQoTUxYNUVfUlFfU1RBVEVfRU5BQkxFRCwg JmMtPnJxLnN0YXRlKTsNCisJCWlmICh4c2tfb3BlbikNCisJCQlzZXRfYml0KE1MWDVFX1JRX1NU QVRFX0VOQUJMRUQsICZjLT54c2tycS5zdGF0ZSk7DQogCQkvKiBuYXBpX3NjaGVkdWxlIGluIGNh c2Ugd2UgaGF2ZSBtaXNzZWQgYW55dGhpbmcgKi8NCiAJCW5hcGlfc2NoZWR1bGUoJmMtPm5hcGkp Ow0KLQ0KLQkJaWYgKG9sZF9wcm9nKQ0KLQkJCWJwZl9wcm9nX3B1dChvbGRfcHJvZyk7DQogCX0N CiANCiB1bmxvY2s6DQpAQCAtNDI1Niw2ICs0NDMyLDkgQEAgc3RhdGljIGludCBtbHg1ZV94ZHAo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9icGYgKnhkcCkNCiAJY2FzZSBY RFBfUVVFUllfUFJPRzoNCiAJCXhkcC0+cHJvZ19pZCA9IG1seDVlX3hkcF9xdWVyeShkZXYpOw0K IAkJcmV0dXJuIDA7DQorCWNhc2UgWERQX1NFVFVQX1hTS19VTUVNOg0KKwkJcmV0dXJuIG1seDVl X3hza19zZXR1cF91bWVtKGRldiwgeGRwLT54c2sudW1lbSwNCisJCQkJCSAgICB4ZHAtPnhzay5x dWV1ZV9pZCk7DQogCWRlZmF1bHQ6DQogCQlyZXR1cm4gLUVJTlZBTDsNCiAJfQ0KQEAgLTQzMzgs NiArNDUxNyw3IEBAIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtbHg1ZV9uZXRkZXZfb3Bz ID0gew0KIAkubmRvX3R4X3RpbWVvdXQgICAgICAgICAgPSBtbHg1ZV90eF90aW1lb3V0LA0KIAku bmRvX2JwZgkJID0gbWx4NWVfeGRwLA0KIAkubmRvX3hkcF94bWl0ICAgICAgICAgICAgPSBtbHg1 ZV94ZHBfeG1pdCwNCisJLm5kb194c2tfYXN5bmNfeG1pdCAgICAgID0gbWx4NWVfeHNrX2FzeW5j X3htaXQsDQogI2lmZGVmIENPTkZJR19NTFg1X0VOX0FSRlMNCiAJLm5kb19yeF9mbG93X3N0ZWVy CSA9IG1seDVlX3J4X2Zsb3dfc3RlZXIsDQogI2VuZGlmDQpAQCAtNDQ4OSwxMSArNDY2OSwxMyBA QCB2b2lkIG1seDVlX2J1aWxkX3JxX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwN CiAJICogLSBTdHJpZGluZyBSUSBjb25maWd1cmF0aW9uIGlzIG5vdCBwb3NzaWJsZS9zdXBwb3J0 ZWQuDQogCSAqIC0gU2xvdyBQQ0kgaGV1cmlzdGljLg0KIAkgKiAtIExlZ2FjeSBSUSB3b3VsZCB1 c2UgbGluZWFyIFNLQiB3aGlsZSBTdHJpZGluZyBSUSB3b3VsZCB1c2Ugbm9uLWxpbmVhci4NCisJ ICoNCisJICogTm8gWFNLIHBhcmFtczogY2hlY2tpbmcgdGhlIGF2YWlsYWJpbGl0eSBvZiBzdHJp ZGluZyBSUSBpbiBnZW5lcmFsLg0KIAkgKi8NCiAJaWYgKCFzbG93X3BjaV9oZXVyaXN0aWMobWRl dikgJiYNCiAJICAgIG1seDVlX3N0cmlkaW5nX3JxX3Bvc3NpYmxlKG1kZXYsIHBhcmFtcykgJiYN Ci0JICAgIChtbHg1ZV9yeF9tcHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFtcykgfHwNCi0J ICAgICAhbWx4NWVfcnhfaXNfbGluZWFyX3NrYihwYXJhbXMpKSkNCisJICAgIChtbHg1ZV9yeF9t cHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFtcywgTlVMTCkgfHwNCisJICAgICAhbWx4NWVf cnhfaXNfbGluZWFyX3NrYihwYXJhbXMsIE5VTEwpKSkNCiAJCU1MWDVFX1NFVF9QRkxBRyhwYXJh bXMsIE1MWDVFX1BGTEFHX1JYX1NUUklESU5HX1JRLCB0cnVlKTsNCiAJbWx4NWVfc2V0X3JxX3R5 cGUobWRldiwgcGFyYW1zKTsNCiAJbWx4NWVfaW5pdF9ycV90eXBlX3BhcmFtcyhtZGV2LCBwYXJh bXMpOw0KQEAgLTQ1MTUsNiArNDY5Nyw3IEBAIHZvaWQgbWx4NWVfYnVpbGRfcnNzX3BhcmFtcyhz dHJ1Y3QgbWx4NWVfcnNzX3BhcmFtcyAqcnNzX3BhcmFtcywNCiB9DQogDQogdm9pZCBtbHg1ZV9i dWlsZF9uaWNfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2LA0KKwkJCSAgICBzdHJ1 Y3QgbWx4NWVfeHNrICp4c2ssDQogCQkJICAgIHN0cnVjdCBtbHg1ZV9yc3NfcGFyYW1zICpyc3Nf cGFyYW1zLA0KIAkJCSAgICBzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJhbXMsDQogCQkJICAgIHUx NiBtYXhfY2hhbm5lbHMsIHUxNiBtdHUpDQpAQCAtNDU1MCw5ICs0NzMzLDExIEBAIHZvaWQgbWx4 NWVfYnVpbGRfbmljX3BhcmFtcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwNCiAJLyogSFcg TFJPICovDQogDQogCS8qIFRPRE86ICYmIE1MWDVfQ0FQX0VUSChtZGV2LCBscm9fY2FwKSAqLw0K LQlpZiAocGFyYW1zLT5ycV93cV90eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9TVFJJ RElOR19SUSkNCi0JCWlmICghbWx4NWVfcnhfbXB3cWVfaXNfbGluZWFyX3NrYihtZGV2LCBwYXJh bXMpKQ0KKwlpZiAocGFyYW1zLT5ycV93cV90eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURfTElT VF9TVFJJRElOR19SUSkgew0KKwkJLyogTm8gWFNLIHBhcmFtczogY2hlY2tpbmcgdGhlIGF2YWls YWJpbGl0eSBvZiBzdHJpZGluZyBSUSBpbiBnZW5lcmFsLiAqLw0KKwkJaWYgKCFtbHg1ZV9yeF9t cHdxZV9pc19saW5lYXJfc2tiKG1kZXYsIHBhcmFtcywgTlVMTCkpDQogCQkJcGFyYW1zLT5scm9f ZW4gPSAhc2xvd19wY2lfaGV1cmlzdGljKG1kZXYpOw0KKwl9DQogCXBhcmFtcy0+bHJvX3RpbWVv dXQgPSBtbHg1ZV9jaG9vc2VfbHJvX3RpbWVvdXQobWRldiwgTUxYNUVfREVGQVVMVF9MUk9fVElN RU9VVCk7DQogDQogCS8qIENRIG1vZGVyYXRpb24gcGFyYW1zICovDQpAQCAtNDU3MSw2ICs0NzU2 LDkgQEAgdm9pZCBtbHg1ZV9idWlsZF9uaWNfcGFyYW1zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpt ZGV2LA0KIAltbHg1ZV9idWlsZF9yc3NfcGFyYW1zKHJzc19wYXJhbXMsIHBhcmFtcy0+bnVtX2No YW5uZWxzKTsNCiAJcGFyYW1zLT50dW5uZWxlZF9vZmZsb2FkX2VuID0NCiAJCW1seDVlX3R1bm5l bF9pbm5lcl9mdF9zdXBwb3J0ZWQobWRldik7DQorDQorCS8qIEFGX1hEUCAqLw0KKwlwYXJhbXMt PnhzayA9IHhzazsNCiB9DQogDQogc3RhdGljIHZvaWQgbWx4NWVfc2V0X25ldGRldl9kZXZfYWRk cihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQ0KQEAgLTQ3MzksNyArNDkyNyw3IEBAIHN0YXRp YyBpbnQgbWx4NWVfbmljX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsDQogCWlmIChl cnIpDQogCQlyZXR1cm4gZXJyOw0KIA0KLQltbHg1ZV9idWlsZF9uaWNfcGFyYW1zKG1kZXYsIHJz cywgJnByaXYtPmNoYW5uZWxzLnBhcmFtcywNCisJbWx4NWVfYnVpbGRfbmljX3BhcmFtcyhtZGV2 LCAmcHJpdi0+eHNrLCByc3MsICZwcml2LT5jaGFubmVscy5wYXJhbXMsDQogCQkJICAgICAgIG1s eDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKG5ldGRldiksDQogCQkJICAgICAgIG5ldGRldi0+ bXR1KTsNCiANCkBAIC00NzgxLDcgKzQ5NjksNyBAQCBzdGF0aWMgaW50IG1seDVlX2luaXRfbmlj X3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfY2xv c2VfZHJvcF9ycTsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF9ycXRzKHByaXYpOw0K KwllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3JxdHMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7 DQogCWlmIChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2luZGlyZWN0X3JxdHM7DQogDQpAQCAt NDc4OSwxNCArNDk3NywyMiBAQCBzdGF0aWMgaW50IG1seDVlX2luaXRfbmljX3J4KHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZGVzdHJveV9kaXJlY3Rf cnF0czsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF90aXJzKHByaXYpOw0KKwllcnIg PSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3RpcnMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogCWlm IChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2luZGlyZWN0X3RpcnM7DQogDQorCWVyciA9IG1s eDVlX2NyZWF0ZV9kaXJlY3RfcnF0cyhwcml2LCBwcml2LT54c2tfdGlyKTsNCisJaWYgKHVubGlr ZWx5KGVycikpDQorCQlnb3RvIGVycl9kZXN0cm95X2RpcmVjdF90aXJzOw0KKw0KKwllcnIgPSBt bHg1ZV9jcmVhdGVfZGlyZWN0X3RpcnMocHJpdiwgcHJpdi0+eHNrX3Rpcik7DQorCWlmICh1bmxp a2VseShlcnIpKQ0KKwkJZ290byBlcnJfZGVzdHJveV94c2tfcnF0czsNCisNCiAJZXJyID0gbWx4 NWVfY3JlYXRlX2Zsb3dfc3RlZXJpbmcocHJpdik7DQogCWlmIChlcnIpIHsNCiAJCW1seDVfY29y ZV93YXJuKG1kZXYsICJjcmVhdGUgZmxvdyBzdGVlcmluZyBmYWlsZWQsICVkXG4iLCBlcnIpOw0K LQkJZ290byBlcnJfZGVzdHJveV9kaXJlY3RfdGlyczsNCisJCWdvdG8gZXJyX2Rlc3Ryb3lfeHNr X3RpcnM7DQogCX0NCiANCiAJZXJyID0gbWx4NWVfdGNfbmljX2luaXQocHJpdik7DQpAQCAtNDgw NywxMiArNTAwMywxNiBAQCBzdGF0aWMgaW50IG1seDVlX2luaXRfbmljX3J4KHN0cnVjdCBtbHg1 ZV9wcml2ICpwcml2KQ0KIA0KIGVycl9kZXN0cm95X2Zsb3dfc3RlZXJpbmc6DQogCW1seDVlX2Rl c3Ryb3lfZmxvd19zdGVlcmluZyhwcml2KTsNCitlcnJfZGVzdHJveV94c2tfdGlyczoNCisJbWx4 NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT54c2tfdGlyKTsNCitlcnJfZGVzdHJv eV94c2tfcnF0czoNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2LCBwcml2LT54c2tf dGlyKTsNCiBlcnJfZGVzdHJveV9kaXJlY3RfdGlyczoNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3Rf dGlycyhwcml2KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT5kaXJl Y3RfdGlyKTsNCiBlcnJfZGVzdHJveV9pbmRpcmVjdF90aXJzOg0KIAltbHg1ZV9kZXN0cm95X2lu ZGlyZWN0X3RpcnMocHJpdiwgdHJ1ZSk7DQogZXJyX2Rlc3Ryb3lfZGlyZWN0X3JxdHM6DQotCW1s eDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMocHJpdik7DQorCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3Jx dHMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogZXJyX2Rlc3Ryb3lfaW5kaXJlY3RfcnF0czoN CiAJbWx4NWVfZGVzdHJveV9ycXQocHJpdiwgJnByaXYtPmluZGlyX3JxdCk7DQogZXJyX2Nsb3Nl X2Ryb3BfcnE6DQpAQCAtNDgyNiw5ICs1MDI2LDExIEBAIHN0YXRpYyB2b2lkIG1seDVlX2NsZWFu dXBfbmljX3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIHsNCiAJbWx4NWVfdGNfbmljX2Ns ZWFudXAocHJpdik7DQogCW1seDVlX2Rlc3Ryb3lfZmxvd19zdGVlcmluZyhwcml2KTsNCi0JbWx4 NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfdGly cyhwcml2LCBwcml2LT54c2tfdGlyKTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2 LCBwcml2LT54c2tfdGlyKTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2LCBwcml2 LT5kaXJlY3RfdGlyKTsNCiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHByaXYsIHRydWUp Ow0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYpOw0KKwltbHg1ZV9kZXN0cm95X2Rp cmVjdF9ycXRzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIAltbHg1ZV9kZXN0cm95X3JxdChw cml2LCAmcHJpdi0+aW5kaXJfcnF0KTsNCiAJbWx4NWVfY2xvc2VfZHJvcF9ycSgmcHJpdi0+ZHJv cF9ycSk7DQogCW1seDVlX2Rlc3Ryb3lfcV9jb3VudGVycyhwcml2KTsNCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMNCmluZGV4IDkxZTI0ZjFj ZWFkOC4uZWMyMjlmYWNlMzU5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fcmVwLmMNCkBAIC0xNTExLDcgKzE1MTEsNyBAQCBzdGF0aWMgaW50 IG1seDVlX2luaXRfcmVwX3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAoZXJyKQ0K IAkJZ290byBlcnJfY2xvc2VfZHJvcF9ycTsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVj dF9ycXRzKHByaXYpOw0KKwllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3JxdHMocHJpdiwgcHJp di0+ZGlyZWN0X3Rpcik7DQogCWlmIChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2luZGlyZWN0 X3JxdHM7DQogDQpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgc3RhdGljIGludCBtbHg1ZV9pbml0X3Jl cF9yeChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Rl c3Ryb3lfZGlyZWN0X3JxdHM7DQogDQotCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhw cml2KTsNCisJZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF90aXJzKHByaXYsIHByaXYtPmRpcmVj dF90aXIpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZGVzdHJveV9pbmRpcmVjdF90aXJzOw0K IA0KQEAgLTE1MzYsMTEgKzE1MzYsMTEgQEAgc3RhdGljIGludCBtbHg1ZV9pbml0X3JlcF9yeChz dHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiBlcnJfZGVzdHJveV90dGNfdGFibGU6DQogCW1seDVl X2Rlc3Ryb3lfdHRjX3RhYmxlKHByaXYsICZwcml2LT5mcy50dGMpOw0KIGVycl9kZXN0cm95X2Rp cmVjdF90aXJzOg0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF90aXJzKHByaXYpOw0KKwltbHg1ZV9k ZXN0cm95X2RpcmVjdF90aXJzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIGVycl9kZXN0cm95 X2luZGlyZWN0X3RpcnM6DQogCW1seDVlX2Rlc3Ryb3lfaW5kaXJlY3RfdGlycyhwcml2LCBmYWxz ZSk7DQogZXJyX2Rlc3Ryb3lfZGlyZWN0X3JxdHM6DQotCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3Jx dHMocHJpdik7DQorCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3JxdHMocHJpdiwgcHJpdi0+ZGlyZWN0 X3Rpcik7DQogZXJyX2Rlc3Ryb3lfaW5kaXJlY3RfcnF0czoNCiAJbWx4NWVfZGVzdHJveV9ycXQo cHJpdiwgJnByaXYtPmluZGlyX3JxdCk7DQogZXJyX2Nsb3NlX2Ryb3BfcnE6DQpAQCAtMTU1NCw5 ICsxNTU0LDkgQEAgc3RhdGljIHZvaWQgbWx4NWVfY2xlYW51cF9yZXBfcngoc3RydWN0IG1seDVl X3ByaXYgKnByaXYpDQogDQogCW1seDVfZGVsX2Zsb3dfcnVsZXMocnByaXYtPnZwb3J0X3J4X3J1 bGUpOw0KIAltbHg1ZV9kZXN0cm95X3R0Y190YWJsZShwcml2LCAmcHJpdi0+ZnMudHRjKTsNCi0J bWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3Rf dGlycyhwcml2LCBwcml2LT5kaXJlY3RfdGlyKTsNCiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90 aXJzKHByaXYsIGZhbHNlKTsNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2KTsNCisJ bWx4NWVfZGVzdHJveV9kaXJlY3RfcnF0cyhwcml2LCBwcml2LT5kaXJlY3RfdGlyKTsNCiAJbWx4 NWVfZGVzdHJveV9ycXQocHJpdiwgJnByaXYtPmluZGlyX3JxdCk7DQogCW1seDVlX2Nsb3NlX2Ry b3BfcnEoJnByaXYtPmRyb3BfcnEpOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbl9yeC5jDQppbmRleCA1ZDc2MmRhNmJmOWIuLjllZWRjNjc5Mzk4 NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl9yeC5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5f cnguYw0KQEAgLTQ2LDYgKzQ2LDcgQEANCiAjaW5jbHVkZSAiZW5fYWNjZWwvdGxzX3J4dHguaCIN CiAjaW5jbHVkZSAibGliL2Nsb2NrLmgiDQogI2luY2x1ZGUgImVuL3hkcC5oIg0KKyNpbmNsdWRl ICJlbi94c2svcnguaCINCiANCiBzdGF0aWMgaW5saW5lIGJvb2wgbWx4NWVfcnhfaHdfc3RhbXAo c3RydWN0IGh3dHN0YW1wX2NvbmZpZyAqY29uZmlnKQ0KIHsNCkBAIC0yMzQsOCArMjM1LDggQEAg c3RhdGljIGlubGluZSBib29sIG1seDVlX3J4X2NhY2hlX2dldChzdHJ1Y3QgbWx4NWVfcnEgKnJx LA0KIAlyZXR1cm4gdHJ1ZTsNCiB9DQogDQotc3RhdGljIGlubGluZSBpbnQgbWx4NWVfcGFnZV9h bGxvY19tYXBwZWQoc3RydWN0IG1seDVlX3JxICpycSwNCi0JCQkJCSAgc3RydWN0IG1seDVlX2Rt YV9pbmZvICpkbWFfaW5mbykNCitzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9wYWdlX2FsbG9jX3Bv b2woc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJCXN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1h X2luZm8pDQogew0KIAlpZiAobWx4NWVfcnhfY2FjaGVfZ2V0KHJxLCBkbWFfaW5mbykpDQogCQly ZXR1cm4gMDsNCkBAIC0yNTUsMTMgKzI1NiwyMyBAQCBzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9w YWdlX2FsbG9jX21hcHBlZChzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KIAlyZXR1cm4gMDsNCiB9DQog DQorc3RhdGljIGlubGluZSBpbnQgbWx4NWVfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NWVfcnEgKnJx LA0KKwkJCQkgICBzdHJ1Y3QgbWx4NWVfZG1hX2luZm8gKmRtYV9pbmZvKQ0KK3sNCisJaWYgKHJx LT51bWVtKQ0KKwkJcmV0dXJuIG1seDVlX3hza19wYWdlX2FsbG9jX3VtZW0ocnEsIGRtYV9pbmZv KTsNCisJZWxzZQ0KKwkJcmV0dXJuIG1seDVlX3BhZ2VfYWxsb2NfcG9vbChycSwgZG1hX2luZm8p Ow0KK30NCisNCiB2b2lkIG1seDVlX3BhZ2VfZG1hX3VubWFwKHN0cnVjdCBtbHg1ZV9ycSAqcnEs IHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8pDQogew0KIAlkbWFfdW5tYXBfcGFnZShy cS0+cGRldiwgZG1hX2luZm8tPmFkZHIsIFBBR0VfU0laRSwgcnEtPmJ1ZmYubWFwX2Rpcik7DQog fQ0KIA0KLXZvaWQgbWx4NWVfcGFnZV9yZWxlYXNlKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVj dCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8sDQotCQkJYm9vbCByZWN5Y2xlKQ0KK3ZvaWQgbWx4 NWVfcGFnZV9yZWxlYXNlX2R5bmFtaWMoc3RydWN0IG1seDVlX3JxICpycSwNCisJCQkJc3RydWN0 IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbywNCisJCQkJYm9vbCByZWN5Y2xlKQ0KIHsNCiAJaWYg KGxpa2VseShyZWN5Y2xlKSkgew0KIAkJaWYgKG1seDVlX3J4X2NhY2hlX3B1dChycSwgZG1hX2lu Zm8pKQ0KQEAgLTI3NSw2ICsyODYsMjAgQEAgdm9pZCBtbHg1ZV9wYWdlX3JlbGVhc2Uoc3RydWN0 IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX2RtYV9pbmZvICpkbWFfaW5mbywNCiAJfQ0KIH0N CiANCitzdGF0aWMgaW5saW5lIHZvaWQgbWx4NWVfcGFnZV9yZWxlYXNlKHN0cnVjdCBtbHg1ZV9y cSAqcnEsDQorCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV9kbWFfaW5mbyAqZG1hX2luZm8sDQorCQkJ CSAgICAgIGJvb2wgcmVjeWNsZSkNCit7DQorCWlmIChycS0+dW1lbSkNCisJCS8qIFRoZSBgcmVj eWNsZWAgcGFyYW1ldGVyIGlzIGlnbm9yZWQsIGFuZCB0aGUgcGFnZSBpcyBhbHdheXMNCisJCSAq IHB1dCBpbnRvIHRoZSBSZXVzZSBSaW5nLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byByZXR1 cm4NCisJCSAqIHRoZSBwYWdlIHRvIHRoZSB1c2Vyc3BhY2Ugd2hlbiB0aGUgaW50ZXJmYWNlIGdv ZXMgZG93bi4NCisJCSAqLw0KKwkJbWx4NWVfeHNrX3BhZ2VfcmVsZWFzZShycSwgZG1hX2luZm8p Ow0KKwllbHNlDQorCQltbHg1ZV9wYWdlX3JlbGVhc2VfZHluYW1pYyhycSwgZG1hX2luZm8sIHJl Y3ljbGUpOw0KK30NCisNCiBzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9nZXRfcnhfZnJhZyhzdHJ1 Y3QgbWx4NWVfcnEgKnJxLA0KIAkJCQkgICAgc3RydWN0IG1seDVlX3dxZV9mcmFnX2luZm8gKmZy YWcpDQogew0KQEAgLTI4Niw3ICszMTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtbHg1ZV9nZXRf cnhfZnJhZyhzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KIAkJICogb2Zmc2V0KSBzaG91bGQganVzdCB1 c2UgdGhlIG5ldyBvbmUgd2l0aG91dCByZXBsZW5pc2hpbmcgYWdhaW4NCiAJCSAqIGJ5IHRoZW1z ZWx2ZXMuDQogCQkgKi8NCi0JCWVyciA9IG1seDVlX3BhZ2VfYWxsb2NfbWFwcGVkKHJxLCBmcmFn LT5kaSk7DQorCQllcnIgPSBtbHg1ZV9wYWdlX2FsbG9jKHJxLCBmcmFnLT5kaSk7DQogDQogCXJl dHVybiBlcnI7DQogfQ0KQEAgLTM1Miw2ICszNzcsMTMgQEAgc3RhdGljIGludCBtbHg1ZV9hbGxv Y19yeF93cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHUxNiBpeCwgdTggd3FlX2J1bGspDQogCWlu dCBlcnI7DQogCWludCBpOw0KIA0KKwlpZiAocnEtPnVtZW0pIHsNCisJCWludCBwYWdlc19kZXNp cmVkID0gd3FlX2J1bGsgPDwgcnEtPndxZS5pbmZvLmxvZ19udW1fZnJhZ3M7DQorDQorCQlpZiAo dW5saWtlbHkoIW1seDVlX3hza19wYWdlc19lbm91Z2hfdW1lbShycSwgcGFnZXNfZGVzaXJlZCkp KQ0KKwkJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorDQogCWZvciAoaSA9IDA7IGkgPCB3cWVfYnVs azsgaSsrKSB7DQogCQlzdHJ1Y3QgbWx4NWVfcnhfd3FlX2N5YyAqd3FlID0gbWx4NV93cV9jeWNf Z2V0X3dxZSh3cSwgaXggKyBpKTsNCiANCkBAIC0zOTksMTEgKzQzMSwxNyBAQCBtbHg1ZV9jb3B5 X3NrYl9oZWFkZXIoc3RydWN0IGRldmljZSAqcGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwNCiBz dGF0aWMgdm9pZA0KIG1seDVlX2ZyZWVfcnhfbXB3cWUoc3RydWN0IG1seDVlX3JxICpycSwgc3Ry dWN0IG1seDVlX21wd19pbmZvICp3aSwgYm9vbCByZWN5Y2xlKQ0KIHsNCi0JY29uc3QgYm9vbCBu b194ZHBfeG1pdCA9DQotCQliaXRtYXBfZW1wdHkod2ktPnhkcF94bWl0X2JpdG1hcCwgTUxYNV9N UFdSUV9QQUdFU19QRVJfV1FFKTsNCisJYm9vbCBub194ZHBfeG1pdDsNCiAJc3RydWN0IG1seDVl X2RtYV9pbmZvICpkbWFfaW5mbyA9IHdpLT51bXIuZG1hX2luZm87DQogCWludCBpOw0KIA0KKwkv KiBBIGNvbW1vbiBjYXNlIGZvciBBRl9YRFAuICovDQorCWlmIChiaXRtYXBfZnVsbCh3aS0+eGRw X3htaXRfYml0bWFwLCBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUpKQ0KKwkJcmV0dXJuOw0KKw0K Kwlub194ZHBfeG1pdCA9IGJpdG1hcF9lbXB0eSh3aS0+eGRwX3htaXRfYml0bWFwLA0KKwkJCQkg ICBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUpOw0KKw0KIAlmb3IgKGkgPSAwOyBpIDwgTUxYNV9N UFdSUV9QQUdFU19QRVJfV1FFOyBpKyspDQogCQlpZiAobm9feGRwX3htaXQgfHwgIXRlc3RfYml0 KGksIHdpLT54ZHBfeG1pdF9iaXRtYXApKQ0KIAkJCW1seDVlX3BhZ2VfcmVsZWFzZShycSwgJmRt YV9pbmZvW2ldLCByZWN5Y2xlKTsNCkBAIC00NTIsNiArNDkwLDEyIEBAIHN0YXRpYyBpbnQgbWx4 NWVfYWxsb2NfcnhfbXB3cWUoc3RydWN0IG1seDVlX3JxICpycSwgdTE2IGl4KQ0KIAlpbnQgZXJy Ow0KIAlpbnQgaTsNCiANCisJaWYgKHJxLT51bWVtICYmDQorCSAgICB1bmxpa2VseSghbWx4NWVf eHNrX3BhZ2VzX2Vub3VnaF91bWVtKHJxLCBNTFg1X01QV1JRX1BBR0VTX1BFUl9XUUUpKSkgew0K KwkJZXJyID0gLUVOT01FTTsNCisJCWdvdG8gZXJyOw0KKwl9DQorDQogCXBpID0gbWx4NV93cV9j eWNfY3RyMml4KHdxLCBzcS0+cGMpOw0KIAljb250aWdfd3FlYmJzX3Jvb20gPSBtbHg1X3dxX2N5 Y19nZXRfY29udGlnX3dxZWJicyh3cSwgcGkpOw0KIAlpZiAodW5saWtlbHkoY29udGlnX3dxZWJi c19yb29tIDwgTUxYNUVfVU1SX1dRRUJCUykpIHsNCkBAIC00NjMsNyArNTA3LDcgQEAgc3RhdGlj IGludCBtbHg1ZV9hbGxvY19yeF9tcHdxZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCB1MTYgaXgpDQog CW1lbWNweSh1bXJfd3FlLCAmcnEtPm1wd3FlLnVtcl93cWUsIG9mZnNldG9mKHN0cnVjdCBtbHg1 ZV91bXJfd3FlLCBpbmxpbmVfbXR0cykpOw0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgTUxYNV9NUFdS UV9QQUdFU19QRVJfV1FFOyBpKyssIGRtYV9pbmZvKyspIHsNCi0JCWVyciA9IG1seDVlX3BhZ2Vf YWxsb2NfbWFwcGVkKHJxLCBkbWFfaW5mbyk7DQorCQllcnIgPSBtbHg1ZV9wYWdlX2FsbG9jKHJx LCBkbWFfaW5mbyk7DQogCQlpZiAodW5saWtlbHkoZXJyKSkNCiAJCQlnb3RvIGVycl91bm1hcDsN CiAJCXVtcl93cWUtPmlubGluZV9tdHRzW2ldLnB0YWcgPSBjcHVfdG9fYmU2NChkbWFfaW5mby0+ YWRkciB8IE1MWDVfRU5fV1IpOw0KQEAgLTQ5MCw2ICs1MzQsOCBAQCBzdGF0aWMgaW50IG1seDVl X2FsbG9jX3J4X21wd3FlKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHUxNiBpeCkNCiAJCWRtYV9pbmZv LS07DQogCQltbHg1ZV9wYWdlX3JlbGVhc2UocnEsIGRtYV9pbmZvLCB0cnVlKTsNCiAJfQ0KKw0K K2VycjoNCiAJcnEtPnN0YXRzLT5idWZmX2FsbG9jX2VycisrOw0KIA0KIAlyZXR1cm4gZXJyOw0K QEAgLTYwMyw2ICs2NDksNyBAQCBib29sIG1seDVlX3Bvc3RfcnhfbXB3cWVzKHN0cnVjdCBtbHg1 ZV9ycSAqcnEpDQogCXN0cnVjdCBtbHg1ZV9pY29zcSAqc3EgPSAmcnEtPmNoYW5uZWwtPmljb3Nx Ow0KIAlzdHJ1Y3QgbWx4NV93cV9sbCAqd3EgPSAmcnEtPm1wd3FlLndxOw0KIAl1OCAgdW1yX2Nv bXBsZXRlZCA9IHJxLT5tcHdxZS51bXJfY29tcGxldGVkOw0KKwlpbnQgYWxsb2NfZXJyID0gMDsN CiAJdTggIG1pc3NpbmcsIGk7DQogCXUxNiBoZWFkOw0KIA0KQEAgLTYyNyw3ICs2NzQsOSBAQCBi b29sIG1seDVlX3Bvc3RfcnhfbXB3cWVzKHN0cnVjdCBtbHg1ZV9ycSAqcnEpDQogCWhlYWQgPSBy cS0+bXB3cWUuYWN0dWFsX3dxX2hlYWQ7DQogCWkgPSBtaXNzaW5nOw0KIAlkbyB7DQotCQlpZiAo dW5saWtlbHkobWx4NWVfYWxsb2NfcnhfbXB3cWUocnEsIGhlYWQpKSkNCisJCWFsbG9jX2VyciA9 IG1seDVlX2FsbG9jX3J4X21wd3FlKHJxLCBoZWFkKTsNCisNCisJCWlmICh1bmxpa2VseShhbGxv Y19lcnIpKQ0KIAkJCWJyZWFrOw0KIAkJaGVhZCA9IG1seDVfd3FfbGxfZ2V0X3dxZV9uZXh0X2l4 KHdxLCBoZWFkKTsNCiAJfSB3aGlsZSAoLS1pKTsNCkBAIC02NDEsNiArNjkwLDEyIEBAIGJvb2wg bWx4NWVfcG9zdF9yeF9tcHdxZXMoc3RydWN0IG1seDVlX3JxICpycSkNCiAJcnEtPm1wd3FlLnVt cl9pbl9wcm9ncmVzcyArPSBycS0+bXB3cWUudW1yX2xhc3RfYnVsazsNCiAJcnEtPm1wd3FlLmFj dHVhbF93cV9oZWFkICAgPSBoZWFkOw0KIA0KKwkvKiBJZiBYU0sgRmlsbCBSaW5nIGRvZXNuJ3Qg aGF2ZSBlbm91Z2ggZnJhbWVzLCBidXN5IHBvbGwgYnkNCisJICogcmVzY2hlZHVsaW5nIHRoZSBO QVBJIHBvbGwuDQorCSAqLw0KKwlpZiAodW5saWtlbHkoYWxsb2NfZXJyID09IC1FTk9NRU0gJiYg cnEtPnVtZW0pKQ0KKwkJcmV0dXJuIHRydWU7DQorDQogCXJldHVybiBmYWxzZTsNCiB9DQogDQpA QCAtMTAwOSw3ICsxMDY0LDcgQEAgbWx4NWVfc2tiX2Zyb21fY3FlX2xpbmVhcihzdHJ1Y3QgbWx4 NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NV9jcWU2NCAqY3FlLA0KIAl9DQogDQogCXJjdV9yZWFkX2xv Y2soKTsNCi0JY29uc3VtZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwgdmEsICZyeF9oZWFk cm9vbSwgJmNxZV9iY250KTsNCisJY29uc3VtZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwg dmEsICZyeF9oZWFkcm9vbSwgJmNxZV9iY250LCBmYWxzZSk7DQogCXJjdV9yZWFkX3VubG9jaygp Ow0KIAlpZiAoY29uc3VtZWQpDQogCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQgd2FzIGNv bnN1bWVkIGJ5IFhEUCAqLw0KQEAgLTEyMjMsNyArMTI3OCw3IEBAIG1seDVlX3NrYl9mcm9tX2Nx ZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX21wd19pbmZv ICp3aSwNCiAJcHJlZmV0Y2goZGF0YSk7DQogDQogCXJjdV9yZWFkX2xvY2soKTsNCi0JY29uc3Vt ZWQgPSBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBkaSwgdmEsICZyeF9oZWFkcm9vbSwgJmNxZV9iY250 MzIpOw0KKwljb25zdW1lZCA9IG1seDVlX3hkcF9oYW5kbGUocnEsIGRpLCB2YSwgJnJ4X2hlYWRy b29tLCAmY3FlX2JjbnQzMiwgZmFsc2UpOw0KIAlyY3VfcmVhZF91bmxvY2soKTsNCiAJaWYgKGNv bnN1bWVkKSB7DQogCQlpZiAoX190ZXN0X2FuZF9jbGVhcl9iaXQoTUxYNUVfUlFfRkxBR19YRFBf WE1JVCwgcnEtPmZsYWdzKSkNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbl9zdGF0cy5jDQppbmRleCA0ODNkMzIxZDIxNTEuLjVmNTQwZGI0N2NjOSAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9z dGF0cy5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5f c3RhdHMuYw0KQEAgLTEwNCw3ICsxMDQsMzMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb3VudGVy X2Rlc2Mgc3dfc3RhdHNfZGVzY1tdID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3Qg bWx4NWVfc3dfc3RhdHMsIGNoX3BvbGwpIH0sDQogCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVj dCBtbHg1ZV9zd19zdGF0cywgY2hfYXJtKSB9LA0KIAl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1 Y3QgbWx4NWVfc3dfc3RhdHMsIGNoX2FmZl9jaGFuZ2UpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9T VEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgY2hfZm9yY2VfaXJxKSB9LA0KIAl7IE1MWDVFX0RF Q0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIGNoX2VxX3JlYXJtKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19wYWNrZXRzKSB9 LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19i eXRlcykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCBy eF94c2tfY3N1bV9jb21wbGV0ZSkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1s eDVlX3N3X3N0YXRzLCByeF94c2tfY3N1bV91bm5lY2Vzc2FyeSkgfSwNCisJeyBNTFg1RV9ERUNM QVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfY3N1bV91bm5lY2Vzc2FyeV9p bm5lcikgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCBy eF94c2tfY3N1bV9ub25lKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVf c3dfc3RhdHMsIHJ4X3hza19lY25fbWFyaykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3Ry dWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfcmVtb3ZlZF92bGFuX3BhY2tldHMpIH0sDQorCXsg TUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0cywgcnhfeHNrX3hkcF9kcm9w KSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hz a194ZHBfcmVkaXJlY3QpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9z d19zdGF0cywgcnhfeHNrX3dxZV9lcnIpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVj dCBtbHg1ZV9zd19zdGF0cywgcnhfeHNrX21wd3FlX2ZpbGxlcl9jcWVzKSB9LA0KKwl7IE1MWDVF X0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19tcHdxZV9maWxsZXJf c3RyaWRlcykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRz LCByeF94c2tfb3ZlcnNpemVfcGt0c19zd19kcm9wKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RB VChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19idWZmX2FsbG9jX2VycikgfSwNCisJeyBN TFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCByeF94c2tfY3FlX2NvbXBy ZXNzX2Jsa3MpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0 cywgcnhfeHNrX2NxZV9jb21wcmVzc19wa3RzKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChz dHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19jb25nc3RfdW1yKSB9LA0KKwl7IE1MWDVFX0RF Q0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMsIHJ4X3hza19hcmZzX2VycikgfSwNCisJ eyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCB0eF94c2tfeG1pdCkg fSwNCisJeyBNTFg1RV9ERUNMQVJFX1NUQVQoc3RydWN0IG1seDVlX3N3X3N0YXRzLCB0eF94c2tf bXB3cWUpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVjdCBtbHg1ZV9zd19zdGF0cywg dHhfeHNrX2lubG53KSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4NWVfc3df c3RhdHMsIHR4X3hza19mdWxsKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfU1RBVChzdHJ1Y3QgbWx4 NWVfc3dfc3RhdHMsIHR4X3hza19lcnIpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9TVEFUKHN0cnVj dCBtbHg1ZV9zd19zdGF0cywgdHhfeHNrX2NxZXMpIH0sDQogfTsNCiANCiAjZGVmaW5lIE5VTV9T V19DT1VOVEVSUwkJCUFSUkFZX1NJWkUoc3dfc3RhdHNfZGVzYykNCkBAIC0xNDQsNiArMTcwLDgg QEAgc3RhdGljIHZvaWQgbWx4NWVfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdikNCiAJCQkmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXTsNCiAJCXN0cnVjdCBtbHg1ZV94 ZHBzcV9zdGF0cyAqeGRwc3FfcmVkX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnhkcHNxOw0KIAkJ c3RydWN0IG1seDVlX3hkcHNxX3N0YXRzICp4ZHBzcV9zdGF0cyA9ICZjaGFubmVsX3N0YXRzLT5y cV94ZHBzcTsNCisJCXN0cnVjdCBtbHg1ZV94ZHBzcV9zdGF0cyAqeHNrc3Ffc3RhdHMgPSAmY2hh bm5lbF9zdGF0cy0+eHNrc3E7DQorCQlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnhza3JxX3N0YXRz ID0gJmNoYW5uZWxfc3RhdHMtPnhza3JxOw0KIAkJc3RydWN0IG1seDVlX3JxX3N0YXRzICpycV9z dGF0cyA9ICZjaGFubmVsX3N0YXRzLT5ycTsNCiAJCXN0cnVjdCBtbHg1ZV9jaF9zdGF0cyAqY2hf c3RhdHMgPSAmY2hhbm5lbF9zdGF0cy0+Y2g7DQogCQlpbnQgajsNCkBAIC0xODYsNiArMjE0LDcg QEAgc3RhdGljIHZvaWQgbWx4NWVfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdikNCiAJCXMtPmNoX3BvbGwgICAgICAgICs9IGNoX3N0YXRzLT5wb2xsOw0KIAkJcy0+ Y2hfYXJtICAgICAgICAgKz0gY2hfc3RhdHMtPmFybTsNCiAJCXMtPmNoX2FmZl9jaGFuZ2UgICs9 IGNoX3N0YXRzLT5hZmZfY2hhbmdlOw0KKwkJcy0+Y2hfZm9yY2VfaXJxICAgKz0gY2hfc3RhdHMt PmZvcmNlX2lycTsNCiAJCXMtPmNoX2VxX3JlYXJtICAgICs9IGNoX3N0YXRzLT5lcV9yZWFybTsN CiAJCS8qIHhkcCByZWRpcmVjdCAqLw0KIAkJcy0+dHhfeGRwX3htaXQgICAgKz0geGRwc3FfcmVk X3N0YXRzLT54bWl0Ow0KQEAgLTE5NCw2ICsyMjMsMzIgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ3Jw X3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJCXMtPnR4X3hkcF9m dWxsICAgICs9IHhkcHNxX3JlZF9zdGF0cy0+ZnVsbDsNCiAJCXMtPnR4X3hkcF9lcnIgICAgICs9 IHhkcHNxX3JlZF9zdGF0cy0+ZXJyOw0KIAkJcy0+dHhfeGRwX2NxZXMgICAgKz0geGRwc3FfcmVk X3N0YXRzLT5jcWVzOw0KKwkJLyogQUZfWERQIHplcm8tY29weSAqLw0KKwkJcy0+cnhfeHNrX3Bh Y2tldHMgICAgICAgICAgICAgICAgKz0geHNrcnFfc3RhdHMtPnBhY2tldHM7DQorCQlzLT5yeF94 c2tfYnl0ZXMgICAgICAgICAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Ynl0ZXM7DQorCQlzLT5y eF94c2tfY3N1bV9jb21wbGV0ZSAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Y3N1bV9jb21wbGV0 ZTsNCisJCXMtPnJ4X3hza19jc3VtX3VubmVjZXNzYXJ5ICAgICAgICs9IHhza3JxX3N0YXRzLT5j c3VtX3VubmVjZXNzYXJ5Ow0KKwkJcy0+cnhfeHNrX2NzdW1fdW5uZWNlc3NhcnlfaW5uZXIgKz0g eHNrcnFfc3RhdHMtPmNzdW1fdW5uZWNlc3NhcnlfaW5uZXI7DQorCQlzLT5yeF94c2tfY3N1bV9u b25lICAgICAgICAgICAgICArPSB4c2tycV9zdGF0cy0+Y3N1bV9ub25lOw0KKwkJcy0+cnhfeHNr X2Vjbl9tYXJrICAgICAgICAgICAgICAgKz0geHNrcnFfc3RhdHMtPmVjbl9tYXJrOw0KKwkJcy0+ cnhfeHNrX3JlbW92ZWRfdmxhbl9wYWNrZXRzICAgKz0geHNrcnFfc3RhdHMtPnJlbW92ZWRfdmxh bl9wYWNrZXRzOw0KKwkJcy0+cnhfeHNrX3hkcF9kcm9wICAgICAgICAgICAgICAgKz0geHNrcnFf c3RhdHMtPnhkcF9kcm9wOw0KKwkJcy0+cnhfeHNrX3hkcF9yZWRpcmVjdCAgICAgICAgICAgKz0g eHNrcnFfc3RhdHMtPnhkcF9yZWRpcmVjdDsNCisJCXMtPnJ4X3hza193cWVfZXJyICAgICAgICAg ICAgICAgICs9IHhza3JxX3N0YXRzLT53cWVfZXJyOw0KKwkJcy0+cnhfeHNrX21wd3FlX2ZpbGxl cl9jcWVzICAgICAgKz0geHNrcnFfc3RhdHMtPm1wd3FlX2ZpbGxlcl9jcWVzOw0KKwkJcy0+cnhf eHNrX21wd3FlX2ZpbGxlcl9zdHJpZGVzICAgKz0geHNrcnFfc3RhdHMtPm1wd3FlX2ZpbGxlcl9z dHJpZGVzOw0KKwkJcy0+cnhfeHNrX292ZXJzaXplX3BrdHNfc3dfZHJvcCAgKz0geHNrcnFfc3Rh dHMtPm92ZXJzaXplX3BrdHNfc3dfZHJvcDsNCisJCXMtPnJ4X3hza19idWZmX2FsbG9jX2VyciAg ICAgICAgICs9IHhza3JxX3N0YXRzLT5idWZmX2FsbG9jX2VycjsNCisJCXMtPnJ4X3hza19jcWVf Y29tcHJlc3NfYmxrcyAgICAgICs9IHhza3JxX3N0YXRzLT5jcWVfY29tcHJlc3NfYmxrczsNCisJ CXMtPnJ4X3hza19jcWVfY29tcHJlc3NfcGt0cyAgICAgICs9IHhza3JxX3N0YXRzLT5jcWVfY29t cHJlc3NfcGt0czsNCisJCXMtPnJ4X3hza19jb25nc3RfdW1yICAgICAgICAgICAgICs9IHhza3Jx X3N0YXRzLT5jb25nc3RfdW1yOw0KKwkJcy0+cnhfeHNrX2FyZnNfZXJyICAgICAgICAgICAgICAg Kz0geHNrcnFfc3RhdHMtPmFyZnNfZXJyOw0KKwkJcy0+dHhfeHNrX3htaXQgICAgICAgICAgICAg ICAgICAgKz0geHNrc3Ffc3RhdHMtPnhtaXQ7DQorCQlzLT50eF94c2tfbXB3cWUgICAgICAgICAg ICAgICAgICArPSB4c2tzcV9zdGF0cy0+bXB3cWU7DQorCQlzLT50eF94c2tfaW5sbncgICAgICAg ICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+aW5sbnc7DQorCQlzLT50eF94c2tfZnVsbCAgICAg ICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+ZnVsbDsNCisJCXMtPnR4X3hza19lcnIgICAg ICAgICAgICAgICAgICAgICs9IHhza3NxX3N0YXRzLT5lcnI7DQorCQlzLT50eF94c2tfY3FlcyAg ICAgICAgICAgICAgICAgICArPSB4c2tzcV9zdGF0cy0+Y3FlczsNCiANCiAJCWZvciAoaiA9IDA7 IGogPCBwcml2LT5tYXhfb3BlbmVkX3RjOyBqKyspIHsNCiAJCQlzdHJ1Y3QgbWx4NWVfc3Ffc3Rh dHMgKnNxX3N0YXRzID0gJmNoYW5uZWxfc3RhdHMtPnNxW2pdOw0KQEAgLTEyNjYsMTEgKzEzMjEs NDMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb3VudGVyX2Rlc2MgeGRwc3Ffc3RhdHNfZGVzY1td ID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfWERQU1FfU1RBVChzdHJ1Y3QgbWx4NWVfeGRwc3Ffc3Rh dHMsIGNxZXMpIH0sDQogfTsNCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvdW50ZXJfZGVzYyB4 c2tycV9zdGF0c19kZXNjW10gPSB7DQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVj dCBtbHg1ZV9ycV9zdGF0cywgcGFja2V0cykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1JRX1NU QVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBieXRlcykgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hT S1JRX1NUQVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBjc3VtX2NvbXBsZXRlKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNzdW1fdW5uZWNl c3NhcnkpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9z dGF0cywgY3N1bV91bm5lY2Vzc2FyeV9pbm5lcikgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1JR X1NUQVQoc3RydWN0IG1seDVlX3JxX3N0YXRzLCBjc3VtX25vbmUpIH0sDQorCXsgTUxYNUVfREVD TEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgZWNuX21hcmspIH0sDQorCXsg TUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgcmVtb3ZlZF92 bGFuX3BhY2tldHMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1 ZV9ycV9zdGF0cywgeGRwX2Ryb3ApIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0 cnVjdCBtbHg1ZV9ycV9zdGF0cywgeGRwX3JlZGlyZWN0KSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVf WFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIHdxZV9lcnIpIH0sDQorCXsgTUxYNUVf REVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgbXB3cWVfZmlsbGVyX2Nx ZXMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0 cywgbXB3cWVfZmlsbGVyX3N0cmlkZXMpIH0sDQorCXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFU KHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgb3ZlcnNpemVfcGt0c19zd19kcm9wKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGJ1ZmZfYWxsb2Nf ZXJyKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3Rh dHMsIGNxZV9jb21wcmVzc19ibGtzKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfWFNLUlFfU1RBVChz dHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNxZV9jb21wcmVzc19wa3RzKSB9LA0KKwl7IE1MWDVFX0RF Q0xBUkVfWFNLUlFfU1RBVChzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMsIGNvbmdzdF91bXIpIH0sDQor CXsgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHN0cnVjdCBtbHg1ZV9ycV9zdGF0cywgYXJmc19l cnIpIH0sDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvdW50ZXJfZGVzYyB4c2tzcV9z dGF0c19kZXNjW10gPSB7DQorCXsgTUxYNUVfREVDTEFSRV9YU0tTUV9TVEFUKHN0cnVjdCBtbHg1 ZV94ZHBzcV9zdGF0cywgeG1pdCkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1NRX1NUQVQoc3Ry dWN0IG1seDVlX3hkcHNxX3N0YXRzLCBtcHdxZSkgfSwNCisJeyBNTFg1RV9ERUNMQVJFX1hTS1NR X1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBpbmxudykgfSwNCisJeyBNTFg1RV9ERUNM QVJFX1hTS1NRX1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBmdWxsKSB9LA0KKwl7IE1M WDVFX0RFQ0xBUkVfWFNLU1FfU1RBVChzdHJ1Y3QgbWx4NWVfeGRwc3Ffc3RhdHMsIGVycikgfSwN CisJeyBNTFg1RV9ERUNMQVJFX1hTS1NRX1NUQVQoc3RydWN0IG1seDVlX3hkcHNxX3N0YXRzLCBj cWVzKSB9LA0KK307DQorDQogc3RhdGljIGNvbnN0IHN0cnVjdCBjb3VudGVyX2Rlc2MgY2hfc3Rh dHNfZGVzY1tdID0gew0KIAl7IE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVChzdHJ1Y3QgbWx4NWVfY2hf c3RhdHMsIGV2ZW50cykgfSwNCiAJeyBNTFg1RV9ERUNMQVJFX0NIX1NUQVQoc3RydWN0IG1seDVl X2NoX3N0YXRzLCBwb2xsKSB9LA0KIAl7IE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVChzdHJ1Y3QgbWx4 NWVfY2hfc3RhdHMsIGFybSkgfSwNCiAJeyBNTFg1RV9ERUNMQVJFX0NIX1NUQVQoc3RydWN0IG1s eDVlX2NoX3N0YXRzLCBhZmZfY2hhbmdlKSB9LA0KKwl7IE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVChz dHJ1Y3QgbWx4NWVfY2hfc3RhdHMsIGZvcmNlX2lycSkgfSwNCiAJeyBNTFg1RV9ERUNMQVJFX0NI X1NUQVQoc3RydWN0IG1seDVlX2NoX3N0YXRzLCBlcV9yZWFybSkgfSwNCiB9Ow0KIA0KQEAgLTEy NzgsNiArMTM2NSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY291bnRlcl9kZXNjIGNoX3N0YXRz X2Rlc2NbXSA9IHsNCiAjZGVmaW5lIE5VTV9TUV9TVEFUUwkJCUFSUkFZX1NJWkUoc3Ffc3RhdHNf ZGVzYykNCiAjZGVmaW5lIE5VTV9YRFBTUV9TVEFUUwkJCUFSUkFZX1NJWkUoeGRwc3Ffc3RhdHNf ZGVzYykNCiAjZGVmaW5lIE5VTV9SUV9YRFBTUV9TVEFUUwkJQVJSQVlfU0laRShycV94ZHBzcV9z dGF0c19kZXNjKQ0KKyNkZWZpbmUgTlVNX1hTS1JRX1NUQVRTCQkJQVJSQVlfU0laRSh4c2tycV9z dGF0c19kZXNjKQ0KKyNkZWZpbmUgTlVNX1hTS1NRX1NUQVRTCQkJQVJSQVlfU0laRSh4c2tzcV9z dGF0c19kZXNjKQ0KICNkZWZpbmUgTlVNX0NIX1NUQVRTCQkJQVJSQVlfU0laRShjaF9zdGF0c19k ZXNjKQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVfZ3JwX2NoYW5uZWxzX2dldF9udW1fc3RhdHMoc3Ry dWN0IG1seDVlX3ByaXYgKnByaXYpDQpAQCAtMTI4OCwxMyArMTM3NywxNiBAQCBzdGF0aWMgaW50 IG1seDVlX2dycF9jaGFubmVsc19nZXRfbnVtX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2 KQ0KIAkgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICsNCiAJICAgICAgIChOVU1fU1Ff U1RBVFMgKiBtYXhfbmNoICogcHJpdi0+bWF4X29wZW5lZF90YykgKw0KIAkgICAgICAgKE5VTV9S UV9YRFBTUV9TVEFUUyAqIG1heF9uY2gpICsNCi0JICAgICAgIChOVU1fWERQU1FfU1RBVFMgKiBt YXhfbmNoKTsNCisJICAgICAgIChOVU1fWERQU1FfU1RBVFMgKiBtYXhfbmNoKSArDQorCSAgICAg ICAoTlVNX1hTS1JRX1NUQVRTICogbWF4X25jaCAqIHByaXYtPnhzay5ldmVyX3VzZWQpICsNCisJ ICAgICAgIChOVU1fWFNLU1FfU1RBVFMgKiBtYXhfbmNoICogcHJpdi0+eHNrLmV2ZXJfdXNlZCk7 DQogfQ0KIA0KIHN0YXRpYyBpbnQgbWx4NWVfZ3JwX2NoYW5uZWxzX2ZpbGxfc3RyaW5ncyhzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTggKmRhdGEsDQogCQkJCQkgICBpbnQgaWR4KQ0KIHsNCiAJ aW50IG1heF9uY2ggPSBtbHg1ZV9nZXRfbmV0ZGV2X21heF9jaGFubmVscyhwcml2LT5uZXRkZXYp Ow0KKwlib29sIGlzX3hzayA9IHByaXYtPnhzay5ldmVyX3VzZWQ7DQogCWludCBpLCBqLCB0YzsN CiANCiAJZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykNCkBAIC0xMzA2LDYgKzEzOTgsOSBA QCBzdGF0aWMgaW50IG1seDVlX2dycF9jaGFubmVsc19maWxsX3N0cmluZ3Moc3RydWN0IG1seDVl X3ByaXYgKnByaXYsIHU4ICpkYXRhLA0KIAkJZm9yIChqID0gMDsgaiA8IE5VTV9SUV9TVEFUUzsg aisrKQ0KIAkJCXNwcmludGYoZGF0YSArIChpZHgrKykgKiBFVEhfR1NUUklOR19MRU4sDQogCQkJ CXJxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LCBpKTsNCisJCWZvciAoaiA9IDA7IGogPCBOVU1fWFNL UlFfU1RBVFMgKiBpc194c2s7IGorKykNCisJCQlzcHJpbnRmKGRhdGEgKyAoaWR4KyspICogRVRI X0dTVFJJTkdfTEVOLA0KKwkJCQl4c2tycV9zdGF0c19kZXNjW2pdLmZvcm1hdCwgaSk7DQogCQlm b3IgKGogPSAwOyBqIDwgTlVNX1JRX1hEUFNRX1NUQVRTOyBqKyspDQogCQkJc3ByaW50ZihkYXRh ICsgKGlkeCsrKSAqIEVUSF9HU1RSSU5HX0xFTiwNCiAJCQkJcnFfeGRwc3Ffc3RhdHNfZGVzY1tq XS5mb3JtYXQsIGkpOw0KQEAgLTEzMTgsMTAgKzE0MTMsMTQgQEAgc3RhdGljIGludCBtbHg1ZV9n cnBfY2hhbm5lbHNfZmlsbF9zdHJpbmdzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1OCAqZGF0 YSwNCiAJCQkJCXNxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LA0KIAkJCQkJcHJpdi0+Y2hhbm5lbF90 YzJ0eHFbaV1bdGNdKTsNCiANCi0JZm9yIChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykNCisJZm9y IChpID0gMDsgaSA8IG1heF9uY2g7IGkrKykgew0KKwkJZm9yIChqID0gMDsgaiA8IE5VTV9YU0tT UV9TVEFUUyAqIGlzX3hzazsgaisrKQ0KKwkJCXNwcmludGYoZGF0YSArIChpZHgrKykgKiBFVEhf R1NUUklOR19MRU4sDQorCQkJCXhza3NxX3N0YXRzX2Rlc2Nbal0uZm9ybWF0LCBpKTsNCiAJCWZv ciAoaiA9IDA7IGogPCBOVU1fWERQU1FfU1RBVFM7IGorKykNCiAJCQlzcHJpbnRmKGRhdGEgKyAo aWR4KyspICogRVRIX0dTVFJJTkdfTEVOLA0KIAkJCQl4ZHBzcV9zdGF0c19kZXNjW2pdLmZvcm1h dCwgaSk7DQorCX0NCiANCiAJcmV0dXJuIGlkeDsNCiB9DQpAQCAtMTMzMCw2ICsxNDI5LDcgQEAg c3RhdGljIGludCBtbHg1ZV9ncnBfY2hhbm5lbHNfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdiwgdTY0ICpkYXRhLA0KIAkJCQkJIGludCBpZHgpDQogew0KIAlpbnQgbWF4X25jaCA9 IG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKHByaXYtPm5ldGRldik7DQorCWJvb2wgaXNf eHNrID0gcHJpdi0+eHNrLmV2ZXJfdXNlZDsNCiAJaW50IGksIGosIHRjOw0KIA0KIAlmb3IgKGkg PSAwOyBpIDwgbWF4X25jaDsgaSsrKQ0KQEAgLTEzNDMsNiArMTQ0MywxMCBAQCBzdGF0aWMgaW50 IG1seDVlX2dycF9jaGFubmVsc19maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1 NjQgKmRhdGEsDQogCQkJZGF0YVtpZHgrK10gPQ0KIAkJCQlNTFg1RV9SRUFEX0NUUjY0X0NQVSgm cHJpdi0+Y2hhbm5lbF9zdGF0c1tpXS5ycSwNCiAJCQkJCQkgICAgIHJxX3N0YXRzX2Rlc2MsIGop Ow0KKwkJZm9yIChqID0gMDsgaiA8IE5VTV9YU0tSUV9TVEFUUyAqIGlzX3hzazsgaisrKQ0KKwkJ CWRhdGFbaWR4KytdID0NCisJCQkJTUxYNUVfUkVBRF9DVFI2NF9DUFUoJnByaXYtPmNoYW5uZWxf c3RhdHNbaV0ueHNrcnEsDQorCQkJCQkJICAgICB4c2tycV9zdGF0c19kZXNjLCBqKTsNCiAJCWZv ciAoaiA9IDA7IGogPCBOVU1fUlFfWERQU1FfU1RBVFM7IGorKykNCiAJCQlkYXRhW2lkeCsrXSA9 DQogCQkJCU1MWDVFX1JFQURfQ1RSNjRfQ1BVKCZwcml2LT5jaGFubmVsX3N0YXRzW2ldLnJxX3hk cHNxLA0KQEAgLTEzNTYsMTEgKzE0NjAsMTYgQEAgc3RhdGljIGludCBtbHg1ZV9ncnBfY2hhbm5l bHNfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTY0ICpkYXRhLA0KIAkJCQkJ TUxYNUVfUkVBRF9DVFI2NF9DUFUoJnByaXYtPmNoYW5uZWxfc3RhdHNbaV0uc3FbdGNdLA0KIAkJ CQkJCQkgICAgIHNxX3N0YXRzX2Rlc2MsIGopOw0KIA0KLQlmb3IgKGkgPSAwOyBpIDwgbWF4X25j aDsgaSsrKQ0KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X25jaDsgaSsrKSB7DQorCQlmb3IgKGogPSAw OyBqIDwgTlVNX1hTS1NRX1NUQVRTICogaXNfeHNrOyBqKyspDQorCQkJZGF0YVtpZHgrK10gPQ0K KwkJCQlNTFg1RV9SRUFEX0NUUjY0X0NQVSgmcHJpdi0+Y2hhbm5lbF9zdGF0c1tpXS54c2tzcSwN CisJCQkJCQkgICAgIHhza3NxX3N0YXRzX2Rlc2MsIGopOw0KIAkJZm9yIChqID0gMDsgaiA8IE5V TV9YRFBTUV9TVEFUUzsgaisrKQ0KIAkJCWRhdGFbaWR4KytdID0NCiAJCQkJTUxYNUVfUkVBRF9D VFI2NF9DUFUoJnByaXYtPmNoYW5uZWxfc3RhdHNbaV0ueGRwc3EsDQogCQkJCQkJICAgICB4ZHBz cV9zdGF0c19kZXNjLCBqKTsNCisJfQ0KIA0KIAlyZXR1cm4gaWR4Ow0KIH0NCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaCBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oDQppbmRleCBj ZGRkY2M0Njk3MWIuLmZiM2FkNzIzMWUxMSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5oDQorKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuaA0KQEAgLTQ2LDYgKzQ2LDggQEANCiAj ZGVmaW5lIE1MWDVFX0RFQ0xBUkVfVFhfU1RBVCh0eXBlLCBmbGQpICJ0eCVkXyIjZmxkLCBvZmZz ZXRvZih0eXBlLCBmbGQpDQogI2RlZmluZSBNTFg1RV9ERUNMQVJFX1hEUFNRX1NUQVQodHlwZSwg ZmxkKSAidHglZF94ZHBfIiNmbGQsIG9mZnNldG9mKHR5cGUsIGZsZCkNCiAjZGVmaW5lIE1MWDVF X0RFQ0xBUkVfUlFfWERQU1FfU1RBVCh0eXBlLCBmbGQpICJyeCVkX3hkcF90eF8iI2ZsZCwgb2Zm c2V0b2YodHlwZSwgZmxkKQ0KKyNkZWZpbmUgTUxYNUVfREVDTEFSRV9YU0tSUV9TVEFUKHR5cGUs IGZsZCkgInJ4JWRfeHNrXyIjZmxkLCBvZmZzZXRvZih0eXBlLCBmbGQpDQorI2RlZmluZSBNTFg1 RV9ERUNMQVJFX1hTS1NRX1NUQVQodHlwZSwgZmxkKSAidHglZF94c2tfIiNmbGQsIG9mZnNldG9m KHR5cGUsIGZsZCkNCiAjZGVmaW5lIE1MWDVFX0RFQ0xBUkVfQ0hfU1RBVCh0eXBlLCBmbGQpICJj aCVkXyIjZmxkLCBvZmZzZXRvZih0eXBlLCBmbGQpDQogDQogc3RydWN0IGNvdW50ZXJfZGVzYyB7 DQpAQCAtMTE2LDEyICsxMTgsMzkgQEAgc3RydWN0IG1seDVlX3N3X3N0YXRzIHsNCiAJdTY0IGNo X3BvbGw7DQogCXU2NCBjaF9hcm07DQogCXU2NCBjaF9hZmZfY2hhbmdlOw0KKwl1NjQgY2hfZm9y Y2VfaXJxOw0KIAl1NjQgY2hfZXFfcmVhcm07DQogDQogI2lmZGVmIENPTkZJR19NTFg1X0VOX1RM Uw0KIAl1NjQgdHhfdGxzX29vbzsNCiAJdTY0IHR4X3Rsc19yZXN5bmNfYnl0ZXM7DQogI2VuZGlm DQorDQorCXU2NCByeF94c2tfcGFja2V0czsNCisJdTY0IHJ4X3hza19ieXRlczsNCisJdTY0IHJ4 X3hza19jc3VtX2NvbXBsZXRlOw0KKwl1NjQgcnhfeHNrX2NzdW1fdW5uZWNlc3Nhcnk7DQorCXU2 NCByeF94c2tfY3N1bV91bm5lY2Vzc2FyeV9pbm5lcjsNCisJdTY0IHJ4X3hza19jc3VtX25vbmU7 DQorCXU2NCByeF94c2tfZWNuX21hcms7DQorCXU2NCByeF94c2tfcmVtb3ZlZF92bGFuX3BhY2tl dHM7DQorCXU2NCByeF94c2tfeGRwX2Ryb3A7DQorCXU2NCByeF94c2tfeGRwX3JlZGlyZWN0Ow0K Kwl1NjQgcnhfeHNrX3dxZV9lcnI7DQorCXU2NCByeF94c2tfbXB3cWVfZmlsbGVyX2NxZXM7DQor CXU2NCByeF94c2tfbXB3cWVfZmlsbGVyX3N0cmlkZXM7DQorCXU2NCByeF94c2tfb3ZlcnNpemVf cGt0c19zd19kcm9wOw0KKwl1NjQgcnhfeHNrX2J1ZmZfYWxsb2NfZXJyOw0KKwl1NjQgcnhfeHNr X2NxZV9jb21wcmVzc19ibGtzOw0KKwl1NjQgcnhfeHNrX2NxZV9jb21wcmVzc19wa3RzOw0KKwl1 NjQgcnhfeHNrX2NvbmdzdF91bXI7DQorCXU2NCByeF94c2tfYXJmc19lcnI7DQorCXU2NCB0eF94 c2tfeG1pdDsNCisJdTY0IHR4X3hza19tcHdxZTsNCisJdTY0IHR4X3hza19pbmxudzsNCisJdTY0 IHR4X3hza19mdWxsOw0KKwl1NjQgdHhfeHNrX2VycjsNCisJdTY0IHR4X3hza19jcWVzOw0KIH07 DQogDQogc3RydWN0IG1seDVlX3Fjb3VudGVyX3N0YXRzIHsNCkBAIC0yNTYsNiArMjg1LDcgQEAg c3RydWN0IG1seDVlX2NoX3N0YXRzIHsNCiAJdTY0IHBvbGw7DQogCXU2NCBhcm07DQogCXU2NCBh ZmZfY2hhbmdlOw0KKwl1NjQgZm9yY2VfaXJxOw0KIAl1NjQgZXFfcmVhcm07DQogfTsNCiANCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhy eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4cnguYw0K aW5kZXggZDJiOGNlNWRmNTljLi45YWUzMjdlODBkNmQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhyeC5jDQorKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHhyeC5jDQpAQCAtMzMsNiArMzMsNyBA QA0KICNpbmNsdWRlIDxsaW51eC9pcnEuaD4NCiAjaW5jbHVkZSAiZW4uaCINCiAjaW5jbHVkZSAi ZW4veGRwLmgiDQorI2luY2x1ZGUgImVuL3hzay90eC5oIg0KIA0KIHN0YXRpYyBpbmxpbmUgYm9v bCBtbHg1ZV9jaGFubmVsX25vX2FmZmluaXR5X2NoYW5nZShzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAq YykNCiB7DQpAQCAtODcsNyArODgsMTIgQEAgaW50IG1seDVlX25hcGlfcG9sbChzdHJ1Y3QgbmFw aV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpDQogCXN0cnVjdCBtbHg1ZV9jaGFubmVsICpjID0g Y29udGFpbmVyX29mKG5hcGksIHN0cnVjdCBtbHg1ZV9jaGFubmVsLA0KIAkJCQkJICAgICAgIG5h cGkpOw0KIAlzdHJ1Y3QgbWx4NWVfY2hfc3RhdHMgKmNoX3N0YXRzID0gYy0+c3RhdHM7DQorCXN0 cnVjdCBtbHg1ZV94ZHBzcSAqeHNrc3EgPSAmYy0+eHNrc3E7DQorCXN0cnVjdCBtbHg1ZV9ycSAq eHNrcnEgPSAmYy0+eHNrcnE7DQogCXN0cnVjdCBtbHg1ZV9ycSAqcnEgPSAmYy0+cnE7DQorCWJv b2wgeHNrX29wZW4gPSB0ZXN0X2JpdChNTFg1RV9DSEFOTkVMX1NUQVRFX1hTSywgYy0+c3RhdGUp Ow0KKwlib29sIGFmZl9jaGFuZ2UgPSBmYWxzZTsNCisJYm9vbCBidXN5X3hzayA9IGZhbHNlOw0K IAlib29sIGJ1c3kgPSBmYWxzZTsNCiAJaW50IHdvcmtfZG9uZSA9IDA7DQogCWludCBpOw0KQEAg LTEwMywxOCArMTA5LDMyIEBAIGludCBtbHg1ZV9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0 ICpuYXBpLCBpbnQgYnVkZ2V0KQ0KIAkJYnVzeSB8PSBtbHg1ZV9wb2xsX3hkcHNxX2NxKCZjLT5y cV94ZHBzcS5jcSk7DQogDQogCWlmIChsaWtlbHkoYnVkZ2V0KSkgeyAvKiBidWRnZXQ9MCBtZWFu czogZG9uJ3QgcG9sbCByeCByaW5ncyAqLw0KLQkJd29ya19kb25lID0gbWx4NWVfcG9sbF9yeF9j cSgmcnEtPmNxLCBidWRnZXQpOw0KKwkJaWYgKHhza19vcGVuKQ0KKwkJCXdvcmtfZG9uZSA9IG1s eDVlX3BvbGxfcnhfY3EoJnhza3JxLT5jcSwgYnVkZ2V0KTsNCisNCisJCWlmIChsaWtlbHkoYnVk Z2V0IC0gd29ya19kb25lKSkNCisJCQl3b3JrX2RvbmUgKz0gbWx4NWVfcG9sbF9yeF9jcSgmcnEt PmNxLCBidWRnZXQgLSB3b3JrX2RvbmUpOw0KKw0KIAkJYnVzeSB8PSB3b3JrX2RvbmUgPT0gYnVk Z2V0Ow0KIAl9DQogDQogCW1seDVlX3BvbGxfaWNvX2NxKCZjLT5pY29zcS5jcSk7DQogDQogCWJ1 c3kgfD0gcnEtPnBvc3Rfd3FlcyhycSk7DQorCWlmICh4c2tfb3Blbikgew0KKwkJbWx4NWVfcG9s bF9pY29fY3EoJmMtPnhza2ljb3NxLmNxKTsNCisJCWJ1c3kgfD0gbWx4NWVfcG9sbF94ZHBzcV9j cSgmeHNrc3EtPmNxKTsNCisJCWJ1c3lfeHNrIHw9IG1seDVlX3hza190eCh4c2tzcSwgTUxYNUVf VFhfWFNLX1BPTExfQlVER0VUKTsNCisJCWJ1c3lfeHNrIHw9IHhza3JxLT5wb3N0X3dxZXMoeHNr cnEpOw0KKwl9DQorDQorCWJ1c3kgfD0gYnVzeV94c2s7DQogDQogCWlmIChidXN5KSB7DQogCQlp ZiAobGlrZWx5KG1seDVlX2NoYW5uZWxfbm9fYWZmaW5pdHlfY2hhbmdlKGMpKSkNCiAJCQlyZXR1 cm4gYnVkZ2V0Ow0KIAkJY2hfc3RhdHMtPmFmZl9jaGFuZ2UrKzsNCisJCWFmZl9jaGFuZ2UgPSB0 cnVlOw0KIAkJaWYgKGJ1ZGdldCAmJiB3b3JrX2RvbmUgPT0gYnVkZ2V0KQ0KIAkJCXdvcmtfZG9u ZS0tOw0KIAl9DQpAQCAtMTM1LDYgKzE1NSwxOCBAQCBpbnQgbWx4NWVfbmFwaV9wb2xsKHN0cnVj dCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldCkNCiAJbWx4NWVfY3FfYXJtKCZjLT5pY29z cS5jcSk7DQogCW1seDVlX2NxX2FybSgmYy0+eGRwc3EuY3EpOw0KIA0KKwlpZiAoeHNrX29wZW4p IHsNCisJCW1seDVlX2hhbmRsZV9yeF9kaW0oeHNrcnEpOw0KKwkJbWx4NWVfY3FfYXJtKCZjLT54 c2tpY29zcS5jcSk7DQorCQltbHg1ZV9jcV9hcm0oJnhza3NxLT5jcSk7DQorCQltbHg1ZV9jcV9h cm0oJnhza3JxLT5jcSk7DQorCX0NCisNCisJaWYgKHVubGlrZWx5KGFmZl9jaGFuZ2UgJiYgYnVz eV94c2spKSB7DQorCQltbHg1ZV90cmlnZ2VyX2lycSgmYy0+aWNvc3EpOw0KKwkJY2hfc3RhdHMt PmZvcmNlX2lycSsrOw0KKwl9DQorDQogCXJldHVybiB3b3JrX2RvbmU7DQogfQ0KIA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9p Yi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2li LmMNCmluZGV4IGFkYTFiN2MwZTBiOC4uMTAxOWRmYjQ2YzhjIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMNCisrKyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jDQpAQCAt ODcsNyArODcsNyBAQCBpbnQgbWx4NWlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwN CiAJbWx4NWVfc2V0X25ldGRldl9tdHVfYm91bmRhcmllcyhwcml2KTsNCiAJbmV0ZGV2LT5tdHUg PSBuZXRkZXYtPm1heF9tdHU7DQogDQotCW1seDVlX2J1aWxkX25pY19wYXJhbXMobWRldiwgJnBy aXYtPnJzc19wYXJhbXMsICZwcml2LT5jaGFubmVscy5wYXJhbXMsDQorCW1seDVlX2J1aWxkX25p Y19wYXJhbXMobWRldiwgTlVMTCwgJnByaXYtPnJzc19wYXJhbXMsICZwcml2LT5jaGFubmVscy5w YXJhbXMsDQogCQkJICAgICAgIG1seDVlX2dldF9uZXRkZXZfbWF4X2NoYW5uZWxzKG5ldGRldiks DQogCQkJICAgICAgIG5ldGRldi0+bXR1KTsNCiAJbWx4NWlfYnVpbGRfbmljX3BhcmFtcyhtZGV2 LCAmcHJpdi0+Y2hhbm5lbHMucGFyYW1zKTsNCkBAIC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIGlu dCBtbHg1aV9pbml0X3J4KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQ0KIAlpZiAoZXJyKQ0KIAkJ Z290byBlcnJfY2xvc2VfZHJvcF9ycTsNCiANCi0JZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF9y cXRzKHByaXYpOw0KKwllcnIgPSBtbHg1ZV9jcmVhdGVfZGlyZWN0X3JxdHMocHJpdiwgcHJpdi0+ ZGlyZWN0X3Rpcik7DQogCWlmIChlcnIpDQogCQlnb3RvIGVycl9kZXN0cm95X2luZGlyZWN0X3Jx dHM7DQogDQpAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgbWx4NWlfaW5pdF9yeChzdHJ1 Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2Rlc3Ryb3lfZGly ZWN0X3JxdHM7DQogDQotCWVyciA9IG1seDVlX2NyZWF0ZV9kaXJlY3RfdGlycyhwcml2KTsNCisJ ZXJyID0gbWx4NWVfY3JlYXRlX2RpcmVjdF90aXJzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0K IAlpZiAoZXJyKQ0KIAkJZ290byBlcnJfZGVzdHJveV9pbmRpcmVjdF90aXJzOw0KIA0KQEAgLTM4 NCwxMSArMzg0LDExIEBAIHN0YXRpYyBpbnQgbWx4NWlfaW5pdF9yeChzdHJ1Y3QgbWx4NWVfcHJp diAqcHJpdikNCiAJcmV0dXJuIDA7DQogDQogZXJyX2Rlc3Ryb3lfZGlyZWN0X3RpcnM6DQotCW1s eDVlX2Rlc3Ryb3lfZGlyZWN0X3RpcnMocHJpdik7DQorCW1seDVlX2Rlc3Ryb3lfZGlyZWN0X3Rp cnMocHJpdiwgcHJpdi0+ZGlyZWN0X3Rpcik7DQogZXJyX2Rlc3Ryb3lfaW5kaXJlY3RfdGlyczoN CiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHByaXYsIHRydWUpOw0KIGVycl9kZXN0cm95 X2RpcmVjdF9ycXRzOg0KLQltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYpOw0KKwltbHg1 ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHByaXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIGVycl9kZXN0 cm95X2luZGlyZWN0X3JxdHM6DQogCW1seDVlX2Rlc3Ryb3lfcnF0KHByaXYsICZwcml2LT5pbmRp cl9ycXQpOw0KIGVycl9jbG9zZV9kcm9wX3JxOg0KQEAgLTQwMSw5ICs0MDEsOSBAQCBzdGF0aWMg aW50IG1seDVpX2luaXRfcngoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpDQogc3RhdGljIHZvaWQg bWx4NWlfY2xlYW51cF9yeChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikNCiB7DQogCW1seDVpX2Rl c3Ryb3lfZmxvd19zdGVlcmluZyhwcml2KTsNCi0JbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhw cml2KTsNCisJbWx4NWVfZGVzdHJveV9kaXJlY3RfdGlycyhwcml2LCBwcml2LT5kaXJlY3RfdGly KTsNCiAJbWx4NWVfZGVzdHJveV9pbmRpcmVjdF90aXJzKHByaXYsIHRydWUpOw0KLQltbHg1ZV9k ZXN0cm95X2RpcmVjdF9ycXRzKHByaXYpOw0KKwltbHg1ZV9kZXN0cm95X2RpcmVjdF9ycXRzKHBy aXYsIHByaXYtPmRpcmVjdF90aXIpOw0KIAltbHg1ZV9kZXN0cm95X3JxdChwcml2LCAmcHJpdi0+ aW5kaXJfcnF0KTsNCiAJbWx4NWVfY2xvc2VfZHJvcF9ycSgmcHJpdi0+ZHJvcF9ycSk7DQogCW1s eDVlX2Rlc3Ryb3lfcV9jb3VudGVycyhwcml2KTsNCi0tIA0KMi4xOS4xDQoNCg==