Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1278990imm; Fri, 3 Aug 2018 23:38:25 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdSCDZjsWBlcuXjKaDP7Xgg5P9cPFUhwLM7ZeVbPpwobrhqdi5OjcpagSNR57vATxYXXv3p X-Received: by 2002:a17:902:aa8f:: with SMTP id d15-v6mr6347295plr.64.1533364704976; Fri, 03 Aug 2018 23:38:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533364704; cv=none; d=google.com; s=arc-20160816; b=Kan1GWqWJc70hfq6+qMOWU/AH+2iu5E4MSNjMN8DIznMrAJrvDf7n7nyB6PGwKAwpe G6FiVr4m/LV2/jMLCaCf7hQCOIH1Kw4Fs7CEcu/+ZO9+K6XtShPY6rFRBgMSQN7EDtOI OM0uySjm+WDAqRGbLsunszLpYoWt+cW4Z7d819Eow2I6hanxphCQP5iZL1Dy5zpJk0GT OJOXBIKLbO0PNnaFjHhGEvvzBgs9plIBdPxkvRuUKjORWTLkWsxlWL2JBVg//J4ql/HG USdGDdw2FTqFDRWpZGmWTmpdPpNpEiskvZhVO1CyBIRoYBXTb9o786x/neYcNELbY2qh 6jNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=9cgo2LOYTGpCsBe0psFvvaAxptWbFm2Bt9AODrsbYdk=; b=F3Gc9a2eZOH4e7mJmGfkd5UK64TEvIQTOB3KFQdc5mrKn3p9OPI+ZgEvJKcoxoUuPW z+z2/Zmr33ogZGXZVj/3/awTfG1nUIVZ/hpEm3k/bpB8ATuAuH6vhxFN2pB92qz02eBU zHsiF2HxiHxwgU36KWREnU2AcnDoIwcOCchj3PaZZHwWEW9pmX8RVOkr/rGvJM5vPUBA YiBeq/fhbgpVI9aIGET1yXfYFvOaHwrGdQxz0fgKHDPPLwrqR2zHDO8/ulom+eaPR4FK zN0vuGckORlJLttob4+lX1aYGK3aPUyaL1i0sWumG6Ba0y+cq+Vlt567eYw6ttran3Vx ViNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cadence.com header.s=selector1 header.b=F38y7Hr6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c7-v6si5305519plz.21.2018.08.03.23.38.10; Fri, 03 Aug 2018 23:38:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@cadence.com header.s=selector1 header.b=F38y7Hr6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726986AbeHDIg4 (ORCPT + 99 others); Sat, 4 Aug 2018 04:36:56 -0400 Received: from mail-eopbgr690068.outbound.protection.outlook.com ([40.107.69.68]:22842 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726396AbeHDIg4 (ORCPT ); Sat, 4 Aug 2018 04:36:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9cgo2LOYTGpCsBe0psFvvaAxptWbFm2Bt9AODrsbYdk=; b=F38y7Hr61vprinmgbKNVfrToyshiyxuJ0VXXbuAXzwX/NdHg5E73eBKErJM11BGm0eT0b9js61Q7dmEDJyP5PplvGh20HvVq5GwhJqS94Hvqaa5Ajw3WUG4NWpM0qNpFp0hWrGjK8cNwQqFvgzOLw2ZC/7RM05uLVCLfwN/dd00= Received: from BYAPR07MB4709.namprd07.prod.outlook.com (52.135.204.159) by BYAPR07MB4839.namprd07.prod.outlook.com (52.135.204.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.15; Sat, 4 Aug 2018 06:37:12 +0000 Received: from BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::6cda:d8eb:38e2:9ecb]) by BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::6cda:d8eb:38e2:9ecb%5]) with mapi id 15.20.1017.018; Sat, 4 Aug 2018 06:37:10 +0000 From: Pawel Laszczak To: Roger Quadros CC: Greg Kroah-Hartman , "linux-usb@vger.kernel.org" , Felipe Balbi , "linux-kernel@vger.kernel.org" , Lukasz Tyrala , Alan Douglas Subject: RE: [PATCH 06/31] usb: usbssp: added template functions used by upper layer. Thread-Topic: [PATCH 06/31] usb: usbssp: added template functions used by upper layer. Thread-Index: AQHUH4o9M8MWayi1P0elUVAKIHY+KaSt7j6AgAEs3vA= Date: Sat, 4 Aug 2018 06:37:09 +0000 Message-ID: References: <1532023084-28083-1-git-send-email-pawell@cadence.com> <1532023084-28083-7-git-send-email-pawell@cadence.com> <0aad2e70-c630-feac-24a9-35d66360e4b2@ti.com> In-Reply-To: <0aad2e70-c630-feac-24a9-35d66360e4b2@ti.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-tag-bcast: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctZDVlZjVkOTYtOTdiMC0xMWU4LTg3MTQtMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XGQ1ZWY1ZDk3LTk3YjAtMTFlOC04NzE0LTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iMTc4ODciIHQ9IjEzMTc3ODM4MjQwNDYwNjQ5OCIgaD0iekNNS3FJODVFVHR0UExhMDUwaXI1Skd0S21ZPSIgaWQ9IiIgYmw9IjAiIGJvPSIxIi8+PC9tZXRhPg== x-dg-paste: x-dg-rorf: authentication-results: spf=none (sender IP is ) smtp.mailfrom=pawell@cadence.com; x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR07MB4839;20:Kgyc9drAcHUqlNvfeaVzyWtF1UGDbPp4qJAmz76ZIyTHyocOidsU24HFKa7r/kQmuwA7ol06Z87+NCUCfknKd/ErmNILcXSF5GsJSxFkN8RUsAL/xtMk58TA7hzqG3EZ1SYULA4Zhl6hJcpdqhf3c9++7opbeDbjl8qawHnn/rMQcDULg0MGBy7qV+kau64uAjinN1TqAII+NrgRrbrWpNgeGiyiEvaiJLms5vgAgv/6ol7QeSD/eW7vqznbKIKm x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI;SCL:-1;SFV:NSPM;SFS:(10009020)(376002)(396003)(346002)(366004)(39860400002)(136003)(36092001)(189003)(199004)(97736004)(4326008)(478600001)(256004)(2906002)(86362001)(575784001)(476003)(14444005)(446003)(11346002)(5660300001)(6916009)(486006)(316002)(107886003)(6246003)(2900100001)(25786009)(3846002)(6116002)(81156014)(81166006)(66066001)(14454004)(54906003)(99286004)(7736002)(8676002)(7696005)(76176011)(186003)(6506007)(26005)(102836004)(74316002)(305945005)(33656002)(6436002)(106356001)(105586002)(8936002)(5250100002)(9686003)(53936002)(68736007)(53946003)(229853002)(55016002);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR07MB4839;H:BYAPR07MB4709.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; x-ms-office365-filtering-correlation-id: 5b8bbdfd-f0ce-4c95-7ebe-08d5f9d4b4de x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020);SRVR:BYAPR07MB4839; x-ms-traffictypediagnostic: BYAPR07MB4839: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(131327999870524)(72806322054110); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231311)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);SRVR:BYAPR07MB4839;BCL:0;PCL:0;RULEID:;SRVR:BYAPR07MB4839; x-forefront-prvs: 0754F7E325 received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: PqEyUVk+yTJNmLyCoKx7qLmGblYR4T7h6fyHJGaiNO+ihYLvXHUFp+p0nwf1nGbehJfSO6kp+ETTb8mqXazX6Iv/50M83bdKOborpGcLPWX91jp5HMsTthsgL3Jc3AEe2Ys0aprwYEd6vun1bYCJZadIT8FHLq6ZoigU9t1ay6YveOMy5aHkks3BAIq0CaJEJiqixWRBDkFoGitjabcaDkGbz9ouA6ZPKOhu/I5cJXid47BiOkJTsxt+kaAlK4SGhL8DnsBbgui1wQ9DgSc8TfT70U6wu20cdYfupxLZs4xzko2nlqsVcxmwgo5+tc9gCrHEWY/PCNutGqbhMSvpnrDGRCG+4vFDvo3jTgGa1jI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b8bbdfd-f0ce-4c95-7ebe-08d5f9d4b4de X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Aug 2018 06:37:10.0542 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4839 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiA+IFBhdGNoIGFkZHMgc29tZSBmdW5jdGlvbmFsaXR5IGZvciBpbml0aWFsaXphdGlvbiBwcm9j ZXNzLg0KPiA+IEl0IGFkZHMgdG8gZHJpdmVyIHVzYnNzcF9yZXNldCBhbmQgdXNic3NwX3N0YXJ0 IGZ1bmN0aW9uLg0KPiA+DQo+ID4gTmV4dCBlbGVtZW50cyBhZGRlZCBhcmUgb2JqZWN0cyB1c2Jz c3BfZ2FkZ2V0X2VwMF9vcHMsDQo+ID4gdXNic3NwX2dhZGdldF9lcF9vcHMgYW5kIHVzYnNzcF9n YWRnZXRfb3BzLiBUaGVzZSBvYmplY3RzDQo+ID4gY29uc3RpdHV0ZSB0aGUgaW50ZXJmYWNlIHVz ZWQgYnkgZ2FkZ2V0IHN1YnN5c3RlbS4NCj4gPiBBdCB0aGlzIG1vbWVudCBmdW5jdGlvbnMgcmVs YXRlZCB0byB0aGVzZSBvYmplY3RzIGFyZSBlbXB0eQ0KPiA+IGFuZCBkbyBub3RoaW5nLg0KPiA+ DQo+ID4gVGhpcyBwYXRjaCBhbHNvIGltcGxlbWVudHMgdXNic3NwX2dhZGdldF9pbml0X2VuZHBv aW50IGFuZA0KPiA+IHVzYnNzcF9nYWRnZXRfZnJlZV9lbmRwb2ludCB1c2VkIGR1cmluZyBpbml0 aWFsaXphdGlvbi4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFBhd2VsIExhc3pjemFrIDxwYXdl bGxAY2FkZW5jZS5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQt ZXh0LWNhcHMuaCB8ICAgMyArDQo+ID4gIGRyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQtaWYuYyAg ICAgICB8IDI2OSArKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgZHJpdmVycy91c2Iv dXNic3NwL2dhZGdldC5jICAgICAgICAgIHwgIDg0ICsrKysrKysrLQ0KPiA+ICAzIGZpbGVzIGNo YW5nZWQsIDM1MCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQtZXh0LWNhcHMuaCBiL2RyaXZlcnMvdXNi L3VzYnNzcC9nYWRnZXQtZXh0LWNhcHMuaA0KPiA+IGluZGV4IDJiZjMyNzA0NjM3Ni4uODZjMGNl MzMxMDM3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQtZXh0LWNh cHMuaA0KPiA+ICsrKyBiL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQtZXh0LWNhcHMuaA0KPiA+ IEBAIC01MSwzICs1MSw2IEBADQo+ID4gICNkZWZpbmUgVVNCU1NQX0NNRF9FV0UJCQlCSVQoMTAp DQo+ID4NCj4gPiAgI2RlZmluZSBVU0JTU1BfSVJRUwkoVVNCU1NQX0NNRF9FSUUgfCBVU0JTU1Bf Q01EX0hTRUlFIHwgVVNCU1NQX0NNRF9FV0UpDQo+ID4gKw0KPiA+ICsvKiB0cnVlOiBDb250cm9s bGVyIE5vdCBSZWFkeSB0byBhY2NlcHQgZG9vcmJlbGwgb3Igb3AgcmVnIHdyaXRlcyBhZnRlciBy ZXNldCAqLw0KPiA+ICsjZGVmaW5lIFVTQlNTUF9TVFNfQ05SCQkJQklUKDExKQ0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LWlmLmMgYi9kcml2ZXJzL3VzYi91c2Jz c3AvZ2FkZ2V0LWlmLmMNCj4gPiBpbmRleCBkNTNlMGZiNjUyOTkuLjcwZGVmOTc4YjA4NSAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LWlmLmMNCj4gPiArKysgYi9k cml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LWlmLmMNCj4gPiBAQCAtMTIsMTMgKzEyLDI3OCBAQA0K PiA+ICAjaW5jbHVkZSA8bGludXgvdXNiL2NvbXBvc2l0ZS5oPg0KPiA+ICAjaW5jbHVkZSAiZ2Fk Z2V0LmgiDQo+ID4NCj4gPiArc3RhdGljIGludCB1c2Jzc3BfZ2FkZ2V0X2VwX2VuYWJsZShzdHJ1 Y3QgdXNiX2VwICplcCwNCj4gPiArCQkJCSAgIGNvbnN0IHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVz Y3JpcHRvciAqZGVzYykNCj4gPiArew0KPiA+ICsJc3RydWN0IHVzYnNzcF9lcCAqZXBfcHJpdiA9 IHRvX3VzYnNzcF9lcChlcCk7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAo IWVwX3ByaXYpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLypUT0RPOiBp bXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24qLw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiAraW50IHVzYnNzcF9nYWRnZXRfZXBfZGlzYWJsZShzdHJ1Y3QgdXNiX2VwICplcCkN Cj4gPiArew0KPiA+ICsJc3RydWN0IHVzYnNzcF9lcCAqZXBfcHJpdiA9IHRvX3VzYnNzcF9lcChl cCk7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoIWVwX3ByaXYpDQo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLypUT0RPOiBpbXBsZW1lbnRzIHRoaXMg ZnVuY3Rpb24qLw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHN0cnVjdCB1c2JfcmVxdWVzdCAqdXNic3NwX2dhZGdldF9lcF9hbGxvY19yZXF1ZXN0KHN0cnVj dCB1c2JfZXAgKmVwLA0KPiA+ICsJCQkJCQkJICBnZnBfdCBnZnBfZmxhZ3MpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCB1c2Jzc3BfZXAgKmVwX3ByaXYgPSB0b191c2Jzc3BfZXAoZXApOw0KPiA+ICsN Cj4gPiArCWlmICghZXBfcHJpdikNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArDQo+ID4gKwkv KlRPRE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbiovDQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgdXNic3NwX2dhZGdldF9lcF9mcmVlX3JlcXVl c3Qoc3RydWN0IHVzYl9lcCAqZXAsDQo+ID4gKwkJCQkJICBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJl cXVlc3QpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB1c2Jzc3BfZXAgKmVwX3ByaXYgPSB0b191c2Jz c3BfZXAoZXApOw0KPiA+ICsNCj4gPiArCWlmICghZXBfcHJpdikNCj4gPiArCQlyZXR1cm47DQo+ ID4gKw0KPiA+ICsJLypUT0RPOiBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24qLw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IHVzYnNzcF9nYWRnZXRfZXBfcXVldWUoc3RydWN0IHVzYl9l cCAqZXAsDQo+ID4gKwkJCQkgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdCwNCj4gPiArCQkJ CSAgZ2ZwX3QgZ2ZwX2ZsYWdzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdXNic3NwX2VwICplcF9w cml2ID0gdG9fdXNic3NwX2VwKGVwKTsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiAr CWlmICghZXBfcHJpdikNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKlRP RE86IGltcGxlbWVudHMgdGhpcyBmdW5jdGlvbiovDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHVzYnNzcF9nYWRnZXRfZXBfZGVxdWV1ZShzdHJ1Y3Qg dXNiX2VwICplcCwNCj4gPiArCQkJCSAgICBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcXVlc3QpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCB1c2Jzc3BfZXAgKmVwX3ByaXYgPSB0b191c2Jzc3BfZXAoZXAp Ow0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsJaWYgKCFlcF9wcml2KQ0KPiA+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCS8qVE9ETzogaW1wbGVtZW50cyB0aGlzIGZ1 bmN0aW9uKi8NCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdXNic3NwX2dhZGdldF9lcF9zZXRfaGFsdChzdHJ1Y3QgdXNiX2VwICplcCwgaW50IHZhbHVl KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdXNic3NwX2VwICplcF9wcml2ID0gdG9fdXNic3NwX2Vw KGVwKTsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCWlmICghZXBfcHJpdikNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKlRPRE86IGltcGxlbWVudHMgdGhp cyBmdW5jdGlvbiovDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IHVzYnNzcF9nYWRnZXRfZXBfc2V0X3dlZGdlKHN0cnVjdCB1c2JfZXAgKmVwKQ0KPiA+ ICt7DQo+ID4gKwlzdHJ1Y3QgdXNic3NwX2VwICplcF9wcml2ID0gdG9fdXNic3NwX2VwKGVwKTsN Cj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCWlmICghZXBfcHJpdikNCj4gPiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKlRPRE86IGltcGxlbWVudHMgdGhpcyBmdW5j dGlvbiovDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHVzYl9lcF9vcHMgdXNic3NwX2dhZGdldF9lcDBfb3BzID0gew0KPiA+ICsJLmVu YWJsZQkJPSB1c2Jzc3BfZ2FkZ2V0X2VwX2VuYWJsZSwNCj4gPiArCS5kaXNhYmxlCT0gdXNic3Nw X2dhZGdldF9lcF9kaXNhYmxlLA0KPiA+ICsJLmFsbG9jX3JlcXVlc3QJPSB1c2Jzc3BfZ2FkZ2V0 X2VwX2FsbG9jX3JlcXVlc3QsDQo+ID4gKwkuZnJlZV9yZXF1ZXN0CT0gdXNic3NwX2dhZGdldF9l cF9mcmVlX3JlcXVlc3QsDQo+ID4gKwkucXVldWUJCT0gdXNic3NwX2dhZGdldF9lcF9xdWV1ZSwN Cj4gPiArCS5kZXF1ZXVlCT0gdXNic3NwX2dhZGdldF9lcF9kZXF1ZXVlLA0KPiA+ICsJLnNldF9o YWx0CT0gdXNic3NwX2dhZGdldF9lcF9zZXRfaGFsdCwNCj4gPiArCS5zZXRfd2VkZ2UJPSB1c2Jz c3BfZ2FkZ2V0X2VwX3NldF93ZWRnZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdXNiX2VwX29wcyB1c2Jzc3BfZ2FkZ2V0X2VwX29wcyA9IHsNCj4gPiArCS5lbmFi bGUJCT0gdXNic3NwX2dhZGdldF9lcF9lbmFibGUsDQo+ID4gKwkuZGlzYWJsZQk9IHVzYnNzcF9n YWRnZXRfZXBfZGlzYWJsZSwNCj4gPiArCS5hbGxvY19yZXF1ZXN0CT0gdXNic3NwX2dhZGdldF9l cF9hbGxvY19yZXF1ZXN0LA0KPiA+ICsJLmZyZWVfcmVxdWVzdAk9IHVzYnNzcF9nYWRnZXRfZXBf ZnJlZV9yZXF1ZXN0LA0KPiA+ICsJLnF1ZXVlCQk9IHVzYnNzcF9nYWRnZXRfZXBfcXVldWUsDQo+ ID4gKwkuZGVxdWV1ZQk9IHVzYnNzcF9nYWRnZXRfZXBfZGVxdWV1ZSwNCj4gPiArCS5zZXRfaGFs dAk9IHVzYnNzcF9nYWRnZXRfZXBfc2V0X2hhbHQsDQo+ID4gKwkuc2V0X3dlZGdlCT0gdXNic3Nw X2dhZGdldF9lcF9zZXRfd2VkZ2UsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0 IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIHVzYnNzcF9nYWRnZXRfZXAwX2Rlc2MgPSB7DQo+ID4g KwkuYkxlbmd0aCA9CQlVU0JfRFRfRU5EUE9JTlRfU0laRSwNCj4gPiArCS5iRGVzY3JpcHRvclR5 cGUgPQlVU0JfRFRfRU5EUE9JTlQsDQo+ID4gKwkuYm1BdHRyaWJ1dGVzID0JCVVTQl9FTkRQT0lO VF9YRkVSX0NPTlRST0wsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHVzYnNzcF9n YWRnZXRfc3RhcnQoc3RydWN0IHVzYl9nYWRnZXQgKmcsDQo+ID4gKwkJCSAgICAgICBzdHJ1Y3Qg dXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcikNCj4gPiArew0KPiA+ICsJc3RydWN0IHVzYnNzcF91 ZGMgKnVzYnNzcF9kYXRhID0gZ2FkZ2V0X3RvX3VzYnNzcChnKTsNCj4gPiArCWludCByZXQgPSAw Ow0KPiA+ICsNCj4gPiArCWlmICh1c2Jzc3BfZGF0YS0+Z2FkZ2V0X2RyaXZlcikgew0KPiA+ICsJ CWRldl9lcnIodXNic3NwX2RhdGEtPmRldiwgIiVzIGlzIGFscmVhZHkgYm91bmQgdG8gJXNcbiIs DQo+ID4gKwkJCQl1c2Jzc3BfZGF0YS0+Z2FkZ2V0Lm5hbWUsDQo+ID4gKwkJCQl1c2Jzc3BfZGF0 YS0+Z2FkZ2V0X2RyaXZlci0+ZHJpdmVyLm5hbWUpOw0KPiA+ICsJCXJldCA9IC1FQlVTWTsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwkvKlRPRE86IGFkZCBpbXBsZW1lbnRhdGlvbiovDQo+ID4gKwly ZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHVzYnNzcF9nYWRnZXRf c3RvcChzdHJ1Y3QgdXNiX2dhZGdldCAqZykNCj4gPiArew0KPiA+ICsJc3RydWN0IHVzYnNzcF91 ZGMgKnVzYnNzcF9kYXRhID0gZ2FkZ2V0X3RvX3VzYnNzcChnKTsNCj4gPiArDQo+ID4gKwlpZiAo IXVzYnNzcF9kYXRhKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJLypUT0RPOiBhZGQg aW1wbGVtZW50YXRpb24qLw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgdXNic3NwX2dhZGdldF9nZXRfZnJhbWUoc3RydWN0IHVzYl9nYWRnZXQgKmcpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0YSA9IGdhZGdldF90b191 c2Jzc3AoZyk7DQo+ID4gKw0KPiA+ICsJaWYgKCF1c2Jzc3BfZGF0YSkNCj4gPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKlRPRE86IGFkZCBpbXBsZW1lbnRhdGlvbiovDQo+ID4g KwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB1c2Jzc3BfZ2FkZ2V0 X3dha2V1cChzdHJ1Y3QgdXNiX2dhZGdldCAqZykNCj4gPiArew0KPiA+ICsJc3RydWN0IHVzYnNz cF91ZGMgKnVzYnNzcF9kYXRhID0gZ2FkZ2V0X3RvX3VzYnNzcChnKTsNCj4gPiArDQo+ID4gKwlp ZiAoIXVzYnNzcF9kYXRhKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCS8q VE9ETzogYWRkIGltcGxlbWVudGF0aW9uKi8NCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IHVzYnNzcF9nYWRnZXRfc2V0X3NlbGZwb3dlcmVkKHN0cnVjdCB1 c2JfZ2FkZ2V0ICpnLA0KPiA+ICsJCQkJCSBpbnQgaXNfc2VsZnBvd2VyZWQpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0YSA9IGdhZGdldF90b191c2Jzc3AoZyk7 DQo+ID4gKw0KPiA+ICsJaWYgKCF1c2Jzc3BfZGF0YSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArDQo+ID4gKwkvKlRPRE86IGFkZCBpbXBsZW1lbnRhdGlvbiovDQo+ID4gKwlyZXR1cm4g MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZ2FkZ2V0X29w cyB1c2Jzc3BfZ2FkZ2V0X29wcyA9IHsNCj4gPiArCS5nZXRfZnJhbWUJCT0gdXNic3NwX2dhZGdl dF9nZXRfZnJhbWUsDQo+ID4gKwkud2FrZXVwCQkJPSB1c2Jzc3BfZ2FkZ2V0X3dha2V1cCwNCj4g PiArCS5zZXRfc2VsZnBvd2VyZWQJPSB1c2Jzc3BfZ2FkZ2V0X3NldF9zZWxmcG93ZXJlZCwNCj4g PiArCS51ZGNfc3RhcnQJCT0gdXNic3NwX2dhZGdldF9zdGFydCwNCj4gPiArCS51ZGNfc3RvcAkJ PSB1c2Jzc3BfZ2FkZ2V0X3N0b3AsDQo+ID4gK307DQo+ID4gKw0KPiA+ICBpbnQgdXNic3NwX2dh ZGdldF9pbml0X2VuZHBvaW50KHN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0YSkNCj4gDQo+ IFNpbmNlIHdlJ3JlIGluaXRpYWxpemluZyBhbGwgZW5kcG9pbnRzIHRoaXMgZnVuY3Rpb24gc2hv dWxkIGJlIG5hbWVkIHVzYnNzcF9nYWRnZXRfaW5pdF9lbmRwb2ludHMoKS4NCj4gDQo+ID4gIHsN Cj4gPiAtCS8qVE9ETzogaXQgaGFzIHRvIGJlIGltcGxlbWVudGVkKi8NCj4gPiArCWludCBpID0g MDsNCj4gPiArCXN0cnVjdCB1c2Jzc3BfZXAgKmVwX3ByaXY7DQo+ID4gKw0KPiA+ICsJdXNic3Nw X2RhdGEtPm51bV9lbmRwb2ludHMgPSBVU0JTU1BfRU5EUE9JTlRTX05VTTsNCj4gPiArCUlOSVRf TElTVF9IRUFEKCZ1c2Jzc3BfZGF0YS0+Z2FkZ2V0LmVwX2xpc3QpOw0KPiA+ICsNCj4gPiArCWZv ciAoaSA9IDE7IGkgPCB1c2Jzc3BfZGF0YS0+bnVtX2VuZHBvaW50czsgaSsrKSB7DQo+ID4gKwkJ Ym9vbCBkaXJlY3Rpb24gPSBpICYgMTsgLypzdGFydCBmcm9tIE9VVCBlbmRwb2ludCovDQo+ID4g KwkJdTggZXBudW0gPSAoaSA+PiAxKTsNCj4gPiArDQo+ID4gKwkJZXBfcHJpdiA9ICZ1c2Jzc3Bf ZGF0YS0+ZGV2cy5lcHNbaS0xXTsNCj4gPiArCQllcF9wcml2LT51c2Jzc3BfZGF0YSA9IHVzYnNz cF9kYXRhOw0KPiA+ICsJCWVwX3ByaXYtPm51bWJlciA9IGVwbnVtOw0KPiA+ICsJCWVwX3ByaXYt PmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsgLyowIGZvciBPVVQsIDEgZm9yIElOKi8NCj4gPiArDQo+ ID4gKwkJc25wcmludGYoZXBfcHJpdi0+bmFtZSwgc2l6ZW9mKGVwX3ByaXYtPm5hbWUpLCAiZXAl ZCVzIiwgZXBudW0sDQo+ID4gKwkJCQkoZXBfcHJpdi0+ZGlyZWN0aW9uKSA/ICJpbiIgOiAib3V0 Iik7DQo+ID4gKw0KPiA+ICsJCWVwX3ByaXYtPmVuZHBvaW50Lm5hbWUgPSBlcF9wcml2LT5uYW1l Ow0KPiA+ICsNCj4gPiArCQlpZiAoZXBfcHJpdi0+bnVtYmVyIDwgMikgew0KPiA+ICsJCQllcF9w cml2LT5lbmRwb2ludC5kZXNjID0gJnVzYnNzcF9nYWRnZXRfZXAwX2Rlc2M7DQo+ID4gKwkJCWVw X3ByaXYtPmVuZHBvaW50LmNvbXBfZGVzYyA9IE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiAr CQlpZiAoZXBudW0gPT0gMCkgew0KPiA+ICsJCQkvKkVQMCBpcyBiaWRpcmVjdGlvbmFsIGVuZHBv aW50Ki8NCj4gPiArCQkJdXNiX2VwX3NldF9tYXhwYWNrZXRfbGltaXQoJmVwX3ByaXYtPmVuZHBv aW50LCA1MTIpOw0KPiA+ICsJCQlkZXZfZGJnKHVzYnNzcF9kYXRhLT5kZXYsDQo+ID4gKwkJCQki SW5pdGlhbGl6aW5nICVzLCBNYXhQYWNrOiAlMDR4IFR5cGU6IEN0cmxcbiIsDQo+ID4gKwkJCQll cF9wcml2LT5uYW1lLCA1MTIpOw0KPiA+ICsJCQllcF9wcml2LT5lbmRwb2ludC5tYXhidXJzdCA9 IDE7DQo+ID4gKwkJCWVwX3ByaXYtPmVuZHBvaW50Lm9wcyA9ICZ1c2Jzc3BfZ2FkZ2V0X2VwMF9v cHM7DQo+ID4gKwkJCWVwX3ByaXYtPmVuZHBvaW50LmNhcHMudHlwZV9jb250cm9sID0gdHJ1ZTsN Cj4gPiArDQo+ID4gKwkJCXVzYnNzcF9kYXRhLT51c2JfcmVxX2VwMF9pbi5lcG51bSA9IGVwX3By aXYtPm51bWJlcjsNCj4gPiArCQkJdXNic3NwX2RhdGEtPnVzYl9yZXFfZXAwX2luLmRlcCA9IGVw X3ByaXY7DQo+ID4gKw0KPiA+ICsJCQlpZiAoIWVwbnVtKQ0KPiA+ICsJCQkJdXNic3NwX2RhdGEt PmdhZGdldC5lcDAgPSAmZXBfcHJpdi0+ZW5kcG9pbnQ7DQo+ID4gKwkJfSBlbHNlIHsNCj4gPiAr CQkJdXNiX2VwX3NldF9tYXhwYWNrZXRfbGltaXQoJmVwX3ByaXYtPmVuZHBvaW50LCAxMDI0KTsN Cj4gPiArCQkJZXBfcHJpdi0+ZW5kcG9pbnQubWF4YnVyc3QgPSAxNTsNCj4gPiArCQkJZXBfcHJp di0+ZW5kcG9pbnQub3BzID0gJnVzYnNzcF9nYWRnZXRfZXBfb3BzOw0KPiA+ICsJCQlsaXN0X2Fk ZF90YWlsKCZlcF9wcml2LT5lbmRwb2ludC5lcF9saXN0LA0KPiA+ICsJCQkJCSZ1c2Jzc3BfZGF0 YS0+Z2FkZ2V0LmVwX2xpc3QpOw0KPiA+ICsJCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLnR5cGVf aXNvID0gdHJ1ZTsNCj4gPiArCQkJZXBfcHJpdi0+ZW5kcG9pbnQuY2Fwcy50eXBlX2J1bGsgPSB0 cnVlOw0KPiA+ICsJCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLnR5cGVfaW50ID0gdHJ1ZTsNCj4g PiArDQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9p biA9IGRpcmVjdGlvbjsNCj4gPiArCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9vdXQgPSAh ZGlyZWN0aW9uOw0KPiANCj4gU2luY2UgeW91IHN0YXJ0IGZyb20gMSwgZXAwIHdpbGwgb25seSBi ZSBpbml0aWFsaXplZCBhcyBkaXJfaW4uDQo+IElzIGl0IGJldHRlciB0byByZXByZXNlbnQgRVAw aW4gYW5kIEVQMG91dCBzZXBhcmF0ZWx5Pw0KPiBJZiBzbyB5b3UgY2FuIHN0YXJ0IGkgZnJvbSAw IGFuZCB1c2UNCj4gCWVwX3ByaXYgPSAmdXNic3NwX2RhdGEtPmRldnMuZXBzW2ldOw0KPiANCj4g VGhpcyBzaG91bGQgZml4IHRoZSBkaXJlY3Rpb24uIGVwc1swXSB3aWxsIGJlIGVwMG91dCBhbmQg ZXBzWzFdIHdpbGwgYmUgZXAwaW4uDQoNCkkgd2FudGVkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBE ZXZpY2UgQ29udGV4dCBEYXRhIFN0cnVjdHVyZSBmcm9tIA0KWEhDSSBzcGVjaWZpY2F0aW9uIChF UCBDb250ZXh0IDAgQmlEaXIsIEVQIENvbnRleHQgMSBPVVQsIEVQIENvbnRleHQgMSBJTiAuLi4p Lg0KDQpJIGxpdHRsZSBjaGFuZ2UgdGhpcyBmdW5jdGlvbiwgYW5kIG5vdyBpdCBsb29rIGxpa2Ug dGhpczoNCmludCB1c2Jzc3BfZ2FkZ2V0X2luaXRfZW5kcG9pbnRzKHN0cnVjdCB1c2Jzc3BfdWRj ICp1c2Jzc3BfZGF0YSkNCnsNCglpbnQgaSA9IDA7DQoJc3RydWN0IHVzYnNzcF9lcCAqZXBfcHJp djsNCg0KCXVzYnNzcF9kYXRhLT5udW1fZW5kcG9pbnRzID0gVVNCU1NQX0VORFBPSU5UU19OVU07 DQoJSU5JVF9MSVNUX0hFQUQoJnVzYnNzcF9kYXRhLT5nYWRnZXQuZXBfbGlzdCk7DQoNCglmb3Ig KGkgPSAwOyBpIDwgdXNic3NwX2RhdGEtPm51bV9lbmRwb2ludHM7IGkrKykgew0KCQlib29sIGRp cmVjdGlvbiA9IGkgJiAxOyAvKnN0YXJ0IGZyb20gT1VUIGVuZHBvaW50Ki8NCgkJdTggZXBudW0g PSAoKGkgKyAxKSA+PiAxKTsNCg0KCQllcF9wcml2ID0gJnVzYnNzcF9kYXRhLT5kZXZzLmVwc1tp XTsNCgkJZXBfcHJpdi0+dXNic3NwX2RhdGEgPSB1c2Jzc3BfZGF0YTsNCgkJZXBfcHJpdi0+bnVt YmVyID0gZXBudW07DQoJCWVwX3ByaXYtPmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsgLyowIGZvciBP VVQsIDEgZm9yIElOKi8NCg0KCQkvKg0KCQkgKkVwMCBpcyBiaWRpcmVjdGlvbmFsIHNvIEVwMElu IGFuZCBFcDBPdXQgaXMgcmVwcmVzZW50ZWQgYnkNCgkJICogdXNic3NwX2RhdGEtPmRldnMuZXBz WzBdDQoJCSAqLw0KCQlpZiAoZXBudW0gPT0gMCkgew0KCQkJc25wcmludGYoZXBfcHJpdi0+bmFt ZSwgc2l6ZW9mKGVwX3ByaXYtPm5hbWUpLCAiZXAlZCVzIiwNCgkJCQllcG51bSwgIkJpRGlyIik7 DQoNCgkJCXVzYl9lcF9zZXRfbWF4cGFja2V0X2xpbWl0KCZlcF9wcml2LT5lbmRwb2ludCwgNTEy KTsNCgkJCWVwX3ByaXYtPmVuZHBvaW50Lm1heGJ1cnN0ID0gMTsNCgkJCWVwX3ByaXYtPmVuZHBv aW50Lm9wcyA9ICZ1c2Jzc3BfZ2FkZ2V0X2VwMF9vcHM7DQoJCQllcF9wcml2LT5lbmRwb2ludC5k ZXNjID0gJnVzYnNzcF9nYWRnZXRfZXAwX2Rlc2M7DQoNCgkJCWVwX3ByaXYtPmVuZHBvaW50LmNv bXBfZGVzYyA9IE5VTEw7DQoJCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLnR5cGVfY29udHJvbCA9 IHRydWU7DQoJCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9pbiA9IHRydWU7DQoJCQllcF9w cml2LT5lbmRwb2ludC5jYXBzLmRpcl9vdXQgPSB0cnVlOw0KDQoJCQl1c2Jzc3BfZGF0YS0+dXNi X3JlcV9lcDBfaW4uZXBudW0gPSBlcF9wcml2LT5udW1iZXI7DQoJCQl1c2Jzc3BfZGF0YS0+dXNi X3JlcV9lcDBfaW4uZGVwID0gZXBfcHJpdjsNCgkJCXVzYnNzcF9kYXRhLT5nYWRnZXQuZXAwID0g JmVwX3ByaXYtPmVuZHBvaW50Ow0KDQoJCX0gZWxzZSB7DQoJCQlzbnByaW50ZihlcF9wcml2LT5u YW1lLCBzaXplb2YoZXBfcHJpdi0+bmFtZSksICJlcCVkJXMiLA0KCQkJCWVwbnVtLCAoZXBfcHJp di0+ZGlyZWN0aW9uKSA/ICJpbiIgIDogIm91dCIpOw0KDQoJCQl1c2JfZXBfc2V0X21heHBhY2tl dF9saW1pdCgmZXBfcHJpdi0+ZW5kcG9pbnQsIDEwMjQpOw0KCQkJZXBfcHJpdi0+ZW5kcG9pbnQu bWF4YnVyc3QgPSAxNTsNCgkJCWVwX3ByaXYtPmVuZHBvaW50Lm9wcyA9ICZ1c2Jzc3BfZ2FkZ2V0 X2VwX29wczsNCgkJCWxpc3RfYWRkX3RhaWwoJmVwX3ByaXYtPmVuZHBvaW50LmVwX2xpc3QsDQoJ CQkJCSZ1c2Jzc3BfZGF0YS0+Z2FkZ2V0LmVwX2xpc3QpOw0KDQoJCQllcF9wcml2LT5lbmRwb2lu dC5jYXBzLnR5cGVfaXNvID0gdHJ1ZTsNCgkJCWVwX3ByaXYtPmVuZHBvaW50LmNhcHMudHlwZV9i dWxrID0gdHJ1ZTsNCgkJCWVwX3ByaXYtPmVuZHBvaW50LmNhcHMudHlwZV9pbnQgPSB0cnVlOw0K DQoJCQllcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9pbiA9IGRpcmVjdGlvbjsNCgkJCWVwX3By aXYtPmVuZHBvaW50LmNhcHMuZGlyX291dCA9ICFkaXJlY3Rpb247DQoJCX0NCg0KCQllcF9wcml2 LT5lbmRwb2ludC5uYW1lID0gZXBfcHJpdi0+bmFtZTsNCg0KCQlkZXZfZGJnKHVzYnNzcF9kYXRh LT5kZXYsICJJbml0ICVzLCBNYXhQYWNrOiAlMDR4IFN1cFR5cGU6ICINCgkJCSJDVFJMOiAlcywg SU5UOiAlcywgQlVMSzogJXMsIElTT0MgJXMsICINCgkJCSJTdXBEaXIgSU46ICVzLCBPVVQ6ICVz XG4iLA0KCQkJZXBfcHJpdi0+bmFtZSwgMTAyNCwNCgkJCShlcF9wcml2LT5lbmRwb2ludC5jYXBz LnR5cGVfY29udHJvbCkgPyAieWVzIiA6ICJubyIsDQoJCQkoZXBfcHJpdi0+ZW5kcG9pbnQuY2Fw cy50eXBlX2ludCkgPyAieWVzIiA6ICJubyIsDQoJCQkoZXBfcHJpdi0+ZW5kcG9pbnQuY2Fwcy50 eXBlX2J1bGspID8gInllcyIgOiAibm8iLA0KCQkJKGVwX3ByaXYtPmVuZHBvaW50LmNhcHMudHlw ZV9pc28pID8gInllcyIgOiAibm8iLA0KCQkJKGVwX3ByaXYtPmVuZHBvaW50LmNhcHMuZGlyX2lu KSA/ICJ5ZXMiIDogIm5vIiwNCgkJCShlcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9vdXQpID8g InllcyIgOiAibm8iKTsNCg0KCQlJTklUX0xJU1RfSEVBRCgmZXBfcHJpdi0+cGVuZGluZ19saXN0 KTsNCgl9DQoNCglyZXR1cm4gMDsNCn0NCg0KPiA+ICsNCj4gPiArCQlkZXZfZGJnKHVzYnNzcF9k YXRhLT5kZXYsICJJbml0ICVzLCBNYXhQYWNrOiAlMDR4IFN1cFR5cGU6Ig0KPiA+ICsJCQkJIiBJ TlQvQlVMSy9JU09DICwgU3VwRGlyICVzXG4iLA0KPiA+ICsJCQkJZXBfcHJpdi0+bmFtZSwgMTAy NCwNCj4gPiArCQkJCShlcF9wcml2LT5lbmRwb2ludC5jYXBzLmRpcl9pbikgPyAiSU4iIDogIk9V VCIpOw0KPiA+ICsNCj4gPiArCQlJTklUX0xJU1RfSEVBRCgmZXBfcHJpdi0+cGVuZGluZ19saXN0 KTsNCj4gPiArCX0NCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiAgdm9pZCB1c2Jz c3BfZ2FkZ2V0X2ZyZWVfZW5kcG9pbnQoc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9kYXRhKQ0K PiA+ICB7DQo+ID4gLQkvKlRPRE86IGl0IGhhcyB0byBiZSBpbXBsZW1lbnRlZCovDQo+ID4gKwlp bnQgaTsNCj4gPiArCXN0cnVjdCB1c2Jzc3BfZXAgKmVwX3ByaXY7DQo+ID4gKw0KPiA+ICsJZm9y IChpID0gMDsgaSA8IHVzYnNzcF9kYXRhLT5udW1fZW5kcG9pbnRzOyBpKyspIHsNCj4gPiArCQll cF9wcml2ID0gJnVzYnNzcF9kYXRhLT5kZXZzLmVwc1tpXTsNCj4gPiArDQo+IA0KPiBpZiB5b3Ug c3RhcnQgaSBmcm9tIDEgdGhlbiB5b3UgY2FuIHNraXAgdGhlIGlmKCkuDQo+IA0KPiA+ICsJCWlm IChlcF9wcml2LT5udW1iZXIgIT0gMCkNCj4gPiArCQkJbGlzdF9kZWwoJmVwX3ByaXYtPmVuZHBv aW50LmVwX2xpc3QpOw0KPiA+ICsJfQ0KPiA+ICB9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL3VzYnNzcC9nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQuYw0KPiA+IGlu ZGV4IDMzOGVjMmVjMThiMS4uMTk1ZjU3NzdjZjhhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv dXNiL3VzYnNzcC9nYWRnZXQuYw0KPiA+ICsrKyBiL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQu Yw0KPiA+IEBAIC0xMDMsNiArMTAzLDgzIEBAIGludCB1c2Jzc3BfaGFsdChzdHJ1Y3QgdXNic3Nw X3VkYyAqdXNic3NwX2RhdGEpDQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAr LyoNCj4gPiArICogU2V0IHRoZSBydW4gYml0IGFuZCB3YWl0IGZvciB0aGUgZGV2aWNlIHRvIGJl IHJ1bm5pbmcuDQo+ID4gKyAqLw0KPiA+ICtpbnQgdXNic3NwX3N0YXJ0KHN0cnVjdCB1c2Jzc3Bf dWRjICp1c2Jzc3BfZGF0YSkNCj4gPiArew0KPiA+ICsJdTMyIHRlbXA7DQo+ID4gKwlpbnQgcmV0 Ow0KPiA+ICsNCj4gPiArCXRlbXAgPSByZWFkbCgmdXNic3NwX2RhdGEtPm9wX3JlZ3MtPmNvbW1h bmQpOw0KPiA+ICsJdGVtcCB8PSAoQ01EX1JVTiB8IENNRF9ERVZFTik7DQo+ID4gKwl1c2Jzc3Bf ZGJnX3RyYWNlKHVzYnNzcF9kYXRhLCB0cmFjZV91c2Jzc3BfZGJnX2luaXQsDQo+ID4gKwkJCSIv LyBUdXJuIG9uIFVTQlNTUCwgY21kID0gMHgleC4iLCB0ZW1wKTsNCj4gPiArCXdyaXRlbCh0ZW1w LCAmdXNic3NwX2RhdGEtPm9wX3JlZ3MtPmNvbW1hbmQpOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4g KwkgKiBXYWl0IGZvciB0aGUgSENIYWx0ZWQgU3RhdXMgYml0IHRvIGJlIDAgdG8gaW5kaWNhdGUg dGhlIGRldmljZSBpcw0KPiA+ICsJICogcnVubmluZy4NCj4gPiArCSAqLw0KPiA+ICsJcmV0ID0g dXNic3NwX2hhbmRzaGFrZSgmdXNic3NwX2RhdGEtPm9wX3JlZ3MtPnN0YXR1cywNCj4gPiArCQkJ U1RTX0hBTFQsIDAsIFVTQlNTUF9NQVhfSEFMVF9VU0VDKTsNCj4gPiArDQo+ID4gKwlpZiAocmV0 ID09IC1FVElNRURPVVQpDQo+ID4gKwkJZGV2X2Vycih1c2Jzc3BfZGF0YS0+ZGV2LCAiRGV2aWNl IHRvb2sgdG9vIGxvbmcgdG8gc3RhcnQsIHdhaXRlZCAldSBtaWNyb3NlY29uZHMuXG4iLA0KPiA+ ICsJCQlVU0JTU1BfTUFYX0hBTFRfVVNFQyk7DQo+ID4gKwlpZiAoIXJldCkNCj4gPiArCQkvKiBj bGVhciBzdGF0ZSBmbGFncy4gSW5jbHVkaW5nIGR5aW5nLCBoYWx0ZWQgb3IgcmVtb3ZpbmcgKi8N Cj4gPiArCQl1c2Jzc3BfZGF0YS0+dXNic3NwX3N0YXRlID0gMDsNCj4gPiArDQo+ID4gKwlyZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBSZXNldCBhIGhhbHRlZCBE Qy4NCj4gPiArICoNCj4gPiArICogVGhpcyByZXNldHMgcGlwZWxpbmVzLCB0aW1lcnMsIGNvdW50 ZXJzLCBzdGF0ZSBtYWNoaW5lcywgZXRjLg0KPiA+ICsgKiBUcmFuc2FjdGlvbnMgd2lsbCBiZSB0 ZXJtaW5hdGVkIGltbWVkaWF0ZWx5LCBhbmQgb3BlcmF0aW9uYWwgcmVnaXN0ZXJzDQo+ID4gKyAq IHdpbGwgYmUgc2V0IHRvIHRoZWlyIGRlZmF1bHRzLg0KPiA+ICsgKi8NCj4gPiAraW50IHVzYnNz cF9yZXNldChzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEpDQo+ID4gK3sNCj4gPiArCXUz MiBjb21tYW5kOw0KPiA+ICsJdTMyIHN0YXRlOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4g KwlzdGF0ZSA9IHJlYWRsKCZ1c2Jzc3BfZGF0YS0+b3BfcmVncy0+c3RhdHVzKTsNCj4gPiArDQo+ ID4gKwlpZiAoc3RhdGUgPT0gfih1MzIpMCkgew0KPiA+ICsJCWRldl93YXJuKHVzYnNzcF9kYXRh LT5kZXYsICJEZXZpY2Ugbm90IGFjY2Vzc2libGUsIHJlc2V0IGZhaWxlZC5cbiIpOw0KPiA+ICsJ CXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmICgoc3RhdGUgJiBTVFNf SEFMVCkgPT0gMCkgew0KPiA+ICsJCWRldl93YXJuKHVzYnNzcF9kYXRhLT5kZXYsICJEQyBub3Qg aGFsdGVkLCBhYm9ydGluZyByZXNldC5cbiIpOw0KPiANCj4gREMgaXMgbm90IGEgZmFtaWxpYXIg YWJicmV2aWF0aW9uLiBNYWJlIGp1c3QgdXNlIENvbnRyb2xsZXI/IG9yIERldmljZSBjb250cm9s bGVyLg0KDQpJbiB4aGNpIGRyaXZlciBpcyBvZnRlbiB1c2VkIEhDIGZvciBob3N0IGNvbnRyb2xs ZXIuIEluIGRldmljZSBkcml2ZXIgSSBjaGFuZ2UgdGhpcyBhYmJyZXZpYXRpb24gDQp0byAgREMu IEkgd2lsbCByZXZpZXcgdGhlIHBhdGNoZXMgYW5kIGNoYW5nZSB0aGlzIHRvIENvbnRyb2xsZXIu ICANCg0KPiANCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl1c2Jzc3Bf ZGJnX3RyYWNlKHVzYnNzcF9kYXRhLCB0cmFjZV91c2Jzc3BfZGJnX2luaXQsICIvLyBSZXNldCB0 aGUgREMiKTsNCj4gPiArCWNvbW1hbmQgPSByZWFkbCgmdXNic3NwX2RhdGEtPm9wX3JlZ3MtPmNv bW1hbmQpOw0KPiA+ICsJY29tbWFuZCB8PSBDTURfUkVTRVQ7DQo+ID4gKwl3cml0ZWwoY29tbWFu ZCwgJnVzYnNzcF9kYXRhLT5vcF9yZWdzLT5jb21tYW5kKTsNCj4gPiArDQo+ID4gKwlyZXQgPSB1 c2Jzc3BfaGFuZHNoYWtlKCZ1c2Jzc3BfZGF0YS0+b3BfcmVncy0+Y29tbWFuZCwNCj4gPiArCQkJ Q01EX1JFU0VULCAwLCAxMCAqIDEwMDAgKiAxMDAwKTsNCj4gPiArDQo+ID4gKwlpZiAocmV0KQ0K PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl1c2Jzc3BfZGJnX3RyYWNlKHVzYnNzcF9kYXRhLCB0 cmFjZV91c2Jzc3BfZGJnX2luaXQsDQo+ID4gKwkJIldhaXQgZm9yIGNvbnRyb2xsZXIgdG8gYmUg cmVhZHkgZm9yIGRvb3JiZWxsIHJpbmdzIik7DQo+ID4gKwkvKg0KPiA+ICsJICogVVNCU1NQIGNh bm5vdCB3cml0ZSB0byBhbnkgZG9vcmJlbGxzIG9yIG9wZXJhdGlvbmFsIHJlZ2lzdGVycyBvdGhl cg0KPiA+ICsJICogdGhhbiBzdGF0dXMgdW50aWwgdGhlICJDb250cm9sbGVyIE5vdCBSZWFkeSIg ZmxhZyBpcyBjbGVhcmVkLg0KPiA+ICsJICovDQo+ID4gKwlyZXQgPSB1c2Jzc3BfaGFuZHNoYWtl KCZ1c2Jzc3BfZGF0YS0+b3BfcmVncy0+c3RhdHVzLA0KPiA+ICsJCQlTVFNfQ05SLCAwLCAxMCAq IDEwMDAgKiAxMDAwKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4NCj4g PiAgLyoNCj4gPiAgICogSW5pdGlhbGl6ZSBtZW1vcnkgZm9yIGdhZGdldCBkcml2ZXIgYW5kIFVT QlNTUCAob25lLXRpbWUgaW5pdCkuDQo+ID4gQEAgLTE3OSw4ICsyNTYsNyBAQCBpbnQgdXNic3Nw X2dlbl9zZXR1cChzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEpDQo+ID4NCj4gPiAgCWRl dl9kYmcodXNic3NwX2RhdGEtPmRldiwgIlJlc2V0dGluZyBEZXZpY2UgQ29udHJvbGxlclxuIik7 DQo+ID4gIAkvKiBSZXNldCB0aGUgaW50ZXJuYWwgREMgbWVtb3J5IHN0YXRlIGFuZCByZWdpc3Rl cnMuICovDQo+ID4gLQkvKlRPRE86IGFkZCBpbXBsZW1lbnRhdGlvbiBvZiB1c2Jzc3BfcmVzZXQg ZnVuY3Rpb24qLw0KPiA+IC0JLy9yZXR2YWwgPSB1c2Jzc3BfcmVzZXQodXNic3NwX2RhdGEpOw0K PiA+ICsJcmV0dmFsID0gdXNic3NwX3Jlc2V0KHVzYnNzcF9kYXRhKTsNCj4gPiAgCWlmIChyZXR2 YWwpDQo+ID4gIAkJcmV0dXJuIHJldHZhbDsNCj4gPiAgCWRldl9kYmcodXNic3NwX2RhdGEtPmRl diwgIlJlc2V0IGNvbXBsZXRlXG4iKTsNCj4gPiBAQCAtMjQ0LDggKzMyMCw3IEBAIGludCB1c2Jz c3BfZ2FkZ2V0X2luaXQoc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9kYXRhKQ0KPiA+ICAJQlVJ TERfQlVHX09OKHNpemVvZihzdHJ1Y3QgdXNic3NwX3J1bl9yZWdzKSAhPSAoOCs4KjEyOCkqMzIv OCk7DQo+ID4NCj4gPiAgCS8qIGZpbGwgZ2FkZ2V0IGZpZWxkcyAqLw0KPiA+IC0JLypUT0RPOiBp bXBsZW1lbnRzIHVzYnNzcF9nYWRnZXRfb3BzIG9iamVjdCovDQo+ID4gLQkvL3VzYnNzcF9kYXRh LT5nYWRnZXQub3BzID0gJnVzYnNzcF9nYWRnZXRfb3BzOw0KPiA+ICsJdXNic3NwX2RhdGEtPmdh ZGdldC5vcHMgPSAmdXNic3NwX2dhZGdldF9vcHM7DQo+ID4gIAl1c2Jzc3BfZGF0YS0+Z2FkZ2V0 Lm5hbWUgPSAidXNic3NwLWdhZGdldCI7DQo+ID4gIAl1c2Jzc3BfZGF0YS0+Z2FkZ2V0Lm1heF9z cGVlZCA9IFVTQl9TUEVFRF9TVVBFUl9QTFVTOw0KPiA+ICAJdXNic3NwX2RhdGEtPmdhZGdldC5z cGVlZCA9IFVTQl9TUEVFRF9VTktOT1dOOw0KPiA+IEBAIC0yODgsNiArMzYzLDcgQEAgaW50IHVz YnNzcF9nYWRnZXRfaW5pdChzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEpDQo+ID4gIAl1 c2Jzc3BfaGFsdCh1c2Jzc3BfZGF0YSk7DQo+ID4gIAkvKlRPRE8gYWRkIGltcGxlbWVudGF0aW9u IG9mIHVzYnNzcF9yZXNldCBmdW5jdGlvbiovDQo+ID4gIAkvL3VzYnNzcF9yZXNldCh1c2Jzc3Bf ZGF0YSk7DQo+ID4gKwl1c2Jzc3BfcmVzZXQodXNic3NwX2RhdGEpOw0KPiA+ICAJLypUT0RPIGFk ZCBpbXBsZW1lbnRhdGlvbiBvZiBmcmVlaW5nIG1lbW9yeSovDQo+ID4gIAkvL3VzYnNzcF9tZW1f Y2xlYW51cCh1c2Jzc3BfZGF0YSk7DQo+ID4gIGVycjM6DQo+ID4NCj4gDQo+IC0tDQo+IGNoZWVy cywNCj4gLXJvZ2VyDQo+IA0KPiBUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2Fs YW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4NCj4gWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1 MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kNCg0KQ2hlZXJzDQpQYXdlbA0K