Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp1958973ybi; Thu, 20 Jun 2019 06:52:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqxHgwmfLpdr9NdwWZG4HiQo4CEPIAcw7XOmRfMjoIwgQRut/Mv1jhflrGIWNE7difc/6KM3 X-Received: by 2002:a63:f349:: with SMTP id t9mr12549047pgj.296.1561038757385; Thu, 20 Jun 2019 06:52:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561038757; cv=none; d=google.com; s=arc-20160816; b=lkfLQfHBwWVllGkfz0ExTo9GKqFKFtKO4w6JTF++xVddTk7XfxKBRAR7+5PIHUnMpx WO2lgut/AxmzchGbAEHcO0dQ5SbtD+h/VXv5PWRm0a5H0r+3RSXfa9Usgyem6J2DQWYi JSjWV4sJmHUwMlL953wk3ZlZ9l/B12lkzjTk7mtJgAVCbwS8NX2MDplKKNOzlTvEi/2X T0ZOwBdIBHAFkdCmQk00rR0K53MyLu6kdgn3csvCKL+tj11GqiMhYwNCceHSr+aavfX/ QXDQ2MBhdg5qaVlZJFrAvHCHUtTDaNxH7aFWU7XBJOA9ovkZ6wSBVRMJ7tMf6Q5QHGG/ YiSA== 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 :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature; bh=62DzK3eK6atJHapUgWXVSz7PutF/npGmxc0ppkipNOk=; b=maF7CbMKcmlHO8dS497q7GF2dWqz6LQL1dUtPAuWCbXPvmMWiCPqGrB9mIognUVz+I 3Fd2iz5nwlcZD4Ipyy5aDYobOT6dQ6y7sxBVnJjhGzWm5vDgz3LA7TZjTfFqlmwEbWP3 N5rcMH+OKpLgByFuSQwK1AA9IvWuFenhVRptz/Y1UL6eDi0aUUMGNhq54X+aKacgWBbe Ue6AFlWEivrCGOPRCgRMiZQRdnrvPH0z9wRCydHGOJvGlMRu3yVdwOOE/ATVhn0NIBR/ Wi6JS0ZbJmUgIxYqrWaiOb6Lw2J3patjUHV7dAZ449dASEe+wULoSPPdhlr7M2kTOnl9 do1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@prevas.se header.s=selector1 header.b=iL1U6SQP; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a10si19420841pff.277.2019.06.20.06.52.21; Thu, 20 Jun 2019 06:52:37 -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=@prevas.se header.s=selector1 header.b=iL1U6SQP; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726697AbfFTNuy (ORCPT + 99 others); Thu, 20 Jun 2019 09:50:54 -0400 Received: from mail-eopbgr80122.outbound.protection.outlook.com ([40.107.8.122]:4487 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726654AbfFTNux (ORCPT ); Thu, 20 Jun 2019 09:50:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.se; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=62DzK3eK6atJHapUgWXVSz7PutF/npGmxc0ppkipNOk=; b=iL1U6SQPXLyUo6+4w8tImUzWdb9n4YXgXAdpsYdjYEvxAtQieWh0fjzaDRId9+rHrgTS5p3Y9D0oRo1snvlkVO5oJB+JbTRLD5NwjTalEhwzLaoq3gX7Aip0oj2lEwYiQ65/LTYHC/O0zIhjTTphrKiKA0okHHmJT3OqmlC1Ti4= Received: from AM0PR10MB3027.EURPRD10.PROD.OUTLOOK.COM (10.255.30.92) by AM0PR10MB3507.EURPRD10.PROD.OUTLOOK.COM (10.186.174.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.13; Thu, 20 Jun 2019 13:50:42 +0000 Received: from AM0PR10MB3027.EURPRD10.PROD.OUTLOOK.COM ([fe80::4c4f:7a8e:cfcc:5d5a]) by AM0PR10MB3027.EURPRD10.PROD.OUTLOOK.COM ([fe80::4c4f:7a8e:cfcc:5d5a%6]) with mapi id 15.20.1987.014; Thu, 20 Jun 2019 13:50:42 +0000 From: Rasmus Villemoes To: Andrew Lunn , Vivien Didelot , Florian Fainelli , "David S. Miller" CC: Rasmus Villemoes , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH net-next] net: dsa: mv88e6xxx: introduce helpers for handling chip->reg_lock Thread-Topic: [PATCH net-next] net: dsa: mv88e6xxx: introduce helpers for handling chip->reg_lock Thread-Index: AQHVJ28myJDewQuDNkWKsfoQ2dQFcQ== Date: Thu, 20 Jun 2019 13:50:42 +0000 Message-ID: <20190620135034.24986-1-rasmus.villemoes@prevas.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6P191CA0047.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::24) To AM0PR10MB3027.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:160::28) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Rasmus.Villemoes@prevas.se; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [81.216.59.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c119a122-c6c4-42de-ecae-08d6f586492a x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:AM0PR10MB3507; x-ms-traffictypediagnostic: AM0PR10MB3507: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2512; x-forefront-prvs: 0074BBE012 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(346002)(136003)(396003)(39850400004)(199004)(189003)(3846002)(486006)(6116002)(66066001)(478600001)(81166006)(30864003)(25786009)(5660300002)(14444005)(42882007)(8976002)(6436002)(44832011)(81156014)(4326008)(186003)(6486002)(305945005)(102836004)(476003)(26005)(36756003)(2616005)(7736002)(386003)(1076003)(316002)(74482002)(72206003)(14454004)(68736007)(8676002)(53946003)(6512007)(54906003)(73956011)(6506007)(52116002)(2906002)(99286004)(110136005)(71200400001)(256004)(66946007)(53936002)(71190400001)(66556008)(66476007)(64756008)(8936002)(66446008)(50226002)(559001)(579004)(569006);DIR:OUT;SFP:1102;SCL:1;SRVR:AM0PR10MB3507;H:AM0PR10MB3027.EURPRD10.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: prevas.se does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: LwkSZ500mMufhaLfWaz23r3Zb7Axqx0Ra0rIQpmsYkXf4BynaBLNxQiCj11AwA2lwpTnvCYg+bJ5beUsk29PXRFak3r8FkprQ2/2IaDH9q87vc3jcF4/WmHWRP8EYQ/qUsofbeSj1lNcFM7hl2SjpDfuB61jG9Z5h/6KwDNeslzs9p9IBqoJsA+bKncDOzLilCeWG5oDfAF9QnYmx8cBYOHOvJbT3qSk2dIQ/UgyZBErISRFQOdFaGxZVoC/DxWVtd4XemrQyhPH63/gubEPf3ne/j6wDrtBdlmhPslWihog9DxaTMz8qOJE2RsN2v+oQ3asmDF3GGGezqIkbjIFaX9ZLtsY54S6mWT5cTgscWQzgFxj977OUpgPfCNR9+s2PsxokRyO6G1KiXj2p6MsJLsuvg/6TYi3XuulwC18GCk= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: c119a122-c6c4-42de-ecae-08d6f586492a X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2019 13:50:42.6983 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Rasmus.Villemoes@prevas.dk X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR10MB3507 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBpcyBhIG5vLW9wIHRoYXQgc2ltcGx5IG1vdmVzIGFsbCBsb2NraW5nIGFuZCB1bmxvY2tp bmcgb2YNCi0+cmVnX2xvY2sgaW50byB0cml2aWFsIGhlbHBlcnMuIEkgZGlkIHRoYXQgdG8gYmUg YWJsZSB0byBlYXNpbHkgYWRkDQpzb21lIGFkIGhvYyBpbnN0cnVtZW50YXRpb24gdG8gdGhvc2Ug aGVscGVycyB0byBnZXQgc29tZSBpbmZvcm1hdGlvbg0Kb24gY29udGVudGlvbiBhbmQgaG9sZCB0 aW1lcyBvZiB0aGUgbXV0ZXguIFBlcmhhcHMgb3RoZXJzIHdhbnQgdG8gZG8NCnNvbWV0aGluZyBz aW1pbGFyIGF0IHNvbWUgcG9pbnQsIHNvIHRoaXMgZnJlZXMgdGhlbSBmcm9tIGRvaW5nIHRoZQ0K J3NlZCAtaScgeW9nYSwgYW5kIGhhdmUgYSBtdWNoIHNtYWxsZXIgJ2dpdCBkaWZmJyB3aGlsZSBm aWRkbGluZy4NCg0KU2lnbmVkLW9mZi1ieTogUmFzbXVzIFZpbGxlbW9lcyA8cmFzbXVzLnZpbGxl bW9lc0BwcmV2YXMuZGs+DQotLS0NCiBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyAg ICAgICAgfCAxNzYgKysrKysrKysrKysrLS0tLS0tLS0tLS0tDQogZHJpdmVycy9uZXQvZHNhL212 ODhlNnh4eC9jaGlwLmggICAgICAgIHwgIDEwICsrDQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4 eC9nbG9iYWwxX2F0dS5jIHwgICA2ICstDQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9i YWwxX3Z0dS5jIHwgICA2ICstDQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMg ICAgIHwgIDIwICstLQ0KIGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyAgICB8 ICAyOCArKy0tDQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9waHkuYyAgICAgICAgIHwgICA0 ICstDQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuYyAgICAgICAgIHwgIDMyICsrLS0t DQogZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9zZXJkZXMuYyAgICAgIHwgIDI0ICsrLS0NCiA5 IGZpbGVzIGNoYW5nZWQsIDE1OCBpbnNlcnRpb25zKCspLCAxNDggZGVsZXRpb25zKC0pDQoNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0 L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jDQppbmRleCA2NjkxMTIwYmQyODMuLjQwYjFmYjIyZDhkZiAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jDQorKysgYi9kcml2 ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYw0KQEAgLTExOCw5ICsxMTgsOSBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4 X2NoaXAgKmNoaXApDQogCXUxNiBjdGwxOw0KIAlpbnQgZXJyOw0KIA0KLQltdXRleF9sb2NrKCZj aGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJyID0gbXY4 OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgJnJlZyk7DQotCW11dGV4X3Vu bG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiAN CiAJaWYgKGVycikNCiAJCWdvdG8gb3V0Ow0KQEAgLTEzNSwxMyArMTM1LDEzIEBAIHN0YXRpYyBp cnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhf Y2hpcCAqY2hpcCkNCiAJCQl9DQogCQl9DQogDQotCQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9j ayk7DQorCQltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCQllcnIgPSBtdjg4ZTZ4eHhfZzFf cmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgJmN0bDEpOw0KIAkJaWYgKGVycikNCiAJCQln b3RvIHVubG9jazsNCiAJCWVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9H MV9TVFMsICZyZWcpOw0KIHVubG9jazoNCi0JCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2sp Ow0KKwkJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogCQlpZiAoZXJyKQ0KIAkJCWdvdG8g b3V0Ow0KIAkJY3RsMSAmPSBHRU5NQVNLKGNoaXAtPmcxX2lycS5uaXJxcywgMCk7DQpAQCAtMTYy LDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2soc3RydWN0 IGlycV9kYXRhICpkKQ0KIHsNCiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2Rh dGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2Nr KTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBtdjg4 ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpDQpAQCAtMTg0 LDcgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2Nr KHN0cnVjdCBpcnFfZGF0YSAqZCkNCiAJCWdvdG8gb3V0Ow0KIA0KIG91dDoNCi0JbXV0ZXhfdW5s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIH0N CiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIG12ODhlNnh4eF9nMV9pcnFfY2hpcCA9 IHsNCkBAIC0yMzksOSArMjM5LDkgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVl KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkNCiAJICovDQogCWZyZWVfaXJxKGNoaXAtPmly cSwgY2hpcCk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4 X3JlZ19sb2NrKGNoaXApOw0KIAltdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApOw0K LQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2so Y2hpcCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24o c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQ0KQEAgLTMxMCwxMiArMzEwLDEyIEBAIHN0YXRp YyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAp DQogCSAqLw0KIAlpcnFfc2V0X2xvY2tkZXBfY2xhc3MoY2hpcC0+aXJxLCAmbG9ja19rZXksICZy ZXF1ZXN0X2tleSk7DQogDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4 ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiAJZXJyID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoY2hp cC0+aXJxLCBOVUxMLA0KIAkJCQkgICBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF9mbiwNCiAJCQkJ ICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9TSEFSRUQsDQogCQkJCSAgIGRldl9uYW1lKGNoaXAtPmRl diksIGNoaXApOw0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9y ZWdfbG9jayhjaGlwKTsNCiAJaWYgKGVycikNCiAJCW12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21t b24oY2hpcCk7DQogDQpAQCAtMzU5LDkgKzM1OSw5IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9p cnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkNCiAJa3RocmVhZF9jYW5j ZWxfZGVsYXllZF93b3JrX3N5bmMoJmNoaXAtPmlycV9wb2xsX3dvcmspOw0KIAlrdGhyZWFkX2Rl c3Ryb3lfd29ya2VyKGNoaXAtPmt3b3JrZXIpOw0KIA0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdf bG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJbXY4OGU2eHh4X2cxX2lycV9m cmVlX2NvbW1vbihjaGlwKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12 ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIH0NCiANCiBpbnQgbXY4OGU2eHh4X3dhaXQoc3Ry dWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IG1hc2spDQpA QCAtNDk2LDExICs0OTYsMTEgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2FkanVzdF9saW5rKHN0 cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCSAgICBtdjg4ZTZ4eHhfcGh5X2lzX2lu dGVybmFsKGRzLCBwb3J0KSkNCiAJCXJldHVybjsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVn X2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9w b3J0X3NldHVwX21hYyhjaGlwLCBwb3J0LCBwaHlkZXYtPmxpbmssIHBoeWRldi0+c3BlZWQsDQog CQkJCSAgICAgICBwaHlkZXYtPmR1cGxleCwgcGh5ZGV2LT5wYXVzZSwNCiAJCQkJICAgICAgIHBo eWRldi0+aW50ZXJmYWNlKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12 ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlpZiAoZXJyICYmIGVyciAhPSAtRU9QTk9U U1VQUCkNCiAJCWRldl9lcnIoZHMtPmRldiwgInAlZDogZmFpbGVkIHRvIGNvbmZpZ3VyZSBNQUNc biIsIHBvcnQpOw0KQEAgLTYxNiwxMiArNjE2LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2xp bmtfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJc3RydWN0IG12ODhl Nnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogCWludCBlcnI7DQogDQotCW11dGV4X2xvY2so JmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAlpZiAoY2hp cC0+aW5mby0+b3BzLT5wb3J0X2xpbmtfc3RhdGUpDQogCQllcnIgPSBjaGlwLT5pbmZvLT5vcHMt PnBvcnRfbGlua19zdGF0ZShjaGlwLCBwb3J0LCBzdGF0ZSk7DQogCWVsc2UNCiAJCWVyciA9IC1F T1BOT1RTVVBQOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4 X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBlcnI7DQogfQ0KQEAgLTY1MSwxMCArNjUx LDEwIEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNo ICpkcywgaW50IHBvcnQsDQogCX0NCiAJcGF1c2UgPSAhIXBoeWxpbmtfdGVzdChzdGF0ZS0+YWR2 ZXJ0aXNpbmcsIFBhdXNlKTsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwlt djg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9wb3J0X3NldHVwX21h YyhjaGlwLCBwb3J0LCBsaW5rLCBzcGVlZCwgZHVwbGV4LCBwYXVzZSwNCiAJCQkJICAgICAgIHN0 YXRlLT5pbnRlcmZhY2UpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4 OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCWlmIChlcnIgJiYgZXJyICE9IC1FT1BOT1RT VVBQKQ0KIAkJZGV2X2Vycihkcy0+ZGV2LCAicCVkOiBmYWlsZWQgdG8gY29uZmlndXJlIE1BQ1xu IiwgcG9ydCk7DQpAQCAtNjY1LDkgKzY2NSw5IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNf bGlua19mb3JjZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgbGluaykNCiAJ c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogCWludCBlcnI7DQogDQot CW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXAp Ow0KIAllcnIgPSBjaGlwLT5pbmZvLT5vcHMtPnBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCwgbGlu ayk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3Vu bG9jayhjaGlwKTsNCiANCiAJaWYgKGVycikNCiAJCWRldl9lcnIoY2hpcC0+ZGV2LCAicCVkOiBm YWlsZWQgdG8gZm9yY2UgTUFDIGxpbmtcbiIsIHBvcnQpOw0KQEAgLTg2NSw3ICs4NjUsNyBAQCBz dGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBp bnQgcG9ydCwNCiAJaWYgKHN0cmluZ3NldCAhPSBFVEhfU1NfU1RBVFMpDQogCQlyZXR1cm47DQog DQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNo aXApOw0KIA0KIAlpZiAoY2hpcC0+aW5mby0+b3BzLT5zdGF0c19nZXRfc3RyaW5ncykNCiAJCWNv dW50ID0gY2hpcC0+aW5mby0+b3BzLT5zdGF0c19nZXRfc3RyaW5ncyhjaGlwLCBkYXRhKTsNCkBA IC04NzgsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9zdHJpbmdzKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCWRhdGEgKz0gY291bnQgKiBFVEhfR1NUUklO R19MRU47DQogCW12ODhlNnh4eF9hdHVfdnR1X2dldF9zdHJpbmdzKGRhdGEpOw0KIA0KLQltdXRl eF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7 DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3N0YXRzX2dldF9zc2V0X2NvdW50KHN0cnVj dCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwNCkBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIGludCBt djg4ZTZ4eHhfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwg aW50IHNzZXQpDQogCWlmIChzc2V0ICE9IEVUSF9TU19TVEFUUykNCiAJCXJldHVybiAwOw0KIA0K LQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlw KTsNCiAJaWYgKGNoaXAtPmluZm8tPm9wcy0+c3RhdHNfZ2V0X3NzZXRfY291bnQpDQogCQljb3Vu dCA9IGNoaXAtPmluZm8tPm9wcy0+c3RhdHNfZ2V0X3NzZXRfY291bnQoY2hpcCk7DQogCWlmIChj b3VudCA8IDApDQpAQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2dldF9z c2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KQ0KIAlj b3VudCArPSBBUlJBWV9TSVpFKG12ODhlNnh4eF9hdHVfdnR1X3N0YXRzX3N0cmluZ3MpOw0KIA0K IG91dDoNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdf dW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gY291bnQ7DQogfQ0KQEAgLTk1MywxMSArOTUzLDEx IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3N0YXRzX2dldF9zdGF0cyhzdHJ1Y3QgbXY4OGU2eHh4 X2NoaXAgKmNoaXAsIGludCBwb3J0LA0KIAlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IEFSUkFZX1NJ WkUobXY4OGU2eHh4X2h3X3N0YXRzKTsgaSsrKSB7DQogCQlzdGF0ID0gJm12ODhlNnh4eF9od19z dGF0c1tpXTsNCiAJCWlmIChzdGF0LT50eXBlICYgdHlwZXMpIHsNCi0JCQltdXRleF9sb2NrKCZj aGlwLT5yZWdfbG9jayk7DQorCQkJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAkJCWRhdGFb al0gPSBfbXY4OGU2eHh4X2dldF9ldGh0b29sX3N0YXQoY2hpcCwgc3RhdCwgcG9ydCwNCiAJCQkJ CQkJICAgICAgYmFuazFfc2VsZWN0LA0KIAkJCQkJCQkgICAgICBoaXN0b2dyYW0pOw0KLQkJCW11 dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwkJCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNo aXApOw0KIA0KIAkJCWorKzsNCiAJCX0NCkBAIC0xMDE2LDE0ICsxMDE2LDE0IEBAIHN0YXRpYyB2 b2lkIG12ODhlNnh4eF9nZXRfc3RhdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQg cG9ydCwNCiAJaWYgKGNoaXAtPmluZm8tPm9wcy0+c3RhdHNfZ2V0X3N0YXRzKQ0KIAkJY291bnQg PSBjaGlwLT5pbmZvLT5vcHMtPnN0YXRzX2dldF9zdGF0cyhjaGlwLCBwb3J0LCBkYXRhKTsNCiAN Ci0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hp cCk7DQogCWlmIChjaGlwLT5pbmZvLT5vcHMtPnNlcmRlc19nZXRfc3RhdHMpIHsNCiAJCWRhdGEg Kz0gY291bnQ7DQogCQljb3VudCA9IGNoaXAtPmluZm8tPm9wcy0+c2VyZGVzX2dldF9zdGF0cyhj aGlwLCBwb3J0LCBkYXRhKTsNCiAJfQ0KIAlkYXRhICs9IGNvdW50Ow0KIAltdjg4ZTZ4eHhfYXR1 X3Z0dV9nZXRfc3RhdHMoY2hpcCwgcG9ydCwgZGF0YSk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+ cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiB9DQogDQogc3RhdGlj IHZvaWQgbXY4OGU2eHh4X2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywg aW50IHBvcnQsDQpAQCAtMTAzMiwxMCArMTAzMiwxMCBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhf Z2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJc3Ry dWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogCWludCByZXQ7DQogDQotCW11 dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0K IA0KIAlyZXQgPSBtdjg4ZTZ4eHhfc3RhdHNfc25hcHNob3QoY2hpcCwgcG9ydCk7DQotCW11dGV4 X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsN CiANCiAJaWYgKHJldCA8IDApDQogCQlyZXR1cm47DQpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3Rh dGljIHZvaWQgbXY4OGU2eHh4X2dldF9yZWdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBv cnQsDQogDQogCW1lbXNldChwLCAweGZmLCAzMiAqIHNpemVvZih1MTYpKTsNCiANCi0JbXV0ZXhf bG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogDQog CWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7DQogDQpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgc3Rh dGljIHZvaWQgbXY4OGU2eHh4X2dldF9yZWdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBv cnQsDQogCQkJcFtpXSA9IHJlZzsNCiAJfQ0KIA0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQg bXY4OGU2eHh4X2dldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQpA QCAtMTEzNyw5ICsxMTM3LDkgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3BvcnRfc3RwX3N0YXRl X3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlzdHJ1Y3QgbXY4OGU2eHh4 X2NoaXAgKmNoaXAgPSBkcy0+cHJpdjsNCiAJaW50IGVycjsNCiANCi0JbXV0ZXhfbG9jaygmY2hp cC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IG12ODhl Nnh4eF9wb3J0X3NldF9zdGF0ZShjaGlwLCBwb3J0LCBzdGF0ZSk7DQotCW11dGV4X3VubG9jaygm Y2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJaWYg KGVycikNCiAJCWRldl9lcnIoZHMtPmRldiwgInAlZDogZmFpbGVkIHRvIHVwZGF0ZSBzdGF0ZVxu IiwgcG9ydCk7DQpAQCAtMTMyNCw5ICsxMzI0LDkgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3Bv cnRfZmFzdF9hZ2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkNCiAJc3RydWN0IG12 ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogCWludCBlcnI7DQogDQotCW11dGV4X2xv Y2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAllcnIg PSBtdjg4ZTZ4eHhfZzFfYXR1X3JlbW92ZShjaGlwLCAwLCBwb3J0LCBmYWxzZSk7DQotCW11dGV4 X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsN CiANCiAJaWYgKGVycikNCiAJCWRldl9lcnIoZHMtPmRldiwgInAlZDogZmFpbGVkIHRvIGZsdXNo IEFUVVxuIiwgcG9ydCk7DQpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4 eHhfcG9ydF9jaGVja19od192bGFuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQog CWlmICghdmlkX2JlZ2luKQ0KIAkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KIA0KLQltdXRleF9sb2Nr KCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiANCiAJZG8g ew0KIAkJZXJyID0gbXY4OGU2eHh4X3Z0dV9nZXRuZXh0KGNoaXAsICZ2bGFuKTsNCkBAIC0xNDk0 LDcgKzE0OTQsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NoZWNrX2h3X3ZsYW4oc3Ry dWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJfSB3aGlsZSAodmxhbi52aWQgPCB2aWRf ZW5kKTsNCiANCiB1bmxvY2s6DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwlt djg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIGVycjsNCiB9DQpAQCAtMTUx MCw5ICsxNTEwLDkgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF92bGFuX2ZpbHRlcmluZyhz dHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlpZiAoIWNoaXAtPmluZm8tPm1heF92 aWQpDQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAllcnIgPSBtdjg4ZTZ4eHhfcG9y dF9zZXRfODAyMXFfbW9kZShjaGlwLCBwb3J0LCBtb2RlKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlw LT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4g ZXJyOw0KIH0NCkBAIC0xNjQ2LDcgKzE2NDYsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcG9y dF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAllbHNlDQogCQlt ZW1iZXIgPSBNVjg4RTZYWFhfRzFfVlRVX0RBVEFfTUVNQkVSX1RBR19UQUdHRUQ7DQogDQotCW11 dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0K IA0KIAlmb3IgKHZpZCA9IHZsYW4tPnZpZF9iZWdpbjsgdmlkIDw9IHZsYW4tPnZpZF9lbmQ7ICsr dmlkKQ0KIAkJaWYgKF9tdjg4ZTZ4eHhfcG9ydF92bGFuX2FkZChjaGlwLCBwb3J0LCB2aWQsIG1l bWJlcikpDQpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3BvcnRf dmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCWRldl9lcnIoZHMt PmRldiwgInAlZDogZmFpbGVkIHRvIHNldCBQVklEICVkXG4iLCBwb3J0LA0KIAkJCXZsYW4tPnZp ZF9lbmQpOw0KIA0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4 X3JlZ191bmxvY2soY2hpcCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgX212ODhlNnh4eF9wb3J0X3Zs YW5fZGVsKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwNCkBAIC0xNzAzLDcgKzE3MDMsNyBA QCBzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpk cywgaW50IHBvcnQsDQogCWlmICghY2hpcC0+aW5mby0+bWF4X3ZpZCkNCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhf cmVnX2xvY2soY2hpcCk7DQogDQogCWVyciA9IG12ODhlNnh4eF9wb3J0X2dldF9wdmlkKGNoaXAs IHBvcnQsICZwdmlkKTsNCiAJaWYgKGVycikNCkBAIC0xNzIyLDcgKzE3MjIsNyBAQCBzdGF0aWMg aW50IG12ODhlNnh4eF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBv cnQsDQogCX0NCiANCiB1bmxvY2s6DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0K Kwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIGVycjsNCiB9DQpAQCAt MTczMywxMCArMTczMywxMCBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2ZkYl9hZGQoc3Ry dWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpj aGlwID0gZHMtPnByaXY7DQogCWludCBlcnI7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAllcnIgPSBtdjg4ZTZ4eHhfcG9y dF9kYl9sb2FkX3B1cmdlKGNoaXAsIHBvcnQsIGFkZHIsIHZpZCwNCiAJCQkJCSAgIE1WODhFNlhY WF9HMV9BVFVfREFUQV9TVEFURV9VQ19TVEFUSUMpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJl Z19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBlcnI7 DQogfQ0KQEAgLTE3NDcsMTAgKzE3NDcsMTAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9m ZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCXN0cnVjdCBtdjg4ZTZ4 eHhfY2hpcCAqY2hpcCA9IGRzLT5wcml2Ow0KIAlpbnQgZXJyOw0KIA0KLQltdXRleF9sb2NrKCZj aGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJyID0gbXY4 OGU2eHh4X3BvcnRfZGJfbG9hZF9wdXJnZShjaGlwLCBwb3J0LCBhZGRyLCB2aWQsDQogCQkJCQkg ICBNVjg4RTZYWFhfRzFfQVRVX0RBVEFfU1RBVEVfVU5VU0VEKTsNCi0JbXV0ZXhfdW5sb2NrKCZj aGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1 cm4gZXJyOw0KIH0NCkBAIC0xODMyLDkgKzE4MzIsOSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9w b3J0X2ZkYl9kdW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCXN0cnVjdCBt djg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLT5wcml2Ow0KIAlpbnQgZXJyOw0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJy ID0gbXY4OGU2eHh4X3BvcnRfZGJfZHVtcChjaGlwLCBwb3J0LCBjYiwgZGF0YSk7DQotCW11dGV4 X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsN CiANCiAJcmV0dXJuIGVycjsNCiB9DQpAQCAtMTg4Myw5ICsxODgzLDkgQEAgc3RhdGljIGludCBt djg4ZTZ4eHhfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0 LA0KIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy0+cHJpdjsNCiAJaW50IGVycjsN CiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2so Y2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9icmlkZ2VfbWFwKGNoaXAsIGJyKTsNCi0JbXV0ZXhf dW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0K IA0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC0xODk1LDExICsxODk1LDExIEBAIHN0YXRpYyB2b2lk IG12ODhlNnh4eF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LA0KIHsNCiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogDQot CW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXAp Ow0KIAlpZiAobXY4OGU2eHh4X2JyaWRnZV9tYXAoY2hpcCwgYnIpIHx8DQogCSAgICBtdjg4ZTZ4 eHhfcG9ydF92bGFuX21hcChjaGlwLCBwb3J0KSkNCiAJCWRldl9lcnIoZHMtPmRldiwgImZhaWxl ZCB0byByZW1hcCBpbi1jaGlwIFBvcnQgVkxBTlxuIik7DQotCW11dGV4X3VubG9jaygmY2hpcC0+ cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiB9DQogDQogc3RhdGlj IGludCBtdjg4ZTZ4eHhfY3Jvc3NjaGlwX2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpk cywgaW50IGRldiwNCkBAIC0xOTExLDkgKzE5MTEsOSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9j cm9zc2NoaXBfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgZGV2LA0KIAlp ZiAoIW12ODhlNnh4eF9oYXNfcHZ0KGNoaXApKQ0KIAkJcmV0dXJuIDA7DQogDQotCW11dGV4X2xv Y2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAllcnIg PSBtdjg4ZTZ4eHhfcHZ0X21hcChjaGlwLCBkZXYsIHBvcnQpOw0KLQltdXRleF91bmxvY2soJmNo aXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVy biBlcnI7DQogfQ0KQEAgLTE5MjYsMTAgKzE5MjYsMTAgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4 X2Nyb3NzY2hpcF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgZGV2LA0K IAlpZiAoIW12ODhlNnh4eF9oYXNfcHZ0KGNoaXApKQ0KIAkJcmV0dXJuOw0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJaWYg KG12ODhlNnh4eF9wdnRfbWFwKGNoaXAsIGRldiwgcG9ydCkpDQogCQlkZXZfZXJyKGRzLT5kZXYs ICJmYWlsZWQgdG8gcmVtYXAgY3Jvc3MtY2hpcCBQb3J0IFZMQU5cbiIpOw0KLQltdXRleF91bmxv Y2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogfQ0K IA0KIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3NvZnR3YXJlX3Jlc2V0KHN0cnVjdCBtdjg4ZTZ4eHhf Y2hpcCAqY2hpcCkNCkBAIC0yMjgwLDE0ICsyMjgwLDE0IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4 X3BvcnRfZW5hYmxlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCXN0cnVjdCBt djg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLT5wcml2Ow0KIAlpbnQgZXJyOw0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiANCiAJ ZXJyID0gbXY4OGU2eHh4X3NlcmRlc19wb3dlcihjaGlwLCBwb3J0LCB0cnVlKTsNCiANCiAJaWYg KCFlcnIgJiYgY2hpcC0+aW5mby0+b3BzLT5zZXJkZXNfaXJxX3NldHVwKQ0KIAkJZXJyID0gY2hp cC0+aW5mby0+b3BzLT5zZXJkZXNfaXJxX3NldHVwKGNoaXAsIHBvcnQpOw0KIA0KLQltdXRleF91 bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQog DQogCXJldHVybiBlcnI7DQogfQ0KQEAgLTIyOTYsNyArMjI5Niw3IEBAIHN0YXRpYyB2b2lkIG12 ODhlNnh4eF9wb3J0X2Rpc2FibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkNCiB7 DQogCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLT5wcml2Ow0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiANCiAJ aWYgKG12ODhlNnh4eF9wb3J0X3NldF9zdGF0ZShjaGlwLCBwb3J0LCBCUl9TVEFURV9ESVNBQkxF RCkpDQogCQlkZXZfZXJyKGNoaXAtPmRldiwgImZhaWxlZCB0byBkaXNhYmxlIHBvcnRcbiIpOw0K QEAgLTIzMDcsNyArMjMwNyw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9wb3J0X2Rpc2FibGUo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkNCiAJaWYgKG12ODhlNnh4eF9zZXJkZXNf cG93ZXIoY2hpcCwgcG9ydCwgZmFsc2UpKQ0KIAkJZGV2X2VycihjaGlwLT5kZXYsICJmYWlsZWQg dG8gcG93ZXIgb2ZmIFNFUkRFU1xuIik7DQogDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xv Y2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiB9DQogDQogc3RhdGljIGludCBt djg4ZTZ4eHhfc2V0X2FnZWluZ190aW1lKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywNCkBAIC0yMzE2 LDkgKzIzMTYsOSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXRfYWdlaW5nX3RpbWUoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLA0KIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy0+cHJp djsNCiAJaW50IGVycjsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4 ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9nMV9hdHVfc2V0X2FnZV90 aW1lKGNoaXAsIGFnZWluZ190aW1lKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7 DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCkBA IC0yNDQ4LDcgKzI0NDgsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXR1cChzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMpDQogCWNoaXAtPmRzID0gZHM7DQogCWRzLT5zbGF2ZV9taWlfYnVzID0gbXY4 OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoY2hpcCk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJl Z19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIA0KIAlpZiAoY2hpcC0+aW5m by0+b3BzLT5zZXR1cF9lcnJhdGEpIHsNCiAJCWVyciA9IGNoaXAtPmluZm8tPm9wcy0+c2V0dXBf ZXJyYXRhKGNoaXApOw0KQEAgLTI1NTUsNyArMjU1NSw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4 X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykNCiAJCWdvdG8gdW5sb2NrOw0KIA0KIHVubG9j azoNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5s b2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC0yNTcwLDkgKzI1NzAsOSBAQCBz dGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBo eSwgaW50IHJlZykNCiAJaWYgKCFjaGlwLT5pbmZvLT5vcHMtPnBoeV9yZWFkKQ0KIAkJcmV0dXJu IC1FT1BOT1RTVVBQOw0KIA0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhl Nnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJyID0gY2hpcC0+aW5mby0+b3BzLT5waHlfcmVhZChj aGlwLCBidXMsIHBoeSwgcmVnLCAmdmFsKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9j ayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlpZiAocmVnID09IE1JSV9Q SFlTSUQyKSB7DQogCQkvKiBTb21lIGludGVybmFsIFBIWXMgZG9uJ3QgaGF2ZSBhIG1vZGVsIG51 bWJlci4gKi8NCkBAIC0yNjA1LDkgKzI2MDUsOSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9tZGlv X3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcsIHUxNiB2YWwpDQog CWlmICghY2hpcC0+aW5mby0+b3BzLT5waHlfd3JpdGUpDQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7 DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2Nr KGNoaXApOw0KIAllcnIgPSBjaGlwLT5pbmZvLT5vcHMtPnBoeV93cml0ZShjaGlwLCBidXMsIHBo eSwgcmVnLCB2YWwpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2 eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBlcnI7DQogfQ0KQEAgLTI2MjIsOSAr MjYyMiw5IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IG12ODhl Nnh4eF9jaGlwICpjaGlwLA0KIAlpbnQgZXJyOw0KIA0KIAlpZiAoZXh0ZXJuYWwpIHsNCi0JCW11 dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsN CiAJCWVyciA9IG12ODhlNnh4eF9nMl9zY3JhdGNoX2dwaW9fc2V0X3NtaShjaGlwLCB0cnVlKTsN Ci0JCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwkJbXY4OGU2eHh4X3JlZ191bmxv Y2soY2hpcCk7DQogDQogCQlpZiAoZXJyKQ0KIAkJCXJldHVybiBlcnI7DQpAQCAtMjc0NSw5ICsy NzQ1LDkgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZ2V0X2VlcHJvbShzdHJ1Y3QgZHNhX3N3aXRj aCAqZHMsDQogCWlmICghY2hpcC0+aW5mby0+b3BzLT5nZXRfZWVwcm9tKQ0KIAkJcmV0dXJuIC1F T1BOT1RTVVBQOw0KIA0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4 eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJyID0gY2hpcC0+aW5mby0+b3BzLT5nZXRfZWVwcm9tKGNo aXAsIGVlcHJvbSwgZGF0YSk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwlt djg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJaWYgKGVycikNCiAJCXJldHVybiBlcnI7 DQpAQCAtMjc2OSw5ICsyNzY5LDkgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2VlcHJvbShz dHJ1Y3QgZHNhX3N3aXRjaCAqZHMsDQogCWlmIChlZXByb20tPm1hZ2ljICE9IDB4YzNlYzQ5NTEp DQogCQlyZXR1cm4gLUVJTlZBTDsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0K Kwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IGNoaXAtPmluZm8tPm9wcy0+c2V0 X2VlcHJvbShjaGlwLCBlZXByb20sIGRhdGEpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBlcnI7DQog fQ0KQEAgLTQ1MzIsOSArNDUzMiw5IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2RldGVjdChzdHJ1 Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApDQogCXUxNiBpZDsNCiAJaW50IGVycjsNCiANCi0JbXV0 ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQog CWVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgMCwgTVY4OEU2WFhYX1BPUlRfU1dJVENI X0lELCAmaWQpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4 X3JlZ191bmxvY2soY2hpcCk7DQogCWlmIChlcnIpDQogCQlyZXR1cm4gZXJyOw0KIA0KQEAgLTQ1 OTcsMTIgKzQ1OTcsMTIgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3BvcnRfbWRiX2FkZChzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIHsNCiAJc3RydWN0IG12ODhlNnh4eF9jaGlw ICpjaGlwID0gZHMtPnByaXY7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJ bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAlpZiAobXY4OGU2eHh4X3BvcnRfZGJfbG9hZF9w dXJnZShjaGlwLCBwb3J0LCBtZGItPmFkZHIsIG1kYi0+dmlkLA0KIAkJCQkJIE1WODhFNlhYWF9H MV9BVFVfREFUQV9TVEFURV9NQ19TVEFUSUMpKQ0KIAkJZGV2X2Vycihkcy0+ZGV2LCAicCVkOiBm YWlsZWQgdG8gbG9hZCBtdWx0aWNhc3QgTUFDIGFkZHJlc3NcbiIsDQogCQkJcG9ydCk7DQotCW11 dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlw KTsNCiB9DQogDQogc3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9tZGJfZGVsKHN0cnVjdCBkc2Ff c3dpdGNoICpkcywgaW50IHBvcnQsDQpAQCAtNDYxMSwxMCArNDYxMSwxMCBAQCBzdGF0aWMgaW50 IG12ODhlNnh4eF9wb3J0X21kYl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwN CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtPnByaXY7DQogCWludCBlcnI7DQog DQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNo aXApOw0KIAllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9kYl9sb2FkX3B1cmdlKGNoaXAsIHBvcnQsIG1k Yi0+YWRkciwgbWRiLT52aWQsDQogCQkJCQkgICBNVjg4RTZYWFhfRzFfQVRVX0RBVEFfU1RBVEVf VU5VU0VEKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9y ZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC00NjI1LDEyICs0NjI1 LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfZWdyZXNzX2Zsb29kcyhzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBk cy0+cHJpdjsNCiAJaW50IGVyciA9IC1FT1BOT1RTVVBQOw0KIA0KLQltdXRleF9sb2NrKCZjaGlw LT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJaWYgKGNoaXAtPmlu Zm8tPm9wcy0+cG9ydF9zZXRfZWdyZXNzX2Zsb29kcykNCiAJCWVyciA9IGNoaXAtPmluZm8tPm9w cy0+cG9ydF9zZXRfZWdyZXNzX2Zsb29kcyhjaGlwLCBwb3J0LA0KIAkJCQkJCQkgICAgICB1bmlj YXN0LA0KIAkJCQkJCQkgICAgICBtdWx0aWNhc3QpOw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJl Z19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBlcnI7 DQogfQ0KQEAgLTQ4MDEsOSArNDgwMSw5IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0 cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikNCiAJCQljaGlwLT5lZXByb21fbGVuID0gcGRhdGEt PmVlcHJvbV9sZW47DQogCX0NCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwlt djg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9zd2l0Y2hfcmVzZXQo Y2hpcCk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X3VubG9jayhjaGlwKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gb3V0Ow0KIA0KQEAgLTQ4MjIsMTIg KzQ4MjIsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNl ICptZGlvZGV2KQ0KIAkgKiB0aGUgUEhZcyB3aWxsIGxpbmsgdGhlaXIgaW50ZXJydXB0cyB0byB0 aGVzZSBpbnRlcnJ1cHQNCiAJICogY29udHJvbGxlcnMNCiAJICovDQotCW11dGV4X2xvY2soJmNo aXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAlpZiAoY2hpcC0+ aXJxID4gMCkNCiAJCWVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoY2hpcCk7DQogCWVsc2UN CiAJCWVyciA9IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChjaGlwKTsNCi0JbXV0ZXhfdW5sb2Nr KCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlp ZiAoZXJyKQ0KIAkJZ290byBvdXQ7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhl Nnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaA0KaW5kZXggYTMx MjFhMTJiYWZjLi40NjQ2ZTQ2ZDQ3ZjIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4 OGU2eHh4L2NoaXAuaA0KKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgNCkBA IC01ODAsNCArNTgwLDE0IEBAIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12 ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCwgaW50IGxpbmssDQogCQkJICAgICBwaHlfaW50 ZXJmYWNlX3QgbW9kZSk7DQogc3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9f YnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7DQogDQorc3RhdGljIGlubGluZSB2b2lk IG12ODhlNnh4eF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApDQorew0KKwlt dXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBt djg4ZTZ4eHhfcmVnX3VubG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApDQorew0KKwlt dXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCit9DQorDQogI2VuZGlmIC8qIF9NVjg4RTZY WFhfQ0hJUF9IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9i YWwxX2F0dS5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwxX2F0dS5jDQppbmRl eCBjZWY1MDQ2OTgzZTguLjFjZjM4OGU5YmQ5NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2Rz YS9tdjg4ZTZ4eHgvZ2xvYmFsMV9hdHUuYw0KKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4 eC9nbG9iYWwxX2F0dS5jDQpAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBt djg4ZTZ4eHhfZzFfYXR1X3Byb2JfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQp DQogCWludCBlcnI7DQogCXUxNiB2YWw7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2Nr KTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIA0KIAllcnIgPSBtdjg4ZTZ4eHhfZzFf YXR1X29wKGNoaXAsIDAsDQogCQkJCSAgTVY4OEU2WFhYX0cxX0FUVV9PUF9HRVRfQ0xSX1ZJT0xB VElPTik7DQpAQCAtMzY0LDEyICszNjQsMTIgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNnh4 eF9nMV9hdHVfcHJvYl9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJCQkJ ICAgIGVudHJ5Lm1hYywgZW50cnkucG9ydHZlYywgc3BpZCk7DQogCQljaGlwLT5wb3J0c1tzcGlk XS5hdHVfZnVsbF92aW9sYXRpb24rKzsNCiAJfQ0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiBJUlFfSEFO RExFRDsNCiANCiBvdXQ6DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4 ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJZGV2X2VycihjaGlwLT5kZXYsICJBVFUgcHJv YmxlbTogZXJyb3IgJWQgd2hpbGUgaGFuZGxpbmcgaW50ZXJydXB0XG4iLA0KIAkJZXJyKTsNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDFfdnR1LmMgYi9kcml2 ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDFfdnR1LmMNCmluZGV4IDRmN2I1MjJlNWU1OS4u YmUzZDQ1MTk2NGU0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9i YWwxX3Z0dS5jDQorKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2dsb2JhbDFfdnR1LmMN CkBAIC01NzksNyArNTc5LDcgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV92dHVf cHJvYl9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJaW50IGVycjsNCiAJ dTE2IHZhbDsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhf cmVnX2xvY2soY2hpcCk7DQogDQogCWVyciA9IG12ODhlNnh4eF9nMV92dHVfb3AoY2hpcCwgTVY4 OEU2WFhYX0cxX1ZUVV9PUF9HRVRfQ0xSX1ZJT0xBVElPTik7DQogCWlmIChlcnIpDQpAQCAtNjA3 LDEyICs2MDcsMTIgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV92dHVfcHJvYl9p cnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJCWNoaXAtPnBvcnRzW3NwaWRd LnZ0dV9taXNzX3Zpb2xhdGlvbisrOw0KIAl9DQogDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVn X2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIElSUV9I QU5ETEVEOw0KIA0KIG91dDoNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12 ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlkZXZfZXJyKGNoaXAtPmRldiwgIlZUVSBw cm9ibGVtOiBlcnJvciAlZCB3aGlsZSBoYW5kbGluZyBpbnRlcnJ1cHRcbiIsDQogCQllcnIpOw0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jIGIvZHJpdmVy cy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMNCmluZGV4IGIxNzZlZTFhZGJiYS4uMjMwNWI5 NGIzMDUxIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9nbG9iYWwyLmMN CisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvZ2xvYmFsMi5jDQpAQCAtODkzLDIwICs4 OTMsMjAgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMl93YXRjaGRvZ190aHJlYWRf Zm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAg PSBkZXZfaWQ7DQogCWlycXJldHVybl90IHJldCA9IElSUV9OT05FOw0KIA0KLQltdXRleF9sb2Nr KCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJaWYgKGNo aXAtPmluZm8tPm9wcy0+d2F0Y2hkb2dfb3BzLT5pcnFfYWN0aW9uKQ0KIAkJcmV0ID0gY2hpcC0+ aW5mby0+b3BzLT53YXRjaGRvZ19vcHMtPmlycV9hY3Rpb24oY2hpcCwgaXJxKTsNCi0JbXV0ZXhf dW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0K IA0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzJfd2F0Y2hk b2dfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApDQogew0KLQltdXRleF9sb2NrKCZj aGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJaWYgKGNoaXAt PmluZm8tPm9wcy0+d2F0Y2hkb2dfb3BzLT5pcnFfZnJlZSkNCiAJCWNoaXAtPmluZm8tPm9wcy0+ d2F0Y2hkb2dfb3BzLT5pcnFfZnJlZShjaGlwKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdf bG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlmcmVlX2lycShjaGlw LT53YXRjaGRvZ19pcnEsIGNoaXApOw0KIAlpcnFfZGlzcG9zZV9tYXBwaW5nKGNoaXAtPndhdGNo ZG9nX2lycSk7DQpAQCAtOTI4LDEwICs5MjgsMTAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfZzJf d2F0Y2hkb2dfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQ0KIAlpZiAoZXJyKQ0K IAkJcmV0dXJuIGVycjsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4 ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWlmIChjaGlwLT5pbmZvLT5vcHMtPndhdGNoZG9nX29w cy0+aXJxX3NldHVwKQ0KIAkJZXJyID0gY2hpcC0+aW5mby0+b3BzLT53YXRjaGRvZ19vcHMtPmly cV9zZXR1cChjaGlwKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhl Nnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCkBAIC05ODYsOSAr OTg2LDkgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMl9pcnFfdGhyZWFkX2ZuKGlu dCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJaW50IGVycjsNCiAJdTE2IHJlZzsNCiANCi0JbXV0ZXhf bG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCWVy ciA9IG12ODhlNnh4eF9nMl9pbnRfc291cmNlKGNoaXAsICZyZWcpOw0KLQltdXRleF91bmxvY2so JmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogCWlmIChl cnIpDQogCQlnb3RvIG91dDsNCiANCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBzdGF0aWMgdm9pZCBt djg4ZTZ4eHhfZzJfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZCkNCiB7DQogCXN0cnVj dCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOw0K IA0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhj aGlwKTsNCiB9DQogDQogc3RhdGljIHZvaWQgbXY4OGU2eHh4X2cyX2lycV9idXNfc3luY191bmxv Y2soc3RydWN0IGlycV9kYXRhICpkKQ0KQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyB2b2lk IG12ODhlNnh4eF9nMl9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZCkNCiAJ aWYgKGVycikNCiAJCWRldl9lcnIoY2hpcC0+ZGV2LCAiZmFpbGVkIHRvIG1hc2sgaW50ZXJydXB0 c1xuIik7DQogDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhf cmVnX3VubG9jayhjaGlwKTsNCiB9DQogDQogc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBt djg4ZTZ4eHhfZzJfaXJxX2NoaXAgPSB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212 ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5j DQppbmRleCA3Zjk1YTYzNjU2MWQuLmE0YzQ4OGIxMmU4ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv bmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYw0KKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhl Nnh4eC9od3RzdGFtcC5jDQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4 X3NldF9od3RzdGFtcF9jb25maWcoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9y dCwNCiAJCXJldHVybiAtRVJBTkdFOw0KIAl9DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19s b2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIAlpZiAodHN0YW1wX2VuYWJsZSkg ew0KIAkJY2hpcC0+ZW5hYmxlX2NvdW50ICs9IDE7DQogCQlpZiAoY2hpcC0+ZW5hYmxlX2NvdW50 ID09IDEgJiYgcHRwX29wcy0+Z2xvYmFsX2VuYWJsZSkNCkBAIC0xNjEsNyArMTYxLDcgQEAgc3Rh dGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2No aXAgKmNoaXAsIGludCBwb3J0LA0KIAkJaWYgKGNoaXAtPmVuYWJsZV9jb3VudCA9PSAwICYmIHB0 cF9vcHMtPmdsb2JhbF9kaXNhYmxlKQ0KIAkJCXB0cF9vcHMtPmdsb2JhbF9kaXNhYmxlKGNoaXAp Ow0KIAl9DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X3VubG9jayhjaGlwKTsNCiANCiAJLyogT25jZSBoYXJkd2FyZSBoYXMgYmVlbiBjb25maWd1cmVk LCBlbmFibGUgdGltZXN0YW1wIGNoZWNrcw0KIAkgKiBpbiB0aGUgUlgvVFggcGF0aHMuDQpAQCAt MzAxLDEwICszMDEsMTAgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBt djg4ZTZ4eHhfY2hpcCAqY2hpcCwNCiAJc2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQocnhxLCAm cmVjZWl2ZWQpOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyeHEtPmxvY2ssIGZsYWdzKTsN CiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2so Y2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF9yZWFkKGNoaXAsIHBzLT5wb3J0X2lk LA0KIAkJCQkgICAgICByZWcsIGJ1ZiwgQVJSQVlfU0laRShidWYpKTsNCi0JbXV0ZXhfdW5sb2Nr KCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIAlpZiAo ZXJyKQ0KIAkJcHJfZXJyKCJmYWlsZWQgdG8gZ2V0IHRoZSByZWNlaXZlIHRpbWUgc3RhbXBcbiIp Ow0KIA0KQEAgLTMxNCw5ICszMTQsOSBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMo c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLA0KIAlzZXFfaWQgPSBidWZbM107DQogDQogCWlm IChzdGF0dXMgJiBNVjg4RTZYWFhfUFRQX1RTX1ZBTElEKSB7DQotCQltdXRleF9sb2NrKCZjaGlw LT5yZWdfbG9jayk7DQorCQltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCQllcnIgPSBtdjg4 ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcHMtPnBvcnRfaWQsIHJlZywgMCk7DQotCQltdXRl eF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXAp Ow0KIAkJaWYgKGVycikNCiAJCQlwcl9lcnIoImZhaWxlZCB0byBjbGVhciB0aGUgcmVjZWl2ZSBz dGF0dXNcbiIpOw0KIAl9DQpAQCAtMzI3LDkgKzMyNyw5IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4 eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsDQogCQlpZiAobXY4OGU2eHh4 X3RzX3ZhbGlkKHN0YXR1cykgJiYgc2VxX21hdGNoKHNrYiwgc2VxX2lkKSkgew0KIAkJCW5zID0g dGltZWhpIDw8IDE2IHwgdGltZWxvOw0KIA0KLQkJCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2Nr KTsNCisJCQltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogCQkJbnMgPSB0aW1lY291bnRlcl9j eWMydGltZSgmY2hpcC0+dHN0YW1wX3RjLCBucyk7DQotCQkJbXV0ZXhfdW5sb2NrKCZjaGlwLT5y ZWdfbG9jayk7DQorCQkJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogCQkJc2h3dCA9IHNr Yl9od3RzdGFtcHMoc2tiKTsNCiAJCQltZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7DQog CQkJc2h3dC0+aHd0c3RhbXAgPSBuc190b19rdGltZShucyk7DQpAQCAtNDA1LDEyICs0MDUsMTIg QEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2No aXAgKmNoaXAsDQogCWlmICghcHMtPnR4X3NrYikNCiAJCXJldHVybiAwOw0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJZXJy ID0gbXY4OGU2eHh4X3BvcnRfcHRwX3JlYWQoY2hpcCwgcHMtPnBvcnRfaWQsDQogCQkJCSAgICAg IHB0cF9vcHMtPmRlcF9zdHNfcmVnLA0KIAkJCQkgICAgICBkZXBhcnR1cmVfYmxvY2ssDQogCQkJ CSAgICAgIEFSUkFZX1NJWkUoZGVwYXJ0dXJlX2Jsb2NrKSk7DQotCW11dGV4X3VubG9jaygmY2hp cC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJaWYgKGVy cikNCiAJCWdvdG8gZnJlZV9hbmRfY2xlYXJfc2tiOw0KQEAgLTQzMCw5ICs0MzAsOSBAQCBzdGF0 aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hp cCwNCiAJfQ0KIA0KIAkvKiBXZSBoYXZlIHRoZSB0aW1lc3RhbXA7IGdvIGFoZWFkIGFuZCBjbGVh ciB2YWxpZCBub3cgKi8NCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4 eHhfcmVnX2xvY2soY2hpcCk7DQogCW12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwcy0+ cG9ydF9pZCwgcHRwX29wcy0+ZGVwX3N0c19yZWcsIDApOw0KLQltdXRleF91bmxvY2soJmNoaXAt PnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogDQogCXN0YXR1cyA9 IGRlcGFydHVyZV9ibG9ja1swXSAmIE1WODhFNlhYWF9QVFBfVFNfU1RBVFVTX01BU0s7DQogCWlm IChzdGF0dXMgIT0gTVY4OEU2WFhYX1BUUF9UU19TVEFUVVNfTk9STUFMKSB7DQpAQCAtNDQ3LDkg KzQ0Nyw5IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhl Nnh4eF9jaGlwICpjaGlwLA0KIA0KIAltZW1zZXQoJnNoaHd0c3RhbXBzLCAwLCBzaXplb2Yoc2ho d3RzdGFtcHMpKTsNCiAJdGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gPDwgMTYp IHwgZGVwYXJ0dXJlX2Jsb2NrWzFdOw0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQor CW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiAJbnMgPSB0aW1lY291bnRlcl9jeWMydGltZSgm Y2hpcC0+dHN0YW1wX3RjLCB0aW1lX3Jhdyk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xv Y2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiAJc2hod3RzdGFtcHMuaHd0c3Rh bXAgPSBuc190b19rdGltZShucyk7DQogDQogCWRldl9kYmcoY2hpcC0+ZGV2LA0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4 OGU2eHh4L3BoeS5jDQppbmRleCAyOTUyZGI3M2Y1NWMuLjI1MmI1YjNhM2VmZSAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcGh5LmMNCisrKyBiL2RyaXZlcnMvbmV0L2Rz YS9tdjg4ZTZ4eHgvcGh5LmMNCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2 eHh4X3BoeV9wcHVfcmVlbmFibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpDQogDQog CWNoaXAgPSBjb250YWluZXJfb2YodWdseSwgc3RydWN0IG12ODhlNnh4eF9jaGlwLCBwcHVfd29y ayk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19s b2NrKGNoaXApOw0KIA0KIAlpZiAobXV0ZXhfdHJ5bG9jaygmY2hpcC0+cHB1X211dGV4KSkgew0K IAkJaWYgKG12ODhlNnh4eF9waHlfcHB1X2VuYWJsZShjaGlwKSA9PSAwKQ0KQEAgLTE0NSw3ICsx NDUsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcGh5X3BwdV9yZWVuYWJsZV93b3JrKHN0cnVj dCB3b3JrX3N0cnVjdCAqdWdseSkNCiAJCW11dGV4X3VubG9jaygmY2hpcC0+cHB1X211dGV4KTsN CiAJfQ0KIA0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3Jl Z191bmxvY2soY2hpcCk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9waHlfcHB1X3Jl ZW5hYmxlX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5j DQppbmRleCA3YjQwYzU4ODZiNzUuLjc2OGQyNTZmN2M5ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv bmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMNCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgv cHRwLmMNCkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfdGFpX2V2 ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp1Z2x5KQ0KIAl1MzIgcmF3X3RzOw0KIAlpbnQg ZXJyOw0KIA0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdf bG9jayhjaGlwKTsNCiAJZXJyID0gbXY4OGU2eHh4X3RhaV9yZWFkKGNoaXAsIE1WODhFNlhYWF9U QUlfRVZFTlRfU1RBVFVTLA0KIAkJCQkgc3RhdHVzLCBBUlJBWV9TSVpFKHN0YXR1cykpOw0KLQlt dXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hp cCk7DQogDQogCWlmIChlcnIpIHsNCiAJCWRldl9lcnIoY2hpcC0+ZGV2LCAiZmFpbGVkIHRvIHJl YWQgVEFJIHN0YXR1cyByZWdpc3RlclxuIik7DQpAQCAtMTU4LDE4ICsxNTgsMTggQEAgc3RhdGlj IHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSkN CiANCiAJLyogQ2xlYXIgdGhlIHZhbGlkIGJpdCBzbyB0aGUgbmV4dCB0aW1lc3RhbXAgY2FuIGNv bWUgaW4gKi8NCiAJc3RhdHVzWzBdICY9IH5NVjg4RTZYWFhfVEFJX0VWRU5UX1NUQVRVU19WQUxJ RDsNCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVnX2xvY2so Y2hpcCk7DQogCWVyciA9IG12ODhlNnh4eF90YWlfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1RBSV9F VkVOVF9TVEFUVVMsIHN0YXR1c1swXSk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2sp Ow0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJLyogVGhpcyBpcyBhbiBleHRl cm5hbCB0aW1lc3RhbXAgKi8NCiAJZXYudHlwZSA9IFBUUF9DTE9DS19FWFRUUzsNCiANCiAJLyog V2Ugb25seSBoYXZlIG9uZSB0aW1lc3RhbXBpbmcgY2hhbm5lbC4gKi8NCiAJZXYuaW5kZXggPSAw Ow0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhj aGlwKTsNCiAJZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoJmNoaXAtPnRzdGFt cF90YywgcmF3X3RzKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhl Nnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlwdHBfY2xvY2tfZXZlbnQoY2hpcC0+cHRwX2Ns b2NrLCAmZXYpOw0KIG91dDoNCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBzdGF0aWMgaW50IG12ODhl Nnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRf cHBtKQ0KIAlhZGogKj0gc2NhbGVkX3BwbTsNCiAJZGlmZiA9IGRpdl91NjQoYWRqLCBDQ19NVUxU X0RFTSk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3Jl Z19sb2NrKGNoaXApOw0KIA0KIAl0aW1lY291bnRlcl9yZWFkKCZjaGlwLT50c3RhbXBfdGMpOw0K IAljaGlwLT50c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgKyBk aWZmOw0KIA0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3Jl Z191bmxvY2soY2hpcCk7DQogDQogCXJldHVybiAwOw0KIH0NCkBAIC0yMDYsOSArMjA2LDkgQEAg c3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpw dHAsIHM2NCBkZWx0YSkNCiB7DQogCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90 b19jaGlwKHB0cCk7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2 eHh4X3JlZ19sb2NrKGNoaXApOw0KIAl0aW1lY291bnRlcl9hZGp0aW1lKCZjaGlwLT50c3RhbXBf dGMsIGRlbHRhKTsNCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4 eF9yZWdfdW5sb2NrKGNoaXApOw0KIA0KIAlyZXR1cm4gMDsNCiB9DQpAQCAtMjE5LDkgKzIxOSw5 IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5m byAqcHRwLA0KIAlzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHAp Ow0KIAl1NjQgbnM7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2 eHh4X3JlZ19sb2NrKGNoaXApOw0KIAlucyA9IHRpbWVjb3VudGVyX3JlYWQoJmNoaXAtPnRzdGFt cF90Yyk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X3VubG9jayhjaGlwKTsNCiANCiAJKnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7DQogDQpAQCAt MjM2LDkgKzIzNiw5IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBw dHBfY2xvY2tfaW5mbyAqcHRwLA0KIA0KIAlucyA9IHRpbWVzcGVjNjRfdG9fbnModHMpOw0KIA0K LQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlw KTsNCiAJdGltZWNvdW50ZXJfaW5pdCgmY2hpcC0+dHN0YW1wX3RjLCAmY2hpcC0+dHN0YW1wX2Nj LCBucyk7DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTI1Niw3ICsyNTYsNyBAQCBz dGF0aWMgaW50IG12ODhlNjM1Ml9wdHBfZW5hYmxlX2V4dHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hp cCAqY2hpcCwNCiAJaWYgKHBpbiA8IDApDQogCQlyZXR1cm4gLUVCVVNZOw0KIA0KLQltdXRleF9s b2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiANCiAJ aWYgKG9uKSB7DQogCQlmdW5jID0gTVY4OEU2MzUyX0cyX1NDUkFUQ0hfR1BJT19QQ1RMX0VWUkVR Ow0KQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW50IG12ODhlNjM1Ml9wdHBfZW5hYmxlX2V4 dHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwNCiAJfQ0KIA0KIG91dDoNCi0JbXV0ZXhf dW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0K IA0KIAlyZXR1cm4gZXJyOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2 eHh4L3NlcmRlcy5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9zZXJkZXMuYw0KaW5kZXgg ZDk4NmM1ZDU1YmYxLi4yMGM1MjZjMmE5ZWUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9kc2Ev bXY4OGU2eHh4L3NlcmRlcy5jDQorKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3NlcmRl cy5jDQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTYzNTJfc2Vy ZGVzX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQogCXUxNiBzdGF0dXM7DQogCWlu dCBlcnI7DQogDQotCW11dGV4X2xvY2soJmNoaXAtPnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3Jl Z19sb2NrKGNoaXApOw0KIA0KIAllcnIgPSBtdjg4ZTYzNTJfc2VyZGVzX3JlYWQoY2hpcCwgTVY4 OEU2MzUyX1NFUkRFU19JTlRfU1RBVFVTLCAmc3RhdHVzKTsNCiAJaWYgKGVycikNCkBAIC0yMTks NyArMjE5LDcgQEAgc3RhdGljIGlycXJldHVybl90IG12ODhlNjM1Ml9zZXJkZXNfdGhyZWFkX2Zu KGludCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJCW12ODhlNjM1Ml9zZXJkZXNfaXJxX2xpbmsoY2hp cCwgcG9ydC0+cG9ydCk7DQogCX0NCiBvdXQ6DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xv Y2spOw0KKwltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIHJldDsNCiB9 DQpAQCAtMjUzLDEyICsyNTMsMTIgQEAgaW50IG12ODhlNjM1Ml9zZXJkZXNfaXJxX3NldHVwKHN0 cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpDQogCS8qIFJlcXVlc3RpbmcgdGhl IElSUSB3aWxsIHRyaWdnZXIgaXJxIGNhbGxiYWNrcy4gU28gd2UgY2Fubm90DQogCSAqIGhvbGQg dGhlIHJlZ19sb2NrLg0KIAkgKi8NCi0JbXV0ZXhfdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQor CW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOw0KIAllcnIgPSByZXF1ZXN0X3RocmVhZGVkX2ly cShjaGlwLT5wb3J0c1twb3J0XS5zZXJkZXNfaXJxLCBOVUxMLA0KIAkJCQkgICBtdjg4ZTYzNTJf c2VyZGVzX3RocmVhZF9mbiwNCiAJCQkJICAgSVJRRl9PTkVTSE9ULCAibXY4OGU2eHh4LXNlcmRl cyIsDQogCQkJCSAgICZjaGlwLT5wb3J0c1twb3J0XSk7DQotCW11dGV4X2xvY2soJmNoaXAtPnJl Z19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIA0KIAlpZiAoZXJyKSB7DQog CQlkZXZfZXJyKGNoaXAtPmRldiwgIlVuYWJsZSB0byByZXF1ZXN0IFNFUkRFUyBpbnRlcnJ1cHQ6 ICVkXG4iLA0KQEAgLTI3OSw5ICsyNzksOSBAQCB2b2lkIG12ODhlNjM1Ml9zZXJkZXNfaXJxX2Zy ZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkNCiAJLyogRnJlZWluZyB0 aGUgSVJRIHdpbGwgdHJpZ2dlciBpcnEgY2FsbGJhY2tzLiBTbyB3ZSBjYW5ub3QNCiAJICogaG9s ZCB0aGUgcmVnX2xvY2suDQogCSAqLw0KLQltdXRleF91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsN CisJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7DQogCWZyZWVfaXJxKGNoaXAtPnBvcnRzW3Bv cnRdLnNlcmRlc19pcnEsICZjaGlwLT5wb3J0c1twb3J0XSk7DQotCW11dGV4X2xvY2soJmNoaXAt PnJlZ19sb2NrKTsNCisJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOw0KIA0KIAljaGlwLT5wb3J0 c1twb3J0XS5zZXJkZXNfaXJxID0gMDsNCiB9DQpAQCAtNjIxLDcgKzYyMSw3IEBAIHN0YXRpYyBp cnFyZXR1cm5fdCBtdjg4ZTYzOTBfc2VyZGVzX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZf aWQpDQogDQogCWxhbmUgPSBtdjg4ZTYzOTB4X3NlcmRlc19nZXRfbGFuZShjaGlwLCBwb3J0LT5w b3J0KTsNCiANCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X2xvY2soY2hpcCk7DQogDQogCXN3aXRjaCAoY21vZGUpIHsNCiAJY2FzZSBNVjg4RTZYWFhfUE9S VF9TVFNfQ01PREVfU0dNSUk6DQpAQCAtNjM3LDcgKzYzNyw3IEBAIHN0YXRpYyBpcnFyZXR1cm5f dCBtdjg4ZTYzOTBfc2VyZGVzX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQogCQl9 DQogCX0NCiBvdXQ6DQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4 eHhfcmVnX3VubG9jayhjaGlwKTsNCiANCiAJcmV0dXJuIHJldDsNCiB9DQpAQCAtNjY2LDEyICs2 NjYsMTIgQEAgaW50IG12ODhlNjM5MHhfc2VyZGVzX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4 X2NoaXAgKmNoaXAsIGludCBwb3J0KQ0KIAkvKiBSZXF1ZXN0aW5nIHRoZSBJUlEgd2lsbCB0cmln Z2VyIGlycSBjYWxsYmFja3MuIFNvIHdlIGNhbm5vdA0KIAkgKiBob2xkIHRoZSByZWdfbG9jay4N CiAJICovDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhfcmVn X3VubG9jayhjaGlwKTsNCiAJZXJyID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoY2hpcC0+cG9ydHNb cG9ydF0uc2VyZGVzX2lycSwgTlVMTCwNCiAJCQkJICAgbXY4OGU2MzkwX3NlcmRlc190aHJlYWRf Zm4sDQogCQkJCSAgIElSUUZfT05FU0hPVCwgIm12ODhlNnh4eC1zZXJkZXMiLA0KIAkJCQkgICAm Y2hpcC0+cG9ydHNbcG9ydF0pOw0KLQltdXRleF9sb2NrKCZjaGlwLT5yZWdfbG9jayk7DQorCW12 ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsNCiANCiAJaWYgKGVycikgew0KIAkJZGV2X2VycihjaGlw LT5kZXYsICJVbmFibGUgdG8gcmVxdWVzdCBTRVJERVMgaW50ZXJydXB0OiAlZFxuIiwNCkBAIC03 MDUsOSArNzA1LDkgQEAgdm9pZCBtdjg4ZTYzOTB4X3NlcmRlc19pcnFfZnJlZShzdHJ1Y3QgbXY4 OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQ0KIAkvKiBGcmVlaW5nIHRoZSBJUlEgd2lsbCB0 cmlnZ2VyIGlycSBjYWxsYmFja3MuIFNvIHdlIGNhbm5vdA0KIAkgKiBob2xkIHRoZSByZWdfbG9j ay4NCiAJICovDQotCW11dGV4X3VubG9jaygmY2hpcC0+cmVnX2xvY2spOw0KKwltdjg4ZTZ4eHhf cmVnX3VubG9jayhjaGlwKTsNCiAJZnJlZV9pcnEoY2hpcC0+cG9ydHNbcG9ydF0uc2VyZGVzX2ly cSwgJmNoaXAtPnBvcnRzW3BvcnRdKTsNCi0JbXV0ZXhfbG9jaygmY2hpcC0+cmVnX2xvY2spOw0K Kwltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7DQogDQogCWNoaXAtPnBvcnRzW3BvcnRdLnNlcmRl c19pcnEgPSAwOw0KIH0NCi0tIA0KMi4yMC4xDQoNCg==