From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EADAC48BD6 for ; Wed, 26 Jun 2019 12:41:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3CB182133F for ; Wed, 26 Jun 2019 12:41:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="k3+aYoBJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727489AbfFZMlA (ORCPT ); Wed, 26 Jun 2019 08:41:00 -0400 Received: from esa5.microchip.iphmx.com ([216.71.150.166]:3336 "EHLO esa5.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727441AbfFZMk5 (ORCPT ); Wed, 26 Jun 2019 08:40:57 -0400 Received-SPF: Pass (esa5.microchip.iphmx.com: domain of Ajay.Kathat@microchip.com designates 198.175.253.82 as permitted sender) identity=mailfrom; client-ip=198.175.253.82; receiver=esa5.microchip.iphmx.com; envelope-from="Ajay.Kathat@microchip.com"; x-sender="Ajay.Kathat@microchip.com"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 mx a:ushub1.microchip.com a:smtpout.microchip.com a:mx1.microchip.iphmx.com a:mx2.microchip.iphmx.com include:servers.mcsv.net include:mktomail.com include:spf.protection.outlook.com ~all" Received-SPF: None (esa5.microchip.iphmx.com: no sender authenticity information available from domain of postmaster@email.microchip.com) identity=helo; client-ip=198.175.253.82; receiver=esa5.microchip.iphmx.com; envelope-from="Ajay.Kathat@microchip.com"; x-sender="postmaster@email.microchip.com"; x-conformance=spf_only Authentication-Results: esa5.microchip.iphmx.com; spf=Pass smtp.mailfrom=Ajay.Kathat@microchip.com; spf=None smtp.helo=postmaster@email.microchip.com; dkim=pass (signature verified) header.i=@microchiptechnology.onmicrosoft.com; dmarc=pass (p=none dis=none) d=microchip.com X-IronPort-AV: E=Sophos;i="5.63,419,1557212400"; d="scan'208";a="37422402" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 26 Jun 2019 05:40:55 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.87.71) by chn-vm-ex04.mchp-main.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 26 Jun 2019 05:42:05 -0700 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 26 Jun 2019 05:40:53 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector1-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jUBhl7ay516bNw0BeTouL8XmHGckOJ9SX9RJ28UMIUQ=; b=k3+aYoBJXGQurnu6U8BMvBdLVO+RA2BuYjV0YrlyDpVyiGBtOBcc/StV7G2Ke0sNtCH8bzXVd2HPSWgca2vfXfclT9olJKscmZWOzp/qbwpLoFHePPYdZKBzEcowkWo8v51dmL4Zwy41pyOJzu4rMyKKIbm+7B8Kb4oYF79Brrg= Received: from BN6PR11MB3985.namprd11.prod.outlook.com (10.255.129.78) by BN6PR11MB3987.namprd11.prod.outlook.com (10.255.128.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Wed, 26 Jun 2019 12:40:52 +0000 Received: from BN6PR11MB3985.namprd11.prod.outlook.com ([fe80::49ee:ab78:412:48ac]) by BN6PR11MB3985.namprd11.prod.outlook.com ([fe80::49ee:ab78:412:48ac%5]) with mapi id 15.20.2008.017; Wed, 26 Jun 2019 12:40:52 +0000 From: To: CC: , , , , Subject: [PATCH 3/8] staging: wilc1000: added support to dynamically add/remove interfaces Thread-Topic: [PATCH 3/8] staging: wilc1000: added support to dynamically add/remove interfaces Thread-Index: AQHVLBxjIFPq41WZ+UKTpozwEoAfIw== Date: Wed, 26 Jun 2019 12:40:52 +0000 Message-ID: <1561552810-8933-4-git-send-email-ajay.kathat@microchip.com> References: <1561552810-8933-1-git-send-email-ajay.kathat@microchip.com> In-Reply-To: <1561552810-8933-1-git-send-email-ajay.kathat@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:19::28) To BN6PR11MB3985.namprd11.prod.outlook.com (2603:10b6:405:7b::14) x-mailer: git-send-email 2.7.4 x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [183.82.16.72] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 865f8355-86f2-4f5c-fc69-08d6fa3385c6 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:BN6PR11MB3987; x-ms-traffictypediagnostic: BN6PR11MB3987: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2043; x-forefront-prvs: 00808B16F3 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(39860400002)(366004)(376002)(136003)(396003)(189003)(199004)(3846002)(11346002)(305945005)(476003)(2616005)(5660300002)(99286004)(54906003)(25786009)(8676002)(486006)(81156014)(81166006)(30864003)(8936002)(66066001)(7736002)(66476007)(66556008)(64756008)(66446008)(6116002)(66946007)(6486002)(50226002)(446003)(107886003)(68736007)(52116002)(73956011)(14444005)(256004)(4326008)(6436002)(316002)(478600001)(386003)(72206003)(53936002)(53946003)(2906002)(102836004)(6512007)(2501003)(6916009)(76176011)(86362001)(186003)(6506007)(36756003)(71190400001)(78486014)(14454004)(26005)(2351001)(71200400001)(5640700003)(579004)(559001)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR11MB3987;H:BN6PR11MB3985.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: N4Vu0bg09mgAdmYK9/RCKbJoIbEg7GpGRBfmjkAdqzu/EVrpZGevVG1Z1S2DUgbFT7pZW94pAXlq46dECudhD3nJsNPziNocbhe0dfjn5Yn36QvQrzYI/uFd3lLoBslmEIdO+ZaH3VKamSriIP5ZRa3RGCFVGy4tCJMOr/zvr18l2wy637k9fjPdniuhLnZtrp+RUV1LxphGYDxAHuvSsi6Vf7PZ7pf7zRK3fO/AeDJwQF+Yw8oBeb3A9pNMgOW6Oj1+RvhPjNWHdfID0zZ5RQngpJYnvl5i0js7WK5Z2NlYf+lVC3XXonMD7TPvZam8uaYvpq8VBtoaFRz0DQid6wJxR628/2/uPHZ1pe+FbeG19lMqAvfgnv0YK6HjozzTo7GQiOpQngWVu8hImN+X9etR/l9mIvGfvlW2u9svYyQ= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 865f8355-86f2-4f5c-fc69-08d6fa3385c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2019 12:40:52.0816 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ajay.kathat@microchip.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB3987 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogQWpheSBTaW5naCA8YWpheS5rYXRoYXRAbWljcm9jaGlwLmNvbT4NCg0KUmVtb3ZlZCB0 aGUgdXNlIG9mIHR3byBoYXJkY29kZWQgaW50ZXJmYWNlcyBhbmQgYWRkZWQgc3VwcG9ydCB0bw0K YWRkL3JlbW92ZSB0aGUgbmV0d29yayBpbnRlcmZhY2VzIGR5bmFtaWNhbGx5Lg0KTm93IHRoZSBk cml2ZXIgd2lsbCBoYXZlIHNpbmdsZSBkZWZhdWx0IGludGVyZmFjZSB3aXRoIG5hbWUgJ3dsYW4w JyBhbmQNCmxhdGVyIG90aGVyIGludGVyZmFjZSBjYW4gYmUgYWRkZWQgZnJvbSB1c2VyIHNwYWNl IGFwcGxpY2F0aW9uIGUuZw0KdXNpbmcgJ2l3IGFkZCcgY29tbWFuZC4NCkFsc28gdGFrZW4gY2Fy ZSB0byBtYWludGFpbiAnd2lsY192aWYnIGFzIHBhcnQgb2YgJ25ldF9kZXZpY2UnDQpwcml2YXRl IGRhdGEgYW5kICd3aWxjJyBzdHJ1Y3QgYXMgJ3dpcGh5JyBwcml2YXRlIGRhdGEuDQoNClNpZ25l ZC1vZmYtYnk6IEFqYXkgU2luZ2ggPGFqYXkua2F0aGF0QG1pY3JvY2hpcC5jb20+DQotLS0NCiBk cml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY19tb24uYyAgICAgICAgICAgICAgIHwgICA5ICst DQogZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfbmV0ZGV2LmMgICAgICAgICAgICB8IDI2 OSArKysrLS0tLS0tLQ0KIGRyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3NkaW8uYyAgICAg ICAgICAgICAgfCAgIDcgKy0NCiBkcml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY19zcGkuYyAg ICAgICAgICAgICAgIHwgICAzICstDQogZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfd2Zp X2NmZ29wZXJhdGlvbnMuYyB8IDUzNSArKysrKysrKysrKysrKy0tLS0tLS0tDQogZHJpdmVycy9z dGFnaW5nL3dpbGMxMDAwL3dpbGNfd2ZpX2NmZ29wZXJhdGlvbnMuaCB8ICAxMyArLQ0KIGRyaXZl cnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3dmaV9uZXRkZXZpY2UuaCAgICAgfCAgMjAgKy0NCiBk cml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY193bGFuLmMgICAgICAgICAgICAgIHwgIDIwICst DQogZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfd2xhbi5oICAgICAgICAgICAgICB8ICAg NiArLQ0KIDkgZmlsZXMgY2hhbmdlZCwgNDkyIGluc2VydGlvbnMoKyksIDM5MCBkZWxldGlvbnMo LSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX21vbi5jIGIv ZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfbW9uLmMNCmluZGV4IDlmZTE5YTMuLjdkNzkz M2Q0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfbW9uLmMNCisr KyBiL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX21vbi5jDQpAQCAtMjMzLDYgKzIzMyw3 IEBAIHN0cnVjdCBuZXRfZGV2aWNlICp3aWxjX3dmaV9pbml0X21vbl9pbnRlcmZhY2Uoc3RydWN0 IHdpbGMgKndsLA0KIAlzdHJuY3B5KHdsLT5tb25pdG9yX2Rldi0+bmFtZSwgbmFtZSwgSUZOQU1T SVopOw0KIAl3bC0+bW9uaXRvcl9kZXYtPm5hbWVbSUZOQU1TSVogLSAxXSA9IDA7DQogCXdsLT5t b25pdG9yX2Rldi0+bmV0ZGV2X29wcyA9ICZ3aWxjX3dmaV9uZXRkZXZfb3BzOw0KKwl3bC0+bW9u aXRvcl9kZXYtPm5lZWRzX2ZyZWVfbmV0ZGV2ID0gdHJ1ZTsNCiANCiAJaWYgKHJlZ2lzdGVyX25l dGRldmljZSh3bC0+bW9uaXRvcl9kZXYpKSB7DQogCQluZXRkZXZfZXJyKHJlYWxfZGV2LCAicmVn aXN0ZXJfbmV0ZGV2aWNlIGZhaWxlZFxuIik7DQpAQCAtMjQ3LDEyICsyNDgsMTQgQEAgc3RydWN0 IG5ldF9kZXZpY2UgKndpbGNfd2ZpX2luaXRfbW9uX2ludGVyZmFjZShzdHJ1Y3Qgd2lsYyAqd2ws DQogCXJldHVybiB3bC0+bW9uaXRvcl9kZXY7DQogfQ0KIA0KLXZvaWQgd2lsY193ZmlfZGVpbml0 X21vbl9pbnRlcmZhY2Uoc3RydWN0IHdpbGMgKndsKQ0KK3ZvaWQgd2lsY193ZmlfZGVpbml0X21v bl9pbnRlcmZhY2Uoc3RydWN0IHdpbGMgKndsLCBib29sIHJ0bmxfbG9ja2VkKQ0KIHsNCiAJaWYg KCF3bC0+bW9uaXRvcl9kZXYpDQogCQlyZXR1cm47DQogDQotCXVucmVnaXN0ZXJfbmV0ZGV2KHds LT5tb25pdG9yX2Rldik7DQotCWZyZWVfbmV0ZGV2KHdsLT5tb25pdG9yX2Rldik7DQorCWlmIChy dG5sX2xvY2tlZCkNCisJCXVucmVnaXN0ZXJfbmV0ZGV2aWNlKHdsLT5tb25pdG9yX2Rldik7DQor CWVsc2UNCisJCXVucmVnaXN0ZXJfbmV0ZGV2KHdsLT5tb25pdG9yX2Rldik7DQogCXdsLT5tb25p dG9yX2RldiA9IE5VTEw7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAw MC93aWxjX25ldGRldi5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfbmV0ZGV2LmMN CmluZGV4IDBlMGE0ZWUuLjkwMDYxMTEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2ls YzEwMDAvd2lsY19uZXRkZXYuYw0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNf bmV0ZGV2LmMNCkBAIC05NywyMiArOTcsMjkgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpn ZXRfaWZfaGFuZGxlcihzdHJ1Y3Qgd2lsYyAqd2lsYywgdTggKm1hY19oZWFkZXIpDQogew0KIAl1 OCAqYnNzaWQsICpic3NpZDE7DQogCWludCBpID0gMDsNCisJc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYgPSBOVUxMOw0KIA0KIAlic3NpZCA9IG1hY19oZWFkZXIgKyAxMDsNCiAJYnNzaWQxID0gbWFj X2hlYWRlciArIDQ7DQogDQorCW11dGV4X2xvY2soJndpbGMtPnZpZl9tdXRleCk7DQogCWZvciAo aSA9IDA7IGkgPCB3aWxjLT52aWZfbnVtOyBpKyspIHsNCiAJCWlmICh3aWxjLT52aWZbaV0tPm1v ZGUgPT0gV0lMQ19TVEFUSU9OX01PREUpDQogCQkJaWYgKGV0aGVyX2FkZHJfZXF1YWxfdW5hbGln bmVkKGJzc2lkLA0KLQkJCQkJCSAgICAgICB3aWxjLT52aWZbaV0tPmJzc2lkKSkNCi0JCQkJcmV0 dXJuIHdpbGMtPnZpZltpXS0+bmRldjsNCisJCQkJCQkgICAgICAgd2lsYy0+dmlmW2ldLT5ic3Np ZCkpIHsNCisJCQkJbmRldiA9IHdpbGMtPnZpZltpXS0+bmRldjsNCisJCQkJZ290byBvdXQ7DQor CQkJfQ0KIAkJaWYgKHdpbGMtPnZpZltpXS0+bW9kZSA9PSBXSUxDX0FQX01PREUpDQogCQkJaWYg KGV0aGVyX2FkZHJfZXF1YWxfdW5hbGlnbmVkKGJzc2lkMSwNCi0JCQkJCQkgICAgICAgd2lsYy0+ dmlmW2ldLT5ic3NpZCkpDQotCQkJCXJldHVybiB3aWxjLT52aWZbaV0tPm5kZXY7DQorCQkJCQkJ ICAgICAgIHdpbGMtPnZpZltpXS0+YnNzaWQpKSB7DQorCQkJCW5kZXYgPSB3aWxjLT52aWZbaV0t Pm5kZXY7DQorCQkJCWdvdG8gb3V0Ow0KKwkJCX0NCiAJfQ0KLQ0KLQlyZXR1cm4gTlVMTDsNCitv dXQ6DQorCW11dGV4X3VubG9jaygmd2lsYy0+dmlmX211dGV4KTsNCisJcmV0dXJuIG5kZXY7DQog fQ0KIA0KIHZvaWQgd2lsY193bGFuX3NldF9ic3NpZChzdHJ1Y3QgbmV0X2RldmljZSAqd2lsY19u ZXRkZXYsIHU4ICpic3NpZCwgdTggbW9kZSkNCkBAIC0xNDMsOSArMTUwLDcgQEAgc3RhdGljIGlu dCB3aWxjX3R4cV90YXNrKHZvaWQgKnZwKQ0KIHsNCiAJaW50IHJldDsNCiAJdTMyIHR4cV9jb3Vu dDsNCi0Jc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZwOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZp ZiA9IG5ldGRldl9wcml2KGRldik7DQotCXN0cnVjdCB3aWxjICp3bCA9IHZpZi0+d2lsYzsNCisJ c3RydWN0IHdpbGMgKndsID0gdnA7DQogDQogCWNvbXBsZXRlKCZ3bC0+dHhxX3RocmVhZF9zdGFy dGVkKTsNCiAJd2hpbGUgKDEpIHsNCkBAIC0xNTksMTQgKzE2NCwxOCBAQCBzdGF0aWMgaW50IHdp bGNfdHhxX3Rhc2sodm9pZCAqdnApDQogCQkJYnJlYWs7DQogCQl9DQogCQlkbyB7DQotCQkJcmV0 ID0gd2lsY193bGFuX2hhbmRsZV90eHEoZGV2LCAmdHhxX2NvdW50KTsNCisJCQlyZXQgPSB3aWxj X3dsYW5faGFuZGxlX3R4cSh3bCwgJnR4cV9jb3VudCk7DQogCQkJaWYgKHR4cV9jb3VudCA8IEZM T1dfQ09OVFJPTF9MT1dFUl9USFJFU0hPTEQpIHsNCi0JCQkJaWYgKHdsLT52aWZbMF0tPm1hY19v cGVuZWQgJiYNCi0JCQkJICAgIG5ldGlmX3F1ZXVlX3N0b3BwZWQod2wtPnZpZlswXS0+bmRldikp DQotCQkJCQluZXRpZl93YWtlX3F1ZXVlKHdsLT52aWZbMF0tPm5kZXYpOw0KLQkJCQlpZiAod2wt PnZpZlsxXS0+bWFjX29wZW5lZCAmJg0KLQkJCQkgICAgbmV0aWZfcXVldWVfc3RvcHBlZCh3bC0+ dmlmWzFdLT5uZGV2KSkNCi0JCQkJCW5ldGlmX3dha2VfcXVldWUod2wtPnZpZlsxXS0+bmRldik7 DQorCQkJCWludCBpOw0KKwkJCQlzdHJ1Y3Qgd2lsY192aWYgKmlmYzsNCisNCisJCQkJbXV0ZXhf bG9jaygmd2wtPnZpZl9tdXRleCk7DQorCQkJCWZvciAoaSA9IDA7IGkgPCB3bC0+dmlmX251bTsg aSsrKSB7DQorCQkJCQlpZmMgPSB3bC0+dmlmW2ldOw0KKwkJCQkJaWYgKGlmYy0+bWFjX29wZW5l ZCAmJiBpZmMtPm5kZXYpDQorCQkJCQkJbmV0aWZfd2FrZV9xdWV1ZShpZmMtPm5kZXYpOw0KKwkJ CQl9DQorCQkJCW11dGV4X3VubG9jaygmd2wtPnZpZl9tdXRleCk7DQogCQkJfQ0KIAkJfSB3aGls ZSAocmV0ID09IC1FTk9CVUZTICYmICF3bC0+Y2xvc2UpOw0KIAl9DQpAQCAtMjQ1LDE0ICsyNTQs MTMgQEAgc3RhdGljIGludCB3aWxjMTAwMF9maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2KQ0KIA0KIHN0YXRpYyBpbnQgd2lsY19pbml0X2Z3X2NvbmZpZyhzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LCBzdHJ1Y3Qgd2lsY192aWYgKnZpZikNCiB7DQotCXN0cnVjdCB3aWxjX3By aXYgKnByaXY7DQorCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSAmdmlmLT5wcml2Ow0KIAlzdHJ1 Y3QgaG9zdF9pZl9kcnYgKmhpZl9kcnY7DQogCXU4IGI7DQogCXUxNiBodzsNCiAJdTMyIHc7DQog DQogCW5ldGRldl9kYmcoZGV2LCAiU3RhcnQgY29uZmlndXJpbmcgRmlybXdhcmVcbiIpOw0KLQlw cml2ID0gd2lwaHlfcHJpdihkZXYtPmllZWU4MDIxMV9wdHItPndpcGh5KTsNCiAJaGlmX2RydiA9 IChzdHJ1Y3QgaG9zdF9pZl9kcnYgKilwcml2LT5oaWZfZHJ2Ow0KIAluZXRkZXZfZGJnKGRldiwg Ikhvc3QgPSAlcFxuIiwgaGlmX2Rydik7DQogDQpAQCAtNDI0LDYgKzQzMiw3IEBAIHN0YXRpYyB2 b2lkIHdsYW5fZGVpbml0X2xvY2tzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpDQogCW11dGV4X2Rl c3Ryb3koJndpbGMtPnJ4cV9jcyk7DQogCW11dGV4X2Rlc3Ryb3koJndpbGMtPmNmZ19jbWRfbG9j ayk7DQogCW11dGV4X2Rlc3Ryb3koJndpbGMtPnR4cV9hZGRfdG9faGVhZF9jcyk7DQorCW11dGV4 X2Rlc3Ryb3koJndpbGMtPnZpZl9tdXRleCk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIHdsYW5fZGVp bml0aWFsaXplX3RocmVhZHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikNCkBAIC00NzcsMzEgKzQ4 NiwxMiBAQCBzdGF0aWMgdm9pZCB3aWxjX3dsYW5fZGVpbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpDQogCX0NCiB9DQogDQotc3RhdGljIHZvaWQgd2xhbl9pbml0X2xvY2tzKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYpDQotew0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9w cml2KGRldik7DQotCXN0cnVjdCB3aWxjICp3bCA9IHZpZi0+d2lsYzsNCi0NCi0JbXV0ZXhfaW5p dCgmd2wtPmhpZl9jcyk7DQotCW11dGV4X2luaXQoJndsLT5yeHFfY3MpOw0KLQltdXRleF9pbml0 KCZ3bC0+Y2ZnX2NtZF9sb2NrKTsNCi0NCi0Jc3Bpbl9sb2NrX2luaXQoJndsLT50eHFfc3Bpbmxv Y2spOw0KLQltdXRleF9pbml0KCZ3bC0+dHhxX2FkZF90b19oZWFkX2NzKTsNCi0NCi0JaW5pdF9j b21wbGV0aW9uKCZ3bC0+dHhxX2V2ZW50KTsNCi0NCi0JaW5pdF9jb21wbGV0aW9uKCZ3bC0+Y2Zn X2V2ZW50KTsNCi0JaW5pdF9jb21wbGV0aW9uKCZ3bC0+c3luY19ldmVudCk7DQotCWluaXRfY29t cGxldGlvbigmd2wtPnR4cV90aHJlYWRfc3RhcnRlZCk7DQotfQ0KLQ0KIHN0YXRpYyBpbnQgd2xh bl9pbml0aWFsaXplX3RocmVhZHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikNCiB7DQogCXN0cnVj dCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTsNCiAJc3RydWN0IHdpbGMgKndpbGMg PSB2aWYtPndpbGM7DQogDQotCXdpbGMtPnR4cV90aHJlYWQgPSBrdGhyZWFkX3J1bih3aWxjX3R4 cV90YXNrLCAodm9pZCAqKWRldiwNCisJd2lsYy0+dHhxX3RocmVhZCA9IGt0aHJlYWRfcnVuKHdp bGNfdHhxX3Rhc2ssICh2b2lkICopd2lsYywNCiAJCQkJICAgICAgICJLX1RYUV9UQVNLIik7DQog CWlmIChJU19FUlIod2lsYy0+dHhxX3RocmVhZCkpIHsNCiAJCW5ldGRldl9lcnIoZGV2LCAiY291 bGRuJ3QgY3JlYXRlIFRYUSB0aHJlYWRcbiIpOw0KQEAgLTUxMyw2ICs1MDMsMTIgQEAgc3RhdGlj IGludCB3bGFuX2luaXRpYWxpemVfdGhyZWFkcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KIAly ZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIGludCBkZXZfc3RhdGVfZXZfaGFuZGxlcihzdHJ1Y3Qg bm90aWZpZXJfYmxvY2sgKnRoaXMsDQorCQkJCXVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0 cik7DQorc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBnX2Rldl9ub3RpZmllciA9IHsNCisJ Lm5vdGlmaWVyX2NhbGwgPSBkZXZfc3RhdGVfZXZfaGFuZGxlcg0KK307DQorDQogc3RhdGljIGlu dCB3aWxjX3dsYW5faW5pdGlhbGl6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgd2ls Y192aWYgKnZpZikNCiB7DQogCWludCByZXQgPSAwOw0KQEAgLTUyMiwxMyArNTE4LDkgQEAgc3Rh dGljIGludCB3aWxjX3dsYW5faW5pdGlhbGl6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1 Y3Qgd2lsY192aWYgKnZpZikNCiAJCXdsLT5tYWNfc3RhdHVzID0gV0lMQ19NQUNfU1RBVFVTX0lO SVQ7DQogCQl3bC0+Y2xvc2UgPSAwOw0KIA0KLQkJd2xhbl9pbml0X2xvY2tzKGRldik7DQotDQog CQlyZXQgPSB3aWxjX3dsYW5faW5pdChkZXYpOw0KLQkJaWYgKHJldCA8IDApIHsNCi0JCQlyZXQg PSAtRUlPOw0KLQkJCWdvdG8gZmFpbF9sb2NrczsNCi0JCX0NCisJCWlmIChyZXQgPCAwKQ0KKwkJ CXJldHVybiAtRUlPOw0KIA0KIAkJcmV0ID0gd2xhbl9pbml0aWFsaXplX3RocmVhZHMoZGV2KTsN CiAJCWlmIChyZXQgPCAwKSB7DQpAQCAtNTgyLDcgKzU3NCw3IEBAIHN0YXRpYyBpbnQgd2lsY193 bGFuX2luaXRpYWxpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHdpbGNfdmlmICp2 aWYpDQogCQkJcmV0ID0gLUVJTzsNCiAJCQlnb3RvIGZhaWxfZndfc3RhcnQ7DQogCQl9DQotDQor CQlyZWdpc3Rlcl9pbmV0YWRkcl9ub3RpZmllcigmZ19kZXZfbm90aWZpZXIpOw0KIAkJd2wtPmlu aXRpYWxpemVkID0gdHJ1ZTsNCiAJCXJldHVybiAwOw0KIA0KQEAgLTYwMCw4ICs1OTIsNiBAQCBz dGF0aWMgaW50IHdpbGNfd2xhbl9pbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0 cnVjdCB3aWxjX3ZpZiAqdmlmKQ0KIAkJd2xhbl9kZWluaXRpYWxpemVfdGhyZWFkcyhkZXYpOw0K IGZhaWxfd2lsY193bGFuOg0KIAkJd2lsY193bGFuX2NsZWFudXAoZGV2KTsNCi1mYWlsX2xvY2tz Og0KLQkJd2xhbl9kZWluaXRfbG9ja3MoZGV2KTsNCiAJCW5ldGRldl9lcnIoZGV2LCAiV0xBTiBp bml0aWFsaXphdGlvbiBGQUlMRURcbiIpOw0KIAl9IGVsc2Ugew0KIAkJbmV0ZGV2X2RiZyhkZXYs ICJ3aWxjMTAwMCBhbHJlYWR5IGluaXRpYWxpemVkXG4iKTsNCkBAIC03NTgsMTYgKzc0OCwxOSBA QCBuZXRkZXZfdHhfdCB3aWxjX21hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2KQ0KIA0KIAl2aWYtPm5ldHN0YXRzLnR4X3BhY2tldHMrKzsNCiAJdmlm LT5uZXRzdGF0cy50eF9ieXRlcyArPSB0eF9kYXRhLT5zaXplOw0KLQl0eF9kYXRhLT5ic3NpZCA9 IHdpbGMtPnZpZlt2aWYtPmlkeF0tPmJzc2lkOw0KIAlxdWV1ZV9jb3VudCA9IHdpbGNfd2xhbl90 eHFfYWRkX25ldF9wa3QobmRldiwgKHZvaWQgKil0eF9kYXRhLA0KIAkJCQkJCXR4X2RhdGEtPmJ1 ZmYsIHR4X2RhdGEtPnNpemUsDQogCQkJCQkJd2lsY190eF9jb21wbGV0ZSk7DQogDQogCWlmIChx dWV1ZV9jb3VudCA+IEZMT1dfQ09OVFJPTF9VUFBFUl9USFJFU0hPTEQpIHsNCi0JCWlmICh3aWxj LT52aWZbMF0tPm1hY19vcGVuZWQpDQotCQkJbmV0aWZfc3RvcF9xdWV1ZSh3aWxjLT52aWZbMF0t Pm5kZXYpOw0KLQkJaWYgKHdpbGMtPnZpZlsxXS0+bWFjX29wZW5lZCkNCi0JCQluZXRpZl9zdG9w X3F1ZXVlKHdpbGMtPnZpZlsxXS0+bmRldik7DQorCQlpbnQgaTsNCisNCisJCW11dGV4X2xvY2so JndpbGMtPnZpZl9tdXRleCk7DQorCQlmb3IgKGkgPSAwOyBpIDwgd2lsYy0+dmlmX251bTsgaSsr KSB7DQorCQkJaWYgKHdpbGMtPnZpZltpXS0+bWFjX29wZW5lZCkNCisJCQkJbmV0aWZfc3RvcF9x dWV1ZSh3aWxjLT52aWZbaV0tPm5kZXYpOw0KKwkJfQ0KKwkJbXV0ZXhfdW5sb2NrKCZ3aWxjLT52 aWZfbXV0ZXgpOw0KIAl9DQogDQogCXJldHVybiAwOw0KQEAgLTc5NCw2ICs3ODcsNyBAQCBzdGF0 aWMgaW50IHdpbGNfbWFjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KIAlpZiAod2wt Pm9wZW5faWZjcyA9PSAwKSB7DQogCQluZXRkZXZfZGJnKG5kZXYsICJEZWluaXRpYWxpemluZyB3 aWxjMTAwMFxuIik7DQogCQl3bC0+Y2xvc2UgPSAxOw0KKwkJdW5yZWdpc3Rlcl9pbmV0YWRkcl9u b3RpZmllcigmZ19kZXZfbm90aWZpZXIpOw0KIAkJd2lsY193bGFuX2RlaW5pdGlhbGl6ZShuZGV2 KTsNCiAJfQ0KIA0KQEAgLTg0OCwxOCArODQyLDIzIEBAIHZvaWQgd2lsY193ZmlfbWdtdF9yeChz dHJ1Y3Qgd2lsYyAqd2lsYywgdTggKmJ1ZmYsIHUzMiBzaXplKQ0KIAlpbnQgaSA9IDA7DQogCXN0 cnVjdCB3aWxjX3ZpZiAqdmlmOw0KIA0KKwltdXRleF9sb2NrKCZ3aWxjLT52aWZfbXV0ZXgpOw0K IAlmb3IgKGkgPSAwOyBpIDwgd2lsYy0+dmlmX251bTsgaSsrKSB7DQorCQl1MTYgdHlwZSA9IGxl MTZfdG9fY3B1cCgoX19sZTE2ICopYnVmZik7DQorDQogCQl2aWYgPSBuZXRkZXZfcHJpdih3aWxj LT52aWZbaV0tPm5kZXYpOw0KKwkJaWYgKCh0eXBlID09IHZpZi0+ZnJhbWVfcmVnWzBdLnR5cGUg JiYgdmlmLT5mcmFtZV9yZWdbMF0ucmVnKSB8fA0KKwkJICAgICh0eXBlID09IHZpZi0+ZnJhbWVf cmVnWzFdLnR5cGUgJiYgdmlmLT5mcmFtZV9yZWdbMV0ucmVnKSkgew0KKwkJCXdpbGNfd2ZpX3Ay cF9yeCh2aWYsIGJ1ZmYsIHNpemUpOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKw0KIAkJaWYgKHZpZi0+ bW9uaXRvcl9mbGFnKSB7DQogCQkJd2lsY193ZmlfbW9uaXRvcl9yeCh3aWxjLT5tb25pdG9yX2Rl diwgYnVmZiwgc2l6ZSk7DQotCQkJcmV0dXJuOw0KKwkJCWJyZWFrOw0KIAkJfQ0KIAl9DQotDQot CXZpZiA9IG5ldGRldl9wcml2KHdpbGMtPnZpZlsxXS0+bmRldik7DQotCWlmICgoYnVmZlswXSA9 PSB2aWYtPmZyYW1lX3JlZ1swXS50eXBlICYmIHZpZi0+ZnJhbWVfcmVnWzBdLnJlZykgfHwNCi0J ICAgIChidWZmWzBdID09IHZpZi0+ZnJhbWVfcmVnWzFdLnR5cGUgJiYgdmlmLT5mcmFtZV9yZWdb MV0ucmVnKSkNCi0JCXdpbGNfd2ZpX3AycF9yeCh3aWxjLT52aWZbMV0tPm5kZXYsIGJ1ZmYsIHNp emUpOw0KKwltdXRleF91bmxvY2soJndpbGMtPnZpZl9tdXRleCk7DQogfQ0KIA0KIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgd2lsY19uZXRkZXZfb3BzID0gew0KQEAgLTg5MCwx NCArODg5LDEwIEBAIHN0YXRpYyBpbnQgZGV2X3N0YXRlX2V2X2hhbmRsZXIoc3RydWN0IG5vdGlm aWVyX2Jsb2NrICp0aGlzLA0KIAlpZiAoIWRldi0+aWVlZTgwMjExX3B0ciB8fCAhZGV2LT5pZWVl ODAyMTFfcHRyLT53aXBoeSkNCiAJCXJldHVybiBOT1RJRllfRE9ORTsNCiANCi0JcHJpdiA9IHdp cGh5X3ByaXYoZGV2LT5pZWVlODAyMTFfcHRyLT53aXBoeSk7DQotCWlmICghcHJpdikNCi0JCXJl dHVybiBOT1RJRllfRE9ORTsNCisJdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTsNCisJcHJpdiA9ICZ2 aWYtPnByaXY7DQogDQogCWhpZl9kcnYgPSAoc3RydWN0IGhvc3RfaWZfZHJ2ICopcHJpdi0+aGlm X2RydjsNCi0JdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTsNCi0JaWYgKCF2aWYgfHwgIWhpZl9kcnYp DQotCQlyZXR1cm4gTk9USUZZX0RPTkU7DQogDQogCXN3aXRjaCAoZXZlbnQpIHsNCiAJY2FzZSBO RVRERVZfVVA6DQpAQCAtOTMyLDEwICs5MjcsNiBAQCBzdGF0aWMgaW50IGRldl9zdGF0ZV9ldl9o YW5kbGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywNCiAJcmV0dXJuIE5PVElGWV9ET05F Ow0KIH0NCiANCi1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGdfZGV2X25vdGlmaWVyID0g ew0KLQkubm90aWZpZXJfY2FsbCA9IGRldl9zdGF0ZV9ldl9oYW5kbGVyDQotfTsNCi0NCiB2b2lk IHdpbGNfbmV0ZGV2X2NsZWFudXAoc3RydWN0IHdpbGMgKndpbGMpDQogew0KIAlpbnQgaTsNCkBA IC05NDMsMTM2ICs5MzQsNzIgQEAgdm9pZCB3aWxjX25ldGRldl9jbGVhbnVwKHN0cnVjdCB3aWxj ICp3aWxjKQ0KIAlpZiAoIXdpbGMpDQogCQlyZXR1cm47DQogDQotCWlmICh3aWxjLT52aWZbMF0t Pm5kZXYgfHwgd2lsYy0+dmlmWzFdLT5uZGV2KQ0KLQkJdW5yZWdpc3Rlcl9pbmV0YWRkcl9ub3Rp ZmllcigmZ19kZXZfbm90aWZpZXIpOw0KLQ0KIAlpZiAod2lsYy0+ZmlybXdhcmUpIHsNCiAJCXJl bGVhc2VfZmlybXdhcmUod2lsYy0+ZmlybXdhcmUpOw0KIAkJd2lsYy0+ZmlybXdhcmUgPSBOVUxM Ow0KIAl9DQogDQotCWZvciAoaSA9IDA7IGkgPCBXSUxDX05VTV9DT05DVVJSRU5UX0lGQzsgaSsr KSB7DQotCQlpZiAod2lsYy0+dmlmW2ldICYmIHdpbGMtPnZpZltpXS0+bmRldikgew0KKwlmb3Ig KGkgPSAwOyBpIDwgd2lsYy0+dmlmX251bTsgaSsrKSB7DQorCQlpZiAod2lsYy0+dmlmW2ldICYm IHdpbGMtPnZpZltpXS0+bmRldikNCiAJCQl1bnJlZ2lzdGVyX25ldGRldih3aWxjLT52aWZbaV0t Pm5kZXYpOw0KLQkJCXdpbGNfZnJlZV93aXBoeSh3aWxjLT52aWZbaV0tPm5kZXYpOw0KLQkJCWZy ZWVfbmV0ZGV2KHdpbGMtPnZpZltpXS0+bmRldik7DQotCQl9DQogCX0NCiANCi0Jd2lsY193Zmlf ZGVpbml0X21vbl9pbnRlcmZhY2Uod2lsYyk7DQorCXdpbGNfd2ZpX2RlaW5pdF9tb25faW50ZXJm YWNlKHdpbGMsIGZhbHNlKTsNCiAJZmx1c2hfd29ya3F1ZXVlKHdpbGMtPmhpZl93b3JrcXVldWUp Ow0KIAlkZXN0cm95X3dvcmtxdWV1ZSh3aWxjLT5oaWZfd29ya3F1ZXVlKTsNCiAJd2lsY193bGFu X2NmZ19kZWluaXQod2lsYyk7DQogCWtmcmVlKHdpbGMtPmJ1c19kYXRhKTsNCi0Ja2ZyZWUod2ls Yyk7DQorCXdpcGh5X3VucmVnaXN0ZXIod2lsYy0+d2lwaHkpOw0KKwl3aXBoeV9mcmVlKHdpbGMt PndpcGh5KTsNCiB9DQogRVhQT1JUX1NZTUJPTF9HUEwod2lsY19uZXRkZXZfY2xlYW51cCk7DQog DQotaW50IHdpbGNfbmV0ZGV2X2luaXQoc3RydWN0IHdpbGMgKip3aWxjLCBzdHJ1Y3QgZGV2aWNl ICpkZXYsIGludCBpb190eXBlLA0KLQkJICAgICBjb25zdCBzdHJ1Y3Qgd2lsY19oaWZfZnVuYyAq b3BzKQ0KK3N0cnVjdCB3aWxjX3ZpZiAqd2lsY19uZXRkZXZfaWZjX2luaXQoc3RydWN0IHdpbGMg KndsLCBjb25zdCBjaGFyICpuYW1lLA0KKwkJCQkgICAgICBpbnQgdmlmX3R5cGUsIGVudW0gbmw4 MDIxMV9pZnR5cGUgdHlwZSwNCisJCQkJICAgICAgYm9vbCBydG5sX2xvY2tlZCkNCiB7DQotCWlu dCBpLCByZXQ7DQotCXN0cnVjdCB3aWxjX3ZpZiAqdmlmOw0KIAlzdHJ1Y3QgbmV0X2RldmljZSAq bmRldjsNCi0Jc3RydWN0IHdpbGMgKndsOw0KLQ0KLQl3bCA9IGt6YWxsb2Moc2l6ZW9mKCp3bCks IEdGUF9LRVJORUwpOw0KLQlpZiAoIXdsKQ0KLQkJcmV0dXJuIC1FTk9NRU07DQotDQotCXJldCA9 IHdpbGNfd2xhbl9jZmdfaW5pdCh3bCk7DQotCWlmIChyZXQpDQotCQlnb3RvIGZyZWVfd2w7DQot DQotCSp3aWxjID0gd2w7DQotCXdsLT5pb190eXBlID0gaW9fdHlwZTsNCi0Jd2wtPmhpZl9mdW5j ID0gb3BzOw0KLQl3bC0+ZW5hYmxlX3BzID0gdHJ1ZTsNCi0Jd2wtPmNoaXBfcHNfc3RhdGUgPSBX SUxDX0NISVBfV0FLRURVUDsNCi0JSU5JVF9MSVNUX0hFQUQoJndsLT50eHFfaGVhZC5saXN0KTsN Ci0JSU5JVF9MSVNUX0hFQUQoJndsLT5yeHFfaGVhZC5saXN0KTsNCi0NCi0Jd2wtPmhpZl93b3Jr cXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgiV0lMQ193cSIpOw0KLQlpZiAo IXdsLT5oaWZfd29ya3F1ZXVlKSB7DQotCQlyZXQgPSAtRU5PTUVNOw0KLQkJZ290byBmcmVlX2Nm ZzsNCi0JfQ0KLQ0KLQlyZWdpc3Rlcl9pbmV0YWRkcl9ub3RpZmllcigmZ19kZXZfbm90aWZpZXIp Ow0KLQ0KLQlmb3IgKGkgPSAwOyBpIDwgV0lMQ19OVU1fQ09OQ1VSUkVOVF9JRkM7IGkrKykgew0K LQkJc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldjsNCisJc3RydWN0IHdpbGNfdmlmICp2aWY7DQor CWludCByZXQ7DQogDQotCQluZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCB3aWxj X3ZpZikpOw0KLQkJaWYgKCFuZGV2KSB7DQotCQkJcmV0ID0gLUVOT01FTTsNCi0JCQlnb3RvIGZy ZWVfbmRldjsNCi0JCX0NCisJbmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZigqdmlmKSk7DQor CWlmICghbmRldikNCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KIA0KLQkJdmlmID0gbmV0 ZGV2X3ByaXYobmRldik7DQorCXZpZiA9IG5ldGRldl9wcml2KG5kZXYpOw0KKwluZGV2LT5pZWVl ODAyMTFfcHRyID0gJnZpZi0+cHJpdi53ZGV2Ow0KKwlzdHJjcHkobmRldi0+bmFtZSwgbmFtZSk7 DQorCXZpZi0+d2lsYyA9IHdsOw0KKwl2aWYtPm5kZXYgPSBuZGV2Ow0KKwluZGV2LT5tbF9wcml2 ID0gdmlmOw0KIA0KLQkJaWYgKGkgPT0gMCkgew0KLQkJCXN0cmNweShuZGV2LT5uYW1lLCAid2xh biVkIik7DQotCQkJdmlmLT5pZmNfaWQgPSAxOw0KLQkJfSBlbHNlIHsNCi0JCQlzdHJjcHkobmRl di0+bmFtZSwgInAycCVkIik7DQotCQkJdmlmLT5pZmNfaWQgPSAwOw0KLQkJfQ0KLQkJdmlmLT53 aWxjID0gKndpbGM7DQotCQl2aWYtPm5kZXYgPSBuZGV2Ow0KLQkJd2wtPnZpZltpXSA9IHZpZjsN Ci0JCXdsLT52aWZfbnVtID0gaSArIDE7DQotCQl2aWYtPmlkeCA9IGk7DQotDQotCQluZGV2LT5u ZXRkZXZfb3BzID0gJndpbGNfbmV0ZGV2X29wczsNCi0NCi0JCXdkZXYgPSB3aWxjX2NyZWF0ZV93 aXBoeShuZGV2LCBkZXYpOw0KLQkJaWYgKCF3ZGV2KSB7DQotCQkJbmV0ZGV2X2VycihuZGV2LCAi Q2FuJ3QgcmVnaXN0ZXIgV0lMQyBXaXBoeVxuIik7DQotCQkJcmV0ID0gLUVOT01FTTsNCi0JCQln b3RvIGZyZWVfbmRldjsNCi0JCX0NCisJbmRldi0+bmV0ZGV2X29wcyA9ICZ3aWxjX25ldGRldl9v cHM7DQogDQotCQlTRVRfTkVUREVWX0RFVihuZGV2LCBkZXYpOw0KKwlTRVRfTkVUREVWX0RFVihu ZGV2LCB3aXBoeV9kZXYod2wtPndpcGh5KSk7DQogDQotCQl2aWYtPm5kZXYtPmllZWU4MDIxMV9w dHIgPSB3ZGV2Ow0KLQkJdmlmLT5uZGV2LT5tbF9wcml2ID0gdmlmOw0KLQkJd2Rldi0+bmV0ZGV2 ID0gdmlmLT5uZGV2Ow0KLQkJdmlmLT5uZXRzdGF0cy5yeF9wYWNrZXRzID0gMDsNCi0JCXZpZi0+ bmV0c3RhdHMudHhfcGFja2V0cyA9IDA7DQotCQl2aWYtPm5ldHN0YXRzLnJ4X2J5dGVzID0gMDsN Ci0JCXZpZi0+bmV0c3RhdHMudHhfYnl0ZXMgPSAwOw0KKwl2aWYtPnByaXYud2Rldi53aXBoeSA9 IHdsLT53aXBoeTsNCisJdmlmLT5wcml2LndkZXYubmV0ZGV2ID0gbmRldjsNCisJdmlmLT5wcml2 LndkZXYuaWZ0eXBlID0gdHlwZTsNCisJdmlmLT5wcml2LmRldiA9IG5kZXY7DQogDQorCWlmIChy dG5sX2xvY2tlZCkNCisJCXJldCA9IHJlZ2lzdGVyX25ldGRldmljZShuZGV2KTsNCisJZWxzZQ0K IAkJcmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpOw0KLQkJaWYgKHJldCkNCi0JCQlnb3RvIGZy ZWVfbmRldjsNCiANCi0JCXZpZi0+aWZ0eXBlID0gV0lMQ19TVEFUSU9OX01PREU7DQotCQl2aWYt Pm1hY19vcGVuZWQgPSAwOw0KKwlpZiAocmV0KSB7DQorCQlmcmVlX25ldGRldihuZGV2KTsNCisJ CXJldHVybiBFUlJfUFRSKC1FRkFVTFQpOw0KIAl9DQogDQotCXJldHVybiAwOw0KLQ0KLWZyZWVf bmRldjoNCi0JZm9yICg7IGkgPj0gMDsgaS0tKSB7DQotCQlpZiAod2wtPnZpZltpXSkgew0KLQkJ CWlmICh3bC0+dmlmW2ldLT5pZnR5cGUgPT0gV0lMQ19TVEFUSU9OX01PREUpDQotCQkJCXVucmVn aXN0ZXJfbmV0ZGV2KHdsLT52aWZbaV0tPm5kZXYpOw0KLQ0KLQkJCWlmICh3bC0+dmlmW2ldLT5u ZGV2KSB7DQotCQkJCXdpbGNfZnJlZV93aXBoeSh3bC0+dmlmW2ldLT5uZGV2KTsNCi0JCQkJZnJl ZV9uZXRkZXYod2wtPnZpZltpXS0+bmRldik7DQotCQkJfQ0KLQkJfQ0KLQl9DQotCXVucmVnaXN0 ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmdfZGV2X25vdGlmaWVyKTsNCi0JZGVzdHJveV93b3JrcXVl dWUod2wtPmhpZl93b3JrcXVldWUpOw0KLWZyZWVfY2ZnOg0KLQl3aWxjX3dsYW5fY2ZnX2RlaW5p dCh3bCk7DQotZnJlZV93bDoNCi0Ja2ZyZWUod2wpOw0KLQlyZXR1cm4gcmV0Ow0KKwluZGV2LT5u ZWVkc19mcmVlX25ldGRldiA9IHRydWU7DQorCXZpZi0+aWZ0eXBlID0gdmlmX3R5cGU7DQorCXZp Zi0+d2lsYy0+dmlmW3dsLT52aWZfbnVtXSA9IHZpZjsNCisJdmlmLT5pZmNfaWQgPSB3bC0+dmlm X251bTsNCisJdmlmLT5pZHggPSB3bC0+dmlmX251bTsNCisJd2wtPnZpZl9udW0gKz0gMTsNCisJ dmlmLT5tYWNfb3BlbmVkID0gMDsNCisJcmV0dXJuIHZpZjsNCiB9DQotRVhQT1JUX1NZTUJPTF9H UEwod2lsY19uZXRkZXZfaW5pdCk7DQogDQogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3NkaW8uYyBiL2RyaXZlcnMvc3Rh Z2luZy93aWxjMTAwMC93aWxjX3NkaW8uYw0KaW5kZXggYjc4OWM1Ny4uNGMxYzgxZiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3NkaW8uYw0KKysrIGIvZHJpdmVy cy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfc2Rpby5jDQpAQCAtOCw2ICs4LDcgQEANCiAjaW5jbHVk ZSA8bGludXgvbW1jL2hvc3QuaD4NCiANCiAjaW5jbHVkZSAid2lsY193ZmlfbmV0ZGV2aWNlLmgi DQorI2luY2x1ZGUgIndpbGNfd2ZpX2NmZ29wZXJhdGlvbnMuaCINCiANCiAjZGVmaW5lIFNESU9f TU9EQUxJQVMgIndpbGMxMDAwX3NkaW8iDQogDQpAQCAtMTM5LDExICsxNDAsOSBAQCBzdGF0aWMg aW50IHdpbGNfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLA0KIAkJfQ0KIAl9DQog DQotCWRldl9kYmcoJmZ1bmMtPmRldiwgIkluaXRpYWxpemluZyBuZXRkZXZcbiIpOw0KLQlyZXQg PSB3aWxjX25ldGRldl9pbml0KCZ3aWxjLCAmZnVuYy0+ZGV2LCBXSUxDX0hJRl9TRElPLA0KLQkJ CSAgICAgICAmd2lsY19oaWZfc2Rpbyk7DQorCXJldCA9IHdpbGNfY2ZnODAyMTFfaW5pdCgmd2ls YywgJmZ1bmMtPmRldiwgV0lMQ19ISUZfU0RJTywNCisJCQkJICZ3aWxjX2hpZl9zZGlvKTsNCiAJ aWYgKHJldCkgew0KLQkJZGV2X2VycigmZnVuYy0+ZGV2LCAiQ291bGRuJ3QgaW5pdGlhbGl6ZSBu ZXRkZXZcbiIpOw0KIAkJa2ZyZWUoc2Rpb19wcml2KTsNCiAJCXJldHVybiByZXQ7DQogCX0NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY19zcGkuYyBiL2RyaXZlcnMv c3RhZ2luZy93aWxjMTAwMC93aWxjX3NwaS5jDQppbmRleCBkODkxMGJmLi4zYzFhZTllIDEwMDY0 NA0KLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfc3BpLmMNCisrKyBiL2RyaXZl cnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3NwaS5jDQpAQCAtNyw2ICs3LDcgQEANCiAjaW5jbHVk ZSA8bGludXgvc3BpL3NwaS5oPg0KIA0KICNpbmNsdWRlICJ3aWxjX3dmaV9uZXRkZXZpY2UuaCIN CisjaW5jbHVkZSAid2lsY193ZmlfY2Znb3BlcmF0aW9ucy5oIg0KIA0KIHN0cnVjdCB3aWxjX3Nw aSB7DQogCWludCBjcmNfb2ZmOw0KQEAgLTEyMCw3ICsxMjEsNyBAQCBzdGF0aWMgaW50IHdpbGNf YnVzX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpDQogCQkJZGV2X2Vycigmc3BpLT5kZXYs ICJmYWlsZWQgdG8gZ2V0IHRoZSBpcnEgZ3Bpb1xuIik7DQogCX0NCiANCi0JcmV0ID0gd2lsY19u ZXRkZXZfaW5pdCgmd2lsYywgTlVMTCwgV0lMQ19ISUZfU1BJLCAmd2lsY19oaWZfc3BpKTsNCisJ cmV0ID0gd2lsY19jZmc4MDIxMV9pbml0KCZ3aWxjLCAmc3BpLT5kZXYsIFdJTENfSElGX1NQSSwg JndpbGNfaGlmX3NwaSk7DQogCWlmIChyZXQpIHsNCiAJCWtmcmVlKHNwaV9wcml2KTsNCiAJCXJl dHVybiByZXQ7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfd2Zp X2NmZ29wZXJhdGlvbnMuYyBiL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3dmaV9jZmdv cGVyYXRpb25zLmMNCmluZGV4IGIwZGFhMTEuLjAxMmUzMjUgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L3N0YWdpbmcvd2lsYzEwMDAvd2lsY193ZmlfY2Znb3BlcmF0aW9ucy5jDQorKysgYi9kcml2ZXJz L3N0YWdpbmcvd2lsYzEwMDAvd2lsY193ZmlfY2Znb3BlcmF0aW9ucy5jDQpAQCAtMTgzLDQ4ICsx ODMsNjcgQEAgc3RhdGljIHZvaWQgY2ZnX2Nvbm5lY3RfcmVzdWx0KGVudW0gY29ubl9ldmVudCBj b25uX2Rpc2Nvbm5fZXZ0LCB1OCBtYWNfc3RhdHVzLA0KIAkJZXRoX3plcm9fYWRkcihwcml2LT5h c3NvY2lhdGVkX2Jzcyk7DQogCQl3aWxjX3dsYW5fc2V0X2Jzc2lkKHByaXYtPmRldiwgTlVMTCwg V0lMQ19TVEFUSU9OX01PREUpOw0KIA0KLQkJaWYgKHZpZi0+aWZ0eXBlICE9IFdJTENfQ0xJRU5U X01PREUpDQorCQlpZiAodmlmLT5pZnR5cGUgIT0gV0lMQ19DTElFTlRfTU9ERSkgew0KIAkJCXds LT5zdGFfY2ggPSBXSUxDX0lOVkFMSURfQ0hBTk5FTDsNCi0NCi0JCWlmICh3ZmlfZHJ2LT5pZmNf dXAgJiYgZGV2ID09IHdsLT52aWZbMV0tPm5kZXYpDQotCQkJcmVhc29uID0gMzsNCi0JCWVsc2Ug aWYgKCF3ZmlfZHJ2LT5pZmNfdXAgJiYgZGV2ID09IHdsLT52aWZbMV0tPm5kZXYpDQotCQkJcmVh c29uID0gMTsNCisJCX0gZWxzZSB7DQorCQkJaWYgKHdmaV9kcnYtPmlmY191cCkNCisJCQkJcmVh c29uID0gMzsNCisJCQllbHNlDQorCQkJCXJlYXNvbiA9IDE7DQorCQl9DQogDQogCQljZmc4MDIx MV9kaXNjb25uZWN0ZWQoZGV2LCByZWFzb24sIE5VTEwsIDAsIGZhbHNlLCBHRlBfS0VSTkVMKTsN CiAJfQ0KIH0NCiANCitzdGF0aWMgc3RydWN0IHdpbGNfdmlmICp3aWxjX2dldF93bF90b192aWYo c3RydWN0IHdpbGMgKndsKQ0KK3sNCisJaW50IGk7DQorDQorCWZvciAoaSA9IDA7IGkgPCB3bC0+ dmlmX251bTsgaSsrKQ0KKwkJaWYgKHdsLT52aWZbaV0pDQorCQkJcmV0dXJuIHdsLT52aWZbaV07 DQorDQorCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0KK30NCisNCiBzdGF0aWMgaW50IHNldF9j aGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksDQogCQkgICAgICAgc3RydWN0IGNmZzgwMjExX2No YW5fZGVmICpjaGFuZGVmKQ0KIHsNCi0JdTMyIGNoYW5uZWxudW0gPSAwOw0KLQlzdHJ1Y3Qgd2ls Y19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVjdCB3aWxjX3ZpZiAqdmlm ID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCi0JaW50IHJlc3VsdCA9IDA7DQorCXN0cnVjdCB3 aWxjICp3bCA9IHdpcGh5X3ByaXYod2lwaHkpOw0KKwlzdHJ1Y3Qgd2lsY192aWYgKnZpZjsNCisJ dTMyIGNoYW5uZWxudW07DQorCWludCByZXN1bHQ7DQorDQorCW11dGV4X2xvY2soJndsLT52aWZf bXV0ZXgpOw0KKwl2aWYgPSB3aWxjX2dldF93bF90b192aWYod2wpOw0KKwlpZiAoSVNfRVJSKHZp ZikpIHsNCisJCW11dGV4X3VubG9jaygmd2wtPnZpZl9tdXRleCk7DQorCQlyZXR1cm4gUFRSX0VS Uih2aWYpOw0KKwl9DQogDQogCWNoYW5uZWxudW0gPSBpZWVlODAyMTFfZnJlcXVlbmN5X3RvX2No YW5uZWwoY2hhbmRlZi0+Y2hhbi0+Y2VudGVyX2ZyZXEpOw0KIA0KLQl2aWYtPndpbGMtPm9wX2No ID0gY2hhbm5lbG51bTsNCisJd2wtPm9wX2NoID0gY2hhbm5lbG51bTsNCiAJcmVzdWx0ID0gd2ls Y19zZXRfbWFjX2NobmxfbnVtKHZpZiwgY2hhbm5lbG51bSk7DQorCWlmIChyZXN1bHQpDQorCQlu ZXRkZXZfZXJyKHZpZi0+bmRldiwgIkVycm9yIGluIHNldHRpbmcgY2hhbm5lbFxuIik7DQogDQot CWlmIChyZXN1bHQgIT0gMCkNCi0JCW5ldGRldl9lcnIocHJpdi0+ZGV2LCAiRXJyb3IgaW4gc2V0 dGluZyBjaGFubmVsXG4iKTsNCi0NCisJbXV0ZXhfdW5sb2NrKCZ3bC0+dmlmX211dGV4KTsNCiAJ cmV0dXJuIHJlc3VsdDsNCiB9DQogDQogc3RhdGljIGludCBzY2FuKHN0cnVjdCB3aXBoeSAqd2lw aHksIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcXVlc3QpDQogew0KLQlzdHJ1Y3Qg d2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVjdCB3aWxjX3ZpZiAq dmlmID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCisJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBu ZXRkZXZfcHJpdihyZXF1ZXN0LT53ZGV2LT5uZXRkZXYpOw0KKwlzdHJ1Y3Qgd2lsY19wcml2ICpw cml2ID0gJnZpZi0+cHJpdjsNCiAJdTMyIGk7DQogCWludCByZXQgPSAwOw0KIAl1OCBzY2FuX2No X2xpc3RbV0lMQ19NQVhfTlVNX1NDQU5ORURfQ0hdOw0KIAl1OCBzY2FuX3R5cGU7DQogDQogCWlm IChyZXF1ZXN0LT5uX2NoYW5uZWxzID4gV0lMQ19NQVhfTlVNX1NDQU5ORURfQ0gpIHsNCi0JCW5l dGRldl9lcnIocHJpdi0+ZGV2LCAiUmVxdWVzdGVkIHNjYW5uZWQgY2hhbm5lbHMgb3ZlclxuIik7 DQorCQluZXRkZXZfZXJyKHZpZi0+bmRldiwgIlJlcXVlc3RlZCBzY2FubmVkIGNoYW5uZWxzIG92 ZXJcbiIpOw0KIAkJcmV0dXJuIC1FSU5WQUw7DQogCX0NCiANCkBAIC0yNTYsOCArMjc1LDggQEAg c3RhdGljIGludCBzY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBjZmc4MDIxMV9zY2Fu X3JlcXVlc3QgKnJlcXVlc3QpDQogc3RhdGljIGludCBjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lw aHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCQkgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVj dF9wYXJhbXMgKnNtZSkNCiB7DQotCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2 KHdpcGh5KTsNCi0Jc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT5kZXYp Ow0KKwlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KGRldik7DQorCXN0cnVjdCB3 aWxjX3ByaXYgKnByaXYgPSAmdmlmLT5wcml2Ow0KIAlzdHJ1Y3QgaG9zdF9pZl9kcnYgKndmaV9k cnYgPSBwcml2LT5oaWZfZHJ2Ow0KIAlpbnQgcmV0Ow0KIAl1MzIgaTsNCkBAIC00MTAsOCArNDI5 LDggQEAgc3RhdGljIGludCBjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsDQogc3RhdGljIGludCBkaXNjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHks IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCQkgICAgICB1MTYgcmVhc29uX2NvZGUpDQogew0K LQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVjdCB3 aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCisJc3RydWN0IHdpbGNfdmlm ICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KKwlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gJnZp Zi0+cHJpdjsNCiAJc3RydWN0IHdpbGMgKndpbGMgPSB2aWYtPndpbGM7DQogCWludCByZXQ7DQog DQpAQCAtNTAxLDE3ICs1MjAsMTcgQEAgc3RhdGljIGludCBhZGRfa2V5KHN0cnVjdCB3aXBoeSAq d2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHU4IGtleV9pbmRleCwNCiANCiB7DQog CWludCByZXQgPSAwLCBrZXlsZW4gPSBwYXJhbXMtPmtleV9sZW47DQotCXN0cnVjdCB3aWxjX3By aXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCiAJY29uc3QgdTggKnJ4X21pYyA9IE5VTEw7 DQogCWNvbnN0IHU4ICp0eF9taWMgPSBOVUxMOw0KIAl1OCBtb2RlID0gV0lMQ19GV19TRUNfTk87 DQogCXU4IG9wX21vZGU7DQogCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYobmV0 ZGV2KTsNCisJc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogDQogCXN3aXRj aCAocGFyYW1zLT5jaXBoZXIpIHsNCiAJY2FzZSBXTEFOX0NJUEhFUl9TVUlURV9XRVA0MDoNCiAJ Y2FzZSBXTEFOX0NJUEhFUl9TVUlURV9XRVAxMDQ6DQotCQlpZiAocHJpdi0+d2Rldi0+aWZ0eXBl ID09IE5MODAyMTFfSUZUWVBFX0FQKSB7DQorCQlpZiAocHJpdi0+d2Rldi5pZnR5cGUgPT0gTkw4 MDIxMV9JRlRZUEVfQVApIHsNCiAJCQl3aWxjX3dmaV9jZmdfY29weV93ZXBfaW5mbyhwcml2LCBr ZXlfaW5kZXgsIHBhcmFtcyk7DQogDQogCQkJaWYgKHBhcmFtcy0+Y2lwaGVyID09IFdMQU5fQ0lQ SEVSX1NVSVRFX1dFUDQwKQ0KQEAgLTUzOCw4ICs1NTcsOCBAQCBzdGF0aWMgaW50IGFkZF9rZXko c3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTgga2V5X2lu ZGV4LA0KIA0KIAljYXNlIFdMQU5fQ0lQSEVSX1NVSVRFX1RLSVA6DQogCWNhc2UgV0xBTl9DSVBI RVJfU1VJVEVfQ0NNUDoNCi0JCWlmIChwcml2LT53ZGV2LT5pZnR5cGUgPT0gTkw4MDIxMV9JRlRZ UEVfQVAgfHwNCi0JCSAgICBwcml2LT53ZGV2LT5pZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfUDJQ X0dPKSB7DQorCQlpZiAocHJpdi0+d2Rldi5pZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgfHwN CisJCSAgICBwcml2LT53ZGV2LmlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9QMlBfR08pIHsNCiAJ CQlzdHJ1Y3Qgd2lsY193Zmlfa2V5ICprZXk7DQogDQogCQkJcmV0ID0gd2lsY193ZmlfY2ZnX2Fs bG9jYXRlX3dwYV9lbnRyeShwcml2LCBrZXlfaW5kZXgpOw0KQEAgLTYxMSw5ICs2MzAsOSBAQCBz dGF0aWMgaW50IGRlbF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2Ug Km5ldGRldiwNCiAJCSAgIGJvb2wgcGFpcndpc2UsDQogCQkgICBjb25zdCB1OCAqbWFjX2FkZHIp DQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQorCXN0 cnVjdCB3aWxjICp3bCA9IHdpcGh5X3ByaXYod2lwaHkpOw0KIAlzdHJ1Y3Qgd2lsY192aWYgKnZp ZiA9IG5ldGRldl9wcml2KG5ldGRldik7DQotCXN0cnVjdCB3aWxjICp3bCA9IHZpZi0+d2lsYzsN CisJc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogDQogCWlmIChuZXRkZXYg PT0gd2wtPnZpZlswXS0+bmRldikgew0KIAkJaWYgKHByaXYtPndpbGNfZ3RrW2tleV9pbmRleF0p IHsNCkBAIC02NTAsNyArNjY5LDggQEAgc3RhdGljIGludCBnZXRfa2V5KHN0cnVjdCB3aXBoeSAq d2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHU4IGtleV9pbmRleCwNCiAJCSAgIGJv b2wgcGFpcndpc2UsIGNvbnN0IHU4ICptYWNfYWRkciwgdm9pZCAqY29va2llLA0KIAkJICAgdm9p ZCAoKmNhbGxiYWNrKSh2b2lkICpjb29raWUsIHN0cnVjdCBrZXlfcGFyYW1zICopKQ0KIHsNCi0J c3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpOw0KKwlzdHJ1Y3Qgd2ls Y192aWYgKnZpZiA9IG5ldGRldl9wcml2KG5ldGRldik7DQorCXN0cnVjdCB3aWxjX3ByaXYgKnBy aXYgPSAmdmlmLT5wcml2Ow0KIAlzdHJ1Y3QgIGtleV9wYXJhbXMga2V5X3BhcmFtczsNCiANCiAJ aWYgKCFwYWlyd2lzZSkgew0KQEAgLTY3NSw4ICs2OTUsNyBAQCBzdGF0aWMgaW50IGdldF9rZXko c3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTgga2V5X2lu ZGV4LA0KIHN0YXRpYyBpbnQgc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsDQogCQkJICAgdTgga2V5X2luZGV4LCBib29sIHVuaWNh c3QsIGJvb2wgbXVsdGljYXN0KQ0KIHsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5 X3ByaXYod2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHByaXYt PmRldik7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsNCiAN CiAJd2lsY19zZXRfd2VwX2RlZmF1bHRfa2V5aWQodmlmLCBrZXlfaW5kZXgpOw0KIA0KQEAgLTY4 Niw4ICs3MDUsOCBAQCBzdGF0aWMgaW50IHNldF9kZWZhdWx0X2tleShzdHJ1Y3Qgd2lwaHkgKndp cGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LA0KIHN0YXRpYyBpbnQgZ2V0X3N0YXRpb24o c3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiAJCSAgICAgICBj b25zdCB1OCAqbWFjLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbykNCiB7DQotCXN0cnVjdCB3 aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCiAJc3RydWN0IHdpbGNfdmlmICp2 aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KKwlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gJnZpZi0+ cHJpdjsNCiAJdTMyIGkgPSAwOw0KIAl1MzIgYXNzb2NpYXRlZHN0YSA9IH4wOw0KIAl1MzIgaW5h Y3RpdmVfdGltZSA9IDA7DQpAQCAtNzQzLDEzICs3NjIsMzUgQEAgc3RhdGljIGludCBjaGFuZ2Vf YnNzKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCXJldHVy biAwOw0KIH0NCiANCitzdHJ1Y3Qgd2lsY192aWYgKndpbGNfZ2V0X2ludGVyZmFjZShzdHJ1Y3Qg d2lsYyAqd2wpDQorew0KKwlpbnQgaTsNCisJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBOVUxMOw0K Kw0KKwltdXRleF9sb2NrKCZ3bC0+dmlmX211dGV4KTsNCisJZm9yIChpID0gMDsgaSA8IHdsLT52 aWZfbnVtOyBpKyspIHsNCisJCWlmICh3bC0+dmlmW2ldKSB7DQorCQkJdmlmID0gd2wtPnZpZltp XTsNCisJCQlicmVhazsNCisJCX0NCisJfQ0KKwltdXRleF91bmxvY2soJndsLT52aWZfbXV0ZXgp Ow0KKwlyZXR1cm4gdmlmOw0KK30NCisNCiBzdGF0aWMgaW50IHNldF93aXBoeV9wYXJhbXMoc3Ry dWN0IHdpcGh5ICp3aXBoeSwgdTMyIGNoYW5nZWQpDQogew0KIAlpbnQgcmV0Ow0KIAlzdHJ1Y3Qg Y2ZnX3BhcmFtX2F0dHIgY2ZnX3BhcmFtX3ZhbDsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9 IHdpcGh5X3ByaXYod2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2 KHByaXYtPmRldik7DQorCXN0cnVjdCB3aWxjICp3bCA9IHdpcGh5X3ByaXYod2lwaHkpOw0KKwlz dHJ1Y3Qgd2lsY192aWYgKnZpZjsNCisJc3RydWN0IHdpbGNfcHJpdiAqcHJpdjsNCiANCisJdmlm ID0gd2lsY19nZXRfaW50ZXJmYWNlKHdsKTsNCisJaWYgKCF2aWYpDQorCQlyZXR1cm4gLUVJTlZB TDsNCisNCisJcHJpdiA9ICZ2aWYtPnByaXY7DQogCWNmZ19wYXJhbV92YWwuZmxhZyA9IDA7DQog DQogCWlmIChjaGFuZ2VkICYgV0lQSFlfUEFSQU1fUkVUUllfU0hPUlQpIHsNCkBAIC04MDQsOCAr ODQ1LDggQEAgc3RhdGljIGludCBzZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHks IHUzMiBjaGFuZ2VkKQ0KIHN0YXRpYyBpbnQgc2V0X3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHks IHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsDQogCQkgICAgIHN0cnVjdCBjZmc4MDIxMV9wbWtz YSAqcG1rc2EpDQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBo eSk7DQotCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCisJ c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KKwlzdHJ1Y3Qgd2ls Y19wcml2ICpwcml2ID0gJnZpZi0+cHJpdjsNCiAJdTMyIGk7DQogCWludCByZXQgPSAwOw0KIAl1 OCBmbGFnID0gMDsNCkBAIC04NDAsNyArODgxLDggQEAgc3RhdGljIGludCBkZWxfcG1rc2Eoc3Ry dWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwNCiB7DQogCXUzMiBp Ow0KIAlpbnQgcmV0ID0gMDsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYo d2lwaHkpOw0KKwlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KG5ldGRldik7DQor CXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSAmdmlmLT5wcml2Ow0KIA0KIAlmb3IgKGkgPSAwOyBp IDwgcHJpdi0+cG1raWRfbGlzdC5udW1wbWtpZDsgaSsrKQl7DQogCQlpZiAoIW1lbWNtcChwbWtz YS0+YnNzaWQsIHByaXYtPnBta2lkX2xpc3QucG1raWRsaXN0W2ldLmJzc2lkLA0KQEAgLTg3MCw5 ICs5MTIsOSBAQCBzdGF0aWMgaW50IGRlbF9wbWtzYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1 Y3QgbmV0X2RldmljZSAqbmV0ZGV2LA0KIA0KIHN0YXRpYyBpbnQgZmx1c2hfcG1rc2Eoc3RydWN0 IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikNCiB7DQotCXN0cnVjdCB3 aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCisJc3RydWN0IHdpbGNfdmlmICp2 aWYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KIA0KLQltZW1zZXQoJnByaXYtPnBta2lkX2xpc3Qs IDAsIHNpemVvZihzdHJ1Y3Qgd2lsY19wbWtpZF9hdHRyKSk7DQorCW1lbXNldCgmdmlmLT5wcml2 LnBta2lkX2xpc3QsIDAsIHNpemVvZihzdHJ1Y3Qgd2lsY19wbWtpZF9hdHRyKSk7DQogDQogCXJl dHVybiAwOw0KIH0NCkBAIC05ODcsMTIgKzEwMjksMTEgQEAgc3RhdGljIHZvaWQgd2lsY193Zmlf Y2ZnX3BhcnNlX3J4X3ZlbmRvcl9zcGVjKHN0cnVjdCB3aWxjX3ByaXYgKnByaXYsIHU4ICpidWZm LA0KIAl9DQogfQ0KIA0KLXZvaWQgd2lsY193ZmlfcDJwX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsIHU4ICpidWZmLCB1MzIgc2l6ZSkNCit2b2lkIHdpbGNfd2ZpX3AycF9yeChzdHJ1Y3Qgd2ls Y192aWYgKnZpZiwgdTggKmJ1ZmYsIHUzMiBzaXplKQ0KIHsNCi0Jc3RydWN0IHdpbGNfcHJpdiAq cHJpdiA9IHdpcGh5X3ByaXYoZGV2LT5pZWVlODAyMTFfcHRyLT53aXBoeSk7DQotCXN0cnVjdCBo b3N0X2lmX2RydiAqd2ZpX2RydiA9IHByaXYtPmhpZl9kcnY7DQotCXN0cnVjdCB3aWxjX3ZpZiAq dmlmID0gbmV0ZGV2X3ByaXYoZGV2KTsNCiAJc3RydWN0IHdpbGMgKndsID0gdmlmLT53aWxjOw0K KwlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gJnZpZi0+cHJpdjsNCisJc3RydWN0IGhvc3RfaWZf ZHJ2ICp3ZmlfZHJ2ID0gcHJpdi0+aGlmX2RydjsNCiAJdTMyIGhlYWRlciwgcGt0X29mZnNldDsN CiAJczMyIGZyZXE7DQogCV9fbGUxNiBmYzsNCkBAIC0xMDA4LDggKzEwNDksOCBAQCB2b2lkIHdp bGNfd2ZpX3AycF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCAqYnVmZiwgdTMyIHNpemUp DQogCQkgICAgcGt0X29mZnNldCAmIElTX01HTVRfU1RBVFVTX1NVQ0NFUykNCiAJCQlhY2sgPSB0 cnVlOw0KIA0KLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMocHJpdi0+d2RldiwgcHJpdi0+dHhf Y29va2llLCBidWZmLCBzaXplLA0KLQkJCQkJYWNrLCBHRlBfS0VSTkVMKTsNCisJCWNmZzgwMjEx X21nbXRfdHhfc3RhdHVzKCZwcml2LT53ZGV2LCBwcml2LT50eF9jb29raWUsIGJ1ZmYsDQorCQkJ CQlzaXplLCBhY2ssIEdGUF9LRVJORUwpOw0KIAkJcmV0dXJuOw0KIAl9DQogDQpAQCAtMTAxNywx MyArMTA1OCwxMyBAQCB2b2lkIHdpbGNfd2ZpX3AycF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LCB1OCAqYnVmZiwgdTMyIHNpemUpDQogDQogCWZjID0gKChzdHJ1Y3QgaWVlZTgwMjExX2hkciAq KWJ1ZmYpLT5mcmFtZV9jb250cm9sOw0KIAlpZiAoIWllZWU4MDIxMV9pc19hY3Rpb24oZmMpKSB7 DQotCQljZmc4MDIxMV9yeF9tZ210KHByaXYtPndkZXYsIGZyZXEsIDAsIGJ1ZmYsIHNpemUsIDAp Ow0KKwkJY2ZnODAyMTFfcnhfbWdtdCgmcHJpdi0+d2RldiwgZnJlcSwgMCwgYnVmZiwgc2l6ZSwg MCk7DQogCQlyZXR1cm47DQogCX0NCiANCiAJaWYgKHByaXYtPmNmZ19zY2FubmluZyAmJg0KIAkg ICAgdGltZV9hZnRlcl9lcShqaWZmaWVzLCAodW5zaWduZWQgbG9uZyl3ZmlfZHJ2LT5wMnBfdGlt ZW91dCkpIHsNCi0JCW5ldGRldl9kYmcoZGV2LCAiUmVjZWl2aW5nIGFjdGlvbiB3cm9uZyBjaFxu Iik7DQorCQluZXRkZXZfZGJnKHZpZi0+bmRldiwgIlJlY2VpdmluZyBhY3Rpb24gd3JvbmcgY2hc biIpOw0KIAkJcmV0dXJuOw0KIAl9DQogCWlmIChidWZmW0FDVElPTl9DQVRfSURdID09IFBVQl9B Q1RJT05fQVRUUl9JRCkgew0KQEAgLTEwNDYsMTQgKzEwODcsMTQgQEAgdm9pZCB3aWxjX3dmaV9w MnBfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggKmJ1ZmYsIHUzMiBzaXplKQ0KIAkJCWJy ZWFrOw0KIA0KIAkJZGVmYXVsdDoNCi0JCQluZXRkZXZfZGJnKGRldiwNCisJCQluZXRkZXZfZGJn KHZpZi0+bmRldiwNCiAJCQkJICAgIiVzOiBOb3QgaGFuZGxlZCBhY3Rpb24gZnJhbWUgdHlwZTol eFxuIiwNCiAJCQkJICAgX19mdW5jX18sIGJ1ZmZbQUNUSU9OX1NVQlRZUEVfSURdKTsNCiAJCQli cmVhazsNCiAJCX0NCiAJfQ0KIA0KLQljZmc4MDIxMV9yeF9tZ210KHByaXYtPndkZXYsIGZyZXEs IDAsIGJ1ZmYsIHNpemUsIDApOw0KKwljZmc4MDIxMV9yeF9tZ210KCZwcml2LT53ZGV2LCBmcmVx LCAwLCBidWZmLCBzaXplLCAwKTsNCiB9DQogDQogc3RhdGljIHZvaWQgd2lsY193ZmlfbWdtdF90 eF9jb21wbGV0ZSh2b2lkICpwcml2LCBpbnQgc3RhdHVzKQ0KQEAgLTEwNjYsNyArMTEwNyw4IEBA IHN0YXRpYyB2b2lkIHdpbGNfd2ZpX21nbXRfdHhfY29tcGxldGUodm9pZCAqcHJpdiwgaW50IHN0 YXR1cykNCiANCiBzdGF0aWMgdm9pZCB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVk KHZvaWQgKmRhdGEsIHU2NCBjb29raWUpDQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0g ZGF0YTsNCisJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBkYXRhOw0KKwlzdHJ1Y3Qgd2lsY19wcml2 ICpwcml2ID0gJnZpZi0+cHJpdjsNCiAJc3RydWN0IHdpbGNfd2ZpX3AycF9saXN0ZW5fcGFyYW1z ICpwYXJhbXMgPSAmcHJpdi0+cmVtYWluX29uX2NoX3BhcmFtczsNCiANCiAJaWYgKGNvb2tpZSAh PSBwYXJhbXMtPmxpc3Rlbl9jb29raWUpDQpAQCAtMTA3NCw3ICsxMTE2LDcgQEAgc3RhdGljIHZv aWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCh2b2lkICpkYXRhLCB1NjQgY29v a2llKQ0KIA0KIAlwcml2LT5wMnBfbGlzdGVuX3N0YXRlID0gZmFsc2U7DQogDQotCWNmZzgwMjEx X3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocHJpdi0+d2RldiwgcGFyYW1zLT5saXN0ZW5fY29v a2llLA0KKwljZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKCZwcml2LT53ZGV2LCBw YXJhbXMtPmxpc3Rlbl9jb29raWUsDQogCQkJCQkgICBwYXJhbXMtPmxpc3Rlbl9jaCwgR0ZQX0tF Uk5FTCk7DQogfQ0KIA0KQEAgLTEwODQsOCArMTEyNiw4IEBAIHN0YXRpYyBpbnQgcmVtYWluX29u X2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwNCiAJCQkgICAgIHVuc2lnbmVkIGludCBkdXJh dGlvbiwgdTY0ICpjb29raWUpDQogew0KIAlpbnQgcmV0ID0gMDsNCi0Jc3RydWN0IHdpbGNfcHJp diAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5l dGRldl9wcml2KHByaXYtPmRldik7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3By aXYod2Rldi0+bmV0ZGV2KTsNCisJc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7 DQogCXU2NCBpZDsNCiANCiAJaWYgKHdkZXYtPmlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkg ew0KQEAgLTEwOTksNyArMTE0MSw3IEBAIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3Ry dWN0IHdpcGh5ICp3aXBoeSwNCiANCiAJcmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYs IGlkLCBkdXJhdGlvbiwgY2hhbi0+aHdfdmFsdWUsDQogCQkJCSAgICAgd2lsY193ZmlfcmVtYWlu X29uX2NoYW5uZWxfZXhwaXJlZCwNCi0JCQkJICAgICAodm9pZCAqKXByaXYpOw0KKwkJCQkgICAg ICh2b2lkICopdmlmKTsNCiAJaWYgKHJldCkNCiAJCXJldHVybiByZXQ7DQogDQpAQCAtMTEyMiw4 ICsxMTY0LDggQEAgc3RhdGljIGludCBjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdp cGh5ICp3aXBoeSwNCiAJCQkJICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsDQogCQkJCSAg ICB1NjQgY29va2llKQ0KIHsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYo d2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHByaXYtPmRldik7 DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYod2Rldi0+bmV0ZGV2KTsNCisJ c3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogDQogCWlmIChjb29raWUgIT0g cHJpdi0+cmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llKQ0KIAkJcmV0dXJuIC1FTk9F TlQ7DQpAQCAtMTE5Myw5ICsxMjM1LDkgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBo eSAqd2lwaHksDQogCXNpemVfdCBsZW4gPSBwYXJhbXMtPmxlbjsNCiAJY29uc3Qgc3RydWN0IGll ZWU4MDIxMV9tZ210ICptZ210Ow0KIAlzdHJ1Y3Qgd2lsY19wMnBfbWdtdF9kYXRhICptZ210X3R4 Ow0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVj dCBob3N0X2lmX2RydiAqd2ZpX2RydiA9IHByaXYtPmhpZl9kcnY7DQogCXN0cnVjdCB3aWxjX3Zp ZiAqdmlmID0gbmV0ZGV2X3ByaXYod2Rldi0+bmV0ZGV2KTsNCisJc3RydWN0IHdpbGNfcHJpdiAq cHJpdiA9ICZ2aWYtPnByaXY7DQorCXN0cnVjdCBob3N0X2lmX2RydiAqd2ZpX2RydiA9IHByaXYt PmhpZl9kcnY7DQogCXUzMiBidWZfbGVuID0gbGVuICsgc2l6ZW9mKHAycF92ZW5kb3Jfc3BlYykg Kw0KIAkJCXNpemVvZihwcml2LT5wMnAubG9jYWxfcmFuZG9tKTsNCiAJaW50IHJldCA9IDA7DQpA QCAtMTI3OSw3ICsxMzIxLDggQEAgc3RhdGljIGludCBtZ210X3R4X2NhbmNlbF93YWl0KHN0cnVj dCB3aXBoeSAqd2lwaHksDQogCQkJICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsDQog CQkJICAgICAgIHU2NCBjb29raWUpDQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lw aHlfcHJpdih3aXBoeSk7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYod2Rl di0+bmV0ZGV2KTsNCisJc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogCXN0 cnVjdCBob3N0X2lmX2RydiAqd2ZpX2RydiA9IHByaXYtPmhpZl9kcnY7DQogDQogCXdmaV9kcnYt PnAycF90aW1lb3V0ID0gamlmZmllczsNCkBAIC0xMjg5LDcgKzEzMzIsNyBAQCBzdGF0aWMgaW50 IG1nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSwNCiANCiAJCXBhcmFtcyA9 ICZwcml2LT5yZW1haW5fb25fY2hfcGFyYW1zOw0KIA0KLQkJY2ZnODAyMTFfcmVtYWluX29uX2No YW5uZWxfZXhwaXJlZChwcml2LT53ZGV2LA0KKwkJY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWxf ZXhwaXJlZCh3ZGV2LA0KIAkJCQkJCSAgIHBhcmFtcy0+bGlzdGVuX2Nvb2tpZSwNCiAJCQkJCQkg ICBwYXJhbXMtPmxpc3Rlbl9jaCwNCiAJCQkJCQkgICBHRlBfS0VSTkVMKTsNCkBAIC0xMzAxLDkg KzEzNDQsOCBAQCBzdGF0aWMgaW50IG1nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3 aXBoeSwNCiB2b2lkIHdpbGNfbWdtdF9mcmFtZV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5 LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LA0KIAkJCSAgICAgIHUxNiBmcmFtZV90eXBlLCBi b29sIHJlZykNCiB7DQotCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5 KTsNCi0Jc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT53ZGV2LT5uZXRk ZXYpOw0KLQlzdHJ1Y3Qgd2lsYyAqd2wgPSB2aWYtPndpbGM7DQorCXN0cnVjdCB3aWxjICp3bCA9 IHdpcGh5X3ByaXYod2lwaHkpOw0KKwlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2 KHdkZXYtPm5ldGRldik7DQogDQogCWlmICghZnJhbWVfdHlwZSkNCiAJCXJldHVybjsNCkBAIC0x MzM3LDggKzEzNzksNyBAQCBzdGF0aWMgaW50IHNldF9jcW1fcnNzaV9jb25maWcoc3RydWN0IHdp cGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiBzdGF0aWMgaW50IGR1bXBfc3Rh dGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KIAkJCWlu dCBpZHgsIHU4ICptYWMsIHN0cnVjdCBzdGF0aW9uX2luZm8gKnNpbmZvKQ0KIHsNCi0Jc3RydWN0 IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYg KnZpZiA9IG5ldGRldl9wcml2KHByaXYtPmRldik7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0g bmV0ZGV2X3ByaXYoZGV2KTsNCiAJaW50IHJldDsNCiANCiAJaWYgKGlkeCAhPSAwKQ0KQEAgLTEz NTAsMTUgKzEzOTEsMTUgQEAgc3RhdGljIGludCBkdW1wX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3 aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiAJaWYgKHJldCkNCiAJCXJldHVybiByZXQ7 DQogDQotCW1lbWNweShtYWMsIHByaXYtPmFzc29jaWF0ZWRfYnNzLCBFVEhfQUxFTik7DQorCW1l bWNweShtYWMsIHZpZi0+cHJpdi5hc3NvY2lhdGVkX2JzcywgRVRIX0FMRU4pOw0KIAlyZXR1cm4g MDsNCiB9DQogDQogc3RhdGljIGludCBzZXRfcG93ZXJfbWdtdChzdHJ1Y3Qgd2lwaHkgKndpcGh5 LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0KIAkJCSAgYm9vbCBlbmFibGVkLCBpbnQgdGltZW91 dCkNCiB7DQotCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCi0J c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT5kZXYpOw0KKwlzdHJ1Y3Qg d2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KGRldik7DQorCXN0cnVjdCB3aWxjX3ByaXYgKnBy aXYgPSAmdmlmLT5wcml2Ow0KIA0KIAlpZiAoIXByaXYtPmhpZl9kcnYpDQogCQlyZXR1cm4gLUVJ TzsNCkBAIC0xMzczLDkgKzE0MTQsOSBAQCBzdGF0aWMgaW50IGNoYW5nZV92aXJ0dWFsX2ludGYo c3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiAJCQkgICAgICAg ZW51bSBubDgwMjExX2lmdHlwZSB0eXBlLA0KIAkJCSAgICAgICBzdHJ1Y3QgdmlmX3BhcmFtcyAq cGFyYW1zKQ0KIHsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkp Ow0KKwlzdHJ1Y3Qgd2lsYyAqd2wgPSB3aXBoeV9wcml2KHdpcGh5KTsNCiAJc3RydWN0IHdpbGNf dmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KLQlzdHJ1Y3Qgd2lsYyAqd2wgPSB2aWYtPndp bGM7DQorCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSAmdmlmLT5wcml2Ow0KIA0KIAlwcml2LT5w MnAubG9jYWxfcmFuZG9tID0gMHgwMTsNCiAJcHJpdi0+cDJwLnJlY3ZfcmFuZG9tID0gMHgwMDsN CkBAIC0xMzg3LDggKzE0MjgsMTAgQEAgc3RhdGljIGludCBjaGFuZ2VfdmlydHVhbF9pbnRmKHN0 cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCWNhc2UgTkw4MDIx MV9JRlRZUEVfU1RBVElPTjoNCiAJCXZpZi0+Y29ubmVjdGluZyA9IGZhbHNlOw0KIAkJZGV2LT5p ZWVlODAyMTFfcHRyLT5pZnR5cGUgPSB0eXBlOw0KLQkJcHJpdi0+d2Rldi0+aWZ0eXBlID0gdHlw ZTsNCisJCXByaXYtPndkZXYuaWZ0eXBlID0gdHlwZTsNCiAJCXZpZi0+bW9uaXRvcl9mbGFnID0g MDsNCisJCWlmICh2aWYtPmlmdHlwZSA9PSBXSUxDX0FQX01PREUgfHwgdmlmLT5pZnR5cGUgPT0g V0lMQ19HT19NT0RFKQ0KKwkJCXdpbGNfd2ZpX2RlaW5pdF9tb25faW50ZXJmYWNlKHdsLCB0cnVl KTsNCiAJCXZpZi0+aWZ0eXBlID0gV0lMQ19TVEFUSU9OX01PREU7DQogCQl3aWxjX3NldF9vcGVy YXRpb25fbW9kZSh2aWYsIFdJTENfU1RBVElPTl9NT0RFKTsNCiANCkBAIC0xNDAyLDcgKzE0NDUs NyBAQCBzdGF0aWMgaW50IGNoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSwg c3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiAJY2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfQ0xJRU5U Og0KIAkJdmlmLT5jb25uZWN0aW5nID0gZmFsc2U7DQogCQlkZXYtPmllZWU4MDIxMV9wdHItPmlm dHlwZSA9IHR5cGU7DQotCQlwcml2LT53ZGV2LT5pZnR5cGUgPSB0eXBlOw0KKwkJcHJpdi0+d2Rl di5pZnR5cGUgPSB0eXBlOw0KIAkJdmlmLT5tb25pdG9yX2ZsYWcgPSAwOw0KIAkJdmlmLT5pZnR5 cGUgPSBXSUxDX0NMSUVOVF9NT0RFOw0KIAkJd2lsY19zZXRfb3BlcmF0aW9uX21vZGUodmlmLCBX SUxDX1NUQVRJT05fTU9ERSk7DQpAQCAtMTQxNCw3ICsxNDU3LDcgQEAgc3RhdGljIGludCBjaGFu Z2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsDQogCWNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6DQogCQl3bC0+ZW5hYmxlX3BzID0gZmFsc2U7 DQogCQlkZXYtPmllZWU4MDIxMV9wdHItPmlmdHlwZSA9IHR5cGU7DQotCQlwcml2LT53ZGV2LT5p ZnR5cGUgPSB0eXBlOw0KKwkJcHJpdi0+d2Rldi5pZnR5cGUgPSB0eXBlOw0KIAkJdmlmLT5pZnR5 cGUgPSBXSUxDX0FQX01PREU7DQogDQogCQlpZiAod2wtPmluaXRpYWxpemVkKSB7DQpAQCAtMTQz MSw3ICsxNDc0LDcgQEAgc3RhdGljIGludCBjaGFuZ2VfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBo eSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCQkJICBqaWZmaWVzICsgbXNlY3Nf dG9famlmZmllcyhXSUxDX0lQX1RJTUVPVVRfTVMpKTsNCiAJCXdpbGNfc2V0X29wZXJhdGlvbl9t b2RlKHZpZiwgV0lMQ19BUF9NT0RFKTsNCiAJCWRldi0+aWVlZTgwMjExX3B0ci0+aWZ0eXBlID0g dHlwZTsNCi0JCXByaXYtPndkZXYtPmlmdHlwZSA9IHR5cGU7DQorCQlwcml2LT53ZGV2LmlmdHlw ZSA9IHR5cGU7DQogCQl2aWYtPmlmdHlwZSA9IFdJTENfR09fTU9ERTsNCiANCiAJCXdsLT5lbmFi bGVfcHMgPSBmYWxzZTsNCkBAIC0xNDUwLDE0ICsxNDkzLDEzIEBAIHN0YXRpYyBpbnQgc3RhcnRf YXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiAJCSAgICBz dHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnNldHRpbmdzKQ0KIHsNCiAJc3RydWN0IHdpbGNf dmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KLQlzdHJ1Y3Qgd2lsYyAqd2wgPSB2aWYtPndp bGM7DQogCWludCByZXQ7DQogDQogCXJldCA9IHNldF9jaGFubmVsKHdpcGh5LCAmc2V0dGluZ3Mt PmNoYW5kZWYpOw0KIAlpZiAocmV0ICE9IDApDQogCQluZXRkZXZfZXJyKGRldiwgIkVycm9yIGlu IHNldHRpbmcgY2hhbm5lbFxuIik7DQogDQotCXdpbGNfd2xhbl9zZXRfYnNzaWQoZGV2LCB3bC0+ dmlmW3ZpZi0+aWR4XS0+c3JjX2FkZHIsIFdJTENfQVBfTU9ERSk7DQorCXdpbGNfd2xhbl9zZXRf YnNzaWQoZGV2LCB2aWYtPnNyY19hZGRyLCBXSUxDX0FQX01PREUpOw0KIAl3aWxjX3NldF9wb3dl cl9tZ210KHZpZiwgMCwgMCk7DQogDQogCXJldHVybiB3aWxjX2FkZF9iZWFjb24odmlmLCBzZXR0 aW5ncy0+YmVhY29uX2ludGVydmFsLA0KQEAgLTE0NjcsOCArMTUwOSw3IEBAIHN0YXRpYyBpbnQg c3RhcnRfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCiBz dGF0aWMgaW50IGNoYW5nZV9iZWFjb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwNCiAJCQkgc3RydWN0IGNmZzgwMjExX2JlYWNvbl9kYXRhICpiZWFjb24pDQog ew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVj dCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCisJc3RydWN0IHdpbGNf dmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KIA0KIAlyZXR1cm4gd2lsY19hZGRfYmVhY29u KHZpZiwgMCwgMCwgYmVhY29uKTsNCiB9DQpAQCAtMTQ3Niw4ICsxNTE3LDcgQEAgc3RhdGljIGlu dCBjaGFuZ2VfYmVhY29uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsDQogc3RhdGljIGludCBzdG9wX2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpDQogew0KIAlpbnQgcmV0Ow0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0g d2lwaHlfcHJpdih3aXBoeSk7DQotCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYo cHJpdi0+ZGV2KTsNCisJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0K IA0KIAl3aWxjX3dsYW5fc2V0X2Jzc2lkKGRldiwgTlVMTCwgV0lMQ19BUF9NT0RFKTsNCiANCkBA IC0xNDkzLDggKzE1MzMsOCBAQCBzdGF0aWMgaW50IGFkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAq d2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQogCQkgICAgICAgY29uc3QgdTggKm1hYywg c3RydWN0IHN0YXRpb25fcGFyYW1ldGVycyAqcGFyYW1zKQ0KIHsNCiAJaW50IHJldCA9IDA7DQot CXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCiAJc3RydWN0IHdp bGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KKwlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2 ID0gJnZpZi0+cHJpdjsNCiANCiAJaWYgKHZpZi0+aWZ0eXBlID09IFdJTENfQVBfTU9ERSB8fCB2 aWYtPmlmdHlwZSA9PSBXSUxDX0dPX01PREUpIHsNCiAJCW1lbWNweShwcml2LT5hc3NvY19zdGFp bmZvLnN0YV9hc3NvY2lhdGVkX2Jzc1twYXJhbXMtPmFpZF0sIG1hYywNCkBAIC0xNTEzLDggKzE1 NTMsOCBAQCBzdGF0aWMgaW50IGRlbF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsDQogew0KIAljb25zdCB1OCAqbWFjID0gcGFyYW1zLT5tYWM7DQog CWludCByZXQgPSAwOw0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBo eSk7DQogCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTsNCisJc3RydWN0 IHdpbGNfcHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogCXN0cnVjdCBzdGFfaW5mbyAqaW5mbzsN CiANCiAJaWYgKCEodmlmLT5pZnR5cGUgPT0gV0lMQ19BUF9NT0RFIHx8IHZpZi0+aWZ0eXBlID09 IFdJTENfR09fTU9ERSkpDQpAQCAtMTU0NSw2MCArMTU4NSwxNTggQEAgc3RhdGljIGludCBjaGFu Z2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LA0K IAlyZXR1cm4gcmV0Ow0KIH0NCiANCitzdGF0aWMgaW50IHdpbGNfZ2V0X3ZpZl9mcm9tX3R5cGUo c3RydWN0IHdpbGMgKndsLCBpbnQgdHlwZSkNCit7DQorCWludCBpOw0KKw0KKwltdXRleF9sb2Nr KCZ3bC0+dmlmX211dGV4KTsNCisJZm9yIChpID0gMDsgaSA8IHdsLT52aWZfbnVtOyBpKyspIHsN CisJCWlmICh3bC0+dmlmW2ldLT5pZnR5cGUgPT0gdHlwZSkgew0KKwkJCW11dGV4X3VubG9jaygm d2wtPnZpZl9tdXRleCk7DQorCQkJcmV0dXJuIGk7DQorCQl9DQorCX0NCisJbXV0ZXhfdW5sb2Nr KCZ3bC0+dmlmX211dGV4KTsNCisNCisJcmV0dXJuIC1FSU5WQUw7DQorfQ0KKw0KIHN0YXRpYyBz dHJ1Y3Qgd2lyZWxlc3NfZGV2ICphZGRfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHks DQogCQkJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsDQogCQkJCQkgICAgIHVuc2lnbmVkIGNoYXIg bmFtZV9hc3NpZ25fdHlwZSwNCiAJCQkJCSAgICAgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlLA0K IAkJCQkJICAgICBzdHJ1Y3QgdmlmX3BhcmFtcyAqcGFyYW1zKQ0KIHsNCi0Jc3RydWN0IHdpbGNf cHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9 IG5ldGRldl9wcml2KHByaXYtPndkZXYtPm5ldGRldik7DQotCXN0cnVjdCBuZXRfZGV2aWNlICpu ZXdfaWZjOw0KKwlzdHJ1Y3Qgd2lsYyAqd2wgPSB3aXBoeV9wcml2KHdpcGh5KTsNCisJc3RydWN0 IHdpbGNfdmlmICp2aWY7DQorCXN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXY7DQorCWludCBpZnR5 cGU7DQorCWludCByZXQ7DQogDQogCWlmICh0eXBlID09IE5MODAyMTFfSUZUWVBFX01PTklUT1Ip IHsNCi0JCW5ld19pZmMgPSB3aWxjX3dmaV9pbml0X21vbl9pbnRlcmZhY2UodmlmLT53aWxjLCBu YW1lLA0KLQkJCQkJCSAgICAgIHZpZi0+bmRldik7DQotCQlpZiAobmV3X2lmYykgew0KLQkJCXZp ZiA9IG5ldGRldl9wcml2KHByaXYtPndkZXYtPm5ldGRldik7DQotCQkJdmlmLT5tb25pdG9yX2Zs YWcgPSAxOw0KKwkJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7DQorCQlpbnQgYXBfaW5kZXggPSB3 aWxjX2dldF92aWZfZnJvbV90eXBlKHdsLCBXSUxDX0FQX01PREUpOw0KKw0KKwkJaWYgKGFwX2lu ZGV4IDwgMCkgew0KKwkJCWFwX2luZGV4ID0gd2lsY19nZXRfdmlmX2Zyb21fdHlwZSh3bCwgV0lM Q19HT19NT0RFKTsNCisJCQlpZiAoYXBfaW5kZXggPCAwKQ0KKwkJCQlnb3RvIHZhbGlkYXRlX2lu dGVyZmFjZTsNCiAJCX0NCisNCisJCXZpZiAgPSB3bC0+dmlmW2FwX2luZGV4XTsNCisJCWlmICh2 aWYtPm1vbml0b3JfZmxhZykNCisJCQlnb3RvIHZhbGlkYXRlX2ludGVyZmFjZTsNCisNCisJCW5k ZXYgPSB3aWxjX3dmaV9pbml0X21vbl9pbnRlcmZhY2Uod2wsIG5hbWUsIHZpZi0+bmRldik7DQor CQlpZiAobmRldikNCisJCQl2aWYtPm1vbml0b3JfZmxhZyA9IDE7DQorCQllbHNlDQorCQkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQorDQorCQl3ZGV2ID0gJnZpZi0+cHJpdi53ZGV2Ow0KKwkJ cmV0dXJuIHdkZXY7DQorCX0NCisNCit2YWxpZGF0ZV9pbnRlcmZhY2U6DQorCW11dGV4X2xvY2so JndsLT52aWZfbXV0ZXgpOw0KKwlpZiAod2wtPnZpZl9udW0gPT0gV0lMQ19OVU1fQ09OQ1VSUkVO VF9JRkMpIHsNCisJCXByX2VycigiUmVhY2hlZCBtYXhpbXVtIG51bWJlciBvZiBpbnRlcmZhY2Vc biIpOw0KKwkJcmV0ID0gLUVJTlZBTDsNCisJCWdvdG8gb3V0X2VycjsNCisJfQ0KKw0KKwlzd2l0 Y2ggKHR5cGUpIHsNCisJY2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOg0KKwkJaWZ0eXBlID0g V0lMQ19TVEFUSU9OX01PREU7DQorCQlicmVhazsNCisJY2FzZSBOTDgwMjExX0lGVFlQRV9BUDoN CisJCWlmdHlwZSA9IFdJTENfQVBfTU9ERTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcmV0 ID0gLUVPUE5PVFNVUFA7DQorCQlnb3RvIG91dF9lcnI7DQorCX0NCisNCisJdmlmID0gd2lsY19u ZXRkZXZfaWZjX2luaXQod2wsIG5hbWUsIGlmdHlwZSwgdHlwZSwgdHJ1ZSk7DQorCWlmIChJU19F UlIodmlmKSkgew0KKwkJcmV0ID0gUFRSX0VSUih2aWYpOw0KKwkJZ290byBvdXRfZXJyOw0KIAl9 DQotCXJldHVybiBwcml2LT53ZGV2Ow0KKw0KKwltdXRleF91bmxvY2soJndsLT52aWZfbXV0ZXgp Ow0KKw0KKwlyZXR1cm4gJnZpZi0+cHJpdi53ZGV2Ow0KKw0KK291dF9lcnI6DQorCW11dGV4X3Vu bG9jaygmd2wtPnZpZl9tdXRleCk7DQorCXJldHVybiBFUlJfUFRSKHJldCk7DQogfQ0KIA0KIHN0 YXRpYyBpbnQgZGVsX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2ly ZWxlc3NfZGV2ICp3ZGV2KQ0KIHsNCisJc3RydWN0IHdpbGMgKndsID0gd2lwaHlfcHJpdih3aXBo eSk7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmOw0KKwlpbnQgaTsNCisNCisJaWYgKHdkZXYtPmlm dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCB8fA0KKwkgICAgd2Rldi0+aWZ0eXBlID09IE5MODAy MTFfSUZUWVBFX1AyUF9HTykNCisJCXdpbGNfd2ZpX2RlaW5pdF9tb25faW50ZXJmYWNlKHdsLCB0 cnVlKTsNCisJdmlmID0gbmV0ZGV2X3ByaXYod2Rldi0+bmV0ZGV2KTsNCisJY2ZnODAyMTFfc3Rv cF9pZmFjZSh3aXBoeSwgd2RldiwgR0ZQX0tFUk5FTCk7DQorCXVucmVnaXN0ZXJfbmV0ZGV2aWNl KHZpZi0+bmRldik7DQorCXZpZi0+bW9uaXRvcl9mbGFnID0gMDsNCisNCisJbXV0ZXhfbG9jaygm d2wtPnZpZl9tdXRleCk7DQorCXdpbGNfc2V0X3dmaV9kcnZfaGFuZGxlcih2aWYsIDAsIDAsIDAp Ow0KKwlmb3IgKGkgPSB2aWYtPmlkeDsgaSA8IHdsLT52aWZfbnVtIDsgaSsrKSB7DQorCQlpZiAo KGkgKyAxKSA+PSB3bC0+dmlmX251bSkgew0KKwkJCXdsLT52aWZbaV0gPSBOVUxMOw0KKwkJfSBl bHNlIHsNCisJCQl2aWYgPSB3bC0+dmlmW2kgKyAxXTsNCisJCQl2aWYtPmlmY19pZCA9IGk7DQor CQkJdmlmLT5pZHggPSBpOw0KKwkJCXdsLT52aWZbaV0gPSB2aWY7DQorCQkJd2lsY19zZXRfd2Zp X2Rydl9oYW5kbGVyKHZpZiwgd2lsY19nZXRfdmlmX2lkeCh2aWYpLA0KKwkJCQkJCSB2aWYtPmlm dHlwZSwgdmlmLT5pZmNfaWQpOw0KKwkJfQ0KKwl9DQorCXdsLT52aWZfbnVtLS07DQorCW11dGV4 X3VubG9jaygmd2wtPnZpZl9tdXRleCk7DQorDQogCXJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMg aW50IHdpbGNfc3VzcGVuZChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgY2ZnODAyMTFfd293 bGFuICp3b3cpDQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gd2lwaHlfcHJpdih3aXBo eSk7DQotCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYocHJpdi0+ZGV2KTsNCisJ c3RydWN0IHdpbGMgKndsID0gd2lwaHlfcHJpdih3aXBoeSk7DQogDQotCWlmICghd293ICYmIHdp bGNfd2xhbl9nZXRfbnVtX2Nvbm5faWZjcyh2aWYtPndpbGMpKQ0KLQkJdmlmLT53aWxjLT5zdXNw ZW5kX2V2ZW50ID0gdHJ1ZTsNCisJaWYgKCF3b3cgJiYgd2lsY193bGFuX2dldF9udW1fY29ubl9p ZmNzKHdsKSkNCisJCXdsLT5zdXNwZW5kX2V2ZW50ID0gdHJ1ZTsNCiAJZWxzZQ0KLQkJdmlmLT53 aWxjLT5zdXNwZW5kX2V2ZW50ID0gZmFsc2U7DQorCQl3bC0+c3VzcGVuZF9ldmVudCA9IGZhbHNl Ow0KIA0KIAlyZXR1cm4gMDsNCiB9DQogDQogc3RhdGljIGludCB3aWxjX3Jlc3VtZShzdHJ1Y3Qg d2lwaHkgKndpcGh5KQ0KIHsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYo d2lwaHkpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHByaXYtPmRldik7 DQotDQotCW5ldGRldl9pbmZvKHZpZi0+bmRldiwgImNmZyByZXN1bWVcbiIpOw0KIAlyZXR1cm4g MDsNCiB9DQogDQogc3RhdGljIHZvaWQgd2lsY19zZXRfd2FrZXVwKHN0cnVjdCB3aXBoeSAqd2lw aHksIGJvb2wgZW5hYmxlZCkNCiB7DQotCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9w cml2KHdpcGh5KTsNCi0Jc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT5k ZXYpOw0KKwlzdHJ1Y3Qgd2lsYyAqd2wgPSB3aXBoeV9wcml2KHdpcGh5KTsNCisJc3RydWN0IHdp bGNfdmlmICp2aWY7DQorDQorCW11dGV4X2xvY2soJndsLT52aWZfbXV0ZXgpOw0KKwl2aWYgPSB3 aWxjX2dldF93bF90b192aWYod2wpOw0KKwlpZiAoSVNfRVJSKHZpZikpIHsNCisJCW11dGV4X3Vu bG9jaygmd2wtPnZpZl9tdXRleCk7DQorCQlyZXR1cm47DQorCX0NCiANCiAJbmV0ZGV2X2luZm8o dmlmLT5uZGV2LCAiY2ZnIHNldCB3YWtlIHVwID0gJWRcbiIsIGVuYWJsZWQpOw0KKwltdXRleF91 bmxvY2soJndsLT52aWZfbXV0ZXgpOw0KIH0NCiANCiBzdGF0aWMgaW50IHNldF90eF9wb3dlcihz dHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LA0KQEAgLTE2MDYs OCArMTc0NCw3IEBAIHN0YXRpYyBpbnQgc2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHks IHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsDQogew0KIAlpbnQgcmV0Ow0KIAlzMzIgdHhfcG93 ZXIgPSBNQk1fVE9fREJNKG1ibSk7DQotCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9w cml2KHdpcGh5KTsNCi0Jc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT5k ZXYpOw0KKwlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHdkZXYtPm5ldGRldik7 DQogDQogCWlmICh0eF9wb3dlciA8IDApDQogCQl0eF9wb3dlciA9IDA7DQpAQCAtMTYyNCw4ICsx NzYxLDcgQEAgc3RhdGljIGludCBnZXRfdHhfcG93ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3Ry dWN0IHdpcmVsZXNzX2RldiAqd2RldiwNCiAJCQlpbnQgKmRibSkNCiB7DQogCWludCByZXQ7DQot CXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTsNCi0Jc3RydWN0IHdp bGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihwcml2LT5kZXYpOw0KKwlzdHJ1Y3Qgd2lsY192aWYg KnZpZiA9IG5ldGRldl9wcml2KHdkZXYtPm5ldGRldik7DQogCXN0cnVjdCB3aWxjICp3bCA9IHZp Zi0+d2lsYzsNCiANCiAJLyogSWYgZmlybXdhcmUgaXMgbm90IHN0YXJ0ZWQsIHJldHVybi4gKi8N CkBAIC0xNjgyLDk4ICsxODE4LDEzNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNmZzgwMjExX29w cyB3aWxjX2NmZzgwMjExX29wcyA9IHsNCiANCiB9Ow0KIA0KLXN0YXRpYyBzdHJ1Y3Qgd2lyZWxl c3NfZGV2ICp3aWxjX3dmaV9jZmdfYWxsb2Modm9pZCkNCitzdGF0aWMgdm9pZCB3bGFuX2luaXRf bG9ja3Moc3RydWN0IHdpbGMgKndsKQ0KIHsNCi0Jc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldjsN CisJbXV0ZXhfaW5pdCgmd2wtPmhpZl9jcyk7DQorCW11dGV4X2luaXQoJndsLT5yeHFfY3MpOw0K KwltdXRleF9pbml0KCZ3bC0+Y2ZnX2NtZF9sb2NrKTsNCisJbXV0ZXhfaW5pdCgmd2wtPnZpZl9t dXRleCk7DQorDQorCXNwaW5fbG9ja19pbml0KCZ3bC0+dHhxX3NwaW5sb2NrKTsNCisJbXV0ZXhf aW5pdCgmd2wtPnR4cV9hZGRfdG9faGVhZF9jcyk7DQorDQorCWluaXRfY29tcGxldGlvbigmd2wt PnR4cV9ldmVudCk7DQorCWluaXRfY29tcGxldGlvbigmd2wtPmNmZ19ldmVudCk7DQorCWluaXRf Y29tcGxldGlvbigmd2wtPnN5bmNfZXZlbnQpOw0KKwlpbml0X2NvbXBsZXRpb24oJndsLT50eHFf dGhyZWFkX3N0YXJ0ZWQpOw0KK30NCiANCi0Jd2RldiA9IGt6YWxsb2Moc2l6ZW9mKCp3ZGV2KSwg R0ZQX0tFUk5FTCk7DQotCWlmICghd2RldikNCi0JCWdvdG8gb3V0Ow0KK2ludCB3aWxjX2NmZzgw MjExX2luaXQoc3RydWN0IHdpbGMgKip3aWxjLCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBpb190 eXBlLA0KKwkJICAgICAgIGNvbnN0IHN0cnVjdCB3aWxjX2hpZl9mdW5jICpvcHMpDQorew0KKwlz dHJ1Y3Qgd2lsYyAqd2w7DQorCXN0cnVjdCB3aWxjX3ZpZiAqdmlmOw0KKwlpbnQgcmV0Ow0KIA0K LQl3ZGV2LT53aXBoeSA9IHdpcGh5X25ldygmd2lsY19jZmc4MDIxMV9vcHMsIHNpemVvZihzdHJ1 Y3Qgd2lsY19wcml2KSk7DQotCWlmICghd2Rldi0+d2lwaHkpDQotCQlnb3RvIGZyZWVfbWVtOw0K Kwl3bCA9IHdpbGNfY3JlYXRlX3dpcGh5KGRldik7DQorCWlmICghd2wpDQorCQlyZXR1cm4gLUVJ TlZBTDsNCiANCi0JcmV0dXJuIHdkZXY7DQorCXJldCA9IHdpbGNfd2xhbl9jZmdfaW5pdCh3bCk7 DQorCWlmIChyZXQpDQorCQlnb3RvIGZyZWVfd2w7DQorDQorCSp3aWxjID0gd2w7DQorCXdsLT5p b190eXBlID0gaW9fdHlwZTsNCisJd2wtPmhpZl9mdW5jID0gb3BzOw0KKwl3bC0+ZW5hYmxlX3Bz ID0gZmFsc2U7DQorCXdsLT5jaGlwX3BzX3N0YXRlID0gV0lMQ19DSElQX1dBS0VEVVA7DQorCUlO SVRfTElTVF9IRUFEKCZ3bC0+dHhxX2hlYWQubGlzdCk7DQorCUlOSVRfTElTVF9IRUFEKCZ3bC0+ cnhxX2hlYWQubGlzdCk7DQorDQorCXdsLT5oaWZfd29ya3F1ZXVlID0gY3JlYXRlX3NpbmdsZXRo cmVhZF93b3JrcXVldWUoIldJTENfd3EiKTsNCisJaWYgKCF3bC0+aGlmX3dvcmtxdWV1ZSkgew0K KwkJcmV0ID0gLUVOT01FTTsNCisJCWdvdG8gZnJlZV9jZmc7DQorCX0NCisJdmlmID0gd2lsY19u ZXRkZXZfaWZjX2luaXQod2wsICJ3bGFuJWQiLCBXSUxDX1NUQVRJT05fTU9ERSwNCisJCQkJICAg Tkw4MDIxMV9JRlRZUEVfU1RBVElPTiwgZmFsc2UpOw0KKwlpZiAoSVNfRVJSKHZpZikpIHsNCisJ CXJldCA9IFBUUl9FUlIodmlmKTsNCisJCWdvdG8gZnJlZV9ocTsNCisJfQ0KIA0KLWZyZWVfbWVt Og0KLQlrZnJlZSh3ZGV2KTsNCi1vdXQ6DQotCXJldHVybiBOVUxMOw0KKwl3bGFuX2luaXRfbG9j a3Mod2wpOw0KKw0KKwlyZXR1cm4gMDsNCisNCitmcmVlX2hxOg0KKwlkZXN0cm95X3dvcmtxdWV1 ZSh3bC0+aGlmX3dvcmtxdWV1ZSk7DQorDQorZnJlZV9jZmc6DQorCXdpbGNfd2xhbl9jZmdfZGVp bml0KHdsKTsNCisNCitmcmVlX3dsOg0KKwl3aXBoeV91bnJlZ2lzdGVyKHdsLT53aXBoeSk7DQor CXdpcGh5X2ZyZWUod2wtPndpcGh5KTsNCisJcmV0dXJuIHJldDsNCiB9DQorRVhQT1JUX1NZTUJP TF9HUEwod2lsY19jZmc4MDIxMV9pbml0KTsNCiANCi1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3aWxj X2NyZWF0ZV93aXBoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LA0KLQkJCQkgICAgICAgc3RydWN0 IGRldmljZSAqZGV2KQ0KK3N0cnVjdCB3aWxjICp3aWxjX2NyZWF0ZV93aXBoeShzdHJ1Y3QgZGV2 aWNlICpkZXYpDQogew0KLQlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2Ow0KLQlzdHJ1Y3Qgd2lyZWxl c3NfZGV2ICp3ZGV2Ow0KKwlzdHJ1Y3Qgd2lwaHkgKndpcGh5Ow0KKwlzdHJ1Y3Qgd2lsYyAqd2w7 DQogCWludCByZXQ7DQogDQotCXdkZXYgPSB3aWxjX3dmaV9jZmdfYWxsb2MoKTsNCi0JaWYgKCF3 ZGV2KSB7DQotCQluZXRkZXZfZXJyKG5ldCwgIndpcGh5IG5ldyBhbGxvY2F0ZSBmYWlsZWRcbiIp Ow0KKwl3aXBoeSA9IHdpcGh5X25ldygmd2lsY19jZmc4MDIxMV9vcHMsIHNpemVvZigqd2wpKTsN CisJaWYgKCF3aXBoeSkNCiAJCXJldHVybiBOVUxMOw0KLQl9DQogDQotCXByaXYgPSB3ZGV2X3By aXYod2Rldik7DQotCXByaXYtPndkZXYgPSB3ZGV2Ow0KKwl3bCA9IHdpcGh5X3ByaXYod2lwaHkp Ow0KIA0KLQltZW1jcHkocHJpdi0+Yml0cmF0ZXMsIHdpbGNfYml0cmF0ZXMsIHNpemVvZih3aWxj X2JpdHJhdGVzKSk7DQotCW1lbWNweShwcml2LT5jaGFubmVscywgd2lsY18yZ2h6X2NoYW5uZWxz LCBzaXplb2Yod2lsY18yZ2h6X2NoYW5uZWxzKSk7DQotCXByaXYtPmJhbmQuYml0cmF0ZXMgPSBw cml2LT5iaXRyYXRlczsNCi0JcHJpdi0+YmFuZC5uX2JpdHJhdGVzID0gQVJSQVlfU0laRShwcml2 LT5iaXRyYXRlcyk7DQotCXByaXYtPmJhbmQuY2hhbm5lbHMgPSBwcml2LT5jaGFubmVsczsNCi0J cHJpdi0+YmFuZC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRSh3aWxjXzJnaHpfY2hhbm5lbHMpOw0K KwltZW1jcHkod2wtPmJpdHJhdGVzLCB3aWxjX2JpdHJhdGVzLCBzaXplb2Yod2lsY19iaXRyYXRl cykpOw0KKwltZW1jcHkod2wtPmNoYW5uZWxzLCB3aWxjXzJnaHpfY2hhbm5lbHMsIHNpemVvZih3 aWxjXzJnaHpfY2hhbm5lbHMpKTsNCisJd2wtPmJhbmQuYml0cmF0ZXMgPSB3bC0+Yml0cmF0ZXM7 DQorCXdsLT5iYW5kLm5fYml0cmF0ZXMgPSBBUlJBWV9TSVpFKHdsLT5iaXRyYXRlcyk7DQorCXds LT5iYW5kLmNoYW5uZWxzID0gd2wtPmNoYW5uZWxzOw0KKwl3bC0+YmFuZC5uX2NoYW5uZWxzID0g QVJSQVlfU0laRSh3aWxjXzJnaHpfY2hhbm5lbHMpOw0KIA0KLQlwcml2LT5iYW5kLmh0X2NhcC5o dF9zdXBwb3J0ZWQgPSAxOw0KLQlwcml2LT5iYW5kLmh0X2NhcC5jYXAgfD0gKDEgPDwgSUVFRTgw MjExX0hUX0NBUF9SWF9TVEJDX1NISUZUKTsNCi0JcHJpdi0+YmFuZC5odF9jYXAubWNzLnJ4X21h c2tbMF0gPSAweGZmOw0KLQlwcml2LT5iYW5kLmh0X2NhcC5hbXBkdV9mYWN0b3IgPSBJRUVFODAy MTFfSFRfTUFYX0FNUERVXzhLOw0KLQlwcml2LT5iYW5kLmh0X2NhcC5hbXBkdV9kZW5zaXR5ID0g SUVFRTgwMjExX0hUX01QRFVfREVOU0lUWV9OT05FOw0KKwl3bC0+YmFuZC5odF9jYXAuaHRfc3Vw cG9ydGVkID0gMTsNCisJd2wtPmJhbmQuaHRfY2FwLmNhcCB8PSAoMSA8PCBJRUVFODAyMTFfSFRf Q0FQX1JYX1NUQkNfU0hJRlQpOw0KKwl3bC0+YmFuZC5odF9jYXAubWNzLnJ4X21hc2tbMF0gPSAw eGZmOw0KKwl3bC0+YmFuZC5odF9jYXAuYW1wZHVfZmFjdG9yID0gSUVFRTgwMjExX0hUX01BWF9B TVBEVV84SzsNCisJd2wtPmJhbmQuaHRfY2FwLmFtcGR1X2RlbnNpdHkgPSBJRUVFODAyMTFfSFRf TVBEVV9ERU5TSVRZX05PTkU7DQogDQotCXdkZXYtPndpcGh5LT5iYW5kc1tOTDgwMjExX0JBTkRf MkdIWl0gPSAmcHJpdi0+YmFuZDsNCisJd2lwaHktPmJhbmRzW05MODAyMTFfQkFORF8yR0haXSA9 ICZ3bC0+YmFuZDsNCiANCi0Jd2Rldi0+d2lwaHktPm1heF9zY2FuX3NzaWRzID0gV0lMQ19NQVhf TlVNX1BST0JFRF9TU0lEOw0KKwl3aXBoeS0+bWF4X3NjYW5fc3NpZHMgPSBXSUxDX01BWF9OVU1f UFJPQkVEX1NTSUQ7DQogI2lmZGVmIENPTkZJR19QTQ0KLQl3ZGV2LT53aXBoeS0+d293bGFuID0g Jndvd2xhbl9zdXBwb3J0Ow0KKwl3aXBoeS0+d293bGFuID0gJndvd2xhbl9zdXBwb3J0Ow0KICNl bmRpZg0KLQl3ZGV2LT53aXBoeS0+bWF4X251bV9wbWtpZHMgPSBXSUxDX01BWF9OVU1fUE1LSURT Ow0KLQl3ZGV2LT53aXBoeS0+bWF4X3NjYW5faWVfbGVuID0gMTAwMDsNCi0Jd2Rldi0+d2lwaHkt PnNpZ25hbF90eXBlID0gQ0ZHODAyMTFfU0lHTkFMX1RZUEVfTUJNOw0KLQltZW1jcHkocHJpdi0+ Y2lwaGVyX3N1aXRlcywgd2lsY19jaXBoZXJfc3VpdGVzLA0KKwl3aXBoeS0+bWF4X251bV9wbWtp ZHMgPSBXSUxDX01BWF9OVU1fUE1LSURTOw0KKwl3aXBoeS0+bWF4X3NjYW5faWVfbGVuID0gMTAw MDsNCisJd2lwaHktPnNpZ25hbF90eXBlID0gQ0ZHODAyMTFfU0lHTkFMX1RZUEVfTUJNOw0KKwlt ZW1jcHkod2wtPmNpcGhlcl9zdWl0ZXMsIHdpbGNfY2lwaGVyX3N1aXRlcywNCiAJICAgICAgIHNp emVvZih3aWxjX2NpcGhlcl9zdWl0ZXMpKTsNCi0Jd2Rldi0+d2lwaHktPmNpcGhlcl9zdWl0ZXMg PSBwcml2LT5jaXBoZXJfc3VpdGVzOw0KLQl3ZGV2LT53aXBoeS0+bl9jaXBoZXJfc3VpdGVzID0g QVJSQVlfU0laRSh3aWxjX2NpcGhlcl9zdWl0ZXMpOw0KLQl3ZGV2LT53aXBoeS0+bWdtdF9zdHlw ZXMgPSB3aWxjX3dmaV9jZmc4MDIxMV9tZ210X3R5cGVzOw0KLQ0KLQl3ZGV2LT53aXBoeS0+bWF4 X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uID0gNTAwOw0KLQl3ZGV2LT53aXBoeS0+aW50ZXJm YWNlX21vZGVzID0gQklUKE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHwNCi0JCQkJCUJJVChOTDgw MjExX0lGVFlQRV9BUCkgfA0KLQkJCQkJQklUKE5MODAyMTFfSUZUWVBFX01PTklUT1IpIHwNCi0J CQkJCUJJVChOTDgwMjExX0lGVFlQRV9QMlBfR08pIHwNCi0JCQkJCUJJVChOTDgwMjExX0lGVFlQ RV9QMlBfQ0xJRU5UKTsNCi0Jd2Rldi0+d2lwaHktPmZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX1JF TUFJTl9PTl9DSEFOTkVMOw0KLQl3ZGV2LT5pZnR5cGUgPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9O Ow0KLQ0KLQlzZXRfd2lwaHlfZGV2KHdkZXYtPndpcGh5LCBkZXYpOw0KLQ0KLQlyZXQgPSB3aXBo eV9yZWdpc3Rlcih3ZGV2LT53aXBoeSk7DQorCXdpcGh5LT5jaXBoZXJfc3VpdGVzID0gd2wtPmNp cGhlcl9zdWl0ZXM7DQorCXdpcGh5LT5uX2NpcGhlcl9zdWl0ZXMgPSBBUlJBWV9TSVpFKHdpbGNf Y2lwaGVyX3N1aXRlcyk7DQorCXdpcGh5LT5tZ210X3N0eXBlcyA9IHdpbGNfd2ZpX2NmZzgwMjEx X21nbXRfdHlwZXM7DQorDQorCXdpcGh5LT5tYXhfcmVtYWluX29uX2NoYW5uZWxfZHVyYXRpb24g PSA1MDA7DQorCXdpcGh5LT5pbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RB VElPTikgfA0KKwkJCQlCSVQoTkw4MDIxMV9JRlRZUEVfQVApIHwNCisJCQkJQklUKE5MODAyMTFf SUZUWVBFX01PTklUT1IpIHwNCisJCQkJQklUKE5MODAyMTFfSUZUWVBFX1AyUF9HTykgfA0KKwkJ CQlCSVQoTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVCk7DQorCXdpcGh5LT5mbGFncyB8PSBXSVBI WV9GTEFHX0hBU19SRU1BSU5fT05fQ0hBTk5FTDsNCisNCisJc2V0X3dpcGh5X2Rldih3aXBoeSwg ZGV2KTsNCisJd2wtPndpcGh5ID0gd2lwaHk7DQorCXJldCA9IHdpcGh5X3JlZ2lzdGVyKHdpcGh5 KTsNCiAJaWYgKHJldCkgew0KLQkJbmV0ZGV2X2VycihuZXQsICJDYW5ub3QgcmVnaXN0ZXIgd2lw aHkgZGV2aWNlXG4iKTsNCi0JCXdpcGh5X2ZyZWUod2Rldi0+d2lwaHkpOw0KLQkJa2ZyZWUod2Rl dik7DQorCQl3aXBoeV9mcmVlKHdpcGh5KTsNCiAJCXJldHVybiBOVUxMOw0KIAl9DQotDQotCXBy aXYtPmRldiA9IG5ldDsNCi0JcmV0dXJuIHdkZXY7DQorCXJldHVybiB3bDsNCiB9DQogDQogaW50 IHdpbGNfaW5pdF9ob3N0X2ludChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KQ0KIHsNCiAJaW50IHJl dDsNCi0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdkZXZfcHJpdihuZXQtPmllZWU4MDIxMV9w dHIpOw0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHByaXYtPmRldik7DQor CXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYobmV0KTsNCisJc3RydWN0IHdpbGNf cHJpdiAqcHJpdiA9ICZ2aWYtPnByaXY7DQogDQogCXRpbWVyX3NldHVwKCZ2aWYtPmR1cmluZ19p cF90aW1lciwgY2xlYXJfZHVyaW5nX2lwLCAwKTsNCiANCkBAIC0xNzkwLDggKzE5NjUsOCBAQCBp bnQgd2lsY19pbml0X2hvc3RfaW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpDQogdm9pZCB3aWxj X2RlaW5pdF9ob3N0X2ludChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KQ0KIHsNCiAJaW50IHJldDsN Ci0Jc3RydWN0IHdpbGNfcHJpdiAqcHJpdiA9IHdkZXZfcHJpdihuZXQtPmllZWU4MDIxMV9wdHIp Ow0KLQlzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHByaXYtPmRldik7DQorCXN0 cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYobmV0KTsNCisJc3RydWN0IHdpbGNfcHJp diAqcHJpdiA9ICZ2aWYtPnByaXY7DQogDQogCXByaXYtPnAycF9saXN0ZW5fc3RhdGUgPSBmYWxz ZTsNCiANCkBAIC0xODA0LDE5ICsxOTc5LDMgQEAgdm9pZCB3aWxjX2RlaW5pdF9ob3N0X2ludChz dHJ1Y3QgbmV0X2RldmljZSAqbmV0KQ0KIAkJbmV0ZGV2X2VycihuZXQsICJFcnJvciB3aGlsZSBk ZWluaXRpYWxpemluZyBob3N0IGludGVyZmFjZVxuIik7DQogfQ0KIA0KLXZvaWQgd2lsY19mcmVl X3dpcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpDQotew0KLQlpZiAoIW5ldCkNCi0JCXJldHVy bjsNCi0NCi0JaWYgKCFuZXQtPmllZWU4MDIxMV9wdHIpDQotCQlyZXR1cm47DQotDQotCWlmICgh bmV0LT5pZWVlODAyMTFfcHRyLT53aXBoeSkNCi0JCXJldHVybjsNCi0NCi0Jd2lwaHlfdW5yZWdp c3RlcihuZXQtPmllZWU4MDIxMV9wdHItPndpcGh5KTsNCi0NCi0Jd2lwaHlfZnJlZShuZXQtPmll ZWU4MDIxMV9wdHItPndpcGh5KTsNCi0Ja2ZyZWUobmV0LT5pZWVlODAyMTFfcHRyKTsNCi19DQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfd2ZpX2NmZ29wZXJhdGlv bnMuaCBiL2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC93aWxjX3dmaV9jZmdvcGVyYXRpb25zLmgN CmluZGV4IDMxZGZhMWYuLjIzNGZhYWEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2ls YzEwMDAvd2lsY193ZmlfY2Znb3BlcmF0aW9ucy5oDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2ls YzEwMDAvd2lsY193ZmlfY2Znb3BlcmF0aW9ucy5oDQpAQCAtOCwxNyArOCwyMCBAQA0KICNkZWZp bmUgTk1fV0ZJX0NGR09QRVJBVElPTlMNCiAjaW5jbHVkZSAid2lsY193ZmlfbmV0ZGV2aWNlLmgi DQogDQotc3RydWN0IHdpcmVsZXNzX2RldiAqd2lsY19jcmVhdGVfd2lwaHkoc3RydWN0IG5ldF9k ZXZpY2UgKm5ldCwNCi0JCQkJICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldik7DQotdm9pZCB3aWxj X2ZyZWVfd2lwaHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCk7DQorc3RydWN0IHdpcGh5ICp3aWxj X2NmZ19hbGxvYyh2b2lkKTsNCitpbnQgd2lsY19jZmc4MDIxMV9pbml0KHN0cnVjdCB3aWxjICoq d2lsYywgc3RydWN0IGRldmljZSAqZGV2LCBpbnQgaW9fdHlwZSwNCisJCSAgICAgICBjb25zdCBz dHJ1Y3Qgd2lsY19oaWZfZnVuYyAqb3BzKTsNCitzdHJ1Y3Qgd2lsYyAqd2lsY19jcmVhdGVfd2lw aHkoc3RydWN0IGRldmljZSAqZGV2KTsNCiB2b2lkIHdpbGNfZGVpbml0X2hvc3RfaW50KHN0cnVj dCBuZXRfZGV2aWNlICpuZXQpOw0KIGludCB3aWxjX2luaXRfaG9zdF9pbnQoc3RydWN0IG5ldF9k ZXZpY2UgKm5ldCk7DQogdm9pZCB3aWxjX3dmaV9tb25pdG9yX3J4KHN0cnVjdCBuZXRfZGV2aWNl ICptb25fZGV2LCB1OCAqYnVmZiwgdTMyIHNpemUpOw0KLXZvaWQgd2lsY193ZmlfZGVpbml0X21v bl9pbnRlcmZhY2Uoc3RydWN0IHdpbGMgKndsKTsNCitzdHJ1Y3Qgd2lsY192aWYgKndpbGNfbmV0 ZGV2X2ludGVyZmFjZShzdHJ1Y3Qgd2lsYyAqd2wsIGNvbnN0IGNoYXIgKm5hbWUsDQorCQkJCSAg ICAgICBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUpOw0KK3ZvaWQgd2lsY193ZmlfZGVpbml0X21v bl9pbnRlcmZhY2Uoc3RydWN0IHdpbGMgKndsLCBib29sIHJ0bmxfbG9ja2VkKTsNCiBzdHJ1Y3Qg bmV0X2RldmljZSAqd2lsY193ZmlfaW5pdF9tb25faW50ZXJmYWNlKHN0cnVjdCB3aWxjICp3bCwN CiAJCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLA0KIAkJCQkJICAgICAgIHN0cnVjdCBuZXRf ZGV2aWNlICpyZWFsX2Rldik7DQogdm9pZCB3aWxjX21nbXRfZnJhbWVfcmVnaXN0ZXIoc3RydWN0 IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwNCiAJCQkgICAgICB1MTYg ZnJhbWVfdHlwZSwgYm9vbCByZWcpOw0KLQ0KK3N0cnVjdCB3aWxjX3ZpZiAqd2lsY19nZXRfaW50 ZXJmYWNlKHN0cnVjdCB3aWxjICp3bCk7DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL3dpbGMxMDAwL3dpbGNfd2ZpX25ldGRldmljZS5oIGIvZHJpdmVycy9zdGFnaW5nL3dp bGMxMDAwL3dpbGNfd2ZpX25ldGRldmljZS5oDQppbmRleCBkZjAwNzYyLi5mY2EzMzgwIDEwMDY0 NA0KLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL3dpbGNfd2ZpX25ldGRldmljZS5oDQor KysgYi9kcml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY193ZmlfbmV0ZGV2aWNlLmgNCkBAIC0x MjksNyArMTI5LDcgQEAgc3RhdGljIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSB3aWxjX2JpdHJhdGVz W10gPSB7DQogfTsNCiANCiBzdHJ1Y3Qgd2lsY19wcml2IHsNCi0Jc3RydWN0IHdpcmVsZXNzX2Rl diAqd2RldjsNCisJc3RydWN0IHdpcmVsZXNzX2RldiB3ZGV2Ow0KIAlzdHJ1Y3QgY2ZnODAyMTFf c2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTsNCiANCiAJc3RydWN0IHdpbGNfd2ZpX3AycF9saXN0ZW5f cGFyYW1zIHJlbWFpbl9vbl9jaF9wYXJhbXM7DQpAQCAtMTU2LDEwICsxNTYsNiBAQCBzdHJ1Y3Qg d2lsY19wcml2IHsNCiAJaW50IHNjYW5uZWRfY250Ow0KIAlzdHJ1Y3Qgd2lsY19wMnBfdmFyIHAy cDsNCiANCi0Jc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGNoYW5uZWxzW0FSUkFZX1NJWkUod2ls Y18yZ2h6X2NoYW5uZWxzKV07DQotCXN0cnVjdCBpZWVlODAyMTFfcmF0ZSBiaXRyYXRlc1tBUlJB WV9TSVpFKHdpbGNfYml0cmF0ZXMpXTsNCi0Jc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFu ZCBiYW5kOw0KLQl1MzIgY2lwaGVyX3N1aXRlc1tBUlJBWV9TSVpFKHdpbGNfY2lwaGVyX3N1aXRl cyldOw0KIAl1NjQgaW5jX3JvY19jb29raWU7DQogfTsNCiANCkBAIC0yMTQsOSArMjEwLDExIEBA IHN0cnVjdCB3aWxjX3ZpZiB7DQogCXN0cnVjdCByZl9pbmZvIHBlcmlvZGljX3N0YXQ7DQogCXN0 cnVjdCB0Y3BfYWNrX2ZpbHRlciBhY2tfZmlsdGVyOw0KIAlib29sIGNvbm5lY3Rpbmc7DQorCXN0 cnVjdCB3aWxjX3ByaXYgcHJpdjsNCiB9Ow0KIA0KIHN0cnVjdCB3aWxjIHsNCisJc3RydWN0IHdp cGh5ICp3aXBoeTsNCiAJY29uc3Qgc3RydWN0IHdpbGNfaGlmX2Z1bmMgKmhpZl9mdW5jOw0KIAlp bnQgaW9fdHlwZTsNCiAJczggbWFjX3N0YXR1czsNCkBAIC0yMjYsNiArMjI0LDggQEAgc3RydWN0 IHdpbGMgew0KIAlpbnQgY2xvc2U7DQogCXU4IHZpZl9udW07DQogCXN0cnVjdCB3aWxjX3ZpZiAq dmlmW1dJTENfTlVNX0NPTkNVUlJFTlRfSUZDXTsNCisJLypwcm90ZWN0IHZpZiBsaXN0Ki8NCisJ c3RydWN0IG11dGV4IHZpZl9tdXRleDsNCiAJdTggb3Blbl9pZmNzOw0KIAkvKnByb3RlY3QgaGVh ZCBvZiB0cmFuc21pdCBxdWV1ZSovDQogCXN0cnVjdCBtdXRleCB0eHFfYWRkX3RvX2hlYWRfY3M7 DQpAQCAtMjc1LDYgKzI3NSwxMCBAQCBzdHJ1Y3Qgd2lsYyB7DQogCXN0cnVjdCBtdXRleCBkZWlu aXRfbG9jazsNCiAJdTggc3RhX2NoOw0KIAl1OCBvcF9jaDsNCisJc3RydWN0IGllZWU4MDIxMV9j aGFubmVsIGNoYW5uZWxzW0FSUkFZX1NJWkUod2lsY18yZ2h6X2NoYW5uZWxzKV07DQorCXN0cnVj dCBpZWVlODAyMTFfcmF0ZSBiaXRyYXRlc1tBUlJBWV9TSVpFKHdpbGNfYml0cmF0ZXMpXTsNCisJ c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBiYW5kOw0KKwl1MzIgY2lwaGVyX3N1aXRl c1tBUlJBWV9TSVpFKHdpbGNfY2lwaGVyX3N1aXRlcyldOw0KIH07DQogDQogc3RydWN0IHdpbGNf d2ZpX21vbl9wcml2IHsNCkBAIC0yODQsOSArMjg4LDkgQEAgc3RydWN0IHdpbGNfd2ZpX21vbl9w cml2IHsNCiB2b2lkIHdpbGNfZnJtd190b19ob3N0KHN0cnVjdCB3aWxjICp3aWxjLCB1OCAqYnVm ZiwgdTMyIHNpemUsIHUzMiBwa3Rfb2Zmc2V0KTsNCiB2b2lkIHdpbGNfbWFjX2luZGljYXRlKHN0 cnVjdCB3aWxjICp3aWxjKTsNCiB2b2lkIHdpbGNfbmV0ZGV2X2NsZWFudXAoc3RydWN0IHdpbGMg KndpbGMpOw0KLWludCB3aWxjX25ldGRldl9pbml0KHN0cnVjdCB3aWxjICoqd2lsYywgc3RydWN0 IGRldmljZSAqZGV2LCBpbnQgaW9fdHlwZSwNCi0JCSAgICAgY29uc3Qgc3RydWN0IHdpbGNfaGlm X2Z1bmMgKm9wcyk7DQogdm9pZCB3aWxjX3dmaV9tZ210X3J4KHN0cnVjdCB3aWxjICp3aWxjLCB1 OCAqYnVmZiwgdTMyIHNpemUpOw0KIHZvaWQgd2lsY193bGFuX3NldF9ic3NpZChzdHJ1Y3QgbmV0 X2RldmljZSAqd2lsY19uZXRkZXYsIHU4ICpic3NpZCwgdTggbW9kZSk7DQotDQorc3RydWN0IHdp bGNfdmlmICp3aWxjX25ldGRldl9pZmNfaW5pdChzdHJ1Y3Qgd2lsYyAqd2wsIGNvbnN0IGNoYXIg Km5hbWUsDQorCQkJCSAgICAgIGludCB2aWZfdHlwZSwgZW51bSBubDgwMjExX2lmdHlwZSB0eXBl LA0KKwkJCQkgICAgICBib29sIHJ0bmxfbG9ja2VkKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY193bGFuLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2ls YzEwMDAvd2lsY193bGFuLmMNCmluZGV4IGRjZDcyODUuLmJkMmZmYzMgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvd2lsY193bGFuLmMNCisrKyBiL2RyaXZlcnMvc3RhZ2lu Zy93aWxjMTAwMC93aWxjX3dsYW4uYw0KQEAgLTYsNyArNiw3IEBADQogDQogI2luY2x1ZGUgPGxp bnV4L2lmX2V0aGVyLmg+DQogI2luY2x1ZGUgPGxpbnV4L2lwLmg+DQotI2luY2x1ZGUgIndpbGNf d2ZpX25ldGRldmljZS5oIg0KKyNpbmNsdWRlICJ3aWxjX3dmaV9jZmdvcGVyYXRpb25zLmgiDQog I2luY2x1ZGUgIndpbGNfd2xhbl9jZmcuaCINCiANCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfd2ls YzEwMDAodTMyIGlkKQ0KQEAgLTI2Nyw2ICsyNjcsNyBAQCBzdGF0aWMgaW50IHdpbGNfd2xhbl90 eHFfYWRkX2NmZ19wa3Qoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU4ICpidWZmZXIsDQogCXRxZS0+ dHhfY29tcGxldGVfZnVuYyA9IE5VTEw7DQogCXRxZS0+cHJpdiA9IE5VTEw7DQogCXRxZS0+YWNr X2lkeCA9IE5PVF9UQ1BfQUNLOw0KKwl0cWUtPnZpZiA9IHZpZjsNCiANCiAJd2lsY193bGFuX3R4 cV9hZGRfdG9faGVhZCh2aWYsIHRxZSk7DQogDQpAQCAtMjk1LDYgKzI5Niw3IEBAIGludCB3aWxj X3dsYW5fdHhxX2FkZF9uZXRfcGt0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnByaXYs IHU4ICpidWZmZXIsDQogCXRxZS0+YnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZTsNCiAJdHFlLT50 eF9jb21wbGV0ZV9mdW5jID0gdHhfY29tcGxldGVfZm47DQogCXRxZS0+cHJpdiA9IHByaXY7DQor CXRxZS0+dmlmID0gdmlmOw0KIA0KIAl0cWUtPmFja19pZHggPSBOT1RfVENQX0FDSzsNCiAJaWYg KHZpZi0+YWNrX2ZpbHRlci5lbmFibGVkKQ0KQEAgLTMyNiw2ICszMjgsNyBAQCBpbnQgd2lsY193 bGFuX3R4cV9hZGRfbWdtdF9wa3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcHJpdiwg dTggKmJ1ZmZlciwNCiAJdHFlLT50eF9jb21wbGV0ZV9mdW5jID0gdHhfY29tcGxldGVfZm47DQog CXRxZS0+cHJpdiA9IHByaXY7DQogCXRxZS0+YWNrX2lkeCA9IE5PVF9UQ1BfQUNLOw0KKwl0cWUt PnZpZiA9IHZpZjsNCiAJd2lsY193bGFuX3R4cV9hZGRfdG9fdGFpbChkZXYsIHRxZSk7DQogCXJl dHVybiAxOw0KIH0NCkBAIC00ODIsNyArNDg1LDcgQEAgdm9pZCBob3N0X3NsZWVwX25vdGlmeShz dHJ1Y3Qgd2lsYyAqd2lsYykNCiB9DQogRVhQT1JUX1NZTUJPTF9HUEwoaG9zdF9zbGVlcF9ub3Rp ZnkpOw0KIA0KLWludCB3aWxjX3dsYW5faGFuZGxlX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LCB1MzIgKnR4cV9jb3VudCkNCitpbnQgd2lsY193bGFuX2hhbmRsZV90eHEoc3RydWN0IHdpbGMg KndpbGMsIHUzMiAqdHhxX2NvdW50KQ0KIHsNCiAJaW50IGksIGVudHJpZXMgPSAwOw0KIAl1MzIg c3VtOw0KQEAgLTQ5NCwxNyArNDk3LDIwIEBAIGludCB3aWxjX3dsYW5faGFuZGxlX3R4cShzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgKnR4cV9jb3VudCkNCiAJaW50IGNvdW50ZXI7DQogCWlu dCB0aW1lb3V0Ow0KIAl1MzIgdm1tX3RhYmxlW1dJTENfVk1NX1RCTF9TSVpFXTsNCi0Jc3RydWN0 IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdihkZXYpOw0KLQlzdHJ1Y3Qgd2lsYyAqd2lsYyA9 IHZpZi0+d2lsYzsNCiAJY29uc3Qgc3RydWN0IHdpbGNfaGlmX2Z1bmMgKmZ1bmM7DQogCXU4ICp0 eGIgPSB3aWxjLT50eF9idWZmZXI7DQorCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7DQorCXN0cnVj dCB3aWxjX3ZpZiAqdmlmOw0KIA0KIAlpZiAod2lsYy0+cXVpdCkNCiAJCWdvdG8gb3V0Ow0KIA0K IAltdXRleF9sb2NrKCZ3aWxjLT50eHFfYWRkX3RvX2hlYWRfY3MpOw0KLQl3aWxjX3dsYW5fdHhx X2ZpbHRlcl9kdXBfdGNwX2FjayhkZXYpOw0KIAl0cWUgPSB3aWxjX3dsYW5fdHhxX2dldF9maXJz dCh3aWxjKTsNCisJaWYgKCF0cWUpDQorCQlnb3RvIG91dDsNCisJZGV2ID0gdHFlLT52aWYtPm5k ZXY7DQorCXdpbGNfd2xhbl90eHFfZmlsdGVyX2R1cF90Y3BfYWNrKGRldik7DQogCWkgPSAwOw0K IAlzdW0gPSAwOw0KIAlkbyB7DQpAQCAtNjI5LDYgKzYzNSw3IEBAIGludCB3aWxjX3dsYW5faGFu ZGxlX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgKnR4cV9jb3VudCkNCiAJCWlmICgh dHFlKQ0KIAkJCWJyZWFrOw0KIA0KKwkJdmlmID0gdHFlLT52aWY7DQogCQlpZiAodm1tX3RhYmxl W2ldID09IDApDQogCQkJYnJlYWs7DQogDQpAQCAtNjQ4LDggKzY1NSw3IEBAIGludCB3aWxjX3ds YW5faGFuZGxlX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgKnR4cV9jb3VudCkNCiAJ CWlmICh0cWUtPnR5cGUgPT0gV0lMQ19DRkdfUEtUKSB7DQogCQkJYnVmZmVyX29mZnNldCA9IEVU SF9DT05GSUdfUEtUX0hEUl9PRkZTRVQ7DQogCQl9IGVsc2UgaWYgKHRxZS0+dHlwZSA9PSBXSUxD X05FVF9QS1QpIHsNCi0JCQlic3NpZCA9ICgoc3RydWN0IHR4X2NvbXBsZXRlX2RhdGEgKikodHFl LT5wcml2KSktPmJzc2lkOw0KLQ0KKwkJCWJzc2lkID0gdHFlLT52aWYtPmJzc2lkOw0KIAkJCWJ1 ZmZlcl9vZmZzZXQgPSBFVEhfRVRIRVJORVRfSERSX09GRlNFVDsNCiAJCQltZW1jcHkoJnR4Yltv ZmZzZXQgKyA4XSwgYnNzaWQsIDYpOw0KIAkJfSBlbHNlIHsNCmRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvd2lsYzEwMDAvd2lsY193bGFuLmggYi9kcml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAv d2lsY193bGFuLmgNCmluZGV4IDFhMjdmNjIuLjNlNTRhNTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L3N0YWdpbmcvd2lsYzEwMDAvd2lsY193bGFuLmgNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aWxj MTAwMC93aWxjX3dsYW4uaA0KQEAgLTIxNiw2ICsyMTYsNyBAQCBzdHJ1Y3QgdHhxX2VudHJ5X3Qg ew0KIAlpbnQgYnVmZmVyX3NpemU7DQogCXZvaWQgKnByaXY7DQogCWludCBzdGF0dXM7DQorCXN0 cnVjdCB3aWxjX3ZpZiAqdmlmOw0KIAl2b2lkICgqdHhfY29tcGxldGVfZnVuYykodm9pZCAqcHJp diwgaW50IHN0YXR1cyk7DQogfTsNCiANCkBAIC0yNTMsNyArMjU0LDYgQEAgc3RydWN0IHdpbGNf aGlmX2Z1bmMgew0KIHN0cnVjdCB0eF9jb21wbGV0ZV9kYXRhIHsNCiAJaW50IHNpemU7DQogCXZv aWQgKmJ1ZmY7DQotCXU4ICpic3NpZDsNCiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCiB9Ow0KIA0K QEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgd2lsY193bGFuX3N0b3Aoc3RydWN0IHdpbGMgKndpbGMp Ow0KIGludCB3aWxjX3dsYW5fdHhxX2FkZF9uZXRfcGt0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs IHZvaWQgKnByaXYsIHU4ICpidWZmZXIsDQogCQkJICAgICAgdTMyIGJ1ZmZlcl9zaXplLA0KIAkJ CSAgICAgIHZvaWQgKCp0eF9jb21wbGV0ZV9mbikodm9pZCAqLCBpbnQpKTsNCi1pbnQgd2lsY193 bGFuX2hhbmRsZV90eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyICp0eHFfY291bnQpOw0K K2ludCB3aWxjX3dsYW5faGFuZGxlX3R4cShzdHJ1Y3Qgd2lsYyAqd2wsIHUzMiAqdHhxX2NvdW50 KTsNCiB2b2lkIHdpbGNfaGFuZGxlX2lzcihzdHJ1Y3Qgd2lsYyAqd2lsYyk7DQogdm9pZCB3aWxj X3dsYW5fY2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCiBpbnQgd2lsY193bGFuX2Nm Z19zZXQoc3RydWN0IHdpbGNfdmlmICp2aWYsIGludCBzdGFydCwgdTE2IHdpZCwgdTggKmJ1ZmZl ciwNCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCB3aWxjX2VuYWJsZV90Y3BfYWNrX2ZpbHRlcihz dHJ1Y3Qgd2lsY192aWYgKnZpZiwgYm9vbCB2YWx1ZSk7DQogaW50IHdpbGNfd2xhbl9nZXRfbnVt X2Nvbm5faWZjcyhzdHJ1Y3Qgd2lsYyAqd2lsYyk7DQogbmV0ZGV2X3R4X3Qgd2lsY19tYWNfeG1p dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCiANCi12b2lk IHdpbGNfd2ZpX3AycF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCAqYnVmZiwgdTMyIHNp emUpOw0KK3ZvaWQgd2lsY193ZmlfcDJwX3J4KHN0cnVjdCB3aWxjX3ZpZiAqdmlmLCB1OCAqYnVm ZiwgdTMyIHNpemUpOw0KIHZvaWQgaG9zdF93YWtldXBfbm90aWZ5KHN0cnVjdCB3aWxjICp3aWxj KTsNCiB2b2lkIGhvc3Rfc2xlZXBfbm90aWZ5KHN0cnVjdCB3aWxjICp3aWxjKTsNCiB2b2lkIGNo aXBfYWxsb3dfc2xlZXAoc3RydWN0IHdpbGMgKndpbGMpOw0KLS0gDQoyLjcuNA0KDQo=