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=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 5DA07C433E0 for ; Wed, 27 Jan 2021 20:44:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DCE3B61601 for ; Wed, 27 Jan 2021 20:44:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCE3B61601 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E952D6E880; Wed, 27 Jan 2021 20:44:07 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id A60406E880 for ; Wed, 27 Jan 2021 20:44:06 +0000 (UTC) IronPort-SDR: xexKxM0vbDY/my8Zq3kUlDFXM152ucYnk6g4aO8AriQ3cACC1Kuda6543KCjpxAGfFePa/yxK6 3bT1HlfnIaYg== X-IronPort-AV: E=McAfee;i="6000,8403,9877"; a="176619904" X-IronPort-AV: E=Sophos;i="5.79,380,1602572400"; d="scan'208";a="176619904" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2021 12:43:59 -0800 IronPort-SDR: AMNSz/amCzuQK7cXkqKm/NGvbGAB4+cYL06GNr/nM2OM7kw2/i3Jki8c4v7XCnu0SqFPT9GJWq 4UKQEg5IFjvA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,380,1602572400"; d="scan'208";a="369600090" Received: from irsmsx606.ger.corp.intel.com ([163.33.146.139]) by orsmga002.jf.intel.com with ESMTP; 27 Jan 2021 12:43:58 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by IRSMSX606.ger.corp.intel.com (163.33.146.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 27 Jan 2021 20:43:56 +0000 Received: from orsmsx610.amr.corp.intel.com ([10.22.229.23]) by ORSMSX610.amr.corp.intel.com ([10.22.229.23]) with mapi id 15.01.1713.004; Wed, 27 Jan 2021 12:43:54 -0800 From: "Souza, Jose" To: "Mun, Gwan-gyeong" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH v13 1/2] drm/i915/display: Support PSR Multiple Instances Thread-Index: AQHW9NErSRaqwRU/QUuGyfJMwiE+iKo8dxOA Date: Wed, 27 Jan 2021 20:43:54 +0000 Message-ID: References: <20210127172338.1519034-1-gwan-gyeong.mun@intel.com> In-Reply-To: <20210127172338.1519034-1-gwan-gyeong.mun@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.1.200.100] Content-ID: MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v13 1/2] drm/i915/display: Support PSR Multiple Instances X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Nikula, Jani" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCAyMDIxLTAxLTI3IGF0IDE5OjIzICswMjAwLCBHd2FuLWd5ZW9uZyBNdW4gd3JvdGU6 DQo+IEl0IGlzIGEgcHJlbGltaW5hcnkgd29yayBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSBFRFAg UFNSIGFuZA0KPiBEUCBQYW5lbFJlcGxheS4gQW5kIGl0IHJlZmFjdG9ycyBzaW5nbGV0b24gUFNS IHRvIE11bHRpIFRyYW5zY29kZXINCj4gc3VwcG9ydGFibGUgUFNSLg0KPiBBbmQgdGhpcyBtb3Zl cyBhbmQgcmVuYW1lcyB0aGUgaTkxNV9wc3Igc3RydWN0dXJlIG9mIGRybV9pOTE1X3ByaXZhdGUn cyB0bw0KPiBpbnRlbF9kcCdzIGludGVsX3BzciBzdHJ1Y3R1cmUuDQo+IEl0IGFsc28gY2F1c2Vz IGNoYW5nZXMgaW4gUFNSIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lIGZvciBzdXBwb3J0aW5n DQo+IG11bHRpcGxlIHRyYW5zY29kZXJzLiBCdXQgaXQgZG9lcyBub3QgY2hhbmdlIHRoZSBzY2Vu YXJpbyBhbmQgdGltaW5nIG9mDQo+IGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgUFNSLiBBbmQgaXQg bm90IHN1cHBvcnQgbXVsdGlwbGUgcGlwZXMgd2l0aA0KPiBhIHNpbmdsZSB0cmFuc2NvZGVyIFBT UiBjYXNlIHlldC4NCj4gDQo+IHYyOiBGaXggaW5kZW50YXRpb24gYW5kIGFkZCBjb21tZW50cw0K PiB2MzogUmVtb3ZlIEJsYW5rIGxpbmUNCj4gdjQ6IFJlYmFzZWQNCj4gdjU6IFJlYmFzZWQgYW5k IEFkZHJlc3NlZCBBbnNodW1hbidzIHJldmlldyBjb21tZW50Lg0KPiAgICAgLSBNb3ZlIGNhbGxp bmcgb2YgaW50ZWxfcHNyX2luaXQoKSB0byBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcigpDQo+IHY2 OiBBZGRyZXNzIEFuc2h1bWFuJ3MgcmV2aWV3IGNvbW1lbnRzDQo+ICAgIC0gUmVtb3ZlIHdyb25n IGNvbW1lbnRzIGFuZCBhZGQgY29tbWVudHMgZm9yIGEgbGltaXQgb2Ygc3VwcG9ydGluZyBvZg0K PiAgICAgIGEgc2luZ2xlIHBpcGUgUFNSDQo+IHY3OiBVcGRhdGUgaW50ZWxfcHNyX2NvbXB1dGVf Y29uZmlnKCkgZm9yIHN1cHBvcnRpbmcgbXVsdGlwbGUgdHJhbnNjb2Rlcg0KPiAgICAgUFNSIG9u IEJEVysNCj4gdjg6IEFkZHJlc3MgQW5zaHVtYW4ncyByZXZpZXcgY29tbWVudHMNCj4gICAgLSBS ZXBsYWNlIERSTV9ERUJVR19LTVMgd2l0aCBkcm1fZGJnX2ttcygpIC8gRFJNX1dBUk4gd2l0aCBk cm1fd2FybigpDQo+IHY5OiBGaXggY29tbWl0IG1lc3NhZ2UNCj4gdjEwOiBSZWJhc2VkDQo+IHYx MTogQWRkcmVzcyBKb3NlJ3MgcmV2aWV3IGNvbW1lbnQuDQo+ICAgLSBSZW9yZGVyIGNhbGxpbmcg b3JkZXIgb2YgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKCkuDQo+ICAgLSBJ biBvcmRlciB0byByZWR1Y2UgY2hhbmdlcyBrZWVwIHRoZSBvbGQgbmFtZSBmb3IgZHJtX2k5MTVf cHJpdmF0ZS4NCj4gICAtIENoYW5nZSByZXN0cmljdGlvbnMgb2YgbXVsdGlwbGUgaW5zdGFuY2Vz IG9mIFBTUi4NCj4gdjEyOiBBZGRyZXNzIEpvc2UncyByZXZpZXcgY29tbWVudC4NCj4gICAtIENo YW5nZSB0aGUgY2FsbGluZyBvZiBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwo KSBpbnRvDQo+ICAgICBjb21taXRfcGlwZV9jb25maWcoKS4NCj4gICAtIENoYW5nZSBhIGNoZWNr aW5nIG9yZGVyIG9mIENBTl9QU1IoKSBhbmQgY29ubmVjdG9yX3N0YXR1cyB0byBvcmlnaW5hbA0K PiAgICAgb24gaTkxNV9wc3Jfc2lua19zdGF0dXNfc2hvdygpLg0KPiAgIC0gRHJvcCB1bm5lZWRl ZCBpbnRlbF9kcF91cGRhdGVfcGlwZSgpIGZ1bmN0aW9uLg0KPiAgIC0gSW4gb3JkZXIgdG8gd2Fp dCBhIHNwZWNpZmljIGVuY29kZXIgd2hpY2ggYmVsb25nIHRvIGNydGNfc3RhdGUgb24NCj4gICAg IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKCksIGFkZCBjaGVja2luZyBvZiBlbmNvZGVyLg0KPiAg IC0gQWRkIGFuIHdoaXRlc3BhY2UgdG8gY29tbWVudHMuDQo+IHYxMzogUmViYXNlZCBhbmQgQWRk cmVzcyBKb3NlJ3MgcmV2aWV3IGNvbW1lbnQuDQo+ICAgLSBBZGQgYW5kIHVzZSBmb3JfZWFjaF9p bnRlbF9wc3JfZW5hYmxlZF9lbmNvZGVyKCkgbWFjcm8uDQo+ICAgLSBJbiBvcmRlciB0byB1c2Ug Y29ycmVjdCBmcm9udGJ1ZmZlcl9iaXQgZm9yIGVhY2ggcGlwZSwNCj4gICAgIGZpeCBpbnRlbF9w c3JfaW52YWxpZGF0ZSgpIGFuZCBpbnRlbF9wc3JfZmx1c2goKS4NCj4gICAtIFJlbW92ZSByZWR1 bmRhbnQgb3IgdW5uZWVkZWQgY29kZXMuDQo+ICAgLSBVcGRhdGUgY29tbWVudHMuDQo+IA0KPiBT aWduZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+ DQo+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCj4g Q2M6IEp1aGEtUGVra2EgSGVpa2tpbGEgPGp1aGFwZWtrYS5oZWlra2lsYUBnbWFpbC5jb20+DQo+ IENjOiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPg0KPiBSZXZpZXdl ZC1ieTogQW5zaHVtYW4gR3VwdGEgPGFuc2h1bWFuLmd1cHRhQGludGVsLmNvbT4NCj4gLS0tDQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgIDIgLQ0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmggIHwgICA4ICsN Cj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jICB8IDEwNSAr KystDQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAg NDYgKysNCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyAgICAgICB8 ICAxMCArLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYyAgICAg IHwgNTc2ICsrKysrKysrKystLS0tLS0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9wc3IuaCAgICAgIHwgIDExICstDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Nwcml0ZS5jICAgfCAgIDYgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAzOCAtLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYyAgICAgICAgICAgICAgIHwgIDQ4ICstDQo+ICAxMCBmaWxlcyBjaGFuZ2VkLCA0 ODUgaW5zZXJ0aW9ucygrKSwgMzY1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gaW5kZXggNjY3ZDk0MTg3OGEzLi4y NGRmOWRmYjU3ZmIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jDQo+IEBAIC0xNDEzNSw4ICsxNDEzNSw2IEBAIHN0YXRpYyB2b2lkIGludGVs X3NldHVwX291dHB1dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCQlp bnRlbF9kdm9faW5pdChkZXZfcHJpdik7DQo+ICAJfQ0KPiAgDQo+IA0KPiAtCWludGVsX3Bzcl9p bml0KGRldl9wcml2KTsNCj4gLQ0KPiAgCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoJmRldl9wcml2 LT5kcm0sIGVuY29kZXIpIHsNCj4gIAkJZW5jb2Rlci0+YmFzZS5wb3NzaWJsZV9jcnRjcyA9DQo+ ICAJCQlpbnRlbF9lbmNvZGVyX3Bvc3NpYmxlX2NydGNzKGVuY29kZXIpOw0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaA0KPiBpbmRleCA2NGZmYTM0NTQ0 YTcuLmZjNDFkMGQ5ZTVhNSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmgNCj4gQEAgLTQxNyw2ICs0MTcsMTQgQEAgZW51bSBwaHlfZmlhIHsN Cj4gIAkJZm9yX2VhY2hfaWYoKGVuY29kZXJfbWFzaykgJgkJCQlcDQo+ICAJCQkgICAgZHJtX2Vu Y29kZXJfbWFzaygmaW50ZWxfZW5jb2Rlci0+YmFzZSkpDQo+ICANCj4gDQo+ICsjZGVmaW5lIGZv cl9lYWNoX2ludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJsZWQoZGV2LCBpbnRlbF9lbmNvZGVyLCBl bmNvZGVyX21hc2spIFwNCg0KSSdtIG5vdCBhIG5hdGl2ZSBzcGVha2VyIGJ1dCAiaXMiIHNvdW5k cyB3cm9uZywgbWF5YmUgZm9yX2VhY2hfaW50ZWxfZW5jb2Rlcl93aXRoX3Bzcl9lbmFibGVkKCk/ DQoNCg0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfZW5jb2RlciwJCQkJXA0KPiArCQkJ ICAgICYoZGV2KS0+bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LAkJXA0KPiArCQkJICAgIGJhc2Uu aGVhZCkJCQkJCVwNCj4gKwkJZm9yX2VhY2hfaWYoKChlbmNvZGVyX21hc2spICYJCQkJXA0KPiAr CQkJICAgICBkcm1fZW5jb2Rlcl9tYXNrKCZpbnRlbF9lbmNvZGVyLT5iYXNlKSkgJiYJXA0KPiAr CQkJICAgIGludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJsZWQoaW50ZWxfZW5jb2RlcikpDQoNCkxv b2tzIGxpa2Ugc3R5bGUgaXMgd3JvbmcgaGVyZSBidXQgYm90IHdpbGwgdGVsbCB5b3UgaWYgaXQg aXMuDQoNCj4gKw0KPiAgI2RlZmluZSBmb3JfZWFjaF9pbnRlbF9kcChkZXYsIGludGVsX2VuY29k ZXIpCQkJXA0KPiAgCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBpbnRlbF9lbmNvZGVyKQkJ XA0KPiAgCQlmb3JfZWFjaF9pZihpbnRlbF9lbmNvZGVyX2lzX2RwKGludGVsX2VuY29kZXIpKQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9k ZWJ1Z2ZzLmMNCj4gaW5kZXggZDYyYjE4ZDVlY2Q4Li45ODY4MjUzZGY2MWYgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVn ZnMuYw0KPiBAQCAtMjQ5LDEyICsyNDksMTEgQEAgc3RhdGljIGludCBpOTE1X3Bzcl9zaW5rX3N0 YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gIAkJInNpbmsgaW50 ZXJuYWwgZXJyb3IiLA0KPiAgCX07DQo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciA9IG0tPnByaXZhdGU7DQo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjb25uZWN0b3ItPmRldik7DQo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 DQo+ICAJCWludGVsX2F0dGFjaGVkX2RwKHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsN Cj4gIAlpbnQgcmV0Ow0KPiAgDQo+IA0KPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikpIHsNCj4g KwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKSB7DQo+ICAJCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBw b3J0ZWRcbiIpOw0KPiAgCQlyZXR1cm4gLUVOT0RFVjsNCj4gIAl9DQo+IEBAIC0yODAsMTIgKzI3 OSwxMyBAQCBzdGF0aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQ0KPiAgREVGSU5FX1NIT1dfQVRUUklCVVRFKGk5MTVfcHNyX3Np bmtfc3RhdHVzKTsNCj4gIA0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IC1wc3Jfc291cmNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkN Cj4gK3Bzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBz ZXFfZmlsZSAqbSkNCj4gIHsNCj4gIAl1MzIgdmFsLCBzdGF0dXNfdmFsOw0KPiAgCWNvbnN0IGNo YXIgKnN0YXR1cyA9ICJ1bmtub3duIjsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQlpZiAoZGV2X3ByaXYt PnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQp IHsNCj4gIAkJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsaXZlX3N0YXR1c1tdID0gew0KPiAg CQkJIklETEUiLA0KPiAgCQkJIkNBUFRVUkUiLA0KPiBAQCAtMzAwLDcgKzMwMCw3IEBAIHBzcl9z b3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHNl cV9maWxlICptKQ0KPiAgCQkJIlRHX09OIg0KPiAgCQl9Ow0KPiAgCQl2YWwgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRy YW5zY29kZXIpKTsNCj4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBfUFNSMl9TVEFUVVNfU1RB VEVfTUFTSykgPj4NCj4gIAkJCSAgICAgIEVEUF9QU1IyX1NUQVRVU19TVEFURV9TSElGVDsNCj4g IAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9TSVpFKGxpdmVfc3RhdHVzKSkNCj4gQEAgLTMxNyw3 ICszMTcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkNCj4gIAkJCSJTUkRFTlRfT04iLA0KPiAgCQl9Ow0K PiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBFRFBfUFNSX1NU QVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsNCj4gKwkJCQkgICAgRURQX1BTUl9TVEFU VVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7DQo+ICAJCXN0YXR1c192YWwgPSAodmFsICYg RURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4NCj4gIAkJCSAgICAgIEVEUF9QU1JfU1RBVFVT X1NUQVRFX1NISUZUOw0KPiAgCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2ZV9zdGF0 dXMpKQ0KPiBAQCAtMzI3LDIxICszMjcsMTggQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ICAJc2VxX3By aW50ZihtLCAiU291cmNlIFBTUiBzdGF0dXM6ICVzIFsweCUwOHhdXG4iLCBzdGF0dXMsIHZhbCk7 DQo+ICB9DQo+ICANCj4gDQo+IC1zdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiArc3RhdGljIGludCBpbnRlbF9wc3Jfc3RhdHVz KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7DQo+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsNCj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsN Cj4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsNCj4gIAlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsNCj4gIAljb25zdCBjaGFyICpzdGF0dXM7DQo+ICAJYm9vbCBlbmFi bGVkOw0KPiAgCXUzMiB2YWw7DQo+ICANCj4gDQo+IC0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkN Cj4gLQkJcmV0dXJuIC1FTk9ERVY7DQo+IC0NCj4gIAlzZXFfcHJpbnRmKG0sICJTaW5rIHN1cHBv cnQ6ICVzIiwgeWVzbm8ocHNyLT5zaW5rX3N1cHBvcnQpKTsNCj4gLQlpZiAocHNyLT5kcCkNCj4g LQkJc2VxX3ByaW50ZihtLCAiIFsweCUwMnhdIiwgcHNyLT5kcC0+cHNyX2RwY2RbMF0pOw0KPiAr CWlmIChwc3ItPnNpbmtfc3VwcG9ydCkNCj4gKwkJc2VxX3ByaW50ZihtLCAiIFsweCUwMnhdIiwg aW50ZWxfZHAtPnBzcl9kcGNkWzBdKTsNCj4gIAlzZXFfcHV0cyhtLCAiXG4iKTsNCj4gIA0KPiAN Cj4gIAlpZiAoIXBzci0+c2lua19zdXBwb3J0KQ0KPiBAQCAtMzY1LDE2ICszNjIsMTYgQEAgc3Rh dGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkNCj4gIA0KPiANCj4gIAlpZiAocHNyLT5wc3IyX2VuYWJsZWQpIHsNCj4gIAkJdmFsID0gaW50 ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5w c3IudHJhbnNjb2RlcikpOw0KPiArCQkJCSAgICBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyKSk7DQo+ICAJCWVuYWJsZWQgPSB2YWwgJiBFRFBfUFNSMl9FTkFCTEU7DQo+ICAJ fSBlbHNlIHsNCj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkgICAg RURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9Q U1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQllbmFibGVkID0gdmFsICYg RURQX1BTUl9FTkFCTEU7DQo+ICAJfQ0KPiAgCXNlcV9wcmludGYobSwgIlNvdXJjZSBQU1IgY3Rs OiAlcyBbMHglMDh4XVxuIiwNCj4gIAkJICAgZW5hYmxlZGRpc2FibGVkKGVuYWJsZWQpLCB2YWwp Ow0KPiAtCXBzcl9zb3VyY2Vfc3RhdHVzKGRldl9wcml2LCBtKTsNCj4gKwlwc3Jfc291cmNlX3N0 YXR1cyhpbnRlbF9kcCwgbSk7DQo+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9udGJ1ZmZlciBi aXRzOiAweCUwOHhcbiIsDQo+ICAJCSAgIHBzci0+YnVzeV9mcm9udGJ1ZmZlcl9iaXRzKTsNCj4g IA0KPiANCj4gQEAgLTM4Myw3ICszODAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0 dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiAgCSAqLw0KPiAgCWlmIChJU19I QVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7DQo+ICAJCXZhbCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IC0JCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7DQo+ICAJCXZhbCAmPSBFRFBfUFNSX1BFUkZfQ05UX01B U0s7DQo+ICAJCXNlcV9wcmludGYobSwgIlBlcmZvcm1hbmNlIGNvdW50ZXI6ICV1XG4iLCB2YWwp Ow0KPiAgCX0NCj4gQEAgLTQwNCw3ICs0MDEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9z dGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiAgCQkgKi8NCj4gIAkJZm9y IChmcmFtZSA9IDA7IGZyYW1lIDwgUFNSMl9TVV9TVEFUVVNfRlJBTUVTOyBmcmFtZSArPSAzKSB7 DQo+ICAJCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCQkgICAgUFNSMl9T VV9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBmcmFtZSkpOw0KPiArCQkJCQkgICAg UFNSMl9TVV9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyLCBmcmFtZSkpOw0KPiAgCQkJ c3VfZnJhbWVzX3ZhbFtmcmFtZSAvIDNdID0gdmFsOw0KPiAgCQl9DQo+ICANCj4gDQo+IEBAIC00 MzAsMjMgKzQyNyw1NyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAgDQo+IA0KPiAr c3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2Rl X3RvX2k5MTUobS0+cHJpdmF0ZSk7DQo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7 DQo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IE5VTEw7DQo+ICsNCj4gKwlpZiAoIUhB U19QU1IoZGV2X3ByaXYpKQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCS8qIEZpbmQg dGhlIGZpcnN0IEVEUCAqLw0KPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBl bmNvZGVyKSB7DQo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsN Cj4gKwkJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0KPiArCQkJYnJlYWs7 DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlpZiAoIWludGVsX2RwKQ0KPiArCQlyZXR1cm4gLUVO T0RFVjsNCj4gKw0KPiArCXJldHVybiBpbnRlbF9wc3Jfc3RhdHVzKG0sIGludGVsX2RwKTsNCj4g K30NCj4gKw0KPiAgc3RhdGljIGludA0KPiAgaTkxNV9lZHBfcHNyX2RlYnVnX3NldCh2b2lkICpk YXRhLCB1NjQgdmFsKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRhdGE7DQo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7DQo+IC0JaW50IHJldDsNCj4g KwlpbnQgcmV0ID0gLUVOT0RFVjsNCj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsN Cj4gIA0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1cm4gLUVOT0RF VjsNCj4gKwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiAgDQo+ IA0KPiAtCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGluZyBQU1IgZGVidWcgdG8g JWxseFxuIiwgdmFsKTsNCj4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5j b2Rlcikgew0KPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2Rw KGVuY29kZXIpOw0KPiAgDQo+IA0KPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgm ZGV2X3ByaXYtPnJ1bnRpbWVfcG0pOw0KPiArCQlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQ0KPiAr CQkJY29udGludWU7DQo+ICANCj4gDQo+IC0JcmV0ID0gaW50ZWxfcHNyX2RlYnVnX3NldChkZXZf cHJpdiwgdmFsKTsNCj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkg ew0KPiArCQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0 byAlbGx4XG4iLCB2YWwpOw0KPiAgDQo+IA0KPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZf cHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZik7DQo+ICsJCQl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsNCj4gKw0KPiArCQkJLy8gVE9ETzogc3Bs aXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRlDQo+ICsJCQlyZXQgPSBpbnRl bF9wc3JfZGVidWdfc2V0KGludGVsX2RwLCB2YWwpOw0KPiArDQo+ICsJCQlpbnRlbF9ydW50aW1l X3BtX3B1dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOw0KPiArCQl9DQo+ICsJfQ0K PiAgDQo+IA0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+IEBAIC00NTUsMTIgKzQ4NiwyNSBAQCBz dGF0aWMgaW50DQo+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFs KQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7DQo+ ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ICANCj4gDQo+IC0JaWYgKCFDQU5f UFNSKGRldl9wcml2KSkNCj4gKwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiAgCQlyZXR1cm4g LUVOT0RFVjsNCj4gIA0KPiANCj4gLQkqdmFsID0gUkVBRF9PTkNFKGRldl9wcml2LT5wc3IuZGVi dWcpOw0KPiAtCXJldHVybiAwOw0KPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJt LCBlbmNvZGVyKSB7DQo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoZW5jb2Rlcik7DQo+ICsNCj4gKwkJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkNCj4gKwkJ CWNvbnRpbnVlOw0KPiArDQo+ICsJCS8vIFRPRE86IHNwbGl0IHRvIGVhY2ggdHJhbnNjb2Rlcidz IFBTUiBkZWJ1ZyBzdGF0ZQ0KPiArCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRf RURQKSB7DQo+ICsJCQkqdmFsID0gUkVBRF9PTkNFKGludGVsX2RwLT5wc3IuZGVidWcpOw0KPiAr CQkJcmV0dXJuIDA7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gLUVOT0RFVjsNCj4g IH0NCj4gIA0KPiANCj4gIERFRklORV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1 Z19mb3BzLA0KPiBAQCAtMTIzMyw5ICsxMjc3LDYgQEAgc3RhdGljIHZvaWQgZHJyc19zdGF0dXNf cGVyX2NydGMoc3RydWN0IHNlcV9maWxlICptLA0KPiAgCQkvKiBkaXNhYmxlX2RycnMoKSB3aWxs IG1ha2UgZHJycy0+ZHAgTlVMTCAqLw0KPiAgCQlpZiAoIWRycnMtPmRwKSB7DQo+ICAJCQlzZXFf cHV0cyhtLCAiSWRsZW5lc3MgRFJSUzogRGlzYWJsZWRcbiIpOw0KPiAtCQkJaWYgKGRldl9wcml2 LT5wc3IuZW5hYmxlZCkNCj4gLQkJCQlzZXFfcHV0cyhtLA0KPiAtCQkJCSJcdEFzIFBTUiBpcyBl bmFibGVkLCBEUlJTIGlzIG5vdCBlbmFibGVkXG4iKTsNCj4gIAkJCW11dGV4X3VubG9jaygmZHJy cy0+bXV0ZXgpOw0KPiAgCQkJcmV0dXJuOw0KPiAgCQl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+IGluZGV4IDM5Mzk3NzQ4 YjRiMC4uNjNkYWY4YjQ1OTQxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBAQCAtMTQxNSw2ICsxNDE1LDQyIEBA IHN0cnVjdCBpbnRlbF9wcHMgew0KPiAgCXN0cnVjdCBlZHBfcG93ZXJfc2VxIHBwc19kZWxheXM7 DQo+ICB9Ow0KPiAgDQo+IA0KPiArc3RydWN0IGludGVsX3BzciB7DQo+ICsJLyogTXV0ZXggZm9y IFBTUiBzdGF0ZSBvZiB0aGUgdHJhbnNjb2RlciAqLw0KPiArCXN0cnVjdCBtdXRleCBsb2NrOw0K PiArDQo+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSwkweDBmDQo+ICsjZGVmaW5l IEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJCTB4MDANCj4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdf RElTQUJMRQkJMHgwMQ0KPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJCTB4MDINCj4g KyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMQkweDAzDQo+ICsjZGVmaW5lIEk5MTVf UFNSX0RFQlVHX0lSUQkJMHgxMA0KPiArDQo+ICsJdTMyIGRlYnVnOw0KPiArCWJvb2wgc2lua19z dXBwb3J0Ow0KPiArCWJvb2wgZW5hYmxlZDsNCj4gKwllbnVtIHBpcGUgcGlwZTsNCj4gKwllbnVt IHRyYW5zY29kZXIgdHJhbnNjb2RlcjsNCj4gKwlib29sIGFjdGl2ZTsNCj4gKwlzdHJ1Y3Qgd29y a19zdHJ1Y3Qgd29yazsNCj4gKwl1bnNpZ25lZCBpbnQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0K PiArCWJvb2wgc2lua19wc3IyX3N1cHBvcnQ7DQo+ICsJYm9vbCBsaW5rX3N0YW5kYnk7DQo+ICsJ Ym9vbCBjb2xvcmltZXRyeV9zdXBwb3J0Ow0KPiArCWJvb2wgcHNyMl9lbmFibGVkOw0KPiArCWJv b2wgcHNyMl9zZWxfZmV0Y2hfZW5hYmxlZDsNCj4gKwl1OCBzaW5rX3N5bmNfbGF0ZW5jeTsNCj4g KwlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsNCj4gKwlrdGltZV90IGxhc3RfZXhpdDsNCj4g Kwlib29sIHNpbmtfbm90X3JlbGlhYmxlOw0KPiArCWJvb2wgaXJxX2F1eF9lcnJvcjsNCj4gKwl1 MTYgc3VfeF9ncmFudWxhcml0eTsNCj4gKwlib29sIGRjM2NvX2VuYWJsZWQ7DQo+ICsJdTMyIGRj M2NvX2V4aXRfZGVsYXk7DQo+ICsJc3RydWN0IGRlbGF5ZWRfd29yayBkYzNjb193b3JrOw0KPiAr CXN0cnVjdCBkcm1fZHBfdnNjX3NkcCB2c2M7DQo+ICt9Ow0KPiArDQo+ICBzdHJ1Y3QgaW50ZWxf ZHAgew0KPiAgCWk5MTVfcmVnX3Qgb3V0cHV0X3JlZzsNCj4gIAl1MzIgRFA7DQo+IEBAIC0xNTE3 LDYgKzE1NTMsOCBAQCBzdHJ1Y3QgaW50ZWxfZHAgew0KPiAgCWJvb2wgaG9ibF9hY3RpdmU7DQo+ ICANCj4gDQo+ICAJc3RydWN0IGludGVsX2RwX3Bjb25fZnJsIGZybDsNCj4gKw0KPiArCXN0cnVj dCBpbnRlbF9wc3IgcHNyOw0KPiAgfTsNCj4gIA0KPiANCj4gIGVudW0gbHNwY29uX3ZlbmRvciB7 DQo+IEBAIC0xNzI5LDYgKzE3NjcsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGludGVsX2VuY29k ZXJfaXNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICAJfQ0KPiAgfQ0KPiAg DQo+IA0KPiArc3RhdGljIGlubGluZSBib29sIGludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJsZWQo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICt7DQo+ICsJaWYgKCFpbnRlbF9lbmNv ZGVyX2lzX2RwKGVuY29kZXIpKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlyZXR1cm4g ZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpLT5wc3IuZW5hYmxlZDsNCj4gK30NCj4gKw0KPiAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfbHNwY29uICoNCj4gIGVuY190b19pbnRlbF9sc3Bjb24o c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICB7DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gaW5kZXggOGMxMmQ1Mzc1NjA3Li5kNTMyYmQ1NjI1MGYg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gQEAgLTE2 NjMsMTIgKzE2NjMsMTAgQEAgdm9pZCBpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSwNCj4gIAkJCQkgIHN0cnVjdCBkcm1fZHBfdnNjX3NkcCAqdnNj KQ0KPiAgew0KPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOw0KPiAtDQo+ICAJdnNjLT5zZHBfdHlwZSA9IERQX1NEUF9WU0M7DQo+ICAN Cj4gDQo+IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7DQo+IC0JCWlmIChkZXZf cHJpdi0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgJiYNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5w c3IyX2VuYWJsZWQpIHsNCj4gKwkJaWYgKGludGVsX2RwLT5wc3IuY29sb3JpbWV0cnlfc3VwcG9y dCAmJg0KPiAgCQkgICAgaW50ZWxfZHBfbmVlZHNfdnNjX3NkcChjcnRjX3N0YXRlLCBjb25uX3N0 YXRlKSkgew0KPiAgCQkJLyogW1BTUjIsICtDb2xvcmltZXRyeV0gKi8NCj4gIAkJCWludGVsX2Rw X2NvbXB1dGVfdnNjX2NvbG9yaW1ldHJ5KGNydGNfc3RhdGUsIGNvbm5fc3RhdGUsDQo+IEBAIC0y MzU5LDcgKzIzNTcsNyBAQCBib29sIGludGVsX2RwX2luaXRpYWxfZmFzdHNldF9jaGVjayhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4g IA0KPiANCj4gLQlpZiAoQ0FOX1BTUihpOTE1KSAmJiBpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHAp KSB7DQo+ICsJaWYgKENBTl9QU1IoaW50ZWxfZHApICYmIGludGVsX2RwX2lzX2VkcChpbnRlbF9k cCkpIHsNCj4gIAkJZHJtX2RiZ19rbXMoJmk5MTUtPmRybSwgIkZvcmNpbmcgZnVsbCBtb2Rlc2V0 IHRvIGNvbXB1dGUgUFNSIHN0YXRlXG4iKTsNCj4gIAkJY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2No YW5nZWQgPSB0cnVlOw0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IEBAIC02NjQxLDYgKzY2MzksOCBA QCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdf cG9ydCwNCj4gIAlpbnRlbF9kcC0+ZnJsLmlzX3RyYWluZWQgPSBmYWxzZTsNCj4gIAlpbnRlbF9k cC0+ZnJsLnRyYWluZWRfcmF0ZV9nYnBzID0gMDsNCj4gIA0KPiANCj4gKwlpbnRlbF9wc3JfaW5p dChpbnRlbF9kcCk7DQo+ICsNCj4gIAlyZXR1cm4gdHJ1ZTsNCj4gIA0KPiANCj4gIGZhaWw6DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiBpbmRleCAyYzM2NWI3 NzhmNzQuLjkyNWMwYzZkOTJjZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5jDQo+IEBAIC04MCw5ICs4MCwxMSBAQA0KPiAgICogdXNlIHBhZ2UgZmxpcHMu DQo+ICAgKi8NCj4gIA0KPiANCj4gLXN0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5hYmxlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gK3N0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCXN3aXRjaCAoaTkxNS0+ cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7DQo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gKw0KPiArCXN3aXRj aCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgew0KPiAg CWNhc2UgSTkxNV9QU1JfREVCVUdfREVGQVVMVDoNCj4gIAkJcmV0dXJuIGk5MTUtPnBhcmFtcy5l bmFibGVfcHNyOw0KPiAgCWNhc2UgSTkxNV9QU1JfREVCVUdfRElTQUJMRToNCj4gQEAgLTkyLDkg Kzk0LDkgQEAgc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQ0KPiAgCX0NCj4gIH0NCj4gIA0KPiANCj4gLXN0YXRpYyBib29sIHBzcjJf Z2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiArc3Rh dGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0K PiAgew0KPiAtCXN3aXRjaCAoZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01P REVfTUFTSykgew0KPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RF QlVHX01PREVfTUFTSykgew0KPiAgCWNhc2UgSTkxNV9QU1JfREVCVUdfRElTQUJMRToNCj4gIAlj YXNlIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjE6DQo+ICAJCXJldHVybiBmYWxzZTsNCj4gQEAg LTEwMywxMSArMTA1LDEyIEBAIHN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCX0NCj4gIH0NCj4gIA0KPiANCj4gLXN0 YXRpYyB2b2lkIHBzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpDQo+ICtzdGF0aWMgdm9pZCBwc3JfaXJxX2NvbnRyb2woc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkNCj4gIHsNCj4gIAllbnVtIHRyYW5zY29kZXIgdHJhbnNfc2hpZnQ7DQo+ICAJdTMyIG1h c2ssIHZhbDsNCj4gIAlpOTE1X3JlZ190IGltcl9yZWc7DQo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ICANCj4gDQo+ICAJLyoN Cj4gIAkgKiBnZW4xMisgaGFzIHJlZ2lzdGVycyByZWxhdGl2ZSB0byB0cmFuc2NvZGVyIGFuZCBv bmUgcGVyIHRyYW5zY29kZXINCj4gQEAgLTExNiwxNCArMTE5LDE0IEBAIHN0YXRpYyB2b2lkIHBz cl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJICov DQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsNCj4gIAkJdHJhbnNfc2hpZnQg PSAwOw0KPiAtCQlpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpOw0KPiArCQlpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihpbnRlbF9kcC0+cHNyLnRyYW5zY29k ZXIpOw0KPiAgCX0gZWxzZSB7DQo+IC0JCXRyYW5zX3NoaWZ0ID0gZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyOw0KPiArCQl0cmFuc19zaGlmdCA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsNCj4g IAkJaW1yX3JlZyA9IEVEUF9QU1JfSU1SOw0KPiAgCX0NCj4gIA0KPiANCj4gIAltYXNrID0gRURQ X1BTUl9FUlJPUih0cmFuc19zaGlmdCk7DQo+IC0JaWYgKGRldl9wcml2LT5wc3IuZGVidWcgJiBJ OTE1X1BTUl9ERUJVR19JUlEpDQo+ICsJaWYgKGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1X1BT Ul9ERUJVR19JUlEpDQo+ICAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQp IHwNCj4gIAkJCUVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0KTsNCj4gIA0KPiANCj4gQEAg LTE3MiwzMCArMTc1LDMxIEBAIHN0YXRpYyB2b2lkIHBzcl9ldmVudF9wcmludChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwNCj4gIAkJZHJtX2RiZ19rbXMoJmk5MTUtPmRybSwgIlx0UFNS IGRpc2FibGVkXG4iKTsNCj4gIH0NCj4gIA0KPiANCj4gLXZvaWQgaW50ZWxfcHNyX2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpDQo+ICt2 b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzIg cHNyX2lpcikNCj4gIHsNCj4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXI7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOw0KPiAgCWVudW0gdHJhbnNjb2RlciB0 cmFuc19zaGlmdDsNCj4gIAlpOTE1X3JlZ190IGltcl9yZWc7DQo+ICAJa3RpbWVfdCB0aW1lX25z ID0gIGt0aW1lX2dldCgpOw0KPiAgDQo+IA0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEyKSB7DQo+ICAJCXRyYW5zX3NoaWZ0ID0gMDsNCj4gLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9J TVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4gKwkJaW1yX3JlZyA9IFRSQU5TX1BTUl9J TVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gIAl9IGVsc2Ugew0KPiAtCQl0cmFuc19z aGlmdCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsNCj4gKwkJdHJhbnNfc2hpZnQgPSBpbnRl bF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ICAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsNCj4gIAl9 DQo+ICANCj4gDQo+ICAJaWYgKHBzcl9paXIgJiBFRFBfUFNSX1BSRV9FTlRSWSh0cmFuc19zaGlm dCkpIHsNCj4gLQkJZGV2X3ByaXYtPnBzci5sYXN0X2VudHJ5X2F0dGVtcHQgPSB0aW1lX25zOw0K PiArCQlpbnRlbF9kcC0+cHNyLmxhc3RfZW50cnlfYXR0ZW1wdCA9IHRpbWVfbnM7DQo+ICAJCWRy bV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiAgCQkJICAgICJbdHJhbnNjb2RlciAlc10gUFNS IGVudHJ5IGF0dGVtcHQgaW4gMiB2YmxhbmtzXG4iLA0KPiAgCQkJICAgIHRyYW5zY29kZXJfbmFt ZShjcHVfdHJhbnNjb2RlcikpOw0KPiAgCX0NCj4gIA0KPiANCj4gIAlpZiAocHNyX2lpciAmIEVE UF9QU1JfUE9TVF9FWElUKHRyYW5zX3NoaWZ0KSkgew0KPiAtCQlkZXZfcHJpdi0+cHNyLmxhc3Rf ZXhpdCA9IHRpbWVfbnM7DQo+ICsJCWludGVsX2RwLT5wc3IubGFzdF9leGl0ID0gdGltZV9uczsN Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sDQo+ICAJCQkgICAgIlt0cmFuc2NvZGVy ICVzXSBQU1IgZXhpdCBjb21wbGV0ZWRcbiIsDQo+ICAJCQkgICAgdHJhbnNjb2Rlcl9uYW1lKGNw dV90cmFuc2NvZGVyKSk7DQo+IEBAIC0yMDMsNyArMjA3LDcgQEAgdm9pZCBpbnRlbF9wc3JfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcHNyX2lpcikN Cj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgew0KPiAgCQkJdTMyIHZhbCA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ICAJCQkJCQlQU1JfRVZFTlQoY3B1X3RyYW5zY29kZXIp KTsNCj4gLQkJCWJvb2wgcHNyMl9lbmFibGVkID0gZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQ7 DQo+ICsJCQlib29sIHBzcjJfZW5hYmxlZCA9IGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkOw0K PiAgDQo+IA0KPiAgCQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUl9FVkVOVChjcHVfdHJh bnNjb2RlciksDQo+ICAJCQkJICAgICAgIHZhbCk7DQo+IEBAIC0yMTcsNyArMjIxLDcgQEAgdm9p ZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1MzIgcHNyX2lpcikNCj4gIAkJZHJtX3dhcm4oJmRldl9wcml2LT5kcm0sICJbdHJhbnNjb2Rl ciAlc10gUFNSIGF1eCBlcnJvclxuIiwNCj4gIAkJCSB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5z Y29kZXIpKTsNCj4gIA0KPiANCj4gLQkJZGV2X3ByaXYtPnBzci5pcnFfYXV4X2Vycm9yID0gdHJ1 ZTsNCj4gKwkJaW50ZWxfZHAtPnBzci5pcnFfYXV4X2Vycm9yID0gdHJ1ZTsNCj4gIA0KPiANCj4g IAkJLyoNCj4gIAkJICogSWYgdGhpcyBpbnRlcnJ1cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxs IGtlZXANCj4gQEAgLTIzMSw3ICsyMzUsNyBAQCB2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQ0KPiAgCQl2YWwg fD0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7DQo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBpbXJfcmVnLCB2YWwpOw0KPiAgDQo+IA0KPiAtCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJp di0+cHNyLndvcmspOw0KPiArCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+cHNyLndvcmspOw0K PiAgCX0NCj4gIH0NCj4gIA0KPiANCj4gQEAgLTI5MiwxMiArMjk2LDYgQEAgdm9pZCBpbnRlbF9w c3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0NCj4gIAkJdG9faTkxNShkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPmJhc2UuYmFzZS5kZXYpOw0KPiAgDQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLmRw KSB7DQo+IC0JCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJtLA0KPiAtCQkJICJNb3JlIHRoYW4gb25l IGVEUCBwYW5lbCBmb3VuZCwgUFNSIHN1cHBvcnQgc2hvdWxkIGJlIGV4dGVuZGVkXG4iKTsNCj4g LQkJcmV0dXJuOw0KPiAtCX0NCj4gLQ0KPiAgCWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5h dXgsIERQX1BTUl9TVVBQT1JULCBpbnRlbF9kcC0+cHNyX2RwY2QsDQo+ICAJCQkgc2l6ZW9mKGlu dGVsX2RwLT5wc3JfZHBjZCkpOw0KPiAgDQo+IA0KPiBAQCAtMzE4LDEyICszMTYsMTAgQEAgdm9p ZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICAJCXJl dHVybjsNCj4gIAl9DQo+ICANCj4gDQo+IC0JZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQgPSB0 cnVlOw0KPiAtCWRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQ0KPiArCWludGVsX2Rw LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsNCj4gKwlpbnRlbF9kcC0+cHNyLnNpbmtfc3luY19s YXRlbmN5ID0NCj4gIAkJaW50ZWxfZHBfZ2V0X3Npbmtfc3luY19sYXRlbmN5KGludGVsX2RwKTsN Cj4gIA0KPiANCj4gLQlkZXZfcHJpdi0+cHNyLmRwID0gaW50ZWxfZHA7DQo+IC0NCj4gIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5ICYmDQo+ICAJICAgIChpbnRlbF9kcC0+cHNyX2RwY2Rb MF0gPT0gRFBfUFNSMl9XSVRIX1lfQ09PUkRfSVNfU1VQUE9SVEVEKSkgew0KPiAgCQlib29sIHlf cmVxID0gaW50ZWxfZHAtPnBzcl9kcGNkWzFdICYNCj4gQEAgLTM0MSwxNCArMzM3LDE0IEBAIHZv aWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgCQkg KiBZLWNvb3JkaW5hdGUgcmVxdWlyZW1lbnQgcGFuZWxzIHdlIHdvdWxkIG5lZWQgdG8gZW5hYmxl DQo+ICAJCSAqIEdUQyBmaXJzdC4NCj4gIAkJICovDQo+IC0JCWRldl9wcml2LT5wc3Iuc2lua19w c3IyX3N1cHBvcnQgPSB5X3JlcSAmJiBhbHBtOw0KPiArCQlpbnRlbF9kcC0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0ID0geV9yZXEgJiYgYWxwbTsNCj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sICJQU1IyICVzc3VwcG9ydGVkXG4iLA0KPiAtCQkJICAgIGRldl9wcml2LT5wc3Iuc2lua19w c3IyX3N1cHBvcnQgPyAiIiA6ICJub3QgIik7DQo+ICsJCQkgICAgaW50ZWxfZHAtPnBzci5zaW5r X3BzcjJfc3VwcG9ydCA/ICIiIDogIm5vdCAiKTsNCj4gIA0KPiANCj4gLQkJaWYgKGRldl9wcml2 LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsNCj4gLQkJCWRldl9wcml2LT5wc3IuY29sb3JpbWV0 cnlfc3VwcG9ydCA9DQo+ICsJCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KSB7 DQo+ICsJCQlpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgPQ0KPiAgCQkJCWludGVs X2RwX2dldF9jb2xvcmltZXRyeV9zdGF0dXMoaW50ZWxfZHApOw0KPiAtCQkJZGV2X3ByaXYtPnBz ci5zdV94X2dyYW51bGFyaXR5ID0NCj4gKwkJCWludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxhcml0 eSA9DQo+ICAJCQkJaW50ZWxfZHBfZ2V0X3N1X3hfZ3JhbnVsYXJ0aXkoaW50ZWxfZHApOw0KPiAg CQl9DQo+ICAJfQ0KPiBAQCAtMzc0LDcgKzM3MCw3IEBAIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0 dXBfYXV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICAJQlVJTERfQlVHX09OKHNpemVv ZihhdXhfbXNnKSA+IDIwKTsNCj4gIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGF1eF9tc2cpOyBp ICs9IDQpDQo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LA0KPiAtCQkJICAgICAgIEVEUF9Q U1JfQVVYX0RBVEEoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLA0KPiArCQkJICAg ICAgIEVEUF9QU1JfQVVYX0RBVEEoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLA0K PiAgCQkJICAgICAgIGludGVsX2RwX3BhY2tfYXV4KCZhdXhfbXNnW2ldLCBzaXplb2YoYXV4X21z ZykgLSBpKSk7DQo+ICANCj4gDQo+ICAJYXV4X2Nsb2NrX2RpdmlkZXIgPSBpbnRlbF9kcC0+Z2V0 X2F1eF9jbG9ja19kaXZpZGVyKGludGVsX2RwLCAwKTsNCj4gQEAgLTM4NSw3ICszODEsNyBAQCBz dGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0K PiAgDQo+IA0KPiAgCS8qIFNlbGVjdCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICov DQo+ICAJYXV4X2N0bCAmPSBwc3JfYXV4X21hc2s7DQo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIEVEUF9QU1JfQVVYX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLA0KPiArCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyKSwNCj4gIAkJICAgICAgIGF1eF9jdGwpOw0KPiAgfQ0KPiAgDQo+IA0KPiBAQCAtMzk1LDE0 ICszOTEsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApDQo+ICAJdTggZHBjZF92YWwgPSBEUF9QU1JfRU5BQkxFOw0KPiAgDQo+ IA0KPiAgCS8qIEVuYWJsZSBBTFBNIGF0IHNpbmsgZm9yIHBzcjIgKi8NCj4gLQlpZiAoZGV2X3By aXYtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJs ZWQpIHsNCj4gIAkJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9SRUNFSVZF Ul9BTFBNX0NPTkZJRywNCj4gIAkJCQkgICBEUF9BTFBNX0VOQUJMRSB8DQo+ICAJCQkJICAgRFBf QUxQTV9MT0NLX0VSUk9SX0lSUV9IUERfRU5BQkxFKTsNCj4gIA0KPiANCj4gIAkJZHBjZF92YWwg fD0gRFBfUFNSX0VOQUJMRV9QU1IyIHwgRFBfUFNSX0lSUV9IUERfV0lUSF9DUkNfRVJST1JTOw0K PiAgCX0gZWxzZSB7DQo+IC0JCWlmIChkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkNCj4gKwkJ aWYgKGludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5KQ0KPiAgCQkJZHBjZF92YWwgfD0gRFBfUFNS X01BSU5fTElOS19BQ1RJVkU7DQo+ICANCj4gDQo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDgpDQo+IEBAIC00NjUsNyArNDYxLDcgQEAgc3RhdGljIHU4IHBzcl9jb21wdXRlX2lkbGVf ZnJhbWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICAJICogb2ZmLWJ5LW9uZSBpc3N1 ZSB0aGF0IEhXIGhhcyBpbiBzb21lIGNhc2VzLg0KPiAgCSAqLw0KPiAgCWlkbGVfZnJhbWVzID0g bWF4KDYsIGRldl9wcml2LT52YnQucHNyLmlkbGVfZnJhbWVzKTsNCj4gLQlpZGxlX2ZyYW1lcyA9 IG1heChpZGxlX2ZyYW1lcywgZGV2X3ByaXYtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSArIDEpOw0K PiArCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtfc3lu Y19sYXRlbmN5ICsgMSk7DQo+ICANCj4gDQo+ICAJaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ ZHJtLCBpZGxlX2ZyYW1lcyA+IDB4ZikpDQo+ICAJCWlkbGVfZnJhbWVzID0gMHhmOw0KPiBAQCAt NDg1LDcgKzQ4MSw3IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IxKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApDQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQ0KPiAgCQl2YWwg fD0gRURQX1BTUl9NSU5fTElOS19FTlRSWV9USU1FXzhfTElORVM7DQo+ICANCj4gDQo+IC0JaWYg KGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KQ0KPiArCWlmIChpbnRlbF9kcC0+cHNyLmxpbmtf c3RhbmRieSkNCj4gIAkJdmFsIHw9IEVEUF9QU1JfTElOS19TVEFOREJZOw0KPiAgDQo+IA0KPiAg CXZhbCB8PSBpbnRlbF9wc3IxX2dldF90cF90aW1lKGludGVsX2RwKTsNCj4gQEAgLTQ5Myw5ICs0 ODksOSBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQ0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpDQo+ICAJCXZhbCB8PSBF RFBfUFNSX0NSQ19FTkFCTEU7DQo+ICANCj4gDQo+IC0JdmFsIHw9IChpbnRlbF9kZV9yZWFkKGRl dl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKSAmDQo+ICsJdmFs IHw9IChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRy YW5zY29kZXIpKSAmDQo+ICAJCUVEUF9QU1JfUkVTVE9SRV9QU1JfQUNUSVZFX0NUWF9NQVNLKTsN Cj4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKSwgdmFsKTsNCj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9D VEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gIH0NCj4gIA0KPiANCj4gIHN0 YXRpYyB1MzIgaW50ZWxfcHNyMl9nZXRfdHBfdGltZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQ0KPiBAQCAtNTMwLDcgKzUyNiw3IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpDQo+ICAJCXZhbCB8PSBFRFBfWV9DT09SRElO QVRFX0VOQUJMRTsNCj4gIA0KPiANCj4gLQl2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NV KGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsNCj4gKwl2YWwgfD0gRURQX1BT UjJfRlJBTUVfQkVGT1JFX1NVKGludGVsX2RwLT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsN Cj4gIAl2YWwgfD0gaW50ZWxfcHNyMl9nZXRfdHBfdGltZShpbnRlbF9kcCk7DQo+ICANCj4gDQo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsNCj4gQEAgLTU0OSw3ICs1NDUsNyBA QCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQ0KPiAgCQl2YWwgfD0gRURQX1BTUjJfRkFTVF9XQUtFKDcpOw0KPiAgCX0NCj4gIA0KPiANCj4g LQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkKSB7DQo+ICsJaWYgKGlu dGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgew0KPiAgCQkvKiBXQSAxNDA4MzMw ODQ3ICovDQo+ICAJCWlmIChJU19UR0xfRElTUF9TVEVQUElORyhkZXZfcHJpdiwgU1RFUF9BMCwg U1RFUF9BMCkgfHwNCj4gIAkJICAgIElTX1JLTF9SRVZJRChkZXZfcHJpdiwgUktMX1JFVklEX0Ew LCBSS0xfUkVWSURfQTApKQ0KPiBAQCAtNTU4LDIwICs1NTQsMjAgQEAgc3RhdGljIHZvaWQgaHN3 X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIAkJCQkgICAgIERJ U19SQU1fQllQQVNTX1BTUjJfTUFOX1RSQUNLKTsNCj4gIA0KPiANCj4gIAkJaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsDQo+IC0JCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpLA0KPiArCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKSwNCj4gIAkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMX0VOQUJMRSk7DQo+ ICAJfSBlbHNlIGlmIChIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKSB7DQo+ICAJCWludGVs X2RlX3dyaXRlKGRldl9wcml2LA0KPiAtCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwoZGV2X3By aXYtPnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ICsJCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCAwKTsNCj4gIAl9DQo+ICANCj4gDQo+ICAJLyoNCj4g IAkgKiBQU1IyIEhXIGlzIGluY29ycmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwgYW5k IEJTcGVjIGlzDQo+ICAJICogcmVjb21tZW5kaW5nIGtlZXAgdGhpcyBiaXQgdW5zZXQgd2hpbGUg UFNSMiBpcyBlbmFibGVkLg0KPiAgCSAqLw0KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBF RFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCAwKTsNCj4gKwlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgMCk7 DQo+ICANCj4gDQo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0KPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gIH0NCj4g IA0KPiANCj4gIHN0YXRpYyBib29sDQo+IEBAIC01OTQsNTUgKzU5MCw1OCBAQCBzdGF0aWMgdTMy IGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUpDQo+ICAJCQkgICAgZHJtX21vZGVfdnJlZnJlc2goJmNzdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSkpOw0KPiAgfQ0KPiAgDQo+IA0KPiAtc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVf ZnJhbWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gK3N0YXRpYyB2b2lk IHBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiAg CQkJCSAgICAgdTMyIGlkbGVfZnJhbWVzKQ0KPiAgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiAgCXUzMiB2YWw7DQo+ICAN Cj4gDQo+ICAJaWRsZV9mcmFtZXMgPDw9ICBFRFBfUFNSMl9JRExFX0ZSQU1FX1NISUZUOw0KPiAt CXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpKTsNCj4gKwl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNS Ml9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7DQo+ICAJdmFsICY9IH5FRFBfUFNSMl9J RExFX0ZSQU1FX01BU0s7DQo+ICAJdmFsIHw9IGlkbGVfZnJhbWVzOw0KPiAtCWludGVsX2RlX3dy aXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFs KTsNCj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5w c3IudHJhbnNjb2RlciksIHZhbCk7DQo+ICB9DQo+ICANCj4gDQo+IC1zdGF0aWMgdm9pZCB0Z2xf cHNyMl9lbmFibGVfZGMzY28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAr c3RhdGljIHZvaWQgdGdsX3BzcjJfZW5hYmxlX2RjM2NvKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApDQo+ICB7DQo+IC0JcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGRldl9wcml2LCAwKTsNCj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsNCj4gKw0KPiArCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwgMCk7DQo+ICAJ aW50ZWxfZGlzcGxheV9wb3dlcl9zZXRfdGFyZ2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFU RV9FTl9EQzNDTyk7DQo+ICB9DQo+ICANCj4gDQo+IC1zdGF0aWMgdm9pZCB0Z2xfcHNyMl9kaXNh YmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gK3N0YXRpYyB2 b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4g IHsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsNCj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsNCj4gIA0KPiANCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRfZGNfc3RhdGUo ZGV2X3ByaXYsIERDX1NUQVRFX0VOX1VQVE9fREM2KTsNCj4gLQlwc3IyX3Byb2dyYW1faWRsZV9m cmFtZXMoZGV2X3ByaXYsIHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKGludGVsX2RwKSk7DQo+ICsJ cHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGludGVsX2RwLCBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1l cyhpbnRlbF9kcCkpOw0KPiAgfQ0KPiAgDQo+IA0KPiAgc3RhdGljIHZvaWQgdGdsX2RjM2NvX2Rp c2FibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICB7DQo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0NCj4gLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVv ZigqZGV2X3ByaXYpLCBwc3IuZGMzY29fd29yay53b3JrKTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0NCj4gKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfZHApLCBw c3IuZGMzY29fd29yay53b3JrKTsNCj4gIA0KPiANCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOw0KPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICAJLyog SWYgZGVsYXllZCB3b3JrIGlzIHBlbmRpbmcsIGl0IGlzIG5vdCBpZGxlICovDQo+IC0JaWYgKGRl bGF5ZWRfd29ya19wZW5kaW5nKCZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmspKQ0KPiArCWlmIChk ZWxheWVkX3dvcmtfcGVuZGluZygmaW50ZWxfZHAtPnBzci5kYzNjb193b3JrKSkNCj4gIAkJZ290 byB1bmxvY2s7DQo+ICANCj4gDQo+IC0JdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhkZXZfcHJpdik7 DQo+ICsJdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhpbnRlbF9kcCk7DQo+ICB1bmxvY2s6DQo+IC0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiArCW11dGV4X3VubG9jaygmaW50 ZWxfZHAtPnBzci5sb2NrKTsNCj4gIH0NCj4gIA0KPiANCj4gLXN0YXRpYyB2b2lkIHRnbF9kaXNh bGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQ0KPiArc3RhdGljIHZvaWQgdGdsX2Rpc2FsbG93X2RjM2NvX29uX3BzcjJfZXhpdChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19l bmFibGVkKQ0KPiArCWlmICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkKQ0KPiAgCQlyZXR1 cm47DQo+ICANCj4gDQo+IC0JY2FuY2VsX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnBzci5kYzNj b193b3JrKTsNCj4gKwljYW5jZWxfZGVsYXllZF93b3JrKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dv cmspOw0KPiAgCS8qIEJlZm9yZSBQU1IyIGV4aXQgZGlzYWxsb3cgZGMzY28qLw0KPiAtCXRnbF9w c3IyX2Rpc2FibGVfZGMzY28oZGV2X3ByaXYpOw0KPiArCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28o aW50ZWxfZHApOw0KPiAgfQ0KPiAgDQo+IA0KPiAgc3RhdGljIHZvaWQNCj4gQEAgLTcxNSw3ICs3 MTQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLA0KPiAgCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Ow0KPiAgCWludCBwc3JfbWF4X2ggPSAwLCBwc3JfbWF4 X3YgPSAwLCBtYXhfYnBwID0gMDsNCj4gIA0KPiANCj4gLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lu a19wc3IyX3N1cHBvcnQpDQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0 KQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICANCj4gDQo+ICAJaWYgKCF0cmFuc2NvZGVyX2hhc19w c3IyKGRldl9wcml2LCBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcikpIHsNCj4gQEAgLTcyNSw3 ICs3MjQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLA0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICAJfQ0KPiAgDQo+IA0KPiAt CWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdikpIHsNCj4gKwlpZiAoIXBzcjJfZ2xv YmFsX2VuYWJsZWQoaW50ZWxfZHApKSB7DQo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LCAiUFNSMiBkaXNhYmxlZCBieSBmbGFnXG4iKTsNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0N Cj4gQEAgLTc3NCwxMCArNzczLDEwIEBAIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3Zh bGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJICogb25seSBuZWVkIHRvIHZhbGlk YXRlIHRoZSBTVSBibG9jayB3aWR0aCBpcyBhIG11bHRpcGxlIG9mDQo+ICAJICogeCBncmFudWxh cml0eS4NCj4gIAkgKi8NCj4gLQlpZiAoY3J0Y19oZGlzcGxheSAlIGRldl9wcml2LT5wc3Iuc3Vf eF9ncmFudWxhcml0eSkgew0KPiArCWlmIChjcnRjX2hkaXNwbGF5ICUgaW50ZWxfZHAtPnBzci5z dV94X2dyYW51bGFyaXR5KSB7DQo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiAg CQkJICAgICJQU1IyIG5vdCBlbmFibGVkLCBoZGlzcGxheSglZCkgbm90IG11bHRpcGxlIG9mICVk XG4iLA0KPiAtCQkJICAgIGNydGNfaGRpc3BsYXksIGRldl9wcml2LT5wc3Iuc3VfeF9ncmFudWxh cml0eSk7DQo+ICsJCQkgICAgY3J0Y19oZGlzcGxheSwgaW50ZWxfZHAtPnBzci5zdV94X2dyYW51 bGFyaXR5KTsNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gIA0KPiANCj4gQEAgLTgxOSwx MyArODE4LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsDQo+ICAJaWYgKGNydGNfc3RhdGUtPnZyci5lbmFibGUpDQo+ICAJCXJldHVy bjsNCj4gIA0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiArCWlmICghQ0FOX1BT UihpbnRlbF9kcCkpDQo+ICAJCXJldHVybjsNCj4gIA0KPiANCj4gLQlpZiAoaW50ZWxfZHAgIT0g ZGV2X3ByaXYtPnBzci5kcCkNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JaWYgKCFwc3JfZ2xvYmFs X2VuYWJsZWQoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKCFwc3JfZ2xvYmFsX2VuYWJsZWQoaW50ZWxf ZHApKSB7DQo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSIGRpc2FibGVkIGJ5 IGZsYWdcbiIpOw0KPiAgCQlyZXR1cm47DQo+ICAJfQ0KPiBAQCAtODMzLDE2ICs4MjksMTkgQEAg dm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwN Cj4gIAkvKg0KPiAgCSAqIEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5cyBQU1IgaXMgdGllZCB0byBw b3J0IEEuDQo+ICAJICogQkRXKyBwbGF0Zm9ybXMgaGF2ZSBhIGluc3RhbmNlIG9mIFBTUiByZWdp c3RlcnMgcGVyIHRyYW5zY29kZXIgYnV0DQo+IC0JICogZm9yIG5vdyBpdCBvbmx5IHN1cHBvcnRz IG9uZSBpbnN0YW5jZSBvZiBQU1IsIHNvIGxldHMga2VlcCBpdA0KPiAtCSAqIGhhcmRjb2RlZCB0 byBQT1JUX0ENCj4gKwkgKiBCRFcsIEdFTjkgYW5kIEdFTjExIGFyZSBub3QgdmFsaWRhdGVkIGJ5 IEhXIHRlYW0gaW4gb3RoZXIgdHJhbnNjb2Rlcg0KPiArCSAqIHRoYW4gZURQIG9uZS4NCj4gKwkg KiBGb3Igbm93IGl0IG9ubHkgc3VwcG9ydHMgb25lIGluc3RhbmNlIG9mIFBTUiBmb3IgQkRXLCBH RU45IGFuZCBHRU4xMS4NCj4gKwkgKiBTbyBsZXRzIGtlZXAgaXQgaGFyZGNvZGVkIHRvIFBPUlRf QSBmb3IgQkRXLCBHRU45IGFuZCBHRU4xMS4NCj4gKwkgKiBCdXQgR0VOMTIgc3VwcG9ydHMgYSBp bnN0YW5jZSBvZiBQU1IgcmVnaXN0ZXJzIHBlciB0cmFuc2NvZGVyLg0KPiAgCSAqLw0KDQpBbG1v c3QgdGhlcmUgYnV0IHRoZSBpbnN0YW5jZXMgYXJlIHRoZXJlIGludGVsX3Bzcl9pbml0KCkgd2ls bCBiZSBleGVjdXRlZCBidXQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKCkgd2lsbCBub3QgbGV0 IFBTUiB0byBiZSBlbmFibGVkIGluIGENCnRyYW5zY29kZXIgdGhhdCBpcyBub3QgZURQL3BvcnQg QSBmb3IgR0VOMTEgYW5kIG9sZGVyLg0KDQo+IC0JaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0g UE9SVF9BKSB7DQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMiAmJiBkaWdfcG9ydC0+ YmFzZS5wb3J0ICE9IFBPUlRfQSkgew0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwN Cj4gIAkJCSAgICAiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IFBvcnQgbm90IHN1cHBvcnRlZFxuIik7 DQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gDQo+IC0JaWYgKGRldl9wcml2LT5wc3Iuc2lu a19ub3RfcmVsaWFibGUpIHsNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5zaW5rX25vdF9yZWxpYWJs ZSkgew0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSAgICAiUFNSIHNp bmsgaW1wbGVtZW50YXRpb24gaXMgbm90IHJlbGlhYmxlXG4iKTsNCj4gIAkJcmV0dXJuOw0KPiBA QCAtODc4LDIzICs4NzcsMjQgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwNCj4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0ZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiArCWVudW0gdHJhbnNjb2Rl ciB0cmFuc2NvZGVyID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOw0KPiAgDQo+IA0KPiAtCWlm ICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIp KQ0KPiArCWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCB0cmFuc2NvZGVyKSkNCj4g IAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sDQo+IC0JCQkgICAgaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BT UjJfRU5BQkxFKTsNCj4gKwkJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSMl9D VEwodHJhbnNjb2RlcikpICYgRURQX1BTUjJfRU5BQkxFKTsNCj4gIA0KPiANCj4gIAlkcm1fV0FS Tl9PTigmZGV2X3ByaXYtPmRybSwNCj4gLQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVE UF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUl9FTkFCTEUpOw0K PiAtCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBkZXZfcHJpdi0+cHNyLmFjdGl2ZSk7DQo+ IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwkJICAgIGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKHRyYW5zY29kZXIpKSAmIEVEUF9QU1Jf RU5BQkxFKTsNCj4gKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5h Y3RpdmUpOw0KPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ ICANCj4gDQo+ICAJLyogcHNyMSBhbmQgcHNyMiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiovDQo+ IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKQ0KPiArCWlmIChpbnRlbF9kcC0+cHNy LnBzcjJfZW5hYmxlZCkNCj4gIAkJaHN3X2FjdGl2YXRlX3BzcjIoaW50ZWxfZHApOw0KPiAgCWVs c2UNCj4gIAkJaHN3X2FjdGl2YXRlX3BzcjEoaW50ZWxfZHApOw0KPiAgDQo+IA0KPiAtCWRldl9w cml2LT5wc3IuYWN0aXZlID0gdHJ1ZTsNCj4gKwlpbnRlbF9kcC0+cHNyLmFjdGl2ZSA9IHRydWU7 DQo+ICB9DQo+ICANCj4gDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiBAQCAtOTEwLDcgKzkxMCw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+ ICAJCWhzd19wc3Jfc2V0dXBfYXV4KGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQlpZiAoZGV2X3By aXYtPnBzci5wc3IyX2VuYWJsZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYNCj4gKwlpZiAo aW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYNCj4g IAkJCQkJICAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSkgew0KPiAgCQlpOTE1X3JlZ190IHJl ZyA9IENISUNLRU5fVFJBTlMoY3B1X3RyYW5zY29kZXIpOw0KPiAgCQl1MzIgY2hpY2tlbiA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7DQo+IEBAIC05MzQsMTAgKzkzNCwxMCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LA0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpDQo+ICAJCW1hc2sgfD0gRURQX1BT Ul9ERUJVR19NQVNLX0RJU1BfUkVHX1dSSVRFOw0KPiAgDQo+IA0KPiAtCWludGVsX2RlX3dyaXRl KGRldl9wcml2LCBFRFBfUFNSX0RFQlVHKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksDQo+ICsJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfREVCVUcoaW50ZWxfZHAtPnBzci50cmFu c2NvZGVyKSwNCj4gIAkJICAgICAgIG1hc2spOw0KPiAgDQo+IA0KPiAtCXBzcl9pcnFfY29udHJv bChkZXZfcHJpdik7DQo+ICsJcHNyX2lycV9jb250cm9sKGludGVsX2RwKTsNCj4gIA0KPiANCj4g IAlpZiAoY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmUpIHsNCj4gIAkJdTMyIHZhbDsNCj4gQEAg LTk1NSwzMCArOTU1LDMwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICANCj4gDQo+ICAJaWYgKEhBU19QU1JfSFdfVFJB Q0tJTkcoZGV2X3ByaXYpICYmIEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpDQo+ICAJCWlu dGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsIElHTk9SRV9QU1IyX0hXX1RSQUNL SU5HLA0KPiAtCQkJICAgICBkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPw0K PiArCQkJICAgICBpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPw0KPiAgCQkJ ICAgICBJR05PUkVfUFNSMl9IV19UUkFDS0lORyA6IDApOw0KPiAgfQ0KPiAgDQo+IA0KPiAtc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LA0KPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwNCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsDQo+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQ0KPiAgew0KPiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBkZXZfcHJpdi0+cHNyLmRwOw0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOw0KPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOw0KPiAgCXUzMiB2YWw7DQo+ICANCj4g DQo+IC0JZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRldl9wcml2LT5wc3IuZW5hYmxlZCk7 DQo+ICsJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGludGVsX2RwLT5wc3IuZW5hYmxlZCk7 DQo+ICANCj4gDQo+IC0JZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5o YXNfcHNyMjsNCj4gLQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7DQo+ IC0JZGV2X3ByaXYtPnBzci5waXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNy dGMpLT5waXBlOw0KPiAtCWRldl9wcml2LT5wc3IuZGMzY29fZW5hYmxlZCA9ICEhY3J0Y19zdGF0 ZS0+ZGMzY29fZXhpdGxpbmU7DQo+IC0JZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyID0gY3J0Y19z dGF0ZS0+Y3B1X3RyYW5zY29kZXI7DQo+ICsJaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQgPSBj cnRjX3N0YXRlLT5oYXNfcHNyMjsNCj4gKwlpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJf Yml0cyA9IDA7DQo+ICsJaW50ZWxfZHAtPnBzci5waXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpLT5waXBlOw0KPiArCWludGVsX2RwLT5wc3IuZGMzY29fZW5hYmxlZCA9 ICEhY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmU7DQo+ICsJaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7DQo+ICAJLyogREM1L0RDNiByZXF1aXJl cyBhdCBsZWFzdCA2IGlkbGUgZnJhbWVzICovDQo+ICAJdmFsID0gdXNlY3NfdG9famlmZmllcyhp bnRlbF9nZXRfZnJhbWVfdGltZV91cyhjcnRjX3N0YXRlKSAqIDYpOw0KPiAtCWRldl9wcml2LT5w c3IuZGMzY29fZXhpdF9kZWxheSA9IHZhbDsNCj4gLQlkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2Zl dGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7DQo+ICsJaW50 ZWxfZHAtPnBzci5kYzNjb19leGl0X2RlbGF5ID0gdmFsOw0KPiArCWludGVsX2RwLT5wc3IucHNy Ml9zZWxfZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmVuYWJsZV9wc3IyX3NlbF9mZXRjaDsN Cj4gIA0KPiANCj4gIAkvKg0KPiAgCSAqIElmIGEgUFNSIGVycm9yIGhhcHBlbmVkIGFuZCB0aGUg ZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUgRURQX1BTUl9JSVINCj4gQEAgLTk5MCwyNyArOTkwLDI3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwNCj4gIAkgKi8NCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMikgew0KPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBU UkFOU19QU1JfSUlSKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCSAgICBUUkFO U19QU1JfSUlSKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQl2YWwgJj0gRURQX1BT Ul9FUlJPUigwKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9w cml2LCBFRFBfUFNSX0lJUik7DQo+IC0JCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGRldl9wcml2LT5w c3IudHJhbnNjb2Rlcik7DQo+ICsJCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGludGVsX2RwLT5wc3Iu dHJhbnNjb2Rlcik7DQo+ICAJfQ0KPiAgCWlmICh2YWwpIHsNCj4gLQkJZGV2X3ByaXYtPnBzci5z aW5rX25vdF9yZWxpYWJsZSA9IHRydWU7DQo+ICsJCWludGVsX2RwLT5wc3Iuc2lua19ub3RfcmVs aWFibGUgPSB0cnVlOw0KPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSAg ICAiUFNSIGludGVycnVwdGlvbiBlcnJvciBzZXQsIG5vdCBlbmFibGluZyBQU1JcbiIpOw0KPiAg CQlyZXR1cm47DQo+ICAJfQ0KPiAgDQo+IA0KPiAgCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LCAiRW5hYmxpbmcgUFNSJXNcbiIsDQo+IC0JCSAgICBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxl ZCA/ICIyIiA6ICIxIik7DQo+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA/ICIy IiA6ICIxIik7DQo+ICAJaW50ZWxfZHBfY29tcHV0ZV9wc3JfdnNjX3NkcChpbnRlbF9kcCwgY3J0 Y19zdGF0ZSwgY29ubl9zdGF0ZSwNCj4gLQkJCQkgICAgICZkZXZfcHJpdi0+cHNyLnZzYyk7DQo+ IC0JaW50ZWxfd3JpdGVfZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZGV2X3ByaXYt PnBzci52c2MpOw0KPiArCQkJCSAgICAgJmludGVsX2RwLT5wc3IudnNjKTsNCj4gKwlpbnRlbF93 cml0ZV9kcF92c2Nfc2RwKGVuY29kZXIsIGNydGNfc3RhdGUsICZpbnRlbF9kcC0+cHNyLnZzYyk7 DQo+ICAJaW50ZWxfcHNyX2VuYWJsZV9zaW5rKGludGVsX2RwKTsNCj4gIAlpbnRlbF9wc3JfZW5h YmxlX3NvdXJjZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7DQo+IC0JZGV2X3ByaXYtPnBzci5lbmFi bGVkID0gdHJ1ZTsNCj4gKwlpbnRlbF9kcC0+cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiAgDQo+IA0K PiAgCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7DQo+ICB9DQo+IEBAIC0xMDI5LDcgKzEw MjksNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwN Cj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8IGRldl9w cml2LT5wc3IuZHAgIT0gaW50ZWxfZHApDQo+ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkNCj4g IAkJcmV0dXJuOw0KPiAgDQo+IA0KPiAgCWlmICghY3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4gQEAg LTEwMzcsNDYgKzEwMzcsNDcgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsDQo+ICANCj4gDQo+ICAJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRl dl9wcml2LT5kcnJzLmRwKTsNCj4gIA0KPiANCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOw0KPiAtCWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRl LCBjb25uX3N0YXRlKTsNCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ ICsJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwlpbnRlbF9wc3JfZW5hYmxl X2xvY2tlZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7DQo+ICsJbXV0ZXhfdW5s b2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiAgfQ0KPiAgDQo+IA0KPiAtc3RhdGljIHZvaWQg aW50ZWxfcHNyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiArc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2V4aXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsN Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVs X2RwKTsNCj4gIAl1MzIgdmFsOw0KPiAgDQo+IA0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5hY3Rp dmUpIHsNCj4gLQkJaWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LT5w c3IudHJhbnNjb2RlcikpIHsNCj4gKwlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlKSB7DQo+ICsJ CWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBpbnRlbF9kcC0+cHNyLnRyYW5zY29k ZXIpKSB7DQo+ICAJCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCQkgICAg RURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCQkgICAgRURQ X1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQkJZHJtX1dBUk5fT04o JmRldl9wcml2LT5kcm0sIHZhbCAmIEVEUF9QU1IyX0VOQUJMRSk7DQo+ICAJCX0NCj4gIA0KPiAN Cj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gLQkJCQkgICAgRURQX1BTUl9D VEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7DQo+ICsJCQkJICAgIEVEUF9QU1JfQ1RMKGlu dGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRy bSwgdmFsICYgRURQX1BTUl9FTkFCTEUpOw0KPiAgDQo+IA0KPiAgCQlyZXR1cm47DQo+ICAJfQ0K PiAgDQo+IA0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiAtCQl0Z2xf ZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KGRldl9wcml2KTsNCj4gKwlpZiAoaW50ZWxfZHAt PnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gKwkJdGdsX2Rpc2FsbG93X2RjM2NvX29uX3BzcjJfZXhp dChpbnRlbF9kcCk7DQo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IC0JCQkJ ICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsNCj4gKwkJCQkgICAg RURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOw0KPiAgCQlkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgISh2YWwgJiBFRFBfUFNSMl9FTkFCTEUpKTsNCj4gIAkJdmFsICY9 IH5FRFBfUFNSMl9FTkFCTEU7DQo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LA0KPiAtCQkJ ICAgICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0KPiAr CQkJICAgICAgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0K PiAgCX0gZWxzZSB7DQo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+IC0JCQkJ ICAgIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiArCQkJCSAgICBF RFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsNCj4gIAkJZHJtX1dBUk5fT04o JmRldl9wcml2LT5kcm0sICEodmFsICYgRURQX1BTUl9FTkFCTEUpKTsNCj4gIAkJdmFsICY9IH5F RFBfUFNSX0VOQUJMRTsNCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+IC0JCQkgICAg ICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gKwkJCSAg ICAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0KPiAgCX0N Cj4gLQlkZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IGZhbHNlOw0KPiArCWludGVsX2RwLT5wc3IuYWN0 aXZlID0gZmFsc2U7DQo+ICB9DQo+ICANCj4gDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlz YWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gQEAgLTEwODUsMjEgKzEw ODYsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApDQo+ICAJaTkxNV9yZWdfdCBwc3Jfc3RhdHVzOw0KPiAgCXUzMiBwc3Jf c3RhdHVzX21hc2s7DQo+ICANCj4gDQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYt PnBzci5sb2NrKTsNCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpbnRlbF9kcC0+cHNyLmxvY2sp Ow0KPiAgDQo+IA0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQ0KPiArCWlmICghaW50 ZWxfZHAtPnBzci5lbmFibGVkKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gDQo+ICAJZHJtX2RiZ19r bXMoJmRldl9wcml2LT5kcm0sICJEaXNhYmxpbmcgUFNSJXNcbiIsDQo+IC0JCSAgICBkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7DQo+ICsJCSAgICBpbnRlbF9kcC0+cHNy LnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7DQo+ICANCj4gDQo+IC0JaW50ZWxfcHNyX2V4aXQo ZGV2X3ByaXYpOw0KPiArCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQlp ZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gLQkJcHNyX3N0YXR1cyA9IEVEUF9Q U1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiArCWlmIChpbnRlbF9kcC0+ cHNyLnBzcjJfZW5hYmxlZCkgew0KPiArCQlwc3Jfc3RhdHVzID0gRURQX1BTUjJfU1RBVFVTKGlu dGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9QU1Iy X1NUQVRVU19TVEFURV9NQVNLOw0KPiAgCX0gZWxzZSB7DQo+IC0JCXBzcl9zdGF0dXMgPSBFRFBf UFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiArCQlwc3Jfc3RhdHVzID0g RURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gIAkJcHNyX3N0YXR1 c19tYXNrID0gRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gIAl9DQo+ICANCj4gDQo+IEBA IC0xMTA5LDcgKzExMTAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwg IlRpbWVkIG91dCB3YWl0aW5nIFBTUiBpZGxlIHN0YXRlXG4iKTsNCj4gIA0KPiANCj4gIAkvKiBX QSAxNDA4MzMwODQ3ICovDQo+IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5h YmxlZCAmJg0KPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgJiYN Cj4gIAkgICAgKElTX1RHTF9ESVNQX1NURVBQSU5HKGRldl9wcml2LCBTVEVQX0EwLCBTVEVQX0Ew KSB8fA0KPiAgCSAgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJLTF9S RVZJRF9BMCkpKQ0KPiAgCQlpbnRlbF9kZV9ybXcoZGV2X3ByaXYsIENISUNLRU5fUEFSMV8xLA0K PiBAQCAtMTExOCwxMCArMTExOSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9s b2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIAkvKiBEaXNhYmxlIFBTUiBvbiBT aW5rICovDQo+ICAJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5f Q0ZHLCAwKTsNCj4gIA0KPiANCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpDQo+ ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKQ0KPiAgCQlkcm1fZHBfZHBjZF93cml0 ZWIoJmludGVsX2RwLT5hdXgsIERQX1JFQ0VJVkVSX0FMUE1fQ09ORklHLCAwKTsNCj4gIA0KPiAN Cj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBmYWxzZTsNCj4gKwlpbnRlbF9kcC0+cHNyLmVu YWJsZWQgPSBmYWxzZTsNCj4gIH0NCj4gIA0KPiANCj4gIC8qKg0KPiBAQCAtMTEzOSwyMCArMTE0 MCwyMiBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs DQo+ICAJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4gIAkJcmV0dXJuOw0KPiAgDQo+ IA0KPiAtCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIUNBTl9QU1IoZGV2X3ByaXYp KSkNCj4gKwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGludGVsX2Rw KSkpDQo+ICAJCXJldHVybjsNCj4gIA0KPiANCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOw0KPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICANCj4gDQo+ ICAJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQltdXRl eF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JY2FuY2VsX3dvcmtfc3luYygmZGV2 X3ByaXYtPnBzci53b3JrKTsNCj4gLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2 LT5wc3IuZGMzY29fd29yayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2sp Ow0KPiArCWNhbmNlbF93b3JrX3N5bmMoJmludGVsX2RwLT5wc3Iud29yayk7DQo+ICsJY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspOw0KPiAgfQ0KPiAg DQo+IA0KPiAtc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiArc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3Ry YWNraW5nX2V4aXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gKw0K PiAgCWlmIChJU19USUdFUkxBS0UoZGV2X3ByaXYpKQ0KPiAgCQkvKg0KPiAgCQkgKiBXcml0ZXMg dG8gQ1VSU1VSRkxJVkUgaW4gVEdMIGFyZSBjYXVzaW5nIElPTU1VIGVycm9ycyBhbmQNCj4gQEAg LTExNjYsNyArMTE2OSw3IEBAIHN0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAkJICogU28gdXNpbmcgdGhp cyB3b3JrYXJvdW5kIHVudGlsIHRoaXMgaXNzdWUgaXMgcm9vdCBjYXVzZWQNCj4gIAkJICogYW5k IGEgYmV0dGVyIGZpeCBpcyBmb3VuZC4NCj4gIAkJICovDQo+IC0JCWludGVsX3Bzcl9leGl0KGRl dl9wcml2KTsNCj4gKwkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOw0KPiAgCWVsc2UgaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkNCj4gIAkJLyoNCj4gIAkJICogRGlzcGxheSBXQSAjMDg4 NDogc2tsKw0KPiBAQCAtMTE3NywxMyArMTE4MCwxMyBAQCBzdGF0aWMgdm9pZCBwc3JfZm9yY2Vf aHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJ CSAqIGJ1dCBpdCBtYWtlcyBtb3JlIHNlbnNlIHdyaXRlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZQ0K PiAgCQkgKiBwaXBlLg0KPiAgCQkgKi8NCj4gLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIENV UlNVUkZMSVZFKGRldl9wcml2LT5wc3IucGlwZSksIDApOw0KPiArCQlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgQ1VSU1VSRkxJVkUoaW50ZWxfZHAtPnBzci5waXBlKSwgMCk7DQo+ICAJZWxzZQ0K PiAgCQkvKg0KPiAgCQkgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5vdCBjYXVzZSBIVyB0 cmFja2luZyB0byBleGl0IFBTUg0KPiAgCQkgKiBvbiBvbGRlciBnZW5zIHNvIGRvaW5nIHRoZSBt YW51YWwgZXhpdCBpbnN0ZWFkLg0KPiAgCQkgKi8NCj4gLQkJaW50ZWxfcHNyX2V4aXQoZGV2X3By aXYpOw0KPiArCQlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7DQo+ICB9DQo+ICANCj4gDQo+ICB2 b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwNCj4gQEAgLTEyMzEsMTYgKzEyMzQsMTkgQEAgdm9pZCBpbnRlbF9wc3IyX3Byb2dy YW1fcGxhbmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsDQo+ICANCj4gDQo+ ICB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsN Cj4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRj LT5kZXYpOw0KPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOw0KPiAgDQo+IA0KPiAg CWlmICghSEFTX1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fA0KPiAgCSAgICAhY3J0Y19zdGF0 ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gDQo+IC0JaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUjJfTUFOX1RSS19DVEwocHNyLT50cmFuc2NvZGVyKSwN Cj4gLQkJICAgICAgIGNydGNfc3RhdGUtPnBzcjJfbWFuX3RyYWNrX2N0bCk7DQo+ICsJZm9yX2Vh Y2hfaW50ZWxfZW5jb2Rlcl9pc19wc3JfZW5hYmxlZCgmZGV2X3ByaXYtPmRybSwgZW5jb2RlciwN Cj4gKwkJCQkJICAgICAgY3J0Y19zdGF0ZS0+dWFwaS5lbmNvZGVyX21hc2spIHsNCj4gKwkJaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ICsJCQkgICAgICAgUFNSMl9NQU5fVFJLX0NUTChjcnRj X3N0YXRlLT5jcHVfdHJhbnNjb2RlciksDQo+ICsJCQkgICAgICAgY3J0Y19zdGF0ZS0+cHNyMl9t YW5fdHJhY2tfY3RsKTsNCj4gKwl9DQo+ICB9DQo+ICANCj4gDQo+ICBzdGF0aWMgdm9pZCBwc3Iy X21hbl90cmtfY3RsX2NhbGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ IEBAIC0xNDM1LDEzICsxNDQxLDEzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLA0KPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9 ICZkZXZfcHJpdi0+cHNyOw0KPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+ cHNyOw0KPiAgCWJvb2wgZW5hYmxlLCBwc3IyX2VuYWJsZTsNCj4gIA0KPiANCj4gLQlpZiAoIUNB Tl9QU1IoZGV2X3ByaXYpIHx8IFJFQURfT05DRShwc3ItPmRwKSAhPSBpbnRlbF9kcCkNCj4gKwlp ZiAoIUNBTl9QU1IoaW50ZWxfZHApKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gDQo+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOw0KPiAgDQo+IA0KPiAgCWVuYWJsZSA9IGNydGNfc3RhdGUtPmhhc19wc3I7DQo+ICAJ cHNyMl9lbmFibGUgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsNCj4gQEAgLTE0NDksMTUgKzE0NTUs MTUgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ ICAJaWYgKGVuYWJsZSA9PSBwc3ItPmVuYWJsZWQgJiYgcHNyMl9lbmFibGUgPT0gcHNyLT5wc3Iy X2VuYWJsZWQpIHsNCj4gIAkJLyogRm9yY2UgYSBQU1IgZXhpdCB3aGVuIGVuYWJsaW5nIENSQyB0 byBhdm9pZCBDUkMgdGltZW91dHMgKi8NCj4gIAkJaWYgKGNydGNfc3RhdGUtPmNyY19lbmFibGVk ICYmIHBzci0+ZW5hYmxlZCkNCj4gLQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGRldl9w cml2KTsNCj4gKwkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsNCj4gIAkJ ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5lbmFibGVkKSB7DQo+ICAJ CQkvKg0KPiAgCQkJICogQWN0aXZhdGUgUFNSIGFnYWluIGFmdGVyIGEgZm9yY2UgZXhpdCB3aGVu IGVuYWJsaW5nDQo+ICAJCQkgKiBDUkMgaW4gb2xkZXIgZ2Vucw0KPiAgCQkJICovDQo+IC0JCQlp ZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYmDQo+IC0JCQkgICAgIWRldl9wcml2LT5wc3IuYnVz eV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiAtCQkJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iu d29yayk7DQo+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmDQo+ICsJCQkgICAgIWlu dGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiArCQkJCXNjaGVkdWxlX3dvcmso JmludGVsX2RwLT5wc3Iud29yayk7DQo+ICAJCX0NCj4gIA0KPiANCj4gIAkJZ290byB1bmxvY2s7 DQo+IEBAIC0xNDY3LDM0ICsxNDczLDIzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLA0KPiAgCQlpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoaW50ZWxf ZHApOw0KPiAgDQo+IA0KPiAgCWlmIChlbmFibGUpDQo+IC0JCWludGVsX3Bzcl9lbmFibGVfbG9j a2VkKGRldl9wcml2LCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsNCj4gKwkJaW50ZWxfcHNyX2Vu YWJsZV9sb2NrZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiAgDQo+IA0K PiAgdW5sb2NrOg0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwlt dXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICB9DQo+ICANCj4gDQo+ICAvKioN Cj4gLSAqIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlDQo+ IC0gKiBAbmV3X2NydGNfc3RhdGU6IG5ldyBDUlRDIHN0YXRlDQo+ICsgKiBwc3Jfd2FpdF9mb3Jf aWRsZSAtIHdhaXQgZm9yIFBTUjEgdG8gaWRsZQ0KPiArICogQGludGVsX2RwOiBJbnRlbCBEUA0K PiAgICogQG91dF92YWx1ZTogUFNSIHN0YXR1cyBpbiBjYXNlIG9mIGZhaWx1cmUNCj4gICAqDQo+ IC0gKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHBpcGVfdXBk YXRlX3N0YXJ0KCkgd2hlcmUgaXQgaXMNCj4gLSAqIG5vdCBleHBlY3RlZCB0byByYWNlIHdpdGgg UFNSIGVuYWJsZSBvciBkaXNhYmxlLg0KPiAtICoNCj4gICAqIFJldHVybnM6IDAgb24gc3VjY2Vz cyBvciAtRVRJTUVPVVQgaWYgUFNSIHN0YXR1cyBkb2VzIG5vdCBpZGxlLg0KPiArICoNCj4gICAq Lw0KPiAtaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSwNCj4gLQkJCSAgICB1MzIgKm91dF92YWx1ZSkNCj4gK3N0 YXRpYyBpbnQgcHNyX3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMy ICpvdXRfdmFsdWUpDQo+ICB7DQo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOw0KPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0KPiAtDQo+IC0JaWYg KCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQgfHwgIW5ld19jcnRjX3N0YXRlLT5oYXNfcHNyKQ0KPiAt CQlyZXR1cm4gMDsNCj4gLQ0KPiAtCS8qIEZJWE1FOiBVcGRhdGUgdGhpcyBmb3IgUFNSMiBpZiB3 ZSBuZWVkIHRvIHdhaXQgZm9yIGlkbGUgKi8NCj4gLQlpZiAoUkVBRF9PTkNFKGRldl9wcml2LT5w c3IucHNyMl9lbmFibGVkKSkNCj4gLQkJcmV0dXJuIDA7DQo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ICANCj4gDQo+ICAJLyoN Cj4gIAkgKiBGcm9tIGJzcGVjOiBQYW5lbCBTZWxmIFJlZnJlc2ggKEJEVyspDQo+IEBAIC0xNTAy LDMyICsxNDk3LDYzIEBAIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsDQo+ICAJICogZXhpdCB0cmFpbmluZyB0 aW1lICsgMS41IG1zIG9mIGF1eCBjaGFubmVsIGhhbmRzaGFrZS4gNTAgbXMgaXMNCj4gIAkgKiBk ZWZlbnNpdmUgZW5vdWdoIHRvIGNvdmVyIGV2ZXJ5dGhpbmcuDQo+ICAJICovDQo+IC0NCj4gIAly ZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwNCj4gLQkJ CQkJIEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksDQo+ICsJCQkJCSBF RFBfUFNSX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLA0KPiAgCQkJCQkgRURQX1BT Ul9TVEFUVVNfU1RBVEVfTUFTSywNCj4gIAkJCQkJIEVEUF9QU1JfU1RBVFVTX1NUQVRFX0lETEUs IDIsIDUwLA0KPiAgCQkJCQkgb3V0X3ZhbHVlKTsNCj4gIH0NCj4gIA0KPiANCj4gLXN0YXRpYyBi b29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikNCj4gKy8qKg0KPiArICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZv ciBQU1IxIHRvIGlkbGUNCj4gKyAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUNCj4g KyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHBp cGVfdXBkYXRlX3N0YXJ0KCkgd2hlcmUgaXQgaXMNCj4gKyAqIG5vdCBleHBlY3RlZCB0byByYWNl IHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLg0KPiArICovDQo+ICt2b2lkIGludGVsX3Bzcl93 YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0 ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7DQo+ICsJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXI7DQo+ICsNCj4gKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5oYXNfcHNyKQ0KPiAr CQlyZXR1cm47DQo+ICsNCj4gKwlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyX2lzX3Bzcl9lbmFibGVk KCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyLA0KPiArCQkJCQkgICAgICBuZXdfY3J0Y19zdGF0ZS0+ dWFwaS5lbmNvZGVyX21hc2spIHsNCj4gKwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gKw0KPiArCQkvKiB3aGVuIHRoZSBQU1IxIGlzIGVu YWJsZWQgKi8NCj4gKwkJaWYgKCFpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiArCQkJ dTMyIHBzcl9zdGF0dXM7DQoNCkJldHRlciBkbzoNCg0KaWYgKGludGVsX2RwLT5wc3IucHNyMl9l bmFibGVkKQ0KCWNvbnRpbnVlOw0KDQppZiAocHNyX3dhaXRfZm9yX2lkbGUoaW50ZWxfZHAsICZw c3Jfc3RhdHVzKSkNCgkuLi4NCgkNCllvdSBnZXQgcmlkIG9mIG9uZSBpbmRlbnRhdGlvbiBhbmQg bWFrZXMgZWFzaWVyIHRvIHJlYWQuDQoNCg0KPiArDQo+ICsJCQlpZiAocHNyX3dhaXRfZm9yX2lk bGUoaW50ZWxfZHAsICZwc3Jfc3RhdHVzKSkNCj4gKwkJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJt LA0KPiArCQkJCQkiUFNSIGlkbGUgdGltZWQgb3V0IDB4JXgsIGF0b21pYyB1cGRhdGUgbWF5IGZh aWxcbiIsDQo+ICsJCQkJCXBzcl9zdGF0dXMpOw0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgYm9vbCBfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQ0KPiAgew0KPiAgCWk5MTVfcmVnX3QgcmVnOw0KPiAgCXUzMiBtYXNrOw0KPiAg CWludCBlcnI7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7DQo+ICANCj4gDQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQp DQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpDQo+ICAJCXJldHVybiBmYWxzZTsNCj4g IA0KPiANCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gLQkJcmVnID0g RURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ICsJaWYgKGludGVs X2RwLT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ICsJCXJlZyA9IEVEUF9QU1IyX1NUQVRVUyhpbnRl bF9kcC0+cHNyLnRyYW5zY29kZXIpOw0KPiAgCQltYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRF X01BU0s7DQo+ICAJfSBlbHNlIHsNCj4gLQkJcmVnID0gRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyKTsNCj4gKwkJcmVnID0gRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsNCj4gIAkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0s7DQo+ ICAJfQ0KPiAgDQo+IA0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4g KwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICANCj4gDQo+ICAJZXJyID0g aW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIHJlZywgbWFzaywgNTApOw0KPiAgCWlm IChlcnIpDQo+IEBAIC0xNTM1LDggKzE1NjEsOCBAQCBzdGF0aWMgYm9vbCBfX3Bzcl93YWl0X2Zv cl9pZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJCQki VGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS1lbmFibGVcbiIpOw0KPiAgDQo+ IA0KPiAgCS8qIEFmdGVyIHRoZSB1bmxvY2tlZCB3YWl0LCB2ZXJpZnkgdGhhdCBQU1IgaXMgc3Rp bGwgd2FudGVkISAqLw0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0J cmV0dXJuIGVyciA9PSAwICYmIGRldl9wcml2LT5wc3IuZW5hYmxlZDsNCj4gKwltdXRleF9sb2Nr KCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiArCXJldHVybiBlcnIgPT0gMCAmJiBpbnRlbF9kcC0+ cHNyLmVuYWJsZWQ7DQo+ICB9DQo+ICANCj4gDQo+ICBzdGF0aWMgaW50IGludGVsX3Bzcl9mYXN0 c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gQEAgLTE2MDIs MTEgKzE2MjgsMTIgQEAgc3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJcmV0dXJuIGVycjsNCj4gIH0NCj4gIA0K PiANCj4gLWludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTY0IHZhbCkNCj4gK2ludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIHU2NCB2YWwpDQo+ICB7DQo+ICAJY29uc3QgdTMyIG1vZGUgPSB2YWwg JiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0s7DQo+ICAJdTMyIG9sZF9tb2RlOw0KPiAgCWludCBy ZXQ7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7DQoNCk5pdCBwaWNrIGJ1dCBpZiB5b3UgY2hlY2sgaW4gb3RoZXIgcGxhY2VzIHdl IHRyeSB0byBsZWF2ZSB0aGUgYmlnZ2VzdCBkZWNsYXJhdGlvbiBhdCB0aGUgdG9wIGtpbmRhIG9m IGZvbGxvd2luZyBpbnZlcnRlZCBweXJhbWlkIHN0eWxlLCB5b3UgYXJlIGRvaW5nDQp0aGlzIGlu IG90aGVyIGZ1bmN0aW9ucyBhcyB3ZWxsLg0KDQo+ICANCj4gDQo+ICAJaWYgKHZhbCAmIH4oSTkx NV9QU1JfREVCVUdfSVJRIHwgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB8fA0KPiAgCSAgICBt b2RlID4gSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMSkgew0KPiBAQCAtMTYxNCwyMSArMTY0MSwy MSBAQCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHU2NCB2YWwpDQo+ICAJCXJldHVybiAtRUlOVkFMOw0KPiAgCX0NCj4gIA0KPiANCj4g LQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wc3IubG9jayk7DQo+ ICsJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0K PiAgCWlmIChyZXQpDQo+ICAJCXJldHVybiByZXQ7DQo+ICANCj4gDQo+IC0Jb2xkX21vZGUgPSBk ZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiAtCWRldl9w cml2LT5wc3IuZGVidWcgPSB2YWw7DQo+ICsJb2xkX21vZGUgPSBpbnRlbF9kcC0+cHNyLmRlYnVn ICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiArCWludGVsX2RwLT5wc3IuZGVidWcgPSB2 YWw7DQo+ICANCj4gDQo+ICAJLyoNCj4gIAkgKiBEbyBpdCByaWdodCBhd2F5IGlmIGl0J3MgYWxy ZWFkeSBlbmFibGVkLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBkb25lDQo+ICAJICogd2hlbiBlbmFi bGluZyB0aGUgc291cmNlLg0KPiAgCSAqLw0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQp DQo+IC0JCXBzcl9pcnFfY29udHJvbChkZXZfcHJpdik7DQo+ICsJaWYgKGludGVsX2RwLT5wc3Iu ZW5hYmxlZCkNCj4gKwkJcHNyX2lycV9jb250cm9sKGludGVsX2RwKTsNCj4gIA0KPiANCj4gLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOw0KPiAgDQo+IA0KPiAgCWlmIChvbGRfbW9kZSAhPSBtb2RlKQ0KPiAg CQlyZXQgPSBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShkZXZfcHJpdik7DQo+IEBAIC0xNjM2LDI4 ICsxNjYzLDI4IEBAIGludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTY0IHZhbCkNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+IA0K PiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQ0KPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZk ZXZfcHJpdi0+cHNyOw0KPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNy Ow0KPiAgDQo+IA0KPiAtCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChwc3ItPmRwKTsNCj4gKwlp bnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoaW50ZWxfZHApOw0KPiAgCXBzci0+c2lua19ub3RfcmVs aWFibGUgPSB0cnVlOw0KPiAgCS8qIGxldCdzIG1ha2Ugc3VyZSB0aGF0IHNpbmsgaXMgYXdha2Vu ICovDQo+IC0JZHJtX2RwX2RwY2Rfd3JpdGViKCZwc3ItPmRwLT5hdXgsIERQX1NFVF9QT1dFUiwg RFBfU0VUX1BPV0VSX0QwKTsNCj4gKwlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgs IERQX1NFVF9QT1dFUiwgRFBfU0VUX1BPV0VSX0QwKTsNCj4gIH0NCj4gIA0KPiANCj4gIHN0YXRp YyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gIHsNCj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiAtCQljb250YWluZXJfb2Yo d29yaywgdHlwZW9mKCpkZXZfcHJpdiksIHBzci53b3JrKTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0NCj4gKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfZHApLCBw c3Iud29yayk7DQo+ICANCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsN Cj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiAgDQo+IA0KPiAtCWlmICgh ZGV2X3ByaXYtPnBzci5lbmFibGVkKQ0KPiArCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVkKQ0K PiAgCQlnb3RvIHVubG9jazsNCj4gIA0KPiANCj4gLQlpZiAoUkVBRF9PTkNFKGRldl9wcml2LT5w c3IuaXJxX2F1eF9lcnJvcikpDQo+IC0JCWludGVsX3Bzcl9oYW5kbGVfaXJxKGRldl9wcml2KTsN Cj4gKwlpZiAoUkVBRF9PTkNFKGludGVsX2RwLT5wc3IuaXJxX2F1eF9lcnJvcikpDQo+ICsJCWlu dGVsX3Bzcl9oYW5kbGVfaXJxKGludGVsX2RwKTsNCj4gIA0KPiANCj4gIAkvKg0KPiAgCSAqIFdl IGhhdmUgdG8gbWFrZSBzdXJlIFBTUiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlDQo+IEBAIC0xNjY1 LDcgKzE2OTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspDQo+ICAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0aW1lIHRvIGdldCBmdWxseSBk aXNhYmxlZA0KPiAgCSAqIGFuZCBiZSByZWFkeSBmb3IgcmUtZW5hYmxlLg0KPiAgCSAqLw0KPiAt CWlmICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQ0KPiArCWlmICghX19w c3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoaW50ZWxfZHApKQ0KPiAgCQlnb3RvIHVubG9jazsNCj4g IA0KPiANCj4gIAkvKg0KPiBAQCAtMTY3MywxMiArMTcwMCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAJICogcmVjaGVjay4gU2lu Y2UgcHNyX2ZsdXNoIGZpcnN0IGNsZWFycyB0aGlzIGFuZCB0aGVuIHJlc2NoZWR1bGVzIHdlDQo+ ICAJICogd29uJ3QgZXZlciBtaXNzIGEgZmx1c2ggd2hlbiBiYWlsaW5nIG91dCBoZXJlLg0KPiAg CSAqLw0KPiAtCWlmIChkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8fCBkZXZf cHJpdi0+cHNyLmFjdGl2ZSkNCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgfHwgaW50ZWxfZHAtPnBzci5hY3RpdmUpDQo+ICAJCWdvdG8gdW5sb2NrOw0KPiAgDQo+ IA0KPiAtCWludGVsX3Bzcl9hY3RpdmF0ZShkZXZfcHJpdi0+cHNyLmRwKTsNCj4gKwlpbnRlbF9w c3JfYWN0aXZhdGUoaW50ZWxfZHApOw0KPiAgdW5sb2NrOg0KPiAtCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7 DQo+ICB9DQo+ICANCj4gDQo+ICAvKioNCj4gQEAgLTE2OTcsMjcgKzE3MjQsMzUgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAgdm9pZCBp bnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ ICAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdp bikNCj4gIHsNCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1cm47DQo+ICsJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ICsJc3RydWN0IGludGVsX2RwICppbnRl bF9kcDsNCj4gIA0KPiANCj4gLQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQ0KPiAtCQlyZXR1 cm47DQo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4g KwkJdW5zaWduZWQgcGlwZV9mcm9udGJ1ZmZlcl9iaXRzID0gZnJvbnRidWZmZXJfYml0czsNCg0K WW91IGNvdWxkIHVzZSBmb3JfZWFjaF9pbnRlbF9lbmNvZGVyX2lzX3Bzcl9lbmFibGVkKCksIGp1 c3Qgc2V0dGluZyBhbGwgYml0cyBvZiBlbmNvZGVyX21hc2suDQpDUFUgdGltZSB3aWxsIGJlIGFs bW9zdCBpZGVudGljYWwgYnV0IHdlIGNhbiBzYXZlIHNvbWUgbGluZXMgb2YgY29kZSBhbmQga2Vl cCBpdCBjb25zaXN0ZW50Lg0KDQo+ICANCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsNCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgew0KPiAtCQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JCXJldHVybjsNCj4gLQl9DQo+ICsJCWlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0KPiArCQlpZiAoIUNBTl9QU1IoaW50 ZWxfZHApKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4gKwkJaWYgKG9yaWdpbiA9PSBPUklHSU5f RkxJUCkNCj4gKwkJCWNvbnRpbnVlOw0KDQoNCklmIG9yaWdpbiA9PSBPUklHSU5fRkxJUCB3aHkg d2FzdGVyIHRpbWUgaXRlcmF0aW5nIG92ZXIgYW55IGludGVsX2RwPw0KDQo+ICsNCj4gKwkJbXV0 ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwkJaWYgKCFpbnRlbF9kcC0+cHNyLmVu YWJsZWQpIHsNCj4gKwkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwkJ CWNvbnRpbnVlOw0KPiArCQl9DQo+ICANCj4gDQo+IC0JZnJvbnRidWZmZXJfYml0cyAmPSBJTlRF TF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpOw0KPiAtCWRldl9wcml2 LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHw9IGZyb250YnVmZmVyX2JpdHM7DQo+ICsJCXBp cGVfZnJvbnRidWZmZXJfYml0cyAmPQ0KPiArCQkJSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0so aW50ZWxfZHAtPnBzci5waXBlKTsNCj4gKwkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgfD0gcGlwZV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiAgDQo+IA0KPiAtCWlmIChmcm9udGJ1 ZmZlcl9iaXRzKQ0KPiAtCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7DQo+ICsJCWlmIChwaXBl X2Zyb250YnVmZmVyX2JpdHMpDQo+ICsJCQlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7DQo+ICAN Cj4gDQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiArCQltdXRleF91 bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICsJfQ0KPiAgfQ0KPiAtDQo+ICAvKg0KPiAg ICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVseSBvbiBQU1IyIFMvVyB0cmFja2luZyBp biBmdXR1cmUsDQo+ICAgKiBpbnRlbF9wc3JfZmx1c2goKSB3aWxsIGludmFsaWRhdGUgYW5kIGZs dXNoIHRoZSBQU1IgZm9yIE9SSUdJTl9GTElQDQo+IEBAIC0xNzI1LDE1ICsxNzYwLDE1IEBAIHZv aWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LA0KPiAgICogYWNjb3JkaW5nbHkgaW4gZnV0dXJlLg0KPiAgICovDQo+ICBzdGF0aWMgdm9pZA0K PiAtdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4g LQkJdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdp bikNCj4gK3RnbF9kYzNjb19mbHVzaChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1bnNpZ25l ZCBpbnQgZnJvbnRidWZmZXJfYml0cywNCj4gKwkJZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQ0K PiAgew0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJbXV0ZXhfbG9j aygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gIA0KPiANCj4gLQlpZiAoIWRldl9wcml2LT5wc3Iu ZGMzY29fZW5hYmxlZCkNCj4gKwlpZiAoIWludGVsX2RwLT5wc3IuZGMzY29fZW5hYmxlZCkNCj4g IAkJZ290byB1bmxvY2s7DQo+ICANCj4gDQo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLnBzcjJfZW5h YmxlZCB8fCAhZGV2X3ByaXYtPnBzci5hY3RpdmUpDQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLnBz cjJfZW5hYmxlZCB8fCAhaW50ZWxfZHAtPnBzci5hY3RpdmUpDQo+ICAJCWdvdG8gdW5sb2NrOw0K PiAgDQo+IA0KPiAgCS8qDQo+IEBAIC0xNzQxLDE1ICsxNzc2LDE1IEBAIHRnbF9kYzNjb19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJICogd2hlbiBkZWxheWVk IHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxheSBoYXMgYmVlbiBpZGxlLg0KPiAgCSAq Lw0KPiAgCWlmICghKGZyb250YnVmZmVyX2JpdHMgJg0KPiAtCSAgICBJTlRFTF9GUk9OVEJVRkZF Ul9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkNCj4gKwkgICAgSU5URUxfRlJPTlRCVUZG RVJfQUxMX01BU0soaW50ZWxfZHAtPnBzci5waXBlKSkpDQo+ICAJCWdvdG8gdW5sb2NrOw0KPiAg DQo+IA0KPiAtCXRnbF9wc3IyX2VuYWJsZV9kYzNjbyhkZXZfcHJpdik7DQo+IC0JbW9kX2RlbGF5 ZWRfd29yayhzeXN0ZW1fd3EsICZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmssDQo+IC0JCQkgZGV2 X3ByaXYtPnBzci5kYzNjb19leGl0X2RlbGF5KTsNCj4gKwl0Z2xfcHNyMl9lbmFibGVfZGMzY28o aW50ZWxfZHApOw0KPiArCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmaW50ZWxfZHAtPnBz ci5kYzNjb193b3JrLA0KPiArCQkJIGludGVsX2RwLT5wc3IuZGMzY29fZXhpdF9kZWxheSk7DQo+ ICANCj4gDQo+ICB1bmxvY2s6DQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Ow0KPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gIH0NCj4gIA0KPiAN Cj4gIC8qKg0KPiBAQCAtMTc2OCw0NSArMTgwMyw1NyBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQkgICAgIHVuc2lnbmVkIGZyb250 YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbikNCj4gIHsNCj4gLQlpZiAoIUNB Tl9QU1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1cm47DQo+ICsJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7DQo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsNCj4gIA0KPiANCj4gLQlp ZiAob3JpZ2luID09IE9SSUdJTl9GTElQKSB7DQo+IC0JCXRnbF9kYzNjb19mbHVzaChkZXZfcHJp diwgZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsNCj4gLQkJcmV0dXJuOw0KPiAtCX0NCj4gKwlm b3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgew0KPiArCQlpbnRlbF9k cCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gIA0KPiANCj4gLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7DQo+ IC0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gLQkJcmV0dXJuOw0KPiAt CX0NCj4gKwkJaWYgKENBTl9QU1IoaW50ZWxfZHApKSB7DQoNCkFnYWluIGtlZXAgaXQgY29uc2lz dGVudCwgaW4gaW50ZWxfcHNyX2ludmFsaWRhdGUoKSB5b3UgYXJlIGRvaW5nDQppZiAoQ0FOX1BT UihpbnRlbF9kcCkpDQoJY29udGludWUuLi4uDQpJIHByZWZlciBkbyB0aGF0IGFuZCBzYXZlIG9u ZSB0YWIgZXZlbiBiZXR0ZXIgaWYgeW91IHVzZSBmb3JfZWFjaF9pbnRlbF9lbmNvZGVyX2lzX3Bz cl9lbmFibGVkKCkuDQoNCj4gKwkJCXVuc2lnbmVkIHBpcGVfZnJvbnRidWZmZXJfYml0cyA9IGZy b250YnVmZmVyX2JpdHM7DQo+ICANCj4gDQo+IC0JZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9G Uk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpOw0KPiAtCWRldl9wcml2LT5w c3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOw0KPiArCQkJaWYg KG9yaWdpbiA9PSBPUklHSU5fRkxJUCkgew0KPiArCQkJCXRnbF9kYzNjb19mbHVzaChpbnRlbF9k cCwgZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsNCj4gKwkJCQljb250aW51ZTsNCg0KSGVyZSBt YWtlcyBzZW5zZSBjaGVjayBpZiBvcmlnaW4gPT0gT1JJR0lOX0ZMSVAgaW4gdGhlIGxvb3AgYnV0 IHRoYXQgaXMgbm90IHRoZSBjYXNlIGluIF9pbnZhbGlkYWRlKCkNCg0KPiArCQkJfQ0KPiArDQo+ ICsJCQltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiArCQkJaWYgKCFpbnRlbF9k cC0+cHNyLmVuYWJsZWQpIHsNCj4gKwkJCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9j ayk7DQo+ICsJCQkJY29udGludWU7DQo+ICsJCQl9DQo+ICANCj4gDQo+IC0JLyogQnkgZGVmaW5p dGlvbiBmbHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLw0KPiAtCWlmIChmcm9udGJ1ZmZlcl9i aXRzKQ0KPiAtCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChkZXZfcHJpdik7DQo+ICsJCQlw aXBlX2Zyb250YnVmZmVyX2JpdHMgJj0NCj4gKwkJCQlJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFT SyhpbnRlbF9kcC0+cHNyLnBpcGUpOw0KPiArCQkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVm ZmVyX2JpdHMgJj0gfnBpcGVfZnJvbnRidWZmZXJfYml0czsNCj4gIA0KPiANCj4gLQlpZiAoIWRl dl9wcml2LT5wc3IuYWN0aXZlICYmICFkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0 cykNCj4gLQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4gLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsJCQkvKiBCeSBkZWZpbml0aW9uIGZsdXNo ID0gaW52YWxpZGF0ZSArIGZsdXNoICovDQo+ICsJCQlpZiAocGlwZV9mcm9udGJ1ZmZlcl9iaXRz KQ0KPiArCQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsNCj4gKw0KPiAr CQkJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAmJiAhaW50ZWxfZHAtPnBzci5idXN5X2Zyb250 YnVmZmVyX2JpdHMpDQo+ICsJCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBzci53b3JrKTsN Cj4gKwkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gKwkJfQ0KPiArCX0N Cj4gIH0NCj4gIA0KPiANCj4gIC8qKg0KPiAgICogaW50ZWxfcHNyX2luaXQgLSBJbml0IGJhc2lj IFBTUiB3b3JrIGFuZCBtdXRleC4NCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0 ZQ0KPiArICogQGludGVsX2RwOiBJbnRlbCBEUA0KPiAgICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24g aXMgIGNhbGxlZCBvbmx5IG9uY2UgYXQgZHJpdmVyIGxvYWQgdG8gaW5pdGlhbGl6ZSBiYXNpYw0K PiAtICogUFNSIHN0dWZmLg0KPiArICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgdGhl IGluaXRpYWxpemluZyBjb25uZWN0b3IuDQo+ICsgKiAodGhlIGluaXRpYWxpemluZyBvZiBjb25u ZWN0b3IgdHJlYXRzIHRoZSBoYW5kbGluZyBvZiBjb25uZWN0b3IgY2FwYWJpbGl0aWVzKQ0KPiAr ICogQW5kIGl0IGluaXRpYWxpemVzIGJhc2ljIFBTUiBzdHVmZiBmb3IgZWFjaCBEUCBFbmNvZGVy Lg0KPiAgICovDQo+IC12b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikNCj4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkNCj4gIHsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsNCj4gKw0KPiAgCWlmICghSEFTX1BTUihkZXZfcHJpdikpDQo+ICAJ CXJldHVybjsNCj4gIA0KPiANCj4gLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQ0K PiArCWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpDQo+ICAJCXJldHVybjsNCj4gIA0K PiANCj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpDQo+IEBAIC0xODI0LDE0ICsxODcxLDE0 IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQ0KPiAgCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLw0KPiAgCWlm IChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQ0KPiAgCQkv KiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50 LiAqLw0KPiAtCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOw0KPiArCQlpbnRl bF9kcC0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOw0KPiAgCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMikNCj4gIAkJLyogRm9yIG5ldyBwbGF0Zm9ybXMgdXAgdG8gVEdMIGxldCdz IHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8NCj4gLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5k YnkgPSBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7DQo+ICsJCWludGVsX2RwLT5wc3IubGlu a19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rOw0KPiAgDQo+IA0KPiAtCUlO SVRfV09SSygmZGV2X3ByaXYtPnBzci53b3JrLCBpbnRlbF9wc3Jfd29yayk7DQo+IC0JSU5JVF9E RUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3IuZGMzY29fd29yaywgdGdsX2RjM2NvX2Rpc2FibGVf d29yayk7DQo+IC0JbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwlJTklUX1dP UksoJmludGVsX2RwLT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOw0KPiArCUlOSVRfREVMQVlF RF9XT1JLKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssIHRnbF9kYzNjb19kaXNhYmxlX3dvcmsp Ow0KPiArCW11dGV4X2luaXQoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICB9DQo+ICANCj4gDQo+ ICBzdGF0aWMgaW50IHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwNCj4gQEAgLTE4NTcsNyArMTkwNCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9h bHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICB7DQo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ICAJc3Ry dWN0IGRybV9kcF9hdXggKmF1eCA9ICZpbnRlbF9kcC0+YXV4Ow0KPiAtCXN0cnVjdCBpOTE1X3Bz ciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmlu dGVsX2RwLT5wc3I7DQo+ICAJdTggdmFsOw0KPiAgCWludCByOw0KPiAgDQo+IA0KPiBAQCAtMTg4 NCw3ICsxOTMxLDcgQEAgc3RhdGljIHZvaWQgcHNyX2FscG1fY2hlY2soc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkNCj4gIHN0YXRpYyB2b2lkIHBzcl9jYXBhYmlsaXR5X2NoYW5nZWRfY2hlY2so c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gLQlzdHJ1Y3QgaTkxNV9w c3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZp bnRlbF9kcC0+cHNyOw0KPiAgCXU4IHZhbDsNCj4gIAlpbnQgcjsNCj4gIA0KPiANCj4gQEAgLTE5 MDgsMTggKzE5NTUsMTggQEAgc3RhdGljIHZvaWQgcHNyX2NhcGFiaWxpdHlfY2hhbmdlZF9jaGVj ayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVs c2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gLQlzdHJ1Y3QgaTkx NV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9 ICZpbnRlbF9kcC0+cHNyOw0KPiAgCXU4IHN0YXR1cywgZXJyb3Jfc3RhdHVzOw0KPiAgCWNvbnN0 IHU4IGVycm9ycyA9IERQX1BTUl9SRkJfU1RPUkFHRV9FUlJPUiB8DQo+ICAJCQkgIERQX1BTUl9W U0NfU0RQX1VOQ09SUkVDVEFCTEVfRVJST1IgfA0KPiAgCQkJICBEUF9QU1JfTElOS19DUkNfRVJS T1I7DQo+ICANCj4gDQo+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50ZWxfZHBfaXNf ZWRwKGludGVsX2RwKSkNCj4gKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8ICFpbnRlbF9kcF9p c19lZHAoaW50ZWxfZHApKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gDQo+ICAJbXV0ZXhfbG9jaygm cHNyLT5sb2NrKTsNCj4gIA0KPiANCj4gLQlpZiAoIXBzci0+ZW5hYmxlZCB8fCBwc3ItPmRwICE9 IGludGVsX2RwKQ0KPiArCWlmICghcHNyLT5lbmFibGVkKQ0KPiAgCQlnb3RvIGV4aXQ7DQo+ICAN Cj4gDQo+ICAJaWYgKHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoaW50ZWxfZHAsICZz dGF0dXMsICZlcnJvcl9zdGF0dXMpKSB7DQo+IEBAIC0xOTYyLDE1ICsyMDA5LDE0IEBAIHZvaWQg aW50ZWxfcHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ICANCj4g DQo+ICBib29sIGludGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ ICB7DQo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7DQo+ICAJYm9vbCByZXQ7DQo+ICANCj4gDQo+IC0JaWYgKCFDQU5fUFNSKGRldl9w cml2KSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkNCj4gKwlpZiAoIUNBTl9QU1IoaW50 ZWxfZHApIHx8ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQ0KPiAgCQlyZXR1cm4gZmFsc2U7 DQo+ICANCj4gDQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gLQlyZXQg PSAoZGV2X3ByaXYtPnBzci5kcCA9PSBpbnRlbF9kcCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQp Ow0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwltdXRleF9sb2Nr KCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiArCXJldCA9IGludGVsX2RwLT5wc3IuZW5hYmxlZDsN Cj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ICANCj4gDQo+ICAJcmV0 dXJuIHJldDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfcHNyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5o DQo+IGluZGV4IDBhNTE3OTc4ZThhZi4uMjc1Mzk3NmFjYzI2IDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgNCj4gQEAgLTE4LDcgKzE4LDcgQEAgc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZTsNCj4gIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZTsNCj4gIHN0 cnVjdCBpbnRlbF9wbGFuZTsNCj4gIA0KPiANCj4gLSNkZWZpbmUgQ0FOX1BTUihkZXZfcHJpdikg KEhBU19QU1IoZGV2X3ByaXYpICYmIGRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQ0KPiArI2Rl ZmluZSBDQU5fUFNSKGludGVsX2RwKSAoSEFTX1BTUihkcF90b19pOTE1KGludGVsX2RwKSkgJiYg aW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpDQo+ICB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7DQo+ICB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+IEBAIC0yOCwyMCArMjgsMTkgQEAgdm9pZCBpbnRlbF9w c3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiAgdm9pZCBpbnRlbF9wc3Jf dXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJCSAgICAgIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiAgCQkgICAgICBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7DQo+IC1pbnQgaW50ZWxfcHNyX2RlYnVn X3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWx1ZSk7DQo+ICtp bnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFs dWUpOw0KPiAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsDQo+ICAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsDQo+ICAJCQkg IGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7DQo+ICB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCSAgICAgdW5zaWduZWQgZnJvbnRi dWZmZXJfYml0cywNCj4gIAkJICAgICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOw0KPiAtdm9p ZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOw0KPiAr dm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsNCj4gIHZvaWQg aW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7DQo+IC12b2lkIGlu dGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBwc3JfaWlyKTsNCj4gK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKTsNCj4gIHZvaWQgaW50ZWxfcHNyX3Nob3J0X3B1bHNl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiAtaW50IGludGVsX3Bzcl93YWl0X2Zvcl9p ZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSwNCj4gLQkJ CSAgICB1MzIgKm91dF92YWx1ZSk7DQo+ICt2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7DQo+ICBib29sIGlu dGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiAgaW50IGludGVs X3BzcjJfc2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwN Cj4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYw0KPiBpbmRleCA1MjEyMGY1NmRjNTQuLjk4NjAyOGRl ZmZkMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9z cHJpdGUuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0 ZS5jDQo+IEBAIC05Niw3ICs5Niw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQ0KPiAgCWJvb2wgbmVl ZF92bHZfZHNpX3dhID0gKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKSAmJg0KPiAgCQlpbnRlbF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfRFNJKTsNCj4gIAlERUZJTkVfV0FJVCh3YWl0KTsNCj4gLQl1MzIgcHNyX3N0 YXR1czsNCj4gIA0KPiANCj4gIAlpZiAobmV3X2NydGNfc3RhdGUtPnVhcGkuYXN5bmNfZmxpcCkN Cj4gIAkJcmV0dXJuOw0KPiBAQCAtMTIyLDEwICsxMjEsNyBAQCB2b2lkIGludGVsX3BpcGVfdXBk YXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkN Cj4gIAkgKiBWQkwgaW50ZXJydXB0cyB3aWxsIHN0YXJ0IHRoZSBQU1IgZXhpdCBhbmQgcHJldmVu dCBhIFBTUg0KPiAgCSAqIHJlLWVudHJ5IGFzIHdlbGwuDQo+ICAJICovDQo+IC0JaWYgKGludGVs X3Bzcl93YWl0X2Zvcl9pZGxlKG5ld19jcnRjX3N0YXRlLCAmcHNyX3N0YXR1cykpDQo+IC0JCWRy bV9lcnIoJmRldl9wcml2LT5kcm0sDQo+IC0JCQkiUFNSIGlkbGUgdGltZWQgb3V0IDB4JXgsIGF0 b21pYyB1cGRhdGUgbWF5IGZhaWxcbiIsDQo+IC0JCQlwc3Jfc3RhdHVzKTsNCj4gKwlpbnRlbF9w c3Jfd2FpdF9mb3JfaWRsZShuZXdfY3J0Y19zdGF0ZSk7DQo+ICANCj4gDQo+ICAJbG9jYWxfaXJx X2Rpc2FibGUoKTsNCj4gIA0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+IGluZGV4IDNl ZGM5YzRmMmQyMS4uMzgxNmIxMmFhYzBjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgN Cj4gQEAgLTQ3OCw0MiArNDc4LDYgQEAgc3RydWN0IGk5MTVfZHJycyB7DQo+ICAJZW51bSBkcnJz X3N1cHBvcnRfdHlwZSB0eXBlOw0KPiAgfTsNCj4gIA0KPiANCj4gLXN0cnVjdCBpOTE1X3BzciB7 DQo+IC0Jc3RydWN0IG11dGV4IGxvY2s7DQo+IC0NCj4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdf TU9ERV9NQVNLCTB4MGYNCj4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfREVGQVVMVAkJMHgwMA0K PiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ESVNBQkxFCQkweDAxDQo+IC0jZGVmaW5lIEk5MTVf UFNSX0RFQlVHX0VOQUJMRQkJMHgwMg0KPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19GT1JDRV9Q U1IxCTB4MDMNCj4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfSVJRCQkweDEwDQo+IC0NCj4gLQl1 MzIgZGVidWc7DQo+IC0JYm9vbCBzaW5rX3N1cHBvcnQ7DQo+IC0JYm9vbCBlbmFibGVkOw0KPiAt CXN0cnVjdCBpbnRlbF9kcCAqZHA7DQo+IC0JZW51bSBwaXBlIHBpcGU7DQo+IC0JZW51bSB0cmFu c2NvZGVyIHRyYW5zY29kZXI7DQo+IC0JYm9vbCBhY3RpdmU7DQo+IC0Jc3RydWN0IHdvcmtfc3Ry dWN0IHdvcms7DQo+IC0JdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiAtCWJvb2wg c2lua19wc3IyX3N1cHBvcnQ7DQo+IC0JYm9vbCBsaW5rX3N0YW5kYnk7DQo+IC0JYm9vbCBjb2xv cmltZXRyeV9zdXBwb3J0Ow0KPiAtCWJvb2wgcHNyMl9lbmFibGVkOw0KPiAtCWJvb2wgcHNyMl9z ZWxfZmV0Y2hfZW5hYmxlZDsNCj4gLQl1OCBzaW5rX3N5bmNfbGF0ZW5jeTsNCj4gLQlrdGltZV90 IGxhc3RfZW50cnlfYXR0ZW1wdDsNCj4gLQlrdGltZV90IGxhc3RfZXhpdDsNCj4gLQlib29sIHNp bmtfbm90X3JlbGlhYmxlOw0KPiAtCWJvb2wgaXJxX2F1eF9lcnJvcjsNCj4gLQl1MTYgc3VfeF9n cmFudWxhcml0eTsNCj4gLQlib29sIGRjM2NvX2VuYWJsZWQ7DQo+IC0JdTMyIGRjM2NvX2V4aXRf ZGVsYXk7DQo+IC0Jc3RydWN0IGRlbGF5ZWRfd29yayBkYzNjb193b3JrOw0KPiAtCXN0cnVjdCBk cm1fZHBfdnNjX3NkcCB2c2M7DQo+IC19Ow0KPiAtDQo+ICAjZGVmaW5lIFFVSVJLX0xWRFNfU1ND X0RJU0FCTEUgKDE8PDEpDQo+ICAjZGVmaW5lIFFVSVJLX0lOVkVSVF9CUklHSFRORVNTICgxPDwy KQ0KPiAgI2RlZmluZSBRVUlSS19CQUNLTElHSFRfUFJFU0VOVCAoMTw8MykNCj4gQEAgLTEwNDEs OCArMTAwNSw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4gIA0KPiANCj4gIAlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zIHBvd2VyX2RvbWFpbnM7DQo+ICANCj4gDQo+IC0Jc3RydWN0 IGk5MTVfcHNyIHBzcjsNCj4gLQ0KPiAgCXN0cnVjdCBpOTE1X2dwdV9lcnJvciBncHVfZXJyb3I7 DQo+ICANCj4gDQo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnZsdl9wY3R4Ow0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMNCj4gaW5kZXggYTMxOTgwZjY5MTIwLi45MDdhMzY2ZTljMzIg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYw0KPiBAQCAtMjA4OCwxMCArMjA4OCwyMiBA QCBzdGF0aWMgdm9pZCBpdmJfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsDQo+ICAJCWl2Yl9lcnJfaW50X2hhbmRsZXIoZGV2X3ByaXYpOw0KPiAg DQo+IA0KPiAgCWlmIChkZV9paXIgJiBERV9FRFBfUFNSX0lOVF9IU1cpIHsNCj4gLQkJdTMyIHBz cl9paXIgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwgRURQX1BTUl9JSVIp Ow0KPiArCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsNCj4gIA0KPiANCj4gLQkJaW50 ZWxfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2LCBwc3JfaWlyKTsNCj4gLQkJaW50ZWxfdW5jb3Jl X3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBfUFNSX0lJUiwgcHNyX2lpcik7DQo+ICsJCWZv cl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7DQo+ICsJCQlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0KDQpBbm90aGVy IHBsYWNlIHRoYXQgZm9yX2VhY2hfaW50ZWxfZW5jb2Rlcl9pc19wc3JfZW5hYmxlZCgpIGNhbiBi ZSB1c2VkLg0KDQo+ICsNCj4gKwkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFAgJiYNCj4gKwkJCSAgICBDQU5fUFNSKGludGVsX2RwKSkgew0KDQpBZ2FpbiBDQU5fUFNSKCkg YWxyZWFkeSB0YWtlcyBjYXJlIG9mID09IElOVEVMX09VVFBVVF9FRFAuDQoNCj4gKwkJCQl1MzIg cHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLA0KPiArCQkJCQkJ CQlFRFBfUFNSX0lJUik7DQo+ICsNCj4gKwkJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxf ZHAsIHBzcl9paXIpOw0KPiArCQkJCWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29y ZSwNCj4gKwkJCQkJCSAgIEVEUF9QU1JfSUlSLCBwc3JfaWlyKTsNCj4gKwkJCQlicmVhazsNCj4g KwkJCX0NCj4gKwkJfQ0KPiAgCX0NCj4gIA0KPiANCj4gIAlpZiAoZGVfaWlyICYgREVfQVVYX0NI QU5ORUxfQV9JVkIpDQo+IEBAIC0yMzAxLDIxICsyMzEzLDMzIEBAIGdlbjhfZGVfbWlzY19pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBpaXIpDQo+ICAJ fQ0KPiAgDQo+IA0KPiAgCWlmIChpaXIgJiBHRU44X0RFX0VEUF9QU1IpIHsNCj4gKwkJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ICAJCXUzMiBwc3JfaWlyOw0KPiAgCQlpOTE1X3Jl Z190IGlpcl9yZWc7DQo+ICANCj4gDQo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEy KQ0KPiAtCQkJaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVy KTsNCj4gLQkJZWxzZQ0KPiAtCQkJaWlyX3JlZyA9IEVEUF9QU1JfSUlSOw0KPiArCQlmb3JfZWFj aF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgew0KPiArCQkJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCg0KQW5vdGhlciBwbGFj ZSB0aGF0IGZvcl9lYWNoX2ludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJsZWQoKSBjYW4gYmUgdXNl ZC4NCg0KV2UgYXJlIGFsbW9zdCB0aGVyZSA6RA0KDQo+ICsNCj4gKwkJCWlmICghQ0FOX1BTUihp bnRlbF9kcCkpDQo+ICsJCQkJY29udGludWU7DQo+ICsNCj4gKwkJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDEyKQ0KPiArCQkJCWlpcl9yZWcgPSBUUkFOU19QU1JfSUlSKGludGVsX2RwLT5w c3IudHJhbnNjb2Rlcik7DQo+ICsJCQllbHNlDQo+ICsJCQkJaWlyX3JlZyA9IEVEUF9QU1JfSUlS Ow0KPiAgDQo+IA0KPiAtCQlwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51 bmNvcmUsIGlpcl9yZWcpOw0KPiAtCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNv cmUsIGlpcl9yZWcsIHBzcl9paXIpOw0KPiArCQkJcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFk KCZkZXZfcHJpdi0+dW5jb3JlLCBpaXJfcmVnKTsNCj4gKwkJCWludGVsX3VuY29yZV93cml0ZSgm ZGV2X3ByaXYtPnVuY29yZSwgaWlyX3JlZywgcHNyX2lpcik7DQo+ICANCj4gDQo+IC0JCWlmIChw c3JfaWlyKQ0KPiAtCQkJZm91bmQgPSB0cnVlOw0KPiArCQkJaWYgKHBzcl9paXIpDQo+ICsJCQkJ Zm91bmQgPSB0cnVlOw0KPiAgDQo+IA0KPiAtCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoZGV2X3By aXYsIHBzcl9paXIpOw0KPiArCQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGludGVsX2RwLCBwc3Jf aWlyKTsNCj4gKw0KPiArCQkJLyogcHJpb3IgR0VOMTIgb25seSBoYXZlIG9uZSBFRFAgUFNSICov DQo+ICsJCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEyKQ0KPiArCQkJCWJyZWFrOw0KPiAr CQl9DQo+ICAJfQ0KPiAgDQo+IA0KPiAgCWlmICghZm91bmQpDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=