From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EBA1CA034C for ; Sat, 12 Mar 2022 14:03:11 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DEADD410E8; Sat, 12 Mar 2022 14:03:11 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2123.outbound.protection.outlook.com [40.107.20.123]) by mails.dpdk.org (Postfix) with ESMTP id 5984140040; Sat, 12 Mar 2022 14:03:09 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nT/sqDbk4MG9B5E+iOkZuKK1KSp6g4WG9wUGBIsG4S1/JQE0BtqQ7lhkUwPDbhfEPDm58Ij82I3FUNvDBVQ35X51iJGdr4oaSI1eGYtgVNJ3PV42B6R+LZSadRtztqQU1KUUHuYHNUXNmSLfg1+KgF1F6BAyeyfGMeIy0Q0YwrBDrQ5lCbuxDxGwfI2raLI1Cswb4IIkTZm6PBwFx3qO5C2BLzYNGdJa2JIG9MA0LT4op69tO97D7hqR6AYn8aEHQUAX7wyELXtu0lOvng0R7VKoIZOwAvFt4CjRWeef+nD+F74PjkOLjjP17m8Er3vurtv9X+6NMnn5qOORLPwq8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CqJkW7wWDzLNsqh5PTiuw6p+Q3GYQ2WvGc1xLgi1lwc=; b=D7OtyjCq1BZk7PQUMES1kUg8uwFiLE69hJZByqRiKcUw7sBn4pZnGf7zAiyAiWhdsTzzcMn9EbmaE+r1BNk4GYeKNlirYkidJscMQjevbynweT+yWuqauYSVTkGAG/sIHkzaduxyssfDssSHhe6rYZu3TdaKq0gZa813K7docuUWRImLvBOhVK2IZIJ2j/uTf3+6rHPNTZ0uArkfFdxViBDUZ6W6v0157OzHA2K8HTldn2vkILkq7DD9vwIY0O2CVWpXDwUu37CRPOLHrE4Q+/NW8hTwx7LW7ULVA4NuMjOxNGdSjpjAhiSaQBPYkDCwk0Q7N6LqdAbvQs3LmNDjHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silicom-usa.com; dmarc=pass action=none header.from=silicom-usa.com; dkim=pass header.d=silicom-usa.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=SILICOMLTD.onmicrosoft.com; s=selector2-SILICOMLTD-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CqJkW7wWDzLNsqh5PTiuw6p+Q3GYQ2WvGc1xLgi1lwc=; b=FyKU2+s6PdAS9oAyHX7jww0zVNAPL8P/lJ5MM+8TFPekYkroX23bFdUwpvZ6T7U8RyJ1C3FYaOBdW604ilq2Y5MtbetjX7OLeFi0r5QYTwjL8rzyC3vqc3G3EfZDYSfyJ4gQBsGInmhdo9ZnPE0gMuhIVihfPLZcIkBRbjwPHIk= Received: from AM0PR0402MB3506.eurprd04.prod.outlook.com (2603:10a6:208:17::29) by AS8PR04MB8417.eurprd04.prod.outlook.com (2603:10a6:20b:3f9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.25; Sat, 12 Mar 2022 13:03:07 +0000 Received: from AM0PR0402MB3506.eurprd04.prod.outlook.com ([fe80::503d:b44a:c913:f15]) by AM0PR0402MB3506.eurprd04.prod.outlook.com ([fe80::503d:b44a:c913:f15%3]) with mapi id 15.20.5061.025; Sat, 12 Mar 2022 13:03:07 +0000 From: Jeff Daly To: Jeff Daly , "dev@dpdk.org" CC: "stable@dpdk.org" , Stephen Douthit , Haiyue Wang Subject: RE: [PATCH v4 3/3] net/ixgbe: Fix SFP detection and linking on hotplug Thread-Topic: [PATCH v4 3/3] net/ixgbe: Fix SFP detection and linking on hotplug Thread-Index: AQHYLLgQHGEvn3dVkkaDeyaiVdu9F6y7yFzw Date: Sat, 12 Mar 2022 13:03:07 +0000 Message-ID: References: <20211206221922.644187-1-stephend@silicom-usa.com> <20220228152937.21247-1-jeffd@silicom-usa.com> <20220228152937.21247-4-jeffd@silicom-usa.com> In-Reply-To: <20220228152937.21247-4-jeffd@silicom-usa.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=silicom-usa.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0f78b54e-f6e5-4579-2755-08da0428a73e x-ms-traffictypediagnostic: AS8PR04MB8417:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZQbEMviBU0m9A9PQ2O7lIwM3QKu9/3BssXYowDZM1lUG+57cyXe2jGs9tg2VRulwUnYCrQoLR3e5lohUEllFRisy6pNH93gwRzm2M7us4SwRW86C+Ewn0J84ABw5R6bLXqrY1SdfYODeXclJ01aogpzsZogh9bRX9jf1JQjk4i50uZBRPoHC6Caq/QFmDXoVL/S9XUiKsT81BmghDkFCbL7vRcoM1fw+3v2Nb9gxsuKp+XrXqQHT+nMkEeRNZc8GN5399ARLV97ZK63vFO8BoLcWcQmU2YWL+kr4bxBYJbNLryb2mOoGYs0TH5tuLTN3cl6bGMS3GQbfsZocDAS7jy4OK8gxVOdOKLDa6bsg2Kmr49oIOo3P04B0queac5mt/tneM46eYwOJwMN4L62452NT0ynLulsU1e1s2iDoHMdJqO2LrleRcO0iA7S/SuUl2JNHZGqe3DFLKCELpu+UFZIRcsarn10N44Y05TdJS6LrU4awsVPSGzfFBA42Jm2CrGkDUp6qBQv/zfx1RHgQKh4Len1J7OdMfpGj3YMSvl5DHYtvvuJLOLLnEVaWMsqDf1GqsOsbiG4JfbNO3Cz+utGgCEGPJYVwGWrpngLvj52tLVbnu5Lxw5FGmKonOdT2fRwfGB2qI47TT2mj3NG2T7bZH/xP8+eRmM8OGtfpajXOivd3wJQvBYxgmfvHWbhzr/T1YusdirX6XV6qrB7gdw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0402MB3506.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(33656002)(2906002)(38070700005)(508600001)(30864003)(5660300002)(8936002)(52536014)(26005)(186003)(86362001)(83380400001)(53546011)(7696005)(6506007)(71200400001)(9686003)(55016003)(110136005)(4326008)(122000001)(54906003)(76116006)(66446008)(38100700002)(8676002)(66476007)(66556008)(64756008)(316002)(66946007)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?allSaFNzRTVJNmV3KzFhL3p5UThIeTZ6M0kwUjZkSUc0TFBHNDF1SkE0bUZh?= =?utf-8?B?K3h3R0F2NHNhZS9tc1EzaG1EKysvYVJNSUROdHRyMmtSYkh0UGJyN0dTeGtJ?= =?utf-8?B?NTUrY3dSa0VPQjA0NGhPMzZKWkVCakRQREJJMTFtTmU4WFRpZVR1MXFRdStt?= =?utf-8?B?S1RqNy9WMklrcDhQS2FTdlpFNG5yU1ZBZ2o5eXVvMVF6Qk1xZVRVYXl0L0pi?= =?utf-8?B?alpHcHpGck1XaXEvQzRJQjhDZC94dlJzQndoR3E1NkdDZjhEOUpHSWk5RjhE?= =?utf-8?B?NlFzd1oxMmdiQkpCbldxOFVXd0ZMSG5LWllUZ1o1OGxGbW9pL1FVckt6dlY4?= =?utf-8?B?VUZJRXMvN0YyLzE1STlQVVlJNFJ3UnNuMC94TnAyQjJzeVJCUXlBYjAwWkZF?= =?utf-8?B?akRLUXRmTHJpQndNS2x4MmtHd05sdHo0QXFMaXlPRHBXRUt1aWtWOHZCUTNZ?= =?utf-8?B?enFWY1UrZFFJbnJ4UGhXLzZ5SXBoK3ZrY2k4OGJpTldpVmk1b05VVVNLcm0r?= =?utf-8?B?T3NieVFQTitOQjhWc3pzN3lIVkZ2MDIwY3B2NjdIYzNuQ0NPRFcrNzFNcFNu?= =?utf-8?B?NnRlN3ZoVTg2SEpDa1hBUVlGeHZIRlo4akttYjlzWUNDd3daU2xRcHJYV1FG?= =?utf-8?B?bEUvSGxyWmNNU3ViZEpHNnhDdlFTdjdCQjJSREs2NGVFcElEdVJZRFNwRTVC?= =?utf-8?B?cXBibGROZmFRa09SSkVUcUpPY2RwVG5hR3FoUWFxcHJPQVRNUFlWMVQ2ZXZP?= =?utf-8?B?eUJIcGplSVhRYUY1TWRhbUd6L3VvczNURThVdk1pQnB5TENiVkllaERwV04w?= =?utf-8?B?N3BtQWdBTkczS2s2bzB0VFJObGJBSG9NYVNsUU5Qc0hDYVhDNlJPb1dsLzhk?= =?utf-8?B?QVVmZXZPVkJiQ016TDREd2pod1p5SFlJNjc0alpnUm1WZlZoV0RXMERZYmVy?= =?utf-8?B?VUxnd3JQR1IvUExWaFBBdkJnVlVSdnRpRVZEMlpsODRHUWQ5QnZZSEc5RUlC?= =?utf-8?B?WklDbkNuSTJ0ZDRCQ1VNLzI5TUlQUW1FRnRhSGZEU2FhdVFKSGdTWFhzbjRl?= =?utf-8?B?NWtlNEZGL1paMUNHMTVjbWlpK3I5dDNGellhRE9SeGhnZVpxSWc2V1kzK3FV?= =?utf-8?B?ZDFKNUlNQzBIL0hqSDJxMjJkS0pRNkxpWFBpb3hqOHp3aXRSNHpIb0JxQmpi?= =?utf-8?B?RWdXRTNDVXhOaFA4K3Z5RVUzZmJORmhPamRKM0VHekFjUkhPUTAvUUdqemNU?= =?utf-8?B?UXhqWHNDakpiU0JkaGE1V2JaZ2JmM3BVWHhQN3lRbDRmVUpjaWF1cXhaKzU1?= =?utf-8?B?dEptOUNNK0lPeHVMODhEZFMrVzQxeG93K0VBNHFhSTZRSEVidjVHQmVVWlRz?= =?utf-8?B?d3QrYmNuaFcyVktUSUI4a0VzS3JFRWI4SklEZktpUW1zNTlKN3IzZGEyaWxm?= =?utf-8?B?WlZaNStkdVpIZXJEVUdQbFdUbHBLN1Vwb3VUeGlGUEtoQVZ5RGEyZ3IyaktU?= =?utf-8?B?K0FFd3B1REhrTTErdEhvNFB0S2JBeXc3Z2FYVmxRRElyMWJ6ayt5QjVtMDVR?= =?utf-8?B?Vjh6dExNRjJTNU13bXZ1aSs2WGw2MXdwM0kzUWpwa2NsZHowWEhMMjF6N0NN?= =?utf-8?B?NXVjZEdqeDMwTEZIdFNRNGZSUHVNM2xKK2hFNlpWTEhKVlZVQlZ0OWxlM0tO?= =?utf-8?B?ZGJJYTdSMDViUTRIREhoRXV6YmppeWdydXFrcjZ3bFRpblRBK3F2eGhEOGZk?= =?utf-8?B?aGozY0FUbWt1bXptVjBXUElQU2MvSkhLTDdyMFhsOUlnL1I2LzJkWFVRRFlv?= =?utf-8?B?Tm5Vc2w2Q043V1Qwb0lGbmRaNjI5YklIQ1NkMmNqOWMzdU5wRDBKRHdaZlRP?= =?utf-8?B?NUVONkU4WXNmNXFvcmN4SitvdURGZGVpU0NKOWJ6bnY1Qnphb29oaHRFMTQv?= =?utf-8?Q?Qd0h4k+Z6qaxUiiX1djHgfh7S1f3gKKq?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silicom-usa.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR0402MB3506.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f78b54e-f6e5-4579-2755-08da0428a73e X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Mar 2022 13:03:07.6324 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c9e326d8-ce47-4930-8612-cc99d3c87ad1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yTmQUuHUDHHMUf/Ghvkm7CxH5VbZbt4j7KwfCV+ujPrwAEvTpLQcZPJhDzWUYHLR2tsVMkmTA0avSm4VPoDcmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8417 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmVmZiBEYWx5IDxqZWZm ZEBzaWxpY29tLXVzYS5jb20+DQo+IFNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMjgsIDIwMjIgMTA6 MzAgQU0NCj4gVG86IGRldkBkcGRrLm9yZw0KPiBDYzogc3RhYmxlQGRwZGsub3JnOyBTdGVwaGVu IERvdXRoaXQgPHN0ZXBoZW5kQHNpbGljb20tdXNhLmNvbT47IEhhaXl1ZQ0KPiBXYW5nIDxoYWl5 dWUud2FuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2NCAzLzNdIG5ldC9peGdiZTog Rml4IFNGUCBkZXRlY3Rpb24gYW5kIGxpbmtpbmcgb24gaG90cGx1Zw0KPiANCj4gQ2F1dGlvbjog VGhpcyBpcyBhbiBleHRlcm5hbCBlbWFpbC4gUGxlYXNlIHRha2UgY2FyZSB3aGVuIGNsaWNraW5n IGxpbmtzIG9yDQo+IG9wZW5pbmcgYXR0YWNobWVudHMuDQo+IA0KPiANCj4gQ3VycmVudGx5IHRo ZSBpeGdiZSBkcml2ZXIgZG9lcyBub3QgSUQgYW55IFNGUCBleGNlcHQgZm9yIHRoZSBmaXJzdCBv bmUgcGx1Z2dlZCBpbi4NCj4gVGhpcyBjYW4gbGVhZCB0byBuby1saW5rLCBvciBpbmNvcnJlY3Qg c3BlZWQgY29uZGl0aW9ucy4NCj4gDQo+IEZvciBleGFtcGxlOg0KPiANCj4gKiBJZiBsaW5rIGlz IGluaXRpYWxseSBlc3RhYmxpc2hlZCB3aXRoIGEgMUcgU0ZQLCBhbmQgbGF0ZXIgYSAxRy8xMEcg bXVsdGlzcGVlZCBwYXJ0DQo+IGlzIGxhdGVyIGluc3RhbGxlZCwgdGhlbiB0aGUgTUFDIGxpbmsg c2V0dXAgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgdG8gY2hhbmdlDQo+IGZyb20gMTAwMEJB U0UtWCB0byAxMEdCQVNFLVIgbW9kZSwgYW5kIHRoZSBsaW5rIHN0YXlzIHJ1bm5pbmcgYXQgdGhl IHNsb3dlcg0KPiByYXRlLg0KPiANCj4gKiBJZiBsaW5rIGlzIGluaXRpYWxseSBlc3RhYmxpc2hl ZCB3aXRoIGEgMUcgU0ZQLCBhbmQgbGF0ZXIgYSAxMEcgb25seSBtb2R1bGUgaXMgbGF0ZXINCj4g aW5zdGFsbGVkLCBubyBsaW5rIGlzIGVzdGFibGlzaGVkLCBzaW5jZSB3ZSBhcmUgc3RpbGwgdHJh c25zbWl0dGluZyBpbiAxMDAwQkFTRS1YDQo+IG1vZGUgdG8gYSAxMEdCQVNFLVIgb25seSBwYXJ0 bmVyLg0KPiANCj4gUmVmYWN0b3IgdGhlIFNGUCBJRC9zZXR1cCwgYW5kIGxpbmsgc2V0dXAgY29k ZSwgdG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBmbG93DQo+IG9mIHRoZSBtYWlubGluZSBrZXJu ZWwgZHJpdmVyIHdoaWNoIGRvZXMgbm90IGhhdmUgdGhlc2UgaXNzdWVzLiAgSW4gdGhhdCBkcml2 ZXIgYQ0KPiBzZXJ2aWNlIHRhc2sgcnVucyBwZXJpb2RpY2FsbHkgdG8gaGFuZGxlIHRoZXNlIG9w ZXJhdGlvbnMgYmFzZWQgb24gYml0IGZsYWdzIHRoYXQNCj4gaGF2ZSBiZWVuIHNldCAodXN1YWxs eSB2aWEgaW50ZXJydXB0IG9yIHVzZXJzcGFjZSByZXF1ZXN0KSwgYW5kIHRoZW4gZ2V0IGNsZWFy ZWQNCj4gb25jZSB0aGUgcmVxdWVzdGVkIHN1YnRhc2sgaGFzIGJlZW4gY29tcGxldGVkLg0KPiAN Cj4gRml4ZXM6IGFmNzUwNzhmZWNlICgiZmlyc3QgcHVibGljIHJlbGVhc2UiKQ0KPiBDYzogc3Rh YmxlQGRwZGsub3JnDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBTdGVwaGVuIERvdXRoaXQgPHN0ZXBo ZW5kQHNpbGljb20tdXNhLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmVmZiBEYWx5IDxqZWZmZEBz aWxpY29tLXVzYS5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2 LmMgfCA0OTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQ0KPiBkcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuaCB8ICAxNCArLQ0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAzOTIgaW5z ZXJ0aW9ucygrKSwgMTIxIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2 LmMNCj4gaW5kZXggZThmMDdjYjQwNS4uYjcwOTg1YmIxZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4gKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhn YmVfZXRoZGV2LmMNCj4gQEAgLTIyOSw5ICsyMjksNiBAQCBzdGF0aWMgaW50IGl4Z2JlX2Rldl9p bnRlcnJ1cHRfZ2V0X3N0YXR1cyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldik7ICBzdGF0aWMg aW50IGl4Z2JlX2Rldl9pbnRlcnJ1cHRfYWN0aW9uKHN0cnVjdCBydGVfZXRoX2Rldg0KPiAqZGV2 KTsgIHN0YXRpYyB2b2lkIGl4Z2JlX2Rldl9pbnRlcnJ1cHRfaGFuZGxlcih2b2lkICpwYXJhbSk7 ICBzdGF0aWMgdm9pZA0KPiBpeGdiZV9kZXZfaW50ZXJydXB0X2RlbGF5ZWRfaGFuZGxlcih2b2lk ICpwYXJhbSk7IC1zdGF0aWMgdm9pZA0KPiAqaXhnYmVfZGV2X3NldHVwX2xpbmtfdGhyZWFkX2hh bmRsZXIodm9pZCAqcGFyYW0pOyAtc3RhdGljIGludA0KPiBpeGdiZV9kZXZfd2FpdF9zZXR1cF9s aW5rX2NvbXBsZXRlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGltZW91dF9tcyk7DQo+IA0K PiAgc3RhdGljIGludCBpeGdiZV9hZGRfcmFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyLCBA QCAtNzY2LDYgKzc2MywzMyBAQCBzdGF0aWMNCj4gY29uc3Qgc3RydWN0IHJ0ZV9peGdiZV94c3Rh dHNfbmFtZV9vZmYgcnRlX2l4Z2JldmZfc3RhdHNfc3RyaW5nc1tdID0geyAgI2RlZmluZQ0KPiBJ WEdCRVZGX05CX1hTVEFUUyAoc2l6ZW9mKHJ0ZV9peGdiZXZmX3N0YXRzX3N0cmluZ3MpIC8gXA0K PiAgICAgICAgICAgICAgICAgc2l6ZW9mKHJ0ZV9peGdiZXZmX3N0YXRzX3N0cmluZ3NbMF0pKQ0K PiANCj4gKy8qKg0KPiArICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBpeGdiZV9uZWVk X2Nyb3NzdGFsa19maXgoKSBpbg0KPiArYmFzZS9peGdiZV9jb21tb24uYw0KPiArICoNCj4gKyAq IGl4Z2JlX25lZWRfY3Jvc3N0YWxrX2ZpeCAtIERldGVybWluZSBpZiB3ZSBuZWVkIHRvIGRvIGNy b3NzIHRhbGsgZml4DQo+ICsgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlDQo+ ICsgKg0KPiArICogQ29udGFpbnMgdGhlIGxvZ2ljIHRvIGlkZW50aWZ5IGlmIHdlIG5lZWQgdG8g dmVyaWZ5IGxpbmsgZm9yIHRoZQ0KPiArICogY3Jvc3N0YWxrIGZpeA0KPiArICoqLw0KPiArc3Rh dGljIGJvb2wgaXhnYmVfbmVlZF9jcm9zc3RhbGtfZml4KHN0cnVjdCBpeGdiZV9odyAqaHcpIHsN Cj4gKyAgICAgICAvKiBEb2VzIEZXIHNheSB3ZSBuZWVkIHRoZSBmaXggKi8NCj4gKyAgICAgICBp ZiAoIWh3LT5uZWVkX2Nyb3NzdGFsa19maXgpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7DQo+ICsNCj4gKyAgICAgICAvKiBPbmx5IGNvbnNpZGVyIFNGUCsgUEhZcyBpLmUuIG1lZGlh IHR5cGUgZmliZXIgKi8NCj4gKyAgICAgICBzd2l0Y2ggKGl4Z2JlX2dldF9tZWRpYV90eXBlKGh3 KSkgew0KPiArICAgICAgIGNhc2UgaXhnYmVfbWVkaWFfdHlwZV9maWJlcjoNCj4gKyAgICAgICBj YXNlIGl4Z2JlX21lZGlhX3R5cGVfZmliZXJfcXNmcDoNCj4gKyAgICAgICAgICAgICAgIGJyZWFr Ow0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gIC8q DQo+ICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIGl4Z2JlX2lzX3NmcCgpIGluIGJh c2UvaXhnYmUuaC4NCj4gICAqLw0KPiBAQCAtMTAzMiw2ICsxMDU2LDMwNiBAQCBpeGdiZV9zd2Z3 X2xvY2tfcmVzZXQoc3RydWN0IGl4Z2JlX2h3ICpodykNCj4gICAgICAgICBpeGdiZV9yZWxlYXNl X3N3Zndfc2VtYXBob3JlKGh3LCBtYXNrKTsgIH0NCj4gDQo+ICsvKioNCj4gKyAqIGl4Z2JlX2No ZWNrX3NmcF9jYWdlIC0gRmluZCBwcmVzZW50IHN0YXR1cyBvZiBTRlAgbW9kdWxlDQo+ICsgKiBA aHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlDQo+ICsgKg0KPiArICogRmluZCBpZiBh IFNGUCBtb2R1bGUgaXMgcHJlc2VudCBhbmQgaWYgdGhpcyBkZXZpY2Ugc3VwcG9ydHMgU0ZQcw0K PiArKiovIGVudW0gaXhnYmVfc2ZwX2NhZ2Vfc3RhdHVzIGl4Z2JlX2NoZWNrX3NmcF9jYWdlKHN0 cnVjdCBpeGdiZV9odw0KPiArKmh3KSB7DQo+ICsgICAgICAgZW51bSBpeGdiZV9zZnBfY2FnZV9z dGF0dXMgc2ZwX2NhZ2Vfc3RhdHVzOw0KPiArDQo+ICsgICAgICAgLyogSWYgd2UncmUgbm90IGEg ZmliZXIvZmliZXJfcXNmcCwgbm8gY2FnZSB0byBjaGVjayAqLw0KPiArICAgICAgIHN3aXRjaCAo aHctPm1hYy5vcHMuZ2V0X21lZGlhX3R5cGUoaHcpKSB7DQo+ICsgICAgICAgY2FzZSBpeGdiZV9t ZWRpYV90eXBlX2ZpYmVyOg0KPiArICAgICAgIGNhc2UgaXhnYmVfbWVkaWFfdHlwZV9maWJlcl9x c2ZwOg0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAg ICAgICAgICAgICAgIHJldHVybiBJWEdCRV9TRlBfQ0FHRV9OT0NBR0U7DQo+ICsgICAgICAgfQ0K PiArDQo+ICsgICAgICAgc3dpdGNoIChody0+bWFjLnR5cGUpIHsNCj4gKyAgICAgICBjYXNlIGl4 Z2JlX21hY184MjU5OUVCOg0KPiArICAgICAgICAgICAgICAgc2ZwX2NhZ2Vfc3RhdHVzID0gISEo SVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0VTRFApICYNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJWEdCRV9FU0RQX1NEUDIpOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsg ICAgICAgY2FzZSBpeGdiZV9tYWNfWDU1MEVNX3g6DQo+ICsgICAgICAgY2FzZSBpeGdiZV9tYWNf WDU1MEVNX2E6DQo+ICsgICAgICAgICAgICAgICAvKiBTRFAwIGlzIHRoZSBhY3RpdmUgbG93IHNp Z25hbCBQUlNOVCMsIHNvIGludmVydCB0aGlzICovDQo+ICsgICAgICAgICAgICAgICBzZnBfY2Fn ZV9zdGF0dXMgPSAhKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9FU0RQKSAmDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJWEdCRV9FU0RQX1NEUDApOw0KPiArICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgIC8qIERv bid0IGtub3cgaG93IHRvIGNoZWNrIHRoaXMgZGV2aWNlIHR5cGUgeWV0ICovDQo+ICsgICAgICAg ICAgICAgICBzZnBfY2FnZV9zdGF0dXMgPSBJWEdCRV9TRlBfQ0FHRV9VTktOT1dOOw0KPiArICAg ICAgICAgICAgICAgREVCVUdPVVQoIklYR0JFX1NGUF9DQUdFX1VOS05PV04sIHVua25vd24gbWFj IHR5cGUNCj4gJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBody0+bWFjLnR5cGUp Ow0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAg REVCVUdPVVQoInNmcCBzdGF0dXMgJWQgZm9yIG1hYyB0eXBlICVkXG4iLCBzZnBfY2FnZV9zdGF0 dXMsIGh3LQ0KPiA+bWFjLnR5cGUpOw0KPiArICAgICAgIHJldHVybiBzZnBfY2FnZV9zdGF0dXM7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzMzINCj4gK2l4Z2JlX3NmcF9pZF9hbmRfc2V0dXAoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpIHsNCj4gKyAgICAgICBzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0N Cj4gKyAgICAgICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2 X3ByaXZhdGUpOw0KPiArICAgICAgIGVudW0gaXhnYmVfc2ZwX2NhZ2Vfc3RhdHVzIHNmcF9jYWdl X3N0YXR1czsNCj4gKyAgICAgICBzMzIgZXJyOw0KPiArDQo+ICsgICAgICAgLyogQ2FuJ3QgSUQg b3Igc2V0dXAgU0ZQIGlmIGl0J3Mgbm90IHBsdWdnZWQgaW4gKi8NCj4gKyAgICAgICBzZnBfY2Fn ZV9zdGF0dXMgPSBpeGdiZV9jaGVja19zZnBfY2FnZShodyk7DQo+ICsgICAgICAgaWYgKHNmcF9j YWdlX3N0YXR1cyA9PSBJWEdCRV9TRlBfQ0FHRV9FTVBUWSB8fA0KPiArICAgICAgICAgICBzZnBf Y2FnZV9zdGF0dXMgPT0gSVhHQkVfU0ZQX0NBR0VfTk9DQUdFKQ0KPiArICAgICAgICAgICAgICAg cmV0dXJuIElYR0JFX0VSUl9TRlBfTk9UX1BSRVNFTlQ7DQo+ICsNCj4gKyAgICAgICAvKiBTb21l dGhpbmcncyBpbiB0aGUgY2FnZSwgSUQgaXQgKi8NCj4gKyAgICAgICBody0+cGh5Lm9wcy5pZGVu dGlmeV9zZnAoaHcpOw0KPiArDQo+ICsgICAgICAgLyogVW5rbm93biBtb2R1bGUgdHlwZSwgZ2l2 ZSB1cCAqLw0KPiArICAgICAgIGlmIChody0+cGh5LnNmcF90eXBlID09IGl4Z2JlX3NmcF90eXBl X3Vua25vd24pIHsNCj4gKyAgICAgICAgICAgICAgIFBNRF9EUlZfTE9HKEVSUiwgInVua25vd24g U0ZQIHR5cGUsIGdpdmluZyB1cCIpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIElYR0JFX0VS Ul9TRlBfTk9UX1NVUFBPUlRFRDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICAvKiBUaGlz IHNob3VsZCBiZSBhIHJlZHVuZGFudCBjaGVjaywgc2luY2Ugd2UgbG9va2VkIGF0IHRoZQ0KPiAr ICAgICAgICAqIFBSU05UIyBzaWduYWwgZnJvbSB0aGUgY2FnZSBhYm92ZSwgYnV0IGp1c3QgaW4g Y2FzZSB0aGlzIGlzDQo+ICsgICAgICAgICogYW4gU0ZQIHRoYXQncyBzbG93IHRvIHJlc3BvbmQg dG8gSTJDIHBva2VzIGNvcnJlY3RseSwgdHJ5IGl0DQo+ICsgICAgICAgICogYWdhaW4gbGF0ZXIN Cj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBpZiAoaHctPnBoeS5zZnBfdHlwZSA9PSBpeGdiZV9z ZnBfdHlwZV9ub3RfcHJlc2VudCkgew0KPiArICAgICAgICAgICAgICAgUE1EX0RSVl9MT0coRVJS LCAiSURlZCBTRlAgYXMgYWJzZW50IGJ1dCBjYWdlIFBSU05UIyBhY3RpdmUhPyIpOw0KPiArICAg ICAgICAgICAgICAgcmV0dXJuIElYR0JFX0VSUl9TRlBfTk9UX1BSRVNFTlQ7DQo+ICsgICAgICAg fQ0KPiArDQo+ICsgICAgICAgLyogU0ZQIGlzIHByZXNlbnQgYW5kIGlkZW50aWZpZWQsIHRyeSB0 byBzZXQgaXQgdXAgKi8NCj4gKyAgICAgICBlcnIgPSBody0+bWFjLm9wcy5zZXR1cF9zZnAoaHcp Ow0KPiArICAgICAgIGlmIChlcnIpDQo+ICsgICAgICAgICAgICAgICBQTURfRFJWX0xPRyhFUlIs ICJzZXR1cF9zZnAoKSBmYWlsZWQgJWQiLCBlcnIpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGVy cjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2l4Z2JlX3NmcF9zZXJ2aWNlKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2KSB7DQo+ICsgICAgICAgc3RydWN0IGl4Z2JlX2h3ICpodyA9DQo+ ICsgICAgICAgICAgICAgICBJWEdCRV9ERVZfUFJJVkFURV9UT19IVyhkZXYtPmRhdGEtPmRldl9w cml2YXRlKTsNCj4gKyAgICAgICBzdHJ1Y3QgaXhnYmVfaW50ZXJydXB0ICppbnRyID0NCj4gKyAg ICAgICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RPX0lOVFIoZGV2LT5kYXRhLT5kZXZfcHJp dmF0ZSk7DQo+ICsgICAgICAgZW51bSBpeGdiZV9zZnBfY2FnZV9zdGF0dXMgc2ZwX2NhZ2Vfc3Rh dHVzOw0KPiArICAgICAgIHMzMiBlcnI7DQo+ICsgICAgICAgdTggc2ZmX2lkOw0KPiArICAgICAg IGJvb2wgaGF2ZV9pbnQgPSBmYWxzZTsNCj4gKw0KPiArICAgICAgIC8qIElmIHRoZXJlJ3Mgbm8g bW9kdWxlIGNhZ2UsIHRoZW4gdGhlcmUncyBub3RoaW5nIHRvIHNlcnZpY2UgKi8NCj4gKyAgICAg ICBzZnBfY2FnZV9zdGF0dXMgPSBpeGdiZV9jaGVja19zZnBfY2FnZShodyk7DQo+ICsgICAgICAg aWYgKHNmcF9jYWdlX3N0YXR1cyA9PSBJWEdCRV9TRlBfQ0FHRV9OT0NBR0UpIHsNCj4gKyAgICAg ICAgICAgICAgIFBNRF9EUlZfTE9HKERFQlVHLCAiTm8gU0ZQIHRvIHNlcnZpY2VcbiIpOw0KPiAr ICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIC8qIFRP RE8gLSBFdmVuIGZvciBwbGF0Zm9ybXMgd2hlcmUgaXhnYmVfY2hlY2tfc2ZwX2NhZ2UoKSBnaXZl cyBhIGNsZWFyDQo+ICsgICAgICAgICogc3RhdHVzIHJlc3VsdCwgaWYgdGhlcmUncyBubyBpbnRl cnJ1cHRzLCBvciBubyBpbnRlcnJ1cHQgZm9yIHRoZSBTRlANCj4gKyAgICAgICAgKiBjYWdlIHBy ZXNlbnQgcGluLCBldmVuIGlmIG90aGVyIGludGVycnVwdHMgZXhpc3QsIHRoZW4gd2Ugc3RpbGwg bmVlZA0KPiArICAgICAgICAqIHRvIHBvbGwgaGVyZSB0byBzZXQgdGhlIGZsYWcuDQo+ICsgICAg ICAgICovDQo+ICsjaWZuZGVmIFJURV9FWEVDX0VOVl9GUkVFQlNEDQo+ICsgICAgICAgc3RydWN0 IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2ID0gUlRFX0VUSF9ERVZfVE9fUENJKGRldik7DQo+ICsg ICAgICAgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUgPSBwY2lfZGV2LT5pbnRy X2hhbmRsZTsNCj4gKyAgICAgICBpZiAocnRlX2ludHJfYWxsb3dfb3RoZXJzKGludHJfaGFuZGxl KSkgew0KPiArICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgbHNjIGludGVycnVwdCBpcyBlbmFi bGVkICovDQo+ICsgICAgICAgICAgICAgICBpZiAoZGV2LT5kYXRhLT5kZXZfY29uZi5pbnRyX2Nv bmYubHNjKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBoYXZlX2ludCA9IHRydWU7DQo+ICsg ICAgICAgfQ0KPiArI2VuZGlmIC8qICNpZmRlZiBSVEVfRVhFQ19FTlZfRlJFRUJTRCAqLw0KPiAr DQo+ICsgICAgICAgaWYgKCFoYXZlX2ludCAmJiBzZnBfY2FnZV9zdGF0dXMgPT0gSVhHQkVfU0ZQ X0NBR0VfRU1QVFkpIHsNCj4gKyAgICAgICAgICAgICAgIGludHItPmZsYWdzIHw9IElYR0JFX0ZM QUdfTkVFRF9TRlBfU0VUVVA7DQo+ICsgICAgICAgICAgICAgICBQTURfRFJWX0xPRyhERUJVRywg Ik5vIFNGUCwgbm8gTFNDLCBzZXQgTkVFRF9TRlBfU0VUVVBcbiIpOw0KPiArICAgICAgIH0NCj4g Kw0KPiArICAgICAgIC8qIEZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIGEgd2F5IHRvIHJl YWQgdGhlIFBSRVNFTlQjIHNpZ25hbCBmcm9tDQo+ICsgICAgICAgICogdGhlIFNGUCBjYWdlLCBm YWxsYmFjayB0byBkb2luZyBhbiBJMkMgcmVhZCBhbmQgc2VlaW5nIGlmIGl0J3MgQUNLZWQNCj4g KyAgICAgICAgKiB0byBkZXRlcm1pbmUgaWYgYSBtb2R1bGUgaXMgcHJlc2VudA0KPiArICAgICAg ICAqLw0KPiArICAgICAgIGlmIChzZnBfY2FnZV9zdGF0dXMgPT0gSVhHQkVfU0ZQX0NBR0VfVU5L Tk9XTikgew0KPiArICAgICAgICAgICAgICAgUE1EX0RSVl9MT0coREVCVUcsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAiU0ZQIHByZXNlbnQgdW5rbm93biAoaW50PyAlZCksIHRyeSBJ MkMgcmVhZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfaW50KTsNCj4g Kw0KPiArICAgICAgICAgICAgICAgLyogUmF0aGVyIHRoYW4gY2FsbGluZyBpZGVudGlmeV9zZnAs IHdoaWNoIHdpbGwgcmVhZCBhIGxvdCBvZiBJMkMNCj4gKyAgICAgICAgICAgICAgICAqIHJlZ2lz dGVycyAoYW5kIGluIGEgc2xvdyBwcm9jZXNzb3IgaW50ZW5zaXZlIGZhc2hpb24gZHVlIHRvDQo+ ICsgICAgICAgICAgICAgICAgKiBiaXQtYmFuZ2luZywganVzdCByZWFkIHRoZSBTRkYgSUQgcmVn aXN0ZXIsIHdoaWNoIGlzIGF0IGENCj4gKyAgICAgICAgICAgICAgICAqIGNvbW1vbiBhZGRyZXNz IGFjcm9zcyBTRlAvU0ZQKy9RU0ZQIG1vZHVsZXMgYW5kIHNlZSBpZg0KPiArICAgICAgICAgICAg ICAgICogdGhlcmUncyBhIE5BQ0suICBUaGlzIHdvcmtzIHNpbmNlIHdlIG9ubHkgZXhwZWN0IGEg TkFDSyBpZiBubw0KPiArICAgICAgICAgICAgICAgICogbW9kdWxlIGlzIHByZXNlbnQNCj4gKyAg ICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgZXJyID0gaXhnYmVfcmVhZF9pMmNf ZWVwcm9tKGh3LCBJWEdCRV9TRkZfSURFTlRJRklFUiwgJnNmZl9pZCk7DQo+ICsgICAgICAgICAg ICAgICBpZiAoZXJyICE9IElYR0JFX1NVQ0NFU1MpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgUE1EX0RSVl9MT0coREVCVUcsICJSZWNlaXZlZCBJMkMgTkFLIGZyb20gU0ZQLCBzZXQNCj4g TkVFRF9TRlBfU0VUVVAgZmxhZ1xuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGludHIt PmZsYWdzIHw9IElYR0JFX0ZMQUdfTkVFRF9TRlBfU0VUVVA7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHNmcF9jYWdlX3N0YXR1cyA9IElYR0JFX1NGUF9DQUdFX0VNUFRZOw0KPiArICAgICAg ICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgUE1EX0RSVl9MT0co REVCVUcsICJTRlAgSUQgcmVhZCBBQ0tlZCIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBz ZnBfY2FnZV9zdGF0dXMgPSBJWEdCRV9TRlBfQ0FHRV9GVUxMOw0KPiArICAgICAgICAgICAgICAg fQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGlmIChzZnBfY2FnZV9zdGF0dXMgPT0gSVhH QkVfU0ZQX0NBR0VfRU1QVFkpIHsNCj4gKyAgICAgICAgICAgICAgIFBNRF9EUlZfTE9HKERFQlVH LCAiU0ZQIGFic2VudCwgY2FnZV9zdGF0dXMgJWRcbiIsDQo+IHNmcF9jYWdlX3N0YXR1cyk7DQo+ ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgLyog Tm8gc2V0dXAgcmVxdWVzdGVkPyAgTm90aGluZyB0byBkbyAqLw0KPiArICAgICAgIGlmICghKGlu dHItPmZsYWdzICYgSVhHQkVfRkxBR19ORUVEX1NGUF9TRVRVUCkpDQo+ICsgICAgICAgICAgICAg ICByZXR1cm47DQo+ICsNCj4gKyAgICAgICBlcnIgPSBpeGdiZV9zZnBfaWRfYW5kX3NldHVwKGRl dik7DQo+ICsgICAgICAgaWYgKGVycikgew0KPiArICAgICAgICAgICAgICAgUE1EX0RSVl9MT0co REVCVUcsICJmYWlsZWQgdG8gSUQgJiBzZXR1cCBTRlAgJWQiLCBlcnIpOw0KPiArICAgICAgICAg ICAgICAgcmV0dXJuOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIC8qIFNldHVwIGlzIGRv bmUsIGNsZWFyIHRoZSBmbGFnLCBidXQgbWFrZSBzdXJlIGxpbmsgY29uZmlnIHJ1bnMgZm9yIG5l dyBTRlANCj4gKi8NCj4gKyAgICAgICBpbnRyLT5mbGFncyAmPSB+SVhHQkVfRkxBR19ORUVEX1NG UF9TRVRVUDsNCj4gKyAgICAgICBpbnRyLT5mbGFncyB8PSBJWEdCRV9GTEFHX05FRURfTElOS19D T05GSUc7DQo+ICsNCj4gKyAgICAgICAvKg0KPiArICAgICAgICAqIFNpbmNlIHRoaXMgaXMgYSBu ZXcgU0ZQLCBjbGVhciB0aGUgb2xkIGFkdmVydGlzZWQgc3BlZWQgbWFzayBzbyB3ZSBkb24ndA0K PiArICAgICAgICAqIGVuZCB1cCB1c2luZyBhbiBvbGQgc2xvd2VyIHJhdGUNCj4gKyAgICAgICAg Ki8NCj4gKyAgICAgICBody0+cGh5LmF1dG9uZWdfYWR2ZXJ0aXNlZCA9IDA7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkDQo+ICtpeGdiZV9saW5rX3NlcnZpY2Uoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYpIHsNCj4gKyAgICAgICBzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gSVhHQkVfREVWX1BSSVZB VEVfVE9fSFcoZGV2LT5kYXRhLQ0KPiA+ZGV2X3ByaXZhdGUpOw0KPiArICAgICAgIHN0cnVjdCBp eGdiZV9pbnRlcnJ1cHQgKmludHIgPQ0KPiArICAgICAgICAgICAgICAgSVhHQkVfREVWX1BSSVZB VEVfVE9fSU5UUihkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsNCj4gKyAgICAgICBib29sIGxpbmtf dXAsIGF1dG9uZWcgPSBmYWxzZSwgaGF2ZV9pbnQgPSBmYWxzZTsNCj4gKyAgICAgICB1MzIgc3Bl ZWQ7DQo+ICsgICAgICAgczMyIGVycjsNCj4gKw0KPiArICAgICAgIC8qIFRlc3QgaWYgd2UgaGF2 ZSBhIExTQyBpbnRlcnJ1cHQgZm9yIHRoaXMgcGxhdGZvcm0sIGlmIG5vdCB3ZSBuZWVkIHRvDQo+ ICsgICAgICAgICogbWFudWFsbHkgY2hlY2sgdGhlIGxpbmsgcmVnaXN0ZXIgc2luY2UgSVhHQkVf RkxBR19ORUVEX0xJTktfQ09ORklHDQo+ICsgICAgICAgICogd2lsbCBuZXZlciBiZSBzZXQgaW4g dGhlIGludGVycnVwdCBoYW5kbGVyDQo+ICsgICAgICAgICovDQo+ICsjaWZuZGVmIFJURV9FWEVD X0VOVl9GUkVFQlNEDQo+ICsgICAgICAgc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2ID0g UlRFX0VUSF9ERVZfVE9fUENJKGRldik7DQo+ICsgICAgICAgc3RydWN0IHJ0ZV9pbnRyX2hhbmRs ZSAqaW50cl9oYW5kbGUgPSBwY2lfZGV2LT5pbnRyX2hhbmRsZTsNCj4gKyAgICAgICBpZiAocnRl X2ludHJfYWxsb3dfb3RoZXJzKGludHJfaGFuZGxlKSkgew0KPiArICAgICAgICAgICAgICAgLyog Y2hlY2sgaWYgbHNjIGludGVycnVwdCBpcyBlbmFibGVkICovDQo+ICsgICAgICAgICAgICAgICBp ZiAoZGV2LT5kYXRhLT5kZXZfY29uZi5pbnRyX2NvbmYubHNjKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICBoYXZlX2ludCA9IHRydWU7DQo+ICsgICAgICAgfQ0KPiArI2VuZGlmIC8qICNpZmRl ZiBSVEVfRVhFQ19FTlZfRlJFRUJTRCAqLw0KPiArDQo+ICsgICAgICAgLyogU2tpcCBpZiB3ZSBz dGlsbCBuZWVkIHRvIHNldHVwIGFuIFNGUCwgb3IgaWYgbm8gbGluayBjb25maWcgcmVxdWVzdGVk DQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaWYgKChpbnRyLT5mbGFncyAmIElYR0JFX0ZMQUdf TkVFRF9TRlBfU0VUVVApIHx8DQo+ICsgICAgICAgICAgICghKGludHItPmZsYWdzICYgSVhHQkVf RkxBR19ORUVEX0xJTktfQ09ORklHKSAmJiBoYXZlX2ludCkpDQo+ICsgICAgICAgICAgICAgICBy ZXR1cm47DQo+ICsNCj4gKyAgICAgICBpZiAoIWhhdmVfaW50ICYmICEoaW50ci0+ZmxhZ3MgJiBJ WEdCRV9GTEFHX05FRURfTElOS19DT05GSUcpKSB7DQo+ICsgICAgICAgICAgICAgICBlcnIgPSBp eGdiZV9jaGVja19saW5rKGh3LCAmc3BlZWQsICZsaW5rX3VwLCAwKTsNCj4gKyAgICAgICAgICAg ICAgIGlmICghZXJyICYmICFsaW5rX3VwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlu dHItPmZsYWdzIHw9IElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRzsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgUE1EX0RSVl9MT0coREVCVUcsICJMaW5rIGRvd24sIG5vIExTQywgc2V0DQo+ IE5FRURfTElOS19DT05GSUdcbiIpOw0KPiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAg ICAgIH0NCj4gKw0KPiArICAgICAgIHNwZWVkID0gaHctPnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7 DQo+ICsgICAgICAgaWYgKCFzcGVlZCkNCj4gKyAgICAgICAgICAgICAgIGl4Z2JlX2dldF9saW5r X2NhcGFiaWxpdGllcyhodywgJnNwZWVkLCAmYXV0b25lZyk7DQo+ICsNCj4gKyAgICAgICBlcnIg PSBpeGdiZV9zZXR1cF9saW5rKGh3LCBzcGVlZCwgdHJ1ZSk7DQo+ICsgICAgICAgaWYgKGVycikg ew0KPiArICAgICAgICAgICAgICAgUE1EX0RSVl9MT0coRVJSLCAiaXhnYmVfc2V0dXBfbGluayBm YWlsZWQgJWQiLCBlcnIpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArICAgICAgIH0N Cj4gKw0KPiArICAgICAgIGludHItPmZsYWdzICY9IH5JWEdCRV9GTEFHX05FRURfTElOS19DT05G SUc7IH0NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2l4Z2JlX2xpbmtfdXBkYXRlX3NlcnZpY2Uo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpIHsNCj4gKyAgICAgICAvKiBVcGRhdGUgaW50ZXJuYWwg bGluayBzdGF0dXMsIHdhaXRpbmcgZm9yIGxpbmsgKi8NCj4gKyAgICAgICBpZiAoIWl4Z2JlX2Rl dl9saW5rX3VwZGF0ZShkZXYsIDApKSB7DQo+ICsgICAgICAgICAgICAgICBpeGdiZV9kZXZfbGlu a19zdGF0dXNfcHJpbnQoZGV2KTsNCj4gKyAgICAgICAgICAgICAgIHJ0ZV9ldGhfZGV2X2NhbGxi YWNrX3Byb2Nlc3MoZGV2LCBSVEVfRVRIX0VWRU5UX0lOVFJfTFNDLA0KPiBOVUxMKTsNCj4gKyAg ICAgICB9DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBTZXJ2aWNlIHRhc2sgdGhyZWFkIHRvIGhh bmRsZSBwZXJpb2RpYyB0YXNrcyAgKi8gc3RhdGljIHZvaWQgKg0KPiAraXhnYmVfZGV2X3NlcnZp Y2VfdGhyZWFkX2hhbmRsZXIodm9pZCAqcGFyYW0pIHsNCj4gKyAgICAgICBzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiA9IChzdHJ1Y3QgcnRlX2V0aF9kZXYgKilwYXJhbTsNCj4gKyAgICAgICBzdHJ1 Y3QgaXhnYmVfaHcgKmh3ID0NCj4gKyAgICAgICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RP X0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiArICAgICAgIHVpbnQ2NF90IHN0YXJ0LCB0 aWNrcywgc2VydmljZV9tczsNCj4gKyAgICAgICB1aW50MzJfdCBzcGVlZDsNCj4gKyAgICAgICBz MzIgZXJyOw0KPiArICAgICAgIGJvb2wgbGlua191cDsNCj4gKw0KPiArICAgICAgIHdoaWxlICgx KSB7DQo+ICsgICAgICAgICAgICAgICBpeGdiZV9zZnBfc2VydmljZShkZXYpOw0KPiArICAgICAg ICAgICAgICAgaXhnYmVfbGlua19zZXJ2aWNlKGRldik7DQo+ICsgICAgICAgICAgICAgICBpeGdi ZV9saW5rX3VwZGF0ZV9zZXJ2aWNlKGRldik7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIC8qIFJ1 biB0aGUgc2VydmljZSB0aHJlYWQgaGFuZGxlciBtb3JlIGZyZXF1ZW50bHkgd2hlbiBsaW5rIGlz DQo+ICsgICAgICAgICAgICAgICAgKiBkb3duIHRvIHJlZHVjZSBsaW5rIHVwIGxhdGVuY3kgKGV2 ZXJ5IDIwMG1zIHZzIDFzKQ0KPiArICAgICAgICAgICAgICAgICoNCj4gKyAgICAgICAgICAgICAg ICAqIFVzZSBhIG51bWJlciBvZiBzbWFsbGVyIHNsZWVwcyB0byBkZWNyZWFzZSBleGl0IGxhdGVu Y3kgd2hlbg0KPiArICAgICAgICAgICAgICAgICogaXhnYmVfZGV2X3N0b3AoKSB3YW50cyB0aGlz IHRocmVhZCB0byBqb2luDQo+ICsgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAg IGVyciA9IGl4Z2JlX2NoZWNrX2xpbmsoaHcsICZzcGVlZCwgJmxpbmtfdXAsIDApOw0KPiArICAg ICAgICAgICAgICAgaWYgKGVyciA9PSBJWEdCRV9TVUNDRVNTICYmIGxpbmtfdXApDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZpY2VfbXMgPSAyMDAwOw0KPiArICAgICAgICAgICAgICAg ZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlX21zID0gMTAwOw0KPiArDQo+ ICsgICAgICAgICAgICAgICAvKiBDYWxsIG1zZWNfZGVsYXkgaW4gYSBsb29wIHdpdGggc2V2ZXJh bCBzbWFsbGVyIHNsZWVwcyB0bw0KPiArICAgICAgICAgICAgICAgICogcHJvdmlkZSBwZXJpb2Rp YyB0aHJlYWQgY2FuY2VsbGF0aW9uIHBvaW50cw0KPiArICAgICAgICAgICAgICAgICovDQo+ICsg ICAgICAgICAgICAgICBzdGFydCA9IHJ0ZV9nZXRfdGltZXJfY3ljbGVzKCk7DQo+ICsgICAgICAg ICAgICAgICB0aWNrcyA9ICh1aW50NjRfdClzZXJ2aWNlX21zICogcnRlX2dldF90aW1lcl9oeigp IC8gMUUzOw0KPiArICAgICAgICAgICAgICAgd2hpbGUgKChydGVfZ2V0X3RpbWVyX2N5Y2xlcygp IC0gc3RhcnQpIDwgdGlja3MpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1zZWNfZGVsYXko MTAwKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICAvKiBOZXZlciByZXR1cm4gKi8NCj4g KyAgICAgICByZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHMzMg0KPiArZXRoX2l4 Z2JlX2NoZWNrX21hY19saW5rX2dlbmVyaWMoc3RydWN0IGl4Z2JlX2h3ICpodywgaXhnYmVfbGlu a19zcGVlZA0KPiAqc3BlZWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgKmxpbmtfdXAsIGJvb2wNCj4gK2xpbmtfdXBfd2FpdF90b19jb21wbGV0ZSkgew0KPiArICAg ICAgIGlmIChpeGdiZV9uZWVkX2Nyb3NzdGFsa19maXgoaHcpKSB7DQo+ICsgICAgICAgICAgICAg ICBlbnVtIGl4Z2JlX3NmcF9jYWdlX3N0YXR1cyBzZnBfY2FnZV9zdGF0dXM7DQo+ICsNCj4gKyAg ICAgICAgICAgICAgIHNmcF9jYWdlX3N0YXR1cyA9IGl4Z2JlX2NoZWNrX3NmcF9jYWdlKGh3KTsN Cj4gKyAgICAgICAgICAgICAgIGlmIChzZnBfY2FnZV9zdGF0dXMgIT0gSVhHQkVfU0ZQX0NBR0Vf RlVMTCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAqbGlua191cCA9IGZhbHNlOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAqc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJWEdCRV9TVUNDRVNTOw0KPiArICAg ICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybiBpeGdiZV9j aGVja19tYWNfbGlua19nZW5lcmljKGh3LCBzcGVlZCwgbGlua191cCwNCj4gK2xpbmtfdXBfd2Fp dF90b19jb21wbGV0ZSk7IH0NCj4gKw0KPiAgLyoNCj4gICAqIFRoaXMgZnVuY3Rpb24gaXMgYmFz ZWQgb24gY29kZSBpbiBpeGdiZV9hdHRhY2goKSBpbiBiYXNlL2l4Z2JlLmMuDQo+ICAgKiBJdCBy ZXR1cm5zIDAgb24gc3VjY2Vzcy4NCj4gQEAgLTEwNTQsNiArMTM3OCw3IEBAIGV0aF9peGdiZV9k ZXZfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsIHZvaWQNCj4gKmluaXRfcGFyYW1z IF9fcnRlX3VudXNlZCkNCj4gICAgICAgICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RPX0ZJ TFRFUl9JTkZPKGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlKTsNCj4gICAgICAgICBzdHJ1Y3Qg aXhnYmVfYndfY29uZiAqYndfY29uZiA9DQo+ICAgICAgICAgICAgICAgICBJWEdCRV9ERVZfUFJJ VkFURV9UT19CV19DT05GKGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlKTsNCj4gKyAgICAgICBz dHJ1Y3QgaXhnYmVfbWFjX2luZm8gKm1hYyA9ICZody0+bWFjOw0KPiAgICAgICAgIHVpbnQzMl90 IGN0cmxfZXh0Ow0KPiAgICAgICAgIHVpbnQxNl90IGNzdW07DQo+ICAgICAgICAgaW50IGRpYWcs IGksIHJldDsNCj4gQEAgLTExMjQsNiArMTQ0OSwxNyBAQCBldGhfaXhnYmVfZGV2X2luaXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LA0KPiB2b2lkICppbml0X3BhcmFtcyBfX3J0ZV91bnVz ZWQpDQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gICAgICAgICB9DQo+IA0KPiAr ICAgICAgIC8qIG92ZXJyaWRlIG1hY19saW5rX2NoZWNrIHRvIGNoZWNrIGZvciBzZnAgY2FnZSBm dWxsL2VtcHR5ICovDQo+ICsgICAgICAgc3dpdGNoIChody0+bWFjLnR5cGUpIHsNCj4gKyAgICAg ICBjYXNlIGl4Z2JlX21hY19YNTUwRU1feDoNCj4gKyAgICAgICBjYXNlIGl4Z2JlX21hY19YNTUw RU1fYToNCj4gKyAgICAgICBjYXNlIGl4Z2JlX21hY184MjU5OUVCOg0KPiArICAgICAgICAgICAg ICAgbWFjLT5vcHMuY2hlY2tfbGluayA9IGV0aF9peGdiZV9jaGVja19tYWNfbGlua19nZW5lcmlj Ow0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIH0NCj4gKw0KPiAgICAgICAgIC8qIHBpY2sgdXAg dGhlIFBDSSBidXMgc2V0dGluZ3MgZm9yIHJlcG9ydGluZyBsYXRlciAqLw0KPiAgICAgICAgIGl4 Z2JlX2dldF9idXNfaW5mbyhodyk7DQo+IA0KPiBAQCAtMjU1OCw4ICsyODk0LDExIEBAIGl4Z2Jl X2Zsb3dfY3RybF9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHN0cnVjdCBpeGdi ZV9odyAqaHcpICBzdGF0aWMgaW50ICBpeGdiZV9kZXZfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYpICB7DQo+ICsgICAgICAgc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkID0gZGV2LT5kYXRh LT5kZXZfcHJpdmF0ZTsNCj4gICAgICAgICBzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0NCj4gICAgICAg ICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUp Ow0KPiArICAgICAgIHN0cnVjdCBpeGdiZV9pbnRlcnJ1cHQgKmludHIgPQ0KPiArICAgICAgICAg ICAgICAgSVhHQkVfREVWX1BSSVZBVEVfVE9fSU5UUihkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsN Cj4gICAgICAgICBzdHJ1Y3QgaXhnYmVfdmZfaW5mbyAqdmZpbmZvID0NCj4gICAgICAgICAgICAg ICAgICpJWEdCRV9ERVZfUFJJVkFURV9UT19QX1ZGREFUQShkZXYtPmRhdGEtPmRldl9wcml2YXRl KTsNCj4gICAgICAgICBzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYgPSBSVEVfRVRIX0RF Vl9UT19QQ0koZGV2KTsgQEAgLTI1ODAsOQ0KPiArMjkxOSw2IEBAIGl4Z2JlX2Rldl9zdGFydChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gDQo+ICAgICAgICAgUE1EX0lOSVRfRlVOQ19UUkFD RSgpOw0KPiANCj4gLSAgICAgICAvKiBTdG9wIHRoZSBsaW5rIHNldHVwIGhhbmRsZXIgYmVmb3Jl IHJlc2V0dGluZyB0aGUgSFcuICovDQo+IC0gICAgICAgaXhnYmVfZGV2X3dhaXRfc2V0dXBfbGlu a19jb21wbGV0ZShkZXYsIDApOw0KPiAtDQo+ICAgICAgICAgLyogZGlzYWJsZSB1aW8vdmZpbyBp bnRyL2V2ZW50ZmQgbWFwcGluZyAqLw0KPiAgICAgICAgIHJ0ZV9pbnRyX2Rpc2FibGUoaW50cl9o YW5kbGUpOw0KPiANCj4gQEAgLTI4MTUsNiArMzE1MSwyMCBAQCBpeGdiZV9kZXZfc3RhcnQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAgICAgICAgaXhnYmVfbDJfdHVubmVsX2NvbmYoZGV2 KTsNCj4gICAgICAgICBpeGdiZV9maWx0ZXJfcmVzdG9yZShkZXYpOw0KPiANCj4gKyAgICAgICAv KiBTcGF3biBzZXJ2aWNlIHRocmVhZCAqLw0KPiArICAgICAgIGlmIChpeGdiZV9pc19zZnAoaHcp KSB7DQo+ICsgICAgICAgICAgICAgICBpbnRyLT5mbGFncyB8PSBJWEdCRV9GTEFHX05FRURfU0ZQ X1NFVFVQOw0KPiArICAgICAgICAgICAgICAgZXJyID0gcnRlX2N0cmxfdGhyZWFkX2NyZWF0ZSgm YWQtPnNlcnZpY2VfdGhyZWFkX3RpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIml4Z2JlLXNlcnZpY2UtdGhyZWFkIiwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXhnYmVfZGV2X3NlcnZpY2VfdGhyZWFkX2hhbmRs ZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldik7 DQo+ICsgICAgICAgICAgICAgICBpZiAoZXJyKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IFBNRF9EUlZfTE9HKEVSUiwgInNlcnZpY2VfdGhyZWFkIGVyciIpOw0KPiArICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGVycm9yOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0N Cj4gKw0KPiAgICAgICAgIGlmICh0bV9jb25mLT5yb290ICYmICF0bV9jb25mLT5jb21taXR0ZWQp DQo+ICAgICAgICAgICAgICAgICBQTURfRFJWX0xPRyhXQVJOSU5HLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInBsZWFzZSBjYWxsIGhpZXJhcmNoeV9jb21taXQoKSAiDQo+IEBAIC0y ODYwLDEzICszMjEwLDIxIEBAIGl4Z2JlX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 KQ0KPiAgICAgICAgIGludCB2ZjsNCj4gICAgICAgICBzdHJ1Y3QgaXhnYmVfdG1fY29uZiAqdG1f Y29uZiA9DQo+ICAgICAgICAgICAgICAgICBJWEdCRV9ERVZfUFJJVkFURV9UT19UTV9DT05GKGRl di0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiArICAgICAgIHZvaWQgKnJlczsNCj4gKyAgICAgICBz MzIgZXJyOw0KPiANCj4gICAgICAgICBpZiAoaHctPmFkYXB0ZXJfc3RvcHBlZCkNCj4gICAgICAg ICAgICAgICAgIHJldHVybiAwOw0KPiANCj4gICAgICAgICBQTURfSU5JVF9GVU5DX1RSQUNFKCk7 DQo+IA0KPiAtICAgICAgIGl4Z2JlX2Rldl93YWl0X3NldHVwX2xpbmtfY29tcGxldGUoZGV2LCAw KTsNCj4gKyAgICAgICAvKiBDYW5jZWwgdGhlIHNlcnZpY2UgdGhyZWFkLCBhbmQgd2FpdCBmb3Ig aXQgdG8gam9pbiAqLw0KPiArICAgICAgIGVyciA9IHB0aHJlYWRfY2FuY2VsKGFkYXB0ZXItPnNl cnZpY2VfdGhyZWFkX3RpZCk7DQo+ICsgICAgICAgaWYgKGVycikNCj4gKyAgICAgICAgICAgICAg IFBNRF9EUlZfTE9HKEVSUiwgImZhaWxlZCB0byBjYW5jZWwgc2VydmljZSB0aHJlYWQgJWQiLCBl cnIpOw0KPiArICAgICAgIGVyciA9IHB0aHJlYWRfam9pbihhZGFwdGVyLT5zZXJ2aWNlX3RocmVh ZF90aWQsICZyZXMpOw0KPiArICAgICAgIGlmIChlcnIpDQo+ICsgICAgICAgICAgICAgICBQTURf RFJWX0xPRyhFUlIsICJmYWlsZWQgdG8gam9pbiBzZXJ2aWNlIHRocmVhZCAlZCIsDQo+ICsgZXJy KTsNCj4gDQo+ICAgICAgICAgLyogZGlzYWJsZSBpbnRlcnJ1cHRzICovDQo+ICAgICAgICAgaXhn YmVfZGlzYWJsZV9pbnRyKGh3KTsNCj4gQEAgLTI5NDUsNyArMzMwMyw2IEBAIGl4Z2JlX2Rldl9z ZXRfbGlua191cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gICAgICAgICB9IGVsc2Ugew0K PiAgICAgICAgICAgICAgICAgLyogVHVybiBvbiB0aGUgbGFzZXIgKi8NCj4gICAgICAgICAgICAg ICAgIGl4Z2JlX2VuYWJsZV90eF9sYXNlcihodyk7DQo+IC0gICAgICAgICAgICAgICBpeGdiZV9k ZXZfbGlua191cGRhdGUoZGV2LCAwKTsNCj4gICAgICAgICB9DQo+IA0KPiAgICAgICAgIHJldHVy biAwOw0KPiBAQCAtMjk3Niw3ICszMzMzLDYgQEAgaXhnYmVfZGV2X3NldF9saW5rX2Rvd24oc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAgICAgICAgfSBlbHNlIHsNCj4gICAgICAgICAgICAg ICAgIC8qIFR1cm4gb2ZmIHRoZSBsYXNlciAqLw0KPiAgICAgICAgICAgICAgICAgaXhnYmVfZGlz YWJsZV90eF9sYXNlcihodyk7DQo+IC0gICAgICAgICAgICAgICBpeGdiZV9kZXZfbGlua191cGRh dGUoZGV2LCAwKTsNCj4gICAgICAgICB9DQo+IA0KPiAgICAgICAgIHJldHVybiAwOw0KPiBAQCAt NDEyOCw1NyArNDQ4NCw2IEBAIGl4Z2JldmZfY2hlY2tfbGluayhzdHJ1Y3QgaXhnYmVfaHcgKmh3 LA0KPiBpeGdiZV9saW5rX3NwZWVkICpzcGVlZCwNCj4gICAgICAgICByZXR1cm4gcmV0X3ZhbDsN Cj4gIH0NCj4gDQo+IC0vKg0KPiAtICogSWYgQHRpbWVvdXRfbXMgd2FzIDAsIGl0IG1lYW5zIHRo YXQgaXQgd2lsbCBub3QgcmV0dXJuIHVudGlsIGxpbmsgY29tcGxldGUuDQo+IC0gKiBJdCByZXR1 cm5zIDEgb24gY29tcGxldGUsIHJldHVybiAwIG9uIHRpbWVvdXQuDQo+IC0gKi8NCj4gLXN0YXRp YyBpbnQNCj4gLWl4Z2JlX2Rldl93YWl0X3NldHVwX2xpbmtfY29tcGxldGUoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsIHVpbnQzMl90DQo+IHRpbWVvdXRfbXMpIC17DQo+IC0jZGVmaW5lIFdBUk5J TkdfVElNRU9VVCAgICA5MDAwIC8qIDlzICBpbiB0b3RhbCAqLw0KPiAtICAgICAgIHN0cnVjdCBp eGdiZV9hZGFwdGVyICphZCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+IC0gICAgICAgdWlu dDMyX3QgdGltZW91dCA9IHRpbWVvdXRfbXMgPyB0aW1lb3V0X21zIDogV0FSTklOR19USU1FT1VU Ow0KPiAtDQo+IC0gICAgICAgd2hpbGUgKHJ0ZV9hdG9taWMzMl9yZWFkKCZhZC0+bGlua190aHJl YWRfcnVubmluZykpIHsNCj4gLSAgICAgICAgICAgICAgIG1zZWNfZGVsYXkoMSk7DQo+IC0gICAg ICAgICAgICAgICB0aW1lb3V0LS07DQo+IC0NCj4gLSAgICAgICAgICAgICAgIGlmICh0aW1lb3V0 X21zKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghdGltZW91dCkNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gLSAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoIXRpbWVvdXQpIHsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgLyogSXQgd2ls bCBub3QgcmV0dXJuIHVudGlsIGxpbmsgY29tcGxldGUgKi8NCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgdGltZW91dCA9IFdBUk5JTkdfVElNRU9VVDsNCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgUE1EX0RSVl9MT0coRVJSLCAiSVhHQkUgbGluayB0aHJlYWQgbm90IGNvbXBsZXRlIHRvbyBs b25nDQo+IHRpbWUhIik7DQo+IC0gICAgICAgICAgICAgICB9DQo+IC0gICAgICAgfQ0KPiAtDQo+ IC0gICAgICAgcmV0dXJuIDE7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkICoNCj4gLWl4Z2Jl X2Rldl9zZXR1cF9saW5rX3RocmVhZF9oYW5kbGVyKHZvaWQgKnBhcmFtKSAtew0KPiAtICAgICAg IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gKHN0cnVjdCBydGVfZXRoX2RldiAqKXBhcmFtOw0K PiAtICAgICAgIHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZh dGU7DQo+IC0gICAgICAgc3RydWN0IGl4Z2JlX2h3ICpodyA9IElYR0JFX0RFVl9QUklWQVRFX1RP X0hXKGRldi0+ZGF0YS0NCj4gPmRldl9wcml2YXRlKTsNCj4gLSAgICAgICBzdHJ1Y3QgaXhnYmVf aW50ZXJydXB0ICppbnRyID0NCj4gLSAgICAgICAgICAgICAgIElYR0JFX0RFVl9QUklWQVRFX1RP X0lOVFIoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7DQo+IC0gICAgICAgdTMyIHNwZWVkOw0KPiAt ICAgICAgIGJvb2wgYXV0b25lZyA9IGZhbHNlOw0KPiAtDQo+IC0gICAgICAgcHRocmVhZF9kZXRh Y2gocHRocmVhZF9zZWxmKCkpOw0KPiAtICAgICAgIHNwZWVkID0gaHctPnBoeS5hdXRvbmVnX2Fk dmVydGlzZWQ7DQo+IC0gICAgICAgaWYgKCFzcGVlZCkNCj4gLSAgICAgICAgICAgICAgIGl4Z2Jl X2dldF9saW5rX2NhcGFiaWxpdGllcyhodywgJnNwZWVkLCAmYXV0b25lZyk7DQo+IC0NCj4gLSAg ICAgICBpeGdiZV9zZXR1cF9saW5rKGh3LCBzcGVlZCwgdHJ1ZSk7DQo+IC0NCj4gLSAgICAgICBp bnRyLT5mbGFncyAmPSB+SVhHQkVfRkxBR19ORUVEX0xJTktfQ09ORklHOw0KPiAtICAgICAgIHJ0 ZV9hdG9taWMzMl9jbGVhcigmYWQtPmxpbmtfdGhyZWFkX3J1bm5pbmcpOw0KPiAtICAgICAgIHJl dHVybiBOVUxMOw0KPiAtfQ0KPiAtDQo+ICAvKg0KPiAgICogSW4gZnJlZWJzZCBlbnZpcm9ubWVu dCwgbmljX3VpbyBkcml2ZXJzIGRvIG5vdCBzdXBwb3J0IGludGVycnVwdHMsDQo+ICAgKiBydGVf aW50cl9jYWxsYmFja19yZWdpc3RlcigpIHdpbGwgZmFpbCB0byByZWdpc3RlciBpbnRlcnJ1cHRz Lg0KPiBAQCAtNDIxOCwxMSArNDUyMyw4IEBAIGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShz dHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCB3YWl0X3RvX2NvbXBsZXRlLCBpbnQgdmYpICB7DQo+ICAgICAgICAgc3RydWN0IGl4Z2Jl X2h3ICpodyA9IElYR0JFX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0NCj4gPmRldl9wcml2 YXRlKTsNCj4gLSAgICAgICBzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWQgPSBkZXYtPmRhdGEtPmRl dl9wcml2YXRlOw0KPiAgICAgICAgIHN0cnVjdCBydGVfZXRoX2xpbmsgbGluazsNCj4gICAgICAg ICBpeGdiZV9saW5rX3NwZWVkIGxpbmtfc3BlZWQgPSBJWEdCRV9MSU5LX1NQRUVEX1VOS05PV047 DQo+IC0gICAgICAgc3RydWN0IGl4Z2JlX2ludGVycnVwdCAqaW50ciA9DQo+IC0gICAgICAgICAg ICAgICBJWEdCRV9ERVZfUFJJVkFURV9UT19JTlRSKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0K PiAgICAgICAgIGJvb2wgbGlua191cDsNCj4gICAgICAgICBpbnQgZGlhZzsNCj4gICAgICAgICBp bnQgd2FpdCA9IDE7DQo+IEBAIC00MjM3LDkgKzQ1MzksNiBAQCBpeGdiZV9kZXZfbGlua191cGRh dGVfc2hhcmUoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ICpkZXYsDQo+IA0KPiAgICAgICAgIGh3LT5t YWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTsNCj4gDQo+IC0gICAgICAgaWYgKGludHItPmZsYWdz ICYgSVhHQkVfRkxBR19ORUVEX0xJTktfQ09ORklHKQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJu IHJ0ZV9ldGhfbGlua3N0YXR1c19zZXQoZGV2LCAmbGluayk7DQo+IC0NCj4gICAgICAgICAvKiBj aGVjayBpZiBpdCBuZWVkcyB0byB3YWl0IHRvIGNvbXBsZXRlLCBpZiBsc2MgaW50ZXJydXB0IGlz IGVuYWJsZWQgKi8NCj4gICAgICAgICBpZiAod2FpdF90b19jb21wbGV0ZSA9PSAwIHx8IGRldi0+ ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyAhPSAwKQ0KPiAgICAgICAgICAgICAgICAgd2Fp dCA9IDA7DQo+IEBAIC00MjU0LDcgKzQ1NTMsNyBAQCBpeGdiZV9kZXZfbGlua191cGRhdGVfc2hh cmUoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ICpkZXYsDQo+ICAgICAgICAgZWxzZQ0KPiAgICAgICAg ICAgICAgICAgZGlhZyA9IGl4Z2JlX2NoZWNrX2xpbmsoaHcsICZsaW5rX3NwZWVkLCAmbGlua191 cCwgd2FpdCk7DQo+IA0KPiAtICAgICAgIGlmIChkaWFnICE9IDApIHsNCj4gKyAgICAgICBpZiAo ZGlhZyAhPSAwIHx8ICFsaW5rX3VwKSB7DQo+ICAgICAgICAgICAgICAgICBsaW5rLmxpbmtfc3Bl ZWQgPSBSVEVfRVRIX1NQRUVEX05VTV8xMDBNOw0KPiAgICAgICAgICAgICAgICAgbGluay5saW5r X2R1cGxleCA9IFJURV9FVEhfTElOS19GVUxMX0RVUExFWDsNCj4gICAgICAgICAgICAgICAgIHJl dHVybiBydGVfZXRoX2xpbmtzdGF0dXNfc2V0KGRldiwgJmxpbmspOyBAQCAtNDI2NywzMiArNDU2 Niw2IEBADQo+IGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgbGlua191cCA9IDA7DQo+ICAgICAgICAg fQ0KPiANCj4gLSAgICAgICBpZiAobGlua191cCA9PSAwKSB7DQo+IC0gICAgICAgICAgICAgICBp ZiAoaXhnYmVfZ2V0X21lZGlhX3R5cGUoaHcpID09IGl4Z2JlX21lZGlhX3R5cGVfZmliZXIpIHsN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgaXhnYmVfZGV2X3dhaXRfc2V0dXBfbGlua19jb21w bGV0ZShkZXYsIDApOw0KPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAocnRlX2F0b21pYzMy X3Rlc3RfYW5kX3NldCgmYWQtPmxpbmtfdGhyZWFkX3J1bm5pbmcpKSB7DQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogVG8gYXZvaWQgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0 aHJlYWRzLCBzZXQNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgSVhH QkVfRkxBR19ORUVEX0xJTktfQ09ORklHIGZsYWcgb25seQ0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqIHdoZW4gdGhlcmUgaXMgbm8gbGluayB0aHJlYWQgcnVubmluZy4NCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRyLT5mbGFncyB8PSBJWEdCRV9GTEFHX05FRURfTElOS19DT05GSUc7 DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ0ZV9jdHJsX3RocmVhZF9j cmVhdGUoJmFkLT5saW5rX3RocmVhZF90aWQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiaXhnYmUtbGluay1oYW5kbGVyIiwNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpeGdiZV9kZXZfc2V0dXBfbGlua190aHJlYWRfaGFuZGxlciwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldikgPCAwKSB7DQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTURfRFJWX0xPRyhFUlIsDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGUgbGlu ayB0aHJlYWQgZmFpbGVkISIpOw0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnRlX2F0b21pYzMyX2NsZWFyKCZhZC0+bGlua190aHJlYWRfcnVubmluZyk7DQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgICAgICAg ICB9IGVsc2Ugew0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNRF9EUlZfTE9H KEVSUiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBs aW5rIHRocmVhZCBpcyBydW5uaW5nIG5vdyEiKTsNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg fQ0KPiAtICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIHJ0ZV9ldGhf bGlua3N0YXR1c19zZXQoZGV2LCAmbGluayk7DQo+IC0gICAgICAgfQ0KPiAtDQo+ICAgICAgICAg bGluay5saW5rX3N0YXR1cyA9IFJURV9FVEhfTElOS19VUDsNCj4gICAgICAgICBsaW5rLmxpbmtf ZHVwbGV4ID0gUlRFX0VUSF9MSU5LX0ZVTExfRFVQTEVYOw0KPiANCj4gQEAgLTQ0OTgsOCArNDc3 MSw2IEBAIGl4Z2JlX2Rldl9pbnRlcnJ1cHRfZ2V0X3N0YXR1cyhzdHJ1Y3QgcnRlX2V0aF9kZXYN Cj4gKmRldikNCj4gICAgICAgICBlaWNyID0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0VJQ1Ip Ow0KPiAgICAgICAgIFBNRF9EUlZfTE9HKERFQlVHLCAiZWljciAleCIsIGVpY3IpOw0KPiANCj4g LSAgICAgICBpbnRyLT5mbGFncyA9IDA7DQo+IC0NCj4gICAgICAgICAvKiBzZXQgZmxhZyBmb3Ig YXN5bmMgbGluayB1cGRhdGUgKi8NCj4gICAgICAgICBpZiAoZWljciAmIElYR0JFX0VJQ1JfTFND KQ0KPiAgICAgICAgICAgICAgICAgaW50ci0+ZmxhZ3MgfD0gSVhHQkVfRkxBR19ORUVEX0xJTktf VVBEQVRFOyBAQCAtNDUxNSw2DQo+ICs0Nzg2LDE0IEBAIGl4Z2JlX2Rldl9pbnRlcnJ1cHRfZ2V0 X3N0YXR1cyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gICAgICAgICAgICAgKGVpY3IgJiBJ WEdCRV9FSUNSX0dQSV9TRFAwX1g1NTBFTV94KSkNCj4gICAgICAgICAgICAgICAgIGludHItPmZs YWdzIHw9IElYR0JFX0ZMQUdfUEhZX0lOVEVSUlVQVDsNCj4gDQo+ICsgICAgICAgLyogQ2hlY2sg Zm9yIGxvc3Mgb2YgU0ZQICovDQo+ICsgICAgICAgLyogVE9ETyAtIEZvciBwbGF0Zm9ybXMgdGhh dCBkb24ndCBoYXZlIHRoaXMgZmxhZywgZG8gd2UgbmVlZCB0byBzZXQNCj4gKyAgICAgICAgKiAg TkVFRF9TRlBfU0VUVVAgb24gTFNDIGlmIHdlJ3JlIGEgU0ZQIHBsYXRmb3JtPw0KPiArICAgICAg ICAqLw0KPiArICAgICAgIGlmIChody0+bWFjLnR5cGUgPT0gIGl4Z2JlX21hY19YNTUwRU1fYSAm Jg0KPiArICAgICAgICAgICAoZWljciAmIElYR0JFX0VJQ1JfR1BJX1NEUDBfWDU1MEVNX2EpKQ0K PiArICAgICAgICAgICAgICAgaW50ci0+ZmxhZ3MgfD0gSVhHQkVfRkxBR19ORUVEX1NGUF9TRVRV UDsNCj4gKw0KPiAgICAgICAgIHJldHVybiAwOw0KPiAgfQ0KPiANCj4gQEAgLTQ1NjYsMTEgKzQ4 NDUsMTMgQEAgaXhnYmVfZGV2X2xpbmtfc3RhdHVzX3ByaW50KHN0cnVjdCBydGVfZXRoX2Rldg0K PiAqZGV2KSAgc3RhdGljIGludCAgaXhnYmVfZGV2X2ludGVycnVwdF9hY3Rpb24oc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYpICB7DQo+ICsgICAgICAgc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lf ZGV2ID0gUlRFX0VUSF9ERVZfVE9fUENJKGRldik7DQo+ICsgICAgICAgc3RydWN0IHJ0ZV9pbnRy X2hhbmRsZSAqaW50cl9oYW5kbGUgPSBwY2lfZGV2LT5pbnRyX2hhbmRsZTsNCj4gICAgICAgICBz dHJ1Y3QgaXhnYmVfaW50ZXJydXB0ICppbnRyID0NCj4gICAgICAgICAgICAgICAgIElYR0JFX0RF Vl9QUklWQVRFX1RPX0lOVFIoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7DQo+IC0gICAgICAgaW50 NjRfdCB0aW1lb3V0Ow0KPiAgICAgICAgIHN0cnVjdCBpeGdiZV9odyAqaHcgPQ0KPiAgICAgICAg ICAgICAgICAgSVhHQkVfREVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7 DQo+ICsgICAgICAgaW50NjRfdCB0aW1lb3V0Ow0KPiANCj4gICAgICAgICBQTURfRFJWX0xPRyhE RUJVRywgImludHIgYWN0aW9uIHR5cGUgJWQiLCBpbnRyLT5mbGFncyk7DQo+IA0KPiBAQCAtNDYw NSwxNiArNDg4NiwxNCBAQCBpeGdiZV9kZXZfaW50ZXJydXB0X2FjdGlvbihzdHJ1Y3QgcnRlX2V0 aF9kZXYNCj4gKmRldikNCj4gICAgICAgICAgICAgICAgIGlmIChydGVfZWFsX2FsYXJtX3NldCh0 aW1lb3V0ICogMTAwMCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp eGdiZV9kZXZfaW50ZXJydXB0X2RlbGF5ZWRfaGFuZGxlciwgKHZvaWQgKilkZXYpIDwgMCkNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgUE1EX0RSVl9MT0coRVJSLCAiRXJyb3Igc2V0dGluZyBh bGFybSIpOw0KPiAtICAgICAgICAgICAgICAgZWxzZSB7DQo+IC0gICAgICAgICAgICAgICAgICAg ICAgIC8qIHJlbWVtYmVyIG9yaWdpbmFsIG1hc2sgKi8NCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgaW50ci0+bWFza19vcmlnaW5hbCA9IGludHItPm1hc2s7DQo+ICsgICAgICAgICAgICAgICBl bHNlDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9ubHkgZGlzYWJsZSBsc2MgaW50ZXJy dXB0ICovDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGludHItPm1hc2sgJj0gfklYR0JFX0VJ TVNfTFNDOw0KPiAtICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgIH0NCj4gDQo+ICAgICAgICAg UE1EX0RSVl9MT0coREVCVUcsICJlbmFibGUgaW50ciBpbW1lZGlhdGVseSIpOw0KPiAgICAgICAg IGl4Z2JlX2VuYWJsZV9pbnRyKGRldik7DQo+ICsgICAgICAgcnRlX2ludHJfYWNrKGludHJfaGFu ZGxlKTsNCj4gDQo+ICAgICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IEBAIC00NjM3LDggKzQ5MTYs NiBAQCBzdGF0aWMgdm9pZA0KPiAgaXhnYmVfZGV2X2ludGVycnVwdF9kZWxheWVkX2hhbmRsZXIo dm9pZCAqcGFyYW0pICB7DQo+ICAgICAgICAgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICopcGFyYW07DQo+IC0gICAgICAgc3RydWN0IHJ0ZV9wY2lfZGV2aWNl ICpwY2lfZGV2ID0gUlRFX0VUSF9ERVZfVE9fUENJKGRldik7DQo+IC0gICAgICAgc3RydWN0IHJ0 ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUgPSBwY2lfZGV2LT5pbnRyX2hhbmRsZTsNCj4gICAg ICAgICBzdHJ1Y3QgaXhnYmVfaW50ZXJydXB0ICppbnRyID0NCj4gICAgICAgICAgICAgICAgIElY R0JFX0RFVl9QUklWQVRFX1RPX0lOVFIoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7DQo+ICAgICAg ICAgc3RydWN0IGl4Z2JlX2h3ICpodyA9DQo+IEBAIC00NjY4LDEzICs0OTQ1LDEwIEBAIGl4Z2Jl X2Rldl9pbnRlcnJ1cHRfZGVsYXllZF9oYW5kbGVyKHZvaWQNCj4gKnBhcmFtKQ0KPiAgICAgICAg ICAgICAgICAgaW50ci0+ZmxhZ3MgJj0gfklYR0JFX0ZMQUdfTUFDU0VDOw0KPiAgICAgICAgIH0N Cj4gDQo+IC0gICAgICAgLyogcmVzdG9yZSBvcmlnaW5hbCBtYXNrICovDQo+IC0gICAgICAgaW50 ci0+bWFzayA9IGludHItPm1hc2tfb3JpZ2luYWw7DQo+IC0gICAgICAgaW50ci0+bWFza19vcmln aW5hbCA9IDA7DQo+ICsgICAgICAgaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxz YyAhPSAwKQ0KPiArICAgICAgICAgICAgICAgaW50ci0+bWFzayB8PSBJWEdCRV9FSUNSX0xTQzsN Cj4gDQo+IC0gICAgICAgUE1EX0RSVl9MT0coREVCVUcsICJlbmFibGUgaW50ciBpbiBkZWxheWVk IGhhbmRsZXIgU1slMDh4XSIsIGVpY3IpOw0KPiAgICAgICAgIGl4Z2JlX2VuYWJsZV9pbnRyKGRl dik7DQo+IC0gICAgICAgcnRlX2ludHJfYWNrKGludHJfaGFuZGxlKTsNCj4gIH0NCj4gDQo+ICAv KioNCj4gQEAgLTUzMTYsOSArNTU5MCw2IEBAIGl4Z2JldmZfZGV2X3N0YXJ0KHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2KQ0KPiANCj4gICAgICAgICBQTURfSU5JVF9GVU5DX1RSQUNFKCk7DQo+IA0K PiAtICAgICAgIC8qIFN0b3AgdGhlIGxpbmsgc2V0dXAgaGFuZGxlciBiZWZvcmUgcmVzZXR0aW5n IHRoZSBIVy4gKi8NCj4gLSAgICAgICBpeGdiZV9kZXZfd2FpdF9zZXR1cF9saW5rX2NvbXBsZXRl KGRldiwgMCk7DQo+IC0NCj4gICAgICAgICBlcnIgPSBody0+bWFjLm9wcy5yZXNldF9odyhodyk7 DQo+IA0KPiAgICAgICAgIC8qKg0KPiBAQCAtNTM5OCwxMiArNTY2OSw2IEBAIGl4Z2JldmZfZGV2 X3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgICAgICAgIC8qIFJlLWVuYWJsZSBp bnRlcnJ1cHQgZm9yIFZGICovDQo+ICAgICAgICAgaXhnYmV2Zl9pbnRyX2VuYWJsZShkZXYpOw0K PiANCj4gLSAgICAgICAvKg0KPiAtICAgICAgICAqIFVwZGF0ZSBsaW5rIHN0YXR1cyByaWdodCBi ZWZvcmUgcmV0dXJuLCBiZWNhdXNlIGl0IG1heQ0KPiAtICAgICAgICAqIHN0YXJ0IGxpbmsgY29u ZmlndXJhdGlvbiBwcm9jZXNzIGluIGEgc2VwYXJhdGUgdGhyZWFkLg0KPiAtICAgICAgICAqLw0K PiAtICAgICAgIGl4Z2JldmZfZGV2X2xpbmtfdXBkYXRlKGRldiwgMCk7DQo+IC0NCj4gICAgICAg ICBody0+YWRhcHRlcl9zdG9wcGVkID0gZmFsc2U7DQo+IA0KPiAgICAgICAgIHJldHVybiAwOw0K PiBAQCAtNTQyMiw4ICs1Njg3LDYgQEAgaXhnYmV2Zl9kZXZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldikNCj4gDQo+ICAgICAgICAgUE1EX0lOSVRfRlVOQ19UUkFDRSgpOw0KPiANCj4gLSAg ICAgICBpeGdiZV9kZXZfd2FpdF9zZXR1cF9saW5rX2NvbXBsZXRlKGRldiwgMCk7DQo+IC0NCj4g ICAgICAgICBpeGdiZXZmX2ludHJfZGlzYWJsZShkZXYpOw0KPiANCj4gICAgICAgICBkZXYtPmRh dGEtPmRldl9zdGFydGVkID0gMDsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4 Z2JlX2V0aGRldi5oDQo+IGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmgNCj4gaW5k ZXggNjllMGU4MmE1Yi4uZDI0M2U0MTdlOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvaXhn YmUvaXhnYmVfZXRoZGV2LmgNCj4gKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2 LmgNCj4gQEAgLTI5LDYgKzI5LDcgQEANCj4gICNkZWZpbmUgSVhHQkVfRkxBR19QSFlfSU5URVJS VVBUICAgICh1aW50MzJfdCkoMSA8PCAyKQ0KPiAgI2RlZmluZSBJWEdCRV9GTEFHX01BQ1NFQyAg ICAgICAgICAgKHVpbnQzMl90KSgxIDw8IDMpDQo+ICAjZGVmaW5lIElYR0JFX0ZMQUdfTkVFRF9M SU5LX0NPTkZJRyAodWludDMyX3QpKDEgPDwgNCkNCj4gKyNkZWZpbmUgSVhHQkVfRkxBR19ORUVE X1NGUF9TRVRVUCAgICgodWludDMyX3QpKDEgPDwgNSkpDQo+IA0KPiAgLyoNCj4gICAqIERlZmlu ZXMgdGhhdCB3ZXJlIG5vdCBwYXJ0IG9mIGl4Z2JlX3R5cGUuaCBhcyB0aGV5IGFyZSBub3QgdXNl ZCBieSB0aGUgQEAgLQ0KPiAyMjMsOCArMjI0LDYgQEAgc3RydWN0IGl4Z2JlX3J0ZV9mbG93X3Jz c19jb25mIHsgIHN0cnVjdCBpeGdiZV9pbnRlcnJ1cHQgew0KPiAgICAgICAgIHVpbnQzMl90IGZs YWdzOw0KPiAgICAgICAgIHVpbnQzMl90IG1hc2s7DQo+IC0gICAgICAgLyp0byBzYXZlIG9yaWdp bmFsIG1hc2sgZHVyaW5nIGRlbGF5ZWQgaGFuZGxlciAqLw0KPiAtICAgICAgIHVpbnQzMl90IG1h c2tfb3JpZ2luYWw7DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBpeGdiZV9zdGF0X21hcHBpbmdfcmVn aXN0ZXJzIHsNCj4gQEAgLTUwNyw3ICs1MDYsNyBAQCBzdHJ1Y3QgaXhnYmVfYWRhcHRlciB7DQo+ ICAgICAgICAgdWludDhfdCBwZmxpbmtfZnVsbGNoazsNCj4gICAgICAgICB1aW50OF90IG1hY19j dHJsX2ZyYW1lX2Z3ZDsNCj4gICAgICAgICBydGVfYXRvbWljMzJfdCBsaW5rX3RocmVhZF9ydW5u aW5nOw0KPiAtICAgICAgIHB0aHJlYWRfdCBsaW5rX3RocmVhZF90aWQ7DQo+ICsgICAgICAgcHRo cmVhZF90IHNlcnZpY2VfdGhyZWFkX3RpZDsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGl4Z2JlX3Zm X3JlcHJlc2VudG9yIHsNCj4gQEAgLTY3MCw2ICs2NjksMTUgQEAgaW50IGl4Z2JlX3N5bl9maWx0 ZXJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgcnRlX2V0aF9zeW5fZmlsdGVyICpmaWx0ZXIsDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgYWRkKTsNCj4gDQo+ICtlbnVtIGl4Z2JlX3NmcF9jYWdlX3N0YXR1cyB7DQo+ ICsgICAgICAgSVhHQkVfU0ZQX0NBR0VfRU1QVFkgPSAwLA0KPiArICAgICAgIElYR0JFX1NGUF9D QUdFX0ZVTEwsDQo+ICsgICAgICAgSVhHQkVfU0ZQX0NBR0VfVU5LTk9XTiA9IC0xLA0KPiArICAg ICAgIElYR0JFX1NGUF9DQUdFX05PQ0FHRSA9IC0yLA0KPiArfTsNCj4gK2VudW0gaXhnYmVfc2Zw X2NhZ2Vfc3RhdHVzIGl4Z2JlX2NoZWNrX3NmcF9jYWdlKHN0cnVjdCBpeGdiZV9odyAqaHcpOw0K PiArDQo+ICsNCj4gIC8qKg0KPiAgICogbDIgdHVubmVsIGNvbmZpZ3VyYXRpb24uDQo+ICAgKi8N Cj4gLS0NCj4gMi4yNS4xDQoNCkhtLCB0ZXN0aW5nIG9uIGEgZGlmZmVyZW50IHBsYXRmb3JtIHRo ZXJlIGFwcGVhcnMgdG8gYmUgYW4gaXNzdWUgd2hlbiBwbHVnZ2luZyBpbiBhIG1vZHVsZSB3aXRo IGEgZGlmZmVyZW50IHNwZWVkIGZyb20gYSBwcmlvciBtb2R1bGUgZG9lcyBub3QgY29ycmVjdGx5 IHVwZGF0ZSB0aGUgbGluayBzcGVlZC4gIEN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nLCBjb3VsZCBi ZSBhIHBsYXRmb3JtLXNwZWNpZmljIGlzc3VlLg0K