From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id E59E03858C60 for ; Thu, 2 Feb 2023 11:50:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E59E03858C60 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.97,267,1669104000"; d="scan'208";a="99313925" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 02 Feb 2023 03:50:01 -0800 IronPort-SDR: s4iGHYkHrcY0+dfhFyX1BLhWsz0TCeyGGKX2RgTHb7MTitrugHdOrt/zAW5jyFFz0fAu5Jmp88 6yDmpQqbuPkAsGO6NoS2Gb/cKvRqhN80nRj0SR1xjXckIY6+VetsXc1+Axuo4iNkkk74kB25ne WvnDsA3UyjICMJC7GOOvNkX7Vkf3CIG++74cSTTy00lKEuDNQy/GkSJaY+mta1aCF7NFg2O71e ArSlp/Ju7z84wCRF0PBUF27ryLvAN/1zQl9Mj4U5Kl/iH6Rr6kmdUooIQelQwp1hBUVMC+WoF6 Rzg= Content-Type: multipart/mixed; boundary="------------SPuOk6PIVu9m8M9eZWnGM96F" Message-ID: <46d413b6-cf3f-3498-8f8d-45cb3ba819d1@codesourcery.com> Date: Thu, 2 Feb 2023 11:49:57 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: en-GB From: Andrew Stubbs Subject: [committed] amdgcn, libgomp: Manually allocated stacks To: "gcc-patches@gcc.gnu.org" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------SPuOk6PIVu9m8M9eZWnGM96F Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit I've committed this patch to change the ways stacks are initialized on amdgcn. The patch only touches GCN files, or the GCN-only portions of libgomp files, so I'm allowing it despite stage 4 because I want the ABI change done for GCC 13, and because it enables Tobias's reverse offload-patch that has already been approved, I think. The stacks used to be placed in the "private segment" provided for the purpose by the GPU drivers, but those addresses are not accessible from the host, not even by the HSA API, which was a problem for reverse offload. The new scheme allocates space in the same way as we do the heap space, except that each kernel has its own instance. We were already doing that for the "team arena" ephemeral heap, so I have unified the two implementations. While the change does not alter the procedure call standard, it does alter the kernel entry ABI and requires any code using the compiler builtins for kernel properties to be rebuilt. A recent version of Newlib is required (version 4.3.0.20230120 has the necessary changes). Benchmarking shows no significant change in performance. The __builtin_apply tests fail because they attempt to access memory in parent stack frames (I think), but that causes a memory fault when they don't exist (stack underflow; if I modify the testcase to include extra call depth it passed fine). In any case, the behaviour of __builtin_apply has not changed, only the device has become less forgiving. I will back-port this to OG12 shortly. Andrew --------------SPuOk6PIVu9m8M9eZWnGM96F Content-Type: text/plain; charset="UTF-8"; name="230202-manually-allocated-stacks.patch" Content-Disposition: attachment; filename="230202-manually-allocated-stacks.patch" Content-Transfer-Encoding: base64 YW1kZ2NuLCBsaWJnb21wOiBNYW51YWxseSBhbGxvY2F0ZWQgc3RhY2tzCgpTd2l0Y2ggZnJv bSB1c2luZyBzdGFja3MgaW4gdGhlICJwcml2YXRlIHNlZ21lbnQiIHRvIHVzaW5nIGEgbWVt b3J5IGJsb2NrCmFsbG9jYXRlZCBvbiB0aGUgaG9zdCBzaWRlLiAgVGhlIHByaW1hcnkgcmVh c29uIGlzIHRvIHBlcm1pdCB0aGUgcmV2ZXJzZQpvZmZsb2FkIGltcGxlbWVudGF0aW9uIHRv IGFjY2VzcyB2YWx1ZXMgbG9jYXRlZCBvbiB0aGUgZGV2aWNlIHN0YWNrLCBidXQKdGhlcmUg bWF5IGFsc28gYmUgcGVyZm9ybWFuY2UgYmVuZWZpdHMsIGVzcGVjaWFsbHkgd2l0aCByZXBl YXRlZCBrZXJuZWwKaW52b2NhdGlvbnMuCgpUaGlzIGltcGxlbWVudGF0aW9uIHVuaWZpZXMg dGhlIHN0YWNrcyB3aXRoIHRoZSAidGVhbSBhcmVuYSIgb3B0aW1pemF0aW9uCmZlYXR1cmUs IGFuZCBub3cgYWxsb3dzIGJvdGggdG8gaGF2ZSBydW4tdGltZSBjb25maWd1cmFibGUgc2l6 ZXMuCgpBIG5ldyBBQkkgaXMgbmVlZGVkLCBzbyBhbGwgbGlicmFyaWVzIG11c3QgYmUgcmVi dWlsdCwgYW5kIG5ld2xpYiBtdXN0IGJlCnZlcnNpb24gNC4zLjAuMjAyMzAxMjAgb3IgbmV3 ZXIuCgpnY2MvQ2hhbmdlTG9nOgoKCSogY29uZmlnL2djbi9nY24tcnVuLmNjOiBJbmNsdWRl IGxpYmdvbXAtZ2NuLmguCgkoc3RydWN0IGtlcm5hcmdzKTogUmVwbGFjZSB0aGUgY29tbW9u IGNvbnRlbnQgd2l0aCBrZXJuYXJnc19hYmkuCgkoc3RydWN0IGhlYXApOiBEZWxldGUuCgko bWFpbik6IFJlYWQgR0NOX1NUQUNLX1NJWkUgZW52dmFyLgoJQWxsb2NhdGUgc3BhY2UgZm9y IHRoZSBkZXZpY2Ugc3RhY2tzLgoJV3JpdGUgdGhlIG5ldyBrZXJuYXJncyBmaWVsZHMuCgkq IGNvbmZpZy9nY24vZ2NuLmNjIChnY25fb3B0aW9uX292ZXJyaWRlKTogUmVtb3ZlIHN0YWNr X3NpemVfb3B0LgoJKGRlZmF1bHRfcmVxdWVzdGVkX2FyZ3MpOiBSZW1vdmUgUFJJVkFURV9T RUdNRU5UX0JVRkZFUl9BUkcgYW5kCglQUklWQVRFX1NFR01FTlRfV0FWRV9PRkZTRVRfQVJH LgoJKGdjbl9hZGRyX3NwYWNlX2NvbnZlcnQpOiBNYXNrIHRoZSBRVUVVRV9QVFJfQVJHIGNv bnRlbnQuCgkoZ2NuX2V4cGFuZF9wcm9sb2d1ZSk6IE1vdmUgdGhlIFRBUkdFVF9QQUNLRURf V09SS19JVEVNUyB0byB0aGUgdG9wLgoJU2V0IHVwIHRoZSBzdGFja3MgZnJvbSB0aGUgdmFs dWVzIGluIHRoZSBrZXJuYXJncywgbm90IHByaXZhdGUuCgkoZ2NuX2V4cGFuZF9idWlsdGlu XzEpOiBNYXRjaCB0aGUgc3RhY2sgY29uZmlndXJhdGlvbiBpbiB0aGUgcHJvbG9ndWUuCgko Z2NuX2hzYV9kZWNsYXJlX2Z1bmN0aW9uX25hbWUpOiBUdXJuIG9mZiB0aGUgcHJpdmF0ZSBz ZWdtZW50LgoJKGdjbl9jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSk6IEVuc3VyZSBRVUVV RV9QVFIgaXMgZml4ZWQuCgkqIGNvbmZpZy9nY24vZ2NuLmggKEZJWEVEX1JFR0lTVEVSUyk6 IEZpeCB0aGUgUVVFVUVfUFRSIHJlZ2lzdGVyLgoJKiBjb25maWcvZ2NuL2djbi5vcHQgKG1z dGFjay1zaXplKTogQ2hhbmdlIHRoZSBkZXNjcmlwdGlvbi4KCmluY2x1ZGUvQ2hhbmdlTG9n OgoKCSogZ29tcC1jb25zdGFudHMuaCAoR09NUF9WRVJTSU9OX0dDTik6IEJ1bXAuCgpsaWJn b21wL0NoYW5nZUxvZzoKCgkqIGNvbmZpZy9nY24vbGliZ29tcC1nY24uaCAoREVGQVVMVF9H Q05fU1RBQ0tfU0laRSk6IE5ldyBkZWZpbmUuCgkoREVGQVVMVF9URUFNX0FSRU5BX1NJWkUp OiBOZXcgZGVmaW5lLgoJKHN0cnVjdCBoZWFwKTogTW92ZSB0byB0aGlzIGZpbGUuCgkoc3Ry dWN0IGtlcm5hcmdzX2FiaSk6IExpa2V3aXNlLgoJKiBjb25maWcvZ2NuL3RlYW0uYyAoZ29t cF9nY25fZW50ZXJfa2VybmVsKTogVXNlIHRlYW0gYXJlbmEgc2l6ZSBmcm9tCgl0aGUga2Vy bmFyZ3MuCgkqIGxpYmdvbXAuaDogSW5jbHVkZSBsaWJnb21wLWdjbi5oLgoJKFRFQU1fQVJF TkFfU0laRSk6IFJlbW92ZS4KCSh0ZWFtX21hbGxvYyk6IFVwZGF0ZSB0aGUgZXJyb3IgbWVz c2FnZS4KCSogcGx1Z2luL3BsdWdpbi1nY24uYyAoc3RydWN0IGtlcm5hcmdzKTogTW92ZSBj b21tb24gY29udGVudCB0bwoJc3RydWN0IGtlcm5hcmdzX2FiaS4KCShzdHJ1Y3QgYWdlbnRf aW5mbyk6IFJlbmFtZSB0ZWFtIGFyZW5hcyB0byBlcGhlbWVyYWwgbWVtb3JpZXMuCgkoc3Ry dWN0IHRlYW1fYXJlbmFfbGlzdCk6IFJlbmFtZSAuLi4uCgkoc3RydWN0IGVwaGVtZXJhbF9t ZW1vcmllc19saXN0KTogdG8gdGhpcy4KCShzdHJ1Y3QgaGVhcCk6IERlbGV0ZS4KCSh0ZWFt X2FyZW5hX3NpemUpOiBOZXcgdmFyaWFibGUuCgkoc3RhY2tfc2l6ZSk6IE5ldyB2YXJpYWJs ZS4KCShwcmludF9rZXJuZWxfZGlzcGF0Y2gpOiBVcGRhdGUgZGVidWcgbWVzc2FnZXMuCgko aW5pdF9lbnZpcm9ubWVudF92YXJpYWJsZXMpOiBSZWFkIEdDTl9URUFNX0FSRU5BX1NJWkUu CglSZWFkIEdDTl9TVEFDS19TSVpFLgoJKGdldF90ZWFtX2FyZW5hKTogUmVuYW1lIC4uLgoJ KGNvbmZpZ3VyZV9lcGhlbWVyYWxfbWVtb3JpZXMpOiAuLi4gdG8gdGhpcywgYW5kIHNldCB1 cCBzdGFja3MuCgkocmVsZWFzZV90ZWFtX2FyZW5hKTogUmVuYW1lIC4uLgoJKHJlbGVhc2Vf ZXBoZW1lcmFsX21lbW9yaWVzKTogLi4uIHRvIHRoaXMuCgkoZGVzdHJveV90ZWFtX2FyZW5h cyk6IFJlbmFtZSAuLi4KCShkZXN0cm95X2VwaGVtZXJhbF9tZW1vcmllcyk6IC4uLiB0byB0 aGlzLgoJKGNyZWF0ZV9rZXJuZWxfZGlzcGF0Y2gpOiBBZGQgbnVtX3RocmVhZHMgcGFyYW1l dGVyLgoJQWRqdXN0IGZvciBrZXJuYXJnc19hYmkgcmVmYWN0b3IgYW5kIGVwaGVtZXJhbCBt ZW1vcmllcy4KCShyZWxlYXNlX2tlcm5lbF9kaXNwYXRjaCk6IEFkanVzdCBmb3IgZXBoZW1l cmFsIG1lbW9yaWVzLgoJKHJ1bl9rZXJuZWwpOiBQYXNzIHRocmVhZC1jb3VudCB0byBjcmVh dGVfa2VybmVsX2Rpc3BhdGNoLgoJKEdPTVBfT0ZGTE9BRF9pbml0X2RldmljZSk6IEFkanVz dCBmb3IgZXBoZW1lcmFsIG1lbW9yaWVzLgoJKEdPTVBfT0ZGTE9BRF9maW5pX2RldmljZSk6 IEFkanVzdCBmb3IgZXBoZW1lcmFsIG1lbW9yaWVzLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6CgoJKiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHI0NzIzNy5jOiBYZmFpbCBvbiBhbWRn Y24uCgkqIGdjYy5kZy9idWlsdGluLWFwcGx5My5jOiBYZmFpbCBmb3IgYW1kZ2NuLgoJKiBn Y2MuZGcvYnVpbHRpbi1hcHBseTQuYzogWGZhaWwgZm9yIGFtZGdjbi4KCSogZ2NjLmRnL3Rv cnR1cmUvc3RhY2thbGlnbi9idWlsdGluLWFwcGx5LTMuYzogWGZhaWwgZm9yIGFtZGdjbi4K CSogZ2NjLmRnL3RvcnR1cmUvc3RhY2thbGlnbi9idWlsdGluLWFwcGx5LTQuYzogWGZhaWwg Zm9yIGFtZGdjbi4KCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2djbi9nY24tcnVuLmNjIGIv Z2NjL2NvbmZpZy9nY24vZ2NuLXJ1bi5jYwppbmRleCA2MDY3NzJlNjIxMi4uNDIzMmExN2I3 ODQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL2djbi1ydW4uY2MKKysrIGIvZ2NjL2Nv bmZpZy9nY24vZ2NuLXJ1bi5jYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHNpZ25h bC5oPgogCiAjaW5jbHVkZSAiaHNhLmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vbGliZ29tcC9j b25maWcvZ2NuL2xpYmdvbXAtZ2NuLmgiCiAKICNpZm5kZWYgSFNBX1JVTlRJTUVfTElCCiAj ZGVmaW5lIEhTQV9SVU5USU1FX0xJQiAibGliaHNhLXJ1bnRpbWU2NC5zby4xIgpAQCAtNDg3 LDM5ICs0ODgsMTYgQEAgZGV2aWNlX21hbGxvYyAoc2l6ZV90IHNpemUsIGhzYV9yZWdpb25f dCByZWdpb24pCiAgICBhdXRvbWF0aWNhbGx5IGFzc2lnbiB0aGUgZXhpdCB2YWx1ZSB0byAq cmV0dXJuX3ZhbHVlLiAgKi8KIHN0cnVjdCBrZXJuYXJncwogewotICAvKiBLZXJuYXJncy4g ICovCi0gIGludDMyX3QgYXJnYzsKLSAgaW50NjRfdCBhcmd2OwotICBpbnQ2NF90IG91dF9w dHI7Ci0gIGludDY0X3QgaGVhcF9wdHI7Ci0KLSAgLyogT3V0cHV0IGRhdGEuICAqLwotICBz dHJ1Y3Qgb3V0cHV0Ci0gIHsKLSAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIHVuc2lnbmVk IGludCBuZXh0X291dHB1dDsKLSAgICBzdHJ1Y3QgcHJpbnRmX2RhdGEKLSAgICB7Ci0gICAg ICBpbnQgd3JpdHRlbjsKLSAgICAgIGNoYXIgbXNnWzEyOF07Ci0gICAgICBpbnQgdHlwZTsK LSAgICAgIHVuaW9uCi0gICAgICB7Ci0JaW50NjRfdCBpdmFsdWU7Ci0JZG91YmxlIGR2YWx1 ZTsKLQljaGFyIHRleHRbMTI4XTsKLSAgICAgIH07Ci0gICAgfSBxdWV1ZVsxMDI0XTsKLSAg ICB1bnNpZ25lZCBpbnQgY29uc3VtZWQ7Ci0gIH0gb3V0cHV0X2RhdGE7CisgIHVuaW9uIHsK KyAgICBzdHJ1Y3QgeworICAgICAgaW50MzJfdCBhcmdjOworICAgICAgaW50NjRfdCBhcmd2 OworICAgIH0gYXJnczsKKyAgICBzdHJ1Y3Qga2VybmFyZ3NfYWJpIGFiaTsKKyAgfTsKKyAg c3RydWN0IG91dHB1dCBvdXRwdXRfZGF0YTsKIH07CiAKLXN0cnVjdCBoZWFwCi17Ci0gIGlu dDY0X3Qgc2l6ZTsKLSAgY2hhciBkYXRhWzBdOwotfSBoZWFwOwotCiAvKiBQcmludCBhbnkg Y29uc29sZSBvdXRwdXQgZnJvbSB0aGUga2VybmVsLgogICAgV2UgcHJpbnQgYWxsIGVudHJp ZXMgZnJvbSAiY29uc3VtZWQiIHRvIHRoZSBuZXh0IGVudHJ5IHdpdGhvdXQgYSAid3JpdHRl biIKICAgIGZsYWcsIG9yICJuZXh0X291dHB1dCIgaXMgcmVhY2hlZC4gIFRoZSBidWZmZXIg aXMgY2lyY3VsYXIsIGJ1dCB0aGUKQEAgLTY4Nyw2ICs2NjUsMTYgQEAgbWFpbiAoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxfYXJnYzsg aSsrKQogICAgIGFyZ3Nfc2l6ZSArPSBzdHJsZW4gKGtlcm5lbF9hcmd2W2ldKSArIDE7CiAK KyAgLyogVGhlIGRldmljZSBzdGFjayBjYW4gYmUgYWRqdXN0ZWQgdmlhIGFuIGVudmlyb25t ZW50IHZhcmlhYmxlLiAgKi8KKyAgY2hhciAqZW52dmFyID0gZ2V0ZW52ICgiR0NOX1NUQUNL X1NJWkUiKTsKKyAgaW50IHN0YWNrX3NpemUgPSAxICogMTAyNCAqIDEwMjQ7ICAvKiAxTUIg ZGVmYXVsdC4gICovCisgIGlmIChlbnZ2YXIpCisgICAgeworICAgICAgaW50IHZhbCA9IGF0 b2kgKGVudnZhcik7CisgICAgICBpZiAodmFsKQorCXN0YWNrX3NpemUgPSB2YWw7CisgICAg fQorCiAgIC8qIEFsbG9jYXRlIGRldmljZSBtZW1vcnkgZm9yIGJvdGggZnVuY3Rpb24gcGFy YW1ldGVycyBhbmQgdGhlIGFyZ3YKICAgICAgZGF0YS4gICovCiAgIHN0cnVjdCBrZXJuYXJn cyAqa2VybmFyZ3MgPSBkZXZpY2VfbWFsbG9jIChzaXplb2YgKCprZXJuYXJncyksCkBAIC03 MDIsMTEgKzY5MCwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogICBYSFNB IChoc2FfZm5zLmhzYV9tZW1vcnlfYXNzaWduX2FnZW50X2ZuIChoZWFwLCBkZXZpY2UsCiAJ CQkJCSAgICBIU0FfQUNDRVNTX1BFUk1JU1NJT05fUlcpLAogCSJBc3NpZ24gaGVhcCB0byBk ZXZpY2UgYWdlbnQiKTsKKyAgdm9pZCAqc3RhY2sgPSBkZXZpY2VfbWFsbG9jIChzdGFja19z aXplLCBoZWFwX3JlZ2lvbik7CiAKICAgLyogV3JpdGUgdGhlIGRhdGEgdG8gdGhlIHRhcmdl dC4gICovCi0gIGtlcm5hcmdzLT5hcmdjID0ga2VybmVsX2FyZ2M7Ci0gIGtlcm5hcmdzLT5h cmd2ID0gKGludDY0X3QpIGFyZ3MtPmFyZ3ZfZGF0YTsKLSAga2VybmFyZ3MtPm91dF9wdHIg PSAoaW50NjRfdCkgJmtlcm5hcmdzLT5vdXRwdXRfZGF0YTsKKyAga2VybmFyZ3MtPmFyZ3Mu YXJnYyA9IGtlcm5lbF9hcmdjOworICBrZXJuYXJncy0+YXJncy5hcmd2ID0gKGludDY0X3Qp IGFyZ3MtPmFyZ3ZfZGF0YTsKKyAga2VybmFyZ3MtPmFiaS5vdXRfcHRyID0gKGludDY0X3Qp ICZrZXJuYXJncy0+b3V0cHV0X2RhdGE7CiAgIGtlcm5hcmdzLT5vdXRwdXRfZGF0YS5yZXR1 cm5fdmFsdWUgPSAweGNhZmUwMDAwOyAvKiBEZWZhdWx0IHJldHVybiB2YWx1ZS4gKi8KICAg a2VybmFyZ3MtPm91dHB1dF9kYXRhLm5leHRfb3V0cHV0ID0gMDsKICAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSA8IChzaXplb2YgKGtlcm5hcmdzLT5vdXRwdXRfZGF0YS5xdWV1ZSkKQEAg LTcyMSw4ICs3MTAsMTEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAg IG1lbWNweSAoJmFyZ3MtPnN0cmluZ3Nbb2Zmc2V0XSwga2VybmVsX2FyZ3ZbaV0sIGFyZ19s ZW4gKyAxKTsKICAgICAgIG9mZnNldCArPSBhcmdfbGVuOwogICAgIH0KLSAga2VybmFyZ3Mt PmhlYXBfcHRyID0gKGludDY0X3QpIGhlYXA7CisgIGtlcm5hcmdzLT5hYmkuaGVhcF9wdHIg PSAoaW50NjRfdCkgaGVhcDsKICAgaHNhX2Zucy5oc2FfbWVtb3J5X2NvcHlfZm4gKCZoZWFw LT5zaXplLCAmaGVhcF9zaXplLCBzaXplb2YgKGhlYXBfc2l6ZSkpOworICBrZXJuYXJncy0+ YWJpLmFyZW5hX3B0ciA9IDA7CisgIGtlcm5hcmdzLT5hYmkuc3RhY2tfcHRyID0gKGludDY0 X3QpIHN0YWNrOworICBrZXJuYXJncy0+YWJpLnN0YWNrX3NpemVfcGVyX3RocmVhZCA9IHN0 YWNrX3NpemU7CiAKICAgLyogUnVuIGNvbnN0cnVjdG9ycyBvbiB0aGUgR1BVLiAgKi8KICAg cnVuIChpbml0X2FycmF5X2tlcm5lbCwga2VybmFyZ3MpOwpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9nY24vZ2NuLmNjIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjCmluZGV4IGVkZGU3YmFk NTE4Li4yM2FiMDFlNzVkOCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjCisr KyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwpAQCAtMTM4LDIxICsxMzgsNiBAQCBnY25fb3B0 aW9uX292ZXJyaWRlICh2b2lkKQogICAgICAgOiBJU0FfVU5LTk9XTik7CiAgIGdjY19hc3Nl cnQgKGdjbl9pc2EgIT0gSVNBX1VOS05PV04pOwogCi0gIC8qIFRoZSBkZWZhdWx0IHN0YWNr IHNpemUgbmVlZHMgdG8gYmUgc21hbGwgZm9yIG9mZmxvYWQga2VybmVscyBiZWNhdXNlCi0g ICAgIHRoZXJlIG1heSBiZSBtYW55LCBtYW55IHRocmVhZHMuICBBbHNvLCBhIHNtYWxsZXIg c3RhY2sgZ2l2ZXMgYQotICAgICBtZWFzdXJlYWJsZSBwZXJmb3JtYW5jZSBib29zdC4gIEJ1 dCwgYSBzbWFsbCBzdGFjayBpcyBpbnN1ZmZpY2llbnQKLSAgICAgZm9yIHJ1bm5pbmcgdGhl IHRlc3RzdWl0ZSwgc28gd2UgdXNlIGEgbGFyZ2VyIGRlZmF1bHQgZm9yIHRoZSBzdGFuZAot ICAgICBhbG9uZSBjYXNlLiAgKi8KLSAgaWYgKHN0YWNrX3NpemVfb3B0ID09IC0xKQotICAg IHsKLSAgICAgIGlmIChmbGFnX29wZW5hY2MgfHwgZmxhZ19vcGVubXApCi0JLyogNTEyIGJ5 dGVzIHBlciB3b3JrIGl0ZW0gPSAzMmtCIHRvdGFsLiAgKi8KLQlzdGFja19zaXplX29wdCA9 IDUxMiAqIDY0OwotICAgICAgZWxzZQotCS8qIDFNQiB0b3RhbC4gICovCi0Jc3RhY2tfc2l6 ZV9vcHQgPSAxMDQ4NTc2OwotICAgIH0KLQogICAvKiBSZXNlcnZlIDFLYiAoc29tZXdoYXQg YXJiaXRyYXJpbHkpIG9mIExEUyBzcGFjZSBmb3IgcmVkdWN0aW9uIHJlc3VsdHMgYW5kCiAg ICAgIHdvcmtlciBicm9hZGNhc3RzLiAgKi8KICAgaWYgKGdhbmdfcHJpdmF0ZV9zaXplX29w dCA9PSAtMSkKQEAgLTIyOCwxMSArMjEzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnY25f a2VybmVsX2FyZ190eXBlCiB9OwogCiBzdGF0aWMgY29uc3QgbG9uZyBkZWZhdWx0X3JlcXVl c3RlZF9hcmdzCi0JPSAoMSA8PCBQUklWQVRFX1NFR01FTlRfQlVGRkVSX0FSRykKLQkgIHwg KDEgPDwgRElTUEFUQ0hfUFRSX0FSRykKKwk9ICgxIDw8IERJU1BBVENIX1BUUl9BUkcpCiAJ ICB8ICgxIDw8IFFVRVVFX1BUUl9BUkcpCiAJICB8ICgxIDw8IEtFUk5BUkdfU0VHTUVOVF9Q VFJfQVJHKQotCSAgfCAoMSA8PCBQUklWQVRFX1NFR01FTlRfV0FWRV9PRkZTRVRfQVJHKQog CSAgfCAoMSA8PCBXT1JLR1JPVVBfSURfWF9BUkcpCiAJICB8ICgxIDw8IFdPUktfSVRFTV9J RF9YX0FSRykKIAkgIHwgKDEgPDwgV09SS19JVEVNX0lEX1lfQVJHKQpAQCAtMTg2NSwxMCAr MTg0OCwxNCBAQCBnY25fYWRkcl9zcGFjZV9jb252ZXJ0IChydHggb3AsIHRyZWUgZnJvbV90 eXBlLCB0cmVlIHRvX3R5cGUpCiAKICAgaWYgKEFTX0xEU19QIChhc19mcm9tKSAmJiBBU19G TEFUX1AgKGFzX3RvKSkKICAgICB7Ci0gICAgICBydHggcXVldWUgPSBnZW5fcnR4X1JFRyAo REltb2RlLAotCQkJICAgICAgIGNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW1FVRVVFX1BUUl9B UkddKTsKKyAgICAgIC8qIFRoZSBoaWdoIGJpdHMgb2YgdGhlIFFVRVVFX1BUUl9BUkcgcmVn aXN0ZXIgYXJlIHVzZWQgYnkKKwkgR0NOX0JVSUxUSU5fRklSU1RfQ0FMTF9USElTX1RIUkVB RF9QLCBzbyBtYXNrIHRoZW0gb3V0LiAgKi8KKyAgICAgIHJ0eCBxdWV1ZV9yZWcgPSBnZW5f cnR4X1JFRyAoREltb2RlLAorCQkJCSAgIGNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW1FVRVVF X1BUUl9BUkddKTsKKyAgICAgIHJ0eCBxdWV1ZV9wdHIgPSBnZW5fcmVnX3J0eCAoREltb2Rl KTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FuZGRpMyAocXVldWVfcHRyLCBxdWV1ZV9yZWcs IEdFTl9JTlQgKDB4ZmZmZmZmZmZmZmZmKSkpOwogICAgICAgcnR4IGdyb3VwX3NlZ19hcGVy dHVyZV9oaSA9IGdlbl9ydHhfTUVNIChTSW1vZGUsCi0JCQkJICAgICBnZW5fcnR4X1BMVVMg KERJbW9kZSwgcXVldWUsCisJCQkJICAgICBnZW5fcnR4X1BMVVMgKERJbW9kZSwgcXVldWVf cHRyLAogCQkJCQkJICAgZ2VuX2ludF9tb2RlICg2NCwgU0ltb2RlKSkpOwogICAgICAgcnR4 IHRtcCA9IGdlbl9yZWdfcnR4IChESW1vZGUpOwogCkBAIC0yNTIxLDYgKzI1MDgsMTEgQEAg Z2NuX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlICh2b2lkKQogICAgICAgZml4ZWRfcmVn c1tjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tESVNQQVRDSF9QVFJfQVJHXV0gPSAxOwogICAg ICAgZml4ZWRfcmVnc1tjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tESVNQQVRDSF9QVFJfQVJH XSArIDFdID0gMTsKICAgICB9CisgIGlmIChjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tRVUVV RV9QVFJfQVJHXSA+PSAwKQorICAgIHsKKyAgICAgIGZpeGVkX3JlZ3NbY2Z1bi0+bWFjaGlu ZS0+YXJncy5yZWdbUVVFVUVfUFRSX0FSR11dID0gMTsKKyAgICAgIGZpeGVkX3JlZ3NbY2Z1 bi0+bWFjaGluZS0+YXJncy5yZWdbUVVFVUVfUFRSX0FSR10gKyAxXSA9IDE7CisgICAgfQog ICBpZiAoY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbV09SS0dST1VQX0lEX1hfQVJHXSA+PSAw KQogICAgIGZpeGVkX3JlZ3NbY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbV09SS0dST1VQX0lE X1hfQVJHXV0gPSAxOwogICBpZiAoY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbV09SS19JVEVN X0lEX1hfQVJHXSA+PSAwKQpAQCAtMzM0NiwxMCArMzMzOCw1NiBAQCBnY25fZXhwYW5kX3By b2xvZ3VlICgpCiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgcnR4IHdhdmVfb2Zmc2V0 ID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwKLQkJCQkgICAgIGNmdW4tPm1hY2hpbmUtPmFyZ3Mu Ci0JCQkJICAgICByZWdbUFJJVkFURV9TRUdNRU5UX1dBVkVfT0ZGU0VUX0FSR10pOworICAg ICAgaWYgKFRBUkdFVF9QQUNLRURfV09SS19JVEVNUykKKwl7CisJICAvKiB2MCBjb25hdGlu cyB0aGUgWCwgWSBhbmQgWiBkaW1lbnNpb25zIGFsbCBpbiBvbmUuCisJICAgICBFeHBhbmQg dGhlbSBvdXQgZm9yIEFCSSBjb21wYXRpYmlsaXR5LiAgKi8KKwkgIC8qIFRPRE86IGltcGxl bWVudCBhbmQgdXNlIHplcm9fZXh0cmFjdC4gICovCisJICBydHggdjEgPSBnZW5fcnR4X1JF RyAoVjY0U0ltb2RlLCBWR1BSX1JFR05PICgxKSk7CisJICBlbWl0X2luc24gKGdlbl9hbmR2 NjRzaTMgKHYxLCBnZW5fcnR4X1JFRyAoVjY0U0ltb2RlLCBWR1BSX1JFR05PICgwKSksCisJ CQkJICAgIGdlbl9ydHhfQ09OU1RfSU5UIChWT0lEbW9kZSwgMHgzRkYgPDwgMTApKSk7CisJ ICBlbWl0X2luc24gKGdlbl9sc2hydjY0c2kzICh2MSwgdjEsIGdlbl9ydHhfQ09OU1RfSU5U IChWT0lEbW9kZSwgMTApKSk7CisJICBlbWl0X2luc24gKGdlbl9wcm9sb2d1ZV91c2UgKHYx KSk7CisKKwkgIHJ0eCB2MiA9IGdlbl9ydHhfUkVHIChWNjRTSW1vZGUsIFZHUFJfUkVHTk8g KDIpKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX2FuZHY2NHNpMyAodjIsIGdlbl9ydHhfUkVHIChW NjRTSW1vZGUsIFZHUFJfUkVHTk8gKDApKSwKKwkJCQkgICAgZ2VuX3J0eF9DT05TVF9JTlQg KFZPSURtb2RlLCAweDNGRiA8PCAyMCkpKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX2xzaHJ2NjRz aTMgKHYyLCB2MiwgZ2VuX3J0eF9DT05TVF9JTlQgKFZPSURtb2RlLCAyMCkpKTsKKwkgIGVt aXRfaW5zbiAoZ2VuX3Byb2xvZ3VlX3VzZSAodjIpKTsKKwl9CisKKyAgICAgIC8qIFdlIG5v IGxvbmdlciB1c2UgdGhlIHByaXZhdGUgc2VnbWVudCBmb3IgdGhlIHN0YWNrIChpdCdzIG5v dAorCSBhY2Nlc3NpYmxlIHRvIHJldmVyc2Ugb2ZmbG9hZCksIHNvIHdlIG11c3QgY2FsY3Vs YXRlIGEgd2F2ZSBvZmZzZXQKKwkgZnJvbSB0aGUgZ3JpZCBkaW1lbnNpb25zIGFuZCBzdGFj ayBzaXplLCB3aGljaCBpcyBjYWxjdWxhdGVkIG9uIHRoZQorCSBob3N0LCBhbmQgcGFzc2Vk IGluIHRoZSBrZXJuYXJncyByZWdpb24uCisJIFNlZSBsaWJnb21wLWdjbi5oIGZvciBkZXRh aWxzLiAgKi8KKyAgICAgIHJ0eCB3YXZlX29mZnNldCA9IGdlbl9ydHhfUkVHIChTSW1vZGUs IEZJUlNUX1BBUk1fUkVHKTsKKworICAgICAgcnR4IG51bV93YXZlc19tZW0gPSBnY25fb2Fj Y19kaW1fc2l6ZSAoMSk7CisgICAgICBydHggbnVtX3dhdmVzID0gZ2VuX3J0eF9SRUcgKFNJ bW9kZSwgRklSU1RfUEFSTV9SRUcrMSk7CisgICAgICBzZXRfbWVtX2FkZHJfc3BhY2UgKG51 bV93YXZlc19tZW0sIEFERFJfU1BBQ0VfU0NBTEFSX0ZMQVQpOworICAgICAgZW1pdF9tb3Zl X2luc24gKG51bV93YXZlcywgbnVtX3dhdmVzX21lbSk7CisKKyAgICAgIHJ0eCB3b3JrZ3Jv dXBfbnVtID0gZ2NuX29hY2NfZGltX3BvcyAoMCk7CisgICAgICBydHggd2F2ZV9udW0gPSBn ZW5fcnR4X1JFRyAoU0ltb2RlLCBGSVJTVF9QQVJNX1JFRysyKTsKKyAgICAgIGVtaXRfbW92 ZV9pbnNuKHdhdmVfbnVtLCBnY25fb2FjY19kaW1fcG9zICgxKSk7CiAKKyAgICAgIHJ0eCB0 aHJlYWRfaWQgPSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBGSVJTVF9QQVJNX1JFRyszKTsKKyAg ICAgIGVtaXRfaW5zbiAoZ2VuX211bHNpMyAodGhyZWFkX2lkLCBudW1fd2F2ZXMsIHdvcmtn cm91cF9udW0pKTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FkZHNpM19zY2MgKHRocmVhZF9p ZCwgdGhyZWFkX2lkLCB3YXZlX251bSkpOworCisgICAgICBydHgga2VybmFyZ19yZWcgPSBn ZW5fcnR4X1JFRyAoREltb2RlLCBjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZworCQkJCSAgICAg W0tFUk5BUkdfU0VHTUVOVF9QVFJfQVJHXSk7CisgICAgICBydHggc3RhY2tfc2l6ZV9tZW0g PSBnZW5fcnR4X01FTSAoU0ltb2RlLAorCQkJCQlnZW5fcnR4X1BMVVMgKERJbW9kZSwga2Vy bmFyZ19yZWcsCisJCQkJCQkgICAgICBHRU5fSU5UICg1MikpKTsKKyAgICAgIHNldF9tZW1f YWRkcl9zcGFjZSAoc3RhY2tfc2l6ZV9tZW0sIEFERFJfU1BBQ0VfU0NBTEFSX0ZMQVQpOwor ICAgICAgZW1pdF9tb3ZlX2luc24gKHdhdmVfb2Zmc2V0LCBzdGFja19zaXplX21lbSk7CisK KyAgICAgIGVtaXRfaW5zbiAoZ2VuX211bHNpMyAod2F2ZV9vZmZzZXQsIHdhdmVfb2Zmc2V0 LCB0aHJlYWRfaWQpKTsKKworICAgICAgLyogVGhlIEZMQVRfU0NSQVRDSF9JTklUIGlzIG5v dCB1c3VhbGx5IG5lZWRlZCwgYnV0IGNhbiBiZSBlbmFibGVkCisJIHZpYSB0aGUgZnVuY3Rp b24gYXR0cmlidXRlcy4gICovCiAgICAgICBpZiAoY2Z1bi0+bWFjaGluZS0+YXJncy5yZXF1 ZXN0ZWQgJiAoMSA8PCBGTEFUX1NDUkFUQ0hfSU5JVF9BUkcpKQogCXsKIAkgIHJ0eCBmc19p bml0X2xvID0KQEAgLTMzODYsMTAgKzM0MjQsMTIgQEAgZ2NuX2V4cGFuZF9wcm9sb2d1ZSAo KQogICAgICAgSE9TVF9XSURFX0lOVCBzcF9hZGp1c3QgPSAob2Zmc2V0cy0+bG9jYWxfdmFy cwogCQkJCSArIG9mZnNldHMtPm91dGdvaW5nX2FyZ3Nfc2l6ZSk7CiAKLSAgICAgIC8qIElu aXRpYWxpc2UgRlAgYW5kIFNQIGZyb20gdGhlIGJ1ZmZlciBkZXNjcmlwdG9yIGluIHNbMDoz XS4gICovCi0gICAgICBlbWl0X21vdmVfaW5zbiAoZnBfbG8sIGdlbl9ydHhfUkVHIChTSW1v ZGUsIDApKTsKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX2FuZHNpM19zY2MgKGZwX2hpLCBnZW5f cnR4X1JFRyAoU0ltb2RlLCAxKSwKLQkJCQkgZ2VuX2ludF9tb2RlICgweGZmZmYsIFNJbW9k ZSkpKTsKKyAgICAgIC8qIEluaXRpYWxpemUgRlAgYW5kIFNQIGZyb20gc3BhY2UgYWxsb2Nh dGVkIG9uIHRoZSBob3N0LiAgKi8KKyAgICAgIHJ0eCBzdGFja19hZGRyX21lbSA9IGdlbl9y dHhfTUVNIChESW1vZGUsCisJCQkJCWdlbl9ydHhfUExVUyAoREltb2RlLCBrZXJuYXJnX3Jl ZywKKwkJCQkJCSAgICAgIEdFTl9JTlQgKDQwKSkpOworICAgICAgc2V0X21lbV9hZGRyX3Nw YWNlIChzdGFja19hZGRyX21lbSwgQUREUl9TUEFDRV9TQ0FMQVJfRkxBVCk7CisgICAgICBl bWl0X21vdmVfaW5zbiAoZnAsIHN0YWNrX2FkZHJfbWVtKTsKICAgICAgIHJ0eCBzY2MgPSBn ZW5fcnR4X1JFRyAoQkltb2RlLCBTQ0NfUkVHKTsKICAgICAgIGVtaXRfaW5zbiAoZ2VuX2Fk ZHNpM19zY2FsYXJfY2FycnkgKGZwX2xvLCBmcF9sbywgd2F2ZV9vZmZzZXQsIHNjYykpOwog ICAgICAgZW1pdF9pbnNuIChnZW5fYWRkY3NpM19zY2FsYXJfemVybyAoZnBfaGksIGZwX2hp LCBzY2MpKTsKQEAgLTM0NDUsMjUgKzM0ODUsNiBAQCBnY25fZXhwYW5kX3Byb2xvZ3VlICgp CiAgICAgZW1pdF9pbnNuIChnZW5fcHJvbG9ndWVfdXNlIChnZW5fcnR4X1JFRyAoU0ltb2Rl LCBNMF9SRUcpKSk7CiAgIH0KIAotICBpZiAoVEFSR0VUX1BBQ0tFRF9XT1JLX0lURU1TCi0g ICAgICAmJiBjZnVuICYmIGNmdW4tPm1hY2hpbmUgJiYgIWNmdW4tPm1hY2hpbmUtPm5vcm1h bF9mdW5jdGlvbikKLSAgewotICAgIC8qIHYwIGNvbmF0aW5zIHRoZSBYLCBZIGFuZCBaIGRp bWVuc2lvbnMgYWxsIGluIG9uZS4KLSAgICAgICBFeHBhbmQgdGhlbSBvdXQgZm9yIEFCSSBj b21wYXRpYmlsaXR5LiAgKi8KLSAgICAvKiBUT0RPOiBpbXBsZW1lbnQgYW5kIHVzZSB6ZXJv X2V4dHJhY3QuICAqLwotICAgIHJ0eCB2MSA9IGdlbl9ydHhfUkVHIChWNjRTSW1vZGUsIFZH UFJfUkVHTk8gKDEpKTsKLSAgICBlbWl0X2luc24gKGdlbl9hbmR2NjRzaTMgKHYxLCBnZW5f cnR4X1JFRyAoVjY0U0ltb2RlLCBWR1BSX1JFR05PICgwKSksCi0JICAgICAgIGdlbl9ydHhf Q09OU1RfSU5UIChWT0lEbW9kZSwgMHgzRkYgPDwgMTApKSk7Ci0gICAgZW1pdF9pbnNuIChn ZW5fbHNocnY2NHNpMyAodjEsIHYxLCBnZW5fcnR4X0NPTlNUX0lOVCAoVk9JRG1vZGUsIDEw KSkpOwotICAgIGVtaXRfaW5zbiAoZ2VuX3Byb2xvZ3VlX3VzZSAodjEpKTsKLQotICAgIHJ0 eCB2MiA9IGdlbl9ydHhfUkVHIChWNjRTSW1vZGUsIFZHUFJfUkVHTk8gKDIpKTsKLSAgICBl bWl0X2luc24gKGdlbl9hbmR2NjRzaTMgKHYyLCBnZW5fcnR4X1JFRyAoVjY0U0ltb2RlLCBW R1BSX1JFR05PICgwKSksCi0JICAgICAgIGdlbl9ydHhfQ09OU1RfSU5UIChWT0lEbW9kZSwg MHgzRkYgPDwgMjApKSk7Ci0gICAgZW1pdF9pbnNuIChnZW5fbHNocnY2NHNpMyAodjIsIHYy LCBnZW5fcnR4X0NPTlNUX0lOVCAoVk9JRG1vZGUsIDIwKSkpOwotICAgIGVtaXRfaW5zbiAo Z2VuX3Byb2xvZ3VlX3VzZSAodjIpKTsKLSAgfQotCiAgIGlmIChjZnVuICYmIGNmdW4tPm1h Y2hpbmUgJiYgIWNmdW4tPm1hY2hpbmUtPm5vcm1hbF9mdW5jdGlvbiAmJiBmbGFnX29wZW5t cCkKICAgICB7CiAgICAgICAvKiBPcGVuTVAga2VybmVscyBoYXZlIGFuIGltcGxpY2l0IGNh bGwgdG8gZ29tcF9nY25fZW50ZXJfa2VybmVsLiAgKi8KQEAgLTQ1MDQsMjYgKzQ1MjUsNTMg QEAgZ2NuX2V4cGFuZF9idWlsdGluXzEgKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggLypz dWJ0YXJnZXQgKi8gLAogCSAgIGNmLiBzdHJ1Y3QgaHNhX2tlcm5lbF9kaXNwYXRjaF9wYWNr ZXRfcyBpbiB0aGUgSFNBIGRvYy4gICovCiAJcnR4IHB0cjsKIAlpZiAoY2Z1bi0+bWFjaGlu ZS0+YXJncy5yZWdbRElTUEFUQ0hfUFRSX0FSR10gPj0gMAotCSAgICAmJiBjZnVuLT5tYWNo aW5lLT5hcmdzLnJlZ1tQUklWQVRFX1NFR01FTlRfQlVGRkVSX0FSR10gPj0gMCkKKwkgICAg JiYgY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbS0VSTkFSR19TRUdNRU5UX1BUUl9BUkddID49 IDApCiAJICB7Ci0JICAgIHJ0eCBzaXplX3J0eCA9IGdlbl9ydHhfUkVHIChESW1vZGUsCi0J CQkgICAgIGNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW0RJU1BBVENIX1BUUl9BUkddKTsKLQkg ICAgc2l6ZV9ydHggPSBnZW5fcnR4X01FTSAoU0ltb2RlLAotCQkJCSAgICBnZW5fcnR4X1BM VVMgKERJbW9kZSwgc2l6ZV9ydHgsCi0JCQkJCQkgIEdFTl9JTlQgKDYqMiArIDMqNCkpKTsK LQkgICAgc2l6ZV9ydHggPSBnZW5fcnR4X01VTFQgKFNJbW9kZSwgc2l6ZV9ydHgsIEdFTl9J TlQgKDY0KSk7Ci0KLQkgICAgcHRyID0gZ2VuX3J0eF9SRUcgKERJbW9kZSwKLQkJICAgIGNm dW4tPm1hY2hpbmUtPmFyZ3MucmVnW1BSSVZBVEVfU0VHTUVOVF9CVUZGRVJfQVJHXSk7Ci0J ICAgIHB0ciA9IGdlbl9ydHhfQU5EIChESW1vZGUsIHB0ciwgR0VOX0lOVCAoMHgwMDAwZmZm ZmZmZmZmZmZmKSk7Ci0JICAgIHB0ciA9IGdlbl9ydHhfUExVUyAoREltb2RlLCBwdHIsIHNp emVfcnR4KTsKLQkgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW1BSSVZBVEVfU0VH TUVOVF9XQVZFX09GRlNFVF9BUkddID49IDApCi0JICAgICAgewotCQlydHggb2ZmOwotCQlv ZmYgPSBnZW5fcnR4X1JFRyAoU0ltb2RlLAotCQkgICAgICBjZnVuLT5tYWNoaW5lLT5hcmdz LnJlZ1tQUklWQVRFX1NFR01FTlRfV0FWRV9PRkZTRVRfQVJHXSk7Ci0JCXB0ciA9IGdlbl9y dHhfUExVUyAoREltb2RlLCBwdHIsIG9mZik7Ci0JICAgICAgfQorCSAgICBydHggbnVtX3dh dmVzX21lbSA9IGdjbl9vYWNjX2RpbV9zaXplICgxKTsKKwkgICAgcnR4IG51bV93YXZlcyA9 IGdlbl9yZWdfcnR4IChTSW1vZGUpOworCSAgICBzZXRfbWVtX2FkZHJfc3BhY2UgKG51bV93 YXZlc19tZW0sIEFERFJfU1BBQ0VfU0NBTEFSX0ZMQVQpOworCSAgICBlbWl0X21vdmVfaW5z biAobnVtX3dhdmVzLCBudW1fd2F2ZXNfbWVtKTsKKworCSAgICBydHggd29ya2dyb3VwX251 bSA9IGdjbl9vYWNjX2RpbV9wb3MgKDApOworCSAgICBydHggd2F2ZV9udW0gPSBnZW5fcmVn X3J0eCAoU0ltb2RlKTsKKwkgICAgZW1pdF9tb3ZlX2luc24od2F2ZV9udW0sIGdjbl9vYWNj X2RpbV9wb3MgKDEpKTsKKworCSAgICBydHggdGhyZWFkX2lkID0gZ2VuX3JlZ19ydHggKFNJ bW9kZSk7CisJICAgIGVtaXRfaW5zbiAoZ2VuX211bHNpMyAodGhyZWFkX2lkLCBudW1fd2F2 ZXMsIHdvcmtncm91cF9udW0pKTsKKwkgICAgZW1pdF9pbnNuIChnZW5fYWRkc2kzX3NjYyAo dGhyZWFkX2lkLCB0aHJlYWRfaWQsIHdhdmVfbnVtKSk7CisKKwkgICAgcnR4IGtlcm5hcmdf cmVnID0gZ2VuX3J0eF9SRUcgKERJbW9kZSwgY2Z1bi0+bWFjaGluZS0+YXJncy5yZWcKKwkJ CQkJICAgW0tFUk5BUkdfU0VHTUVOVF9QVFJfQVJHXSk7CisJICAgIHJ0eCBzdGFja19zaXpl X21lbSA9IGdlbl9ydHhfTUVNIChTSW1vZGUsCisJCQkJCSAgICAgIGdlbl9ydHhfUExVUyAo REltb2RlLAorCQkJCQkJCSAgICBrZXJuYXJnX3JlZywKKwkJCQkJCQkgICAgR0VOX0lOVCAo NTIpKSk7CisJICAgIHNldF9tZW1fYWRkcl9zcGFjZSAoc3RhY2tfc2l6ZV9tZW0sIEFERFJf U1BBQ0VfU0NBTEFSX0ZMQVQpOworCSAgICBydHggc3RhY2tfc2l6ZSA9IGdlbl9yZWdfcnR4 IChTSW1vZGUpOworCSAgICBlbWl0X21vdmVfaW5zbiAoc3RhY2tfc2l6ZSwgc3RhY2tfc2l6 ZV9tZW0pOworCisJICAgIHJ0eCB3YXZlX29mZnNldCA9IGdlbl9yZWdfcnR4IChTSW1vZGUp OworCSAgICBlbWl0X2luc24gKGdlbl9tdWxzaTMgKHdhdmVfb2Zmc2V0LCBzdGFja19zaXpl LCB0aHJlYWRfaWQpKTsKKworCSAgICBydHggc3RhY2tfbGltaXRfb2Zmc2V0ID0gZ2VuX3Jl Z19ydHggKFNJbW9kZSk7CisJICAgIGVtaXRfaW5zbiAoZ2VuX2FkZHNpMyAoc3RhY2tfbGlt aXRfb2Zmc2V0LCB3YXZlX29mZnNldCwKKwkJCQkgICBzdGFja19zaXplKSk7CisKKwkgICAg cnR4IHN0YWNrX2xpbWl0X29mZnNldF9kaSA9IGdlbl9yZWdfcnR4IChESW1vZGUpOworCSAg ICBlbWl0X21vdmVfaW5zbiAoZ2VuX3J0eF9TVUJSRUcgKFNJbW9kZSwgc3RhY2tfbGltaXRf b2Zmc2V0X2RpLCA0KSwKKwkJCSAgICBjb25zdDBfcnR4KTsKKwkgICAgZW1pdF9tb3ZlX2lu c24gKGdlbl9ydHhfU1VCUkVHIChTSW1vZGUsIHN0YWNrX2xpbWl0X29mZnNldF9kaSwgMCks CisJCQkgICAgc3RhY2tfbGltaXRfb2Zmc2V0KTsKKworCSAgICBydHggc3RhY2tfYWRkcl9t ZW0gPSBnZW5fcnR4X01FTSAoREltb2RlLAorCQkJCQkgICAgICBnZW5fcnR4X1BMVVMgKERJ bW9kZSwKKwkJCQkJCQkgICAga2VybmFyZ19yZWcsCisJCQkJCQkJICAgIEdFTl9JTlQgKDQw KSkpOworCSAgICBzZXRfbWVtX2FkZHJfc3BhY2UgKHN0YWNrX2FkZHJfbWVtLCBBRERSX1NQ QUNFX1NDQUxBUl9GTEFUKTsKKwkgICAgcnR4IHN0YWNrX2FkZHIgPSBnZW5fcmVnX3J0eCAo REltb2RlKTsKKwkgICAgZW1pdF9tb3ZlX2luc24gKHN0YWNrX2FkZHIsIHN0YWNrX2FkZHJf bWVtKTsKKworCSAgICBwdHIgPSBnZW5fcnR4X1BMVVMgKERJbW9kZSwgc3RhY2tfYWRkciwg c3RhY2tfbGltaXRfb2Zmc2V0X2RpKTsKIAkgIH0KIAllbHNlCiAJICB7CkBAIC00NTUxLDEx ICs0NTk5LDExIEBAIGdjbl9leHBhbmRfYnVpbHRpbl8xICh0cmVlIGV4cCwgcnR4IHRhcmdl dCwgcnR4IC8qc3VidGFyZ2V0ICovICwKIAkgICB3aGV0aGVyIGl0IHdhcyB0aGUgZmlyc3Qg Y2FsbC4gICovCiAJcnR4IHJlc3VsdCA9IGdlbl9yZWdfcnR4IChCSW1vZGUpOwogCWVtaXRf bW92ZV9pbnNuIChyZXN1bHQsIGNvbnN0MF9ydHgpOwotCWlmIChjZnVuLT5tYWNoaW5lLT5h cmdzLnJlZ1tQUklWQVRFX1NFR01FTlRfQlVGRkVSX0FSR10gPj0gMCkKKwlpZiAoY2Z1bi0+ bWFjaGluZS0+YXJncy5yZWdbUVVFVUVfUFRSX0FSR10gPj0gMCkKIAkgIHsKIAkgICAgcnR4 IG5vdF9maXJzdCA9IGdlbl9sYWJlbF9ydHggKCk7CiAJICAgIHJ0eCByZWcgPSBnZW5fcnR4 X1JFRyAoREltb2RlLAotCQkJY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbUFJJVkFURV9TRUdN RU5UX0JVRkZFUl9BUkddKTsKKwkJCWNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW1FVRVVFX1BU Ul9BUkddKTsKIAkgICAgcmVnID0gZ2NuX29wZXJhbmRfcGFydCAoREltb2RlLCByZWcsIDEp OwogCSAgICBydHggY21wID0gZm9yY2VfcmVnIChTSW1vZGUsCiAJCQkJIGdlbl9ydHhfTFNI SUZUUlQgKFNJbW9kZSwgcmVnLCBHRU5fSU5UICgxNikpKTsKQEAgLTYwNDEsMTYgKzYwODks MTMgQEAgZ2NuX2hzYV9kZWNsYXJlX2Z1bmN0aW9uX25hbWUgKEZJTEUgKmZpbGUsIGNvbnN0 IGNoYXIgKm5hbWUsIHRyZWUpCiAJICAgIlx0ICAuYW1kaHNhX3Jlc2VydmVfdmNjXHQxXG4i CiAJICAgIlx0ICAuYW1kaHNhX3Jlc2VydmVfZmxhdF9zY3JhdGNoXHQwXG4iCiAJICAgIlx0 ICAuYW1kaHNhX3Jlc2VydmVfeG5hY2tfbWFza1x0JWlcbiIKLQkgICAiXHQgIC5hbWRoc2Ff cHJpdmF0ZV9zZWdtZW50X2ZpeGVkX3NpemVcdCVpXG4iCisJICAgIlx0ICAuYW1kaHNhX3By aXZhdGVfc2VnbWVudF9maXhlZF9zaXplXHQwXG4iCiAJICAgIlx0ICAuYW1kaHNhX2dyb3Vw X3NlZ21lbnRfZml4ZWRfc2l6ZVx0JXVcbiIKIAkgICAiXHQgIC5hbWRoc2FfZmxvYXRfZGVu b3JtX21vZGVfMzJcdDNcbiIKIAkgICAiXHQgIC5hbWRoc2FfZmxvYXRfZGVub3JtX21vZGVf MTZfNjRcdDNcbiIsCiAJICAgdmdwciwKIAkgICBzZ3ByLAogCSAgIHhuYWNrX2VuYWJsZWQs Ci0JICAgLyogd29ya2l0ZW1fcHJpdmF0ZV9zZWdtZW50X2J5dGVzX3NpemUgbmVlZHMgdG8g YmUKLQkgICAgICBvbmUgNjR0aCB0aGUgd2F2ZS1mcm9udCBzdGFjayBzaXplLiAgKi8KLQkg ICBzdGFja19zaXplX29wdCAvIDY0LAogCSAgIExEU19TSVpFKTsKICAgaWYgKGdjbl9hcmNo ID09IFBST0NFU1NPUl9HRlg5MGEpCiAgICAgZnByaW50ZiAoZmlsZSwKQEAgLTYwNzUsNyAr NjEyMCw3IEBAIGdjbl9oc2FfZGVjbGFyZV9mdW5jdGlvbl9uYW1lIChGSUxFICpmaWxlLCBj b25zdCBjaGFyICpuYW1lLCB0cmVlKQogCSAgICIgICAgICAgICAgICAua2VybmFyZ19zZWdt ZW50X3NpemU6ICVpXG4iCiAJICAgIiAgICAgICAgICAgIC5rZXJuYXJnX3NlZ21lbnRfYWxp Z246ICVpXG4iCiAJICAgIiAgICAgICAgICAgIC5ncm91cF9zZWdtZW50X2ZpeGVkX3NpemU6 ICV1XG4iCi0JICAgIiAgICAgICAgICAgIC5wcml2YXRlX3NlZ21lbnRfZml4ZWRfc2l6ZTog JWlcbiIKKwkgICAiICAgICAgICAgICAgLnByaXZhdGVfc2VnbWVudF9maXhlZF9zaXplOiAw XG4iCiAJICAgIiAgICAgICAgICAgIC53YXZlZnJvbnRfc2l6ZTogNjRcbiIKIAkgICAiICAg ICAgICAgICAgLnNncHJfY291bnQ6ICVpXG4iCiAJICAgIiAgICAgICAgICAgIC52Z3ByX2Nv dW50OiAlaVxuIgpAQCAtNjA4Myw3ICs2MTI4LDYgQEAgZ2NuX2hzYV9kZWNsYXJlX2Z1bmN0 aW9uX25hbWUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIHRyZWUpCiAJICAgY2Z1 bi0+bWFjaGluZS0+a2VybmFyZ19zZWdtZW50X2J5dGVfc2l6ZSwKIAkgICBjZnVuLT5tYWNo aW5lLT5rZXJuYXJnX3NlZ21lbnRfYWxpZ25tZW50LAogCSAgIExEU19TSVpFLAotCSAgIHN0 YWNrX3NpemVfb3B0IC8gNjQsCiAJICAgc2dwciwgdmdwcik7CiAgIGlmIChnY25fYXJjaCA9 PSBQUk9DRVNTT1JfR0ZYOTBhKQogICAgIGZwcmludGYgKGZpbGUsICIgICAgICAgICAgICAu YWdwcl9jb3VudDogMFxuIik7IC8vIEFHUFJzIGFyZSBub3QgdXNlZCwgeWV0CmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2djbi9nY24uaCBiL2djYy9jb25maWcvZ2NuL2djbi5oCmluZGV4 IDE5YWQ1MjE0NTgwLi40ZmY5YTVkNGQxMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24v Z2NuLmgKKysrIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLmgKQEAgLTE4Myw3ICsxODMsNyBAQAog DAogI2RlZmluZSBGSVhFRF9SRUdJU1RFUlMgewkJCSAgICBcCiAgICAgLyogU2NhbGFycy4g ICovCQkJCSAgICBcCi0gICAgMSwgMSwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwJCSAgICBc CisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwJCSAgICBcCiAvKgkJZnAgICAg c3AgICAgbHIuICAqLwkJICAgIFwKICAgICAxLCAxLCAwLCAwLCAwLCAwLCAxLCAxLCAwLCAw LAkJICAgIFwKIC8qICBleGVjX3NhdmUsIGNjX3NhdmUgKi8JCQkgICAgXApkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLm9wdCBiL2djYy9jb25maWcvZ2NuL2djbi5vcHQKaW5k ZXggZTYxNmVhMDQ1M2YuLmM1YzMyYmRjODMzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2dj bi9nY24ub3B0CisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5vcHQKQEAgLTY5LDcgKzY5LDcg QEAgaW50IHN0YWNrX3NpemVfb3B0ID0gLTEKIAogbXN0YWNrLXNpemU9CiBUYXJnZXQgUmVq ZWN0TmVnYXRpdmUgSm9pbmVkIFVJbnRlZ2VyIFZhcihzdGFja19zaXplX29wdCkgSW5pdCgt MSkKLS1tc3RhY2stc2l6ZT08bnVtYmVyPglTZXQgdGhlIHByaXZhdGUgc2VnbWVudCBzaXpl IHBlciB3YXZlLWZyb250LCBpbiBieXRlcy4KK09ic29sZXRlOyB1c2UgR0NOX1NUQUNLX1NJ WkUgYXQgcnVudGltZS4KIAogaW50IGdhbmdfcHJpdmF0ZV9zaXplX29wdCA9IC0xCiAKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNDcyMzcu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNDcyMzcuYwppbmRl eCA5ODEyNDA2NWIyZi4uOTQ0YmRiN2M5M2EgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Z2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNDcyMzcuYworKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjQ3MjM3LmMKQEAgLTEsNCArMSw0IEBACi0vKiB7IGRn LXhmYWlsLWlmICJjYW4gY2F1c2Ugc3RhY2sgdW5kZXJmbG93IiB7IG5pb3MyLSotKiB9IH0g Ki8KKy8qIHsgZGcteGZhaWwtcnVuLWlmICJjYW4gY2F1c2Ugc3RhY2sgdW5kZXJmbG93IiB7 IG5pb3MyLSotKiBhbWRnY24tKi0qIH0gfSAqLwogLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgdW50eXBlZF9hc3NlbWJseSB9ICovCiAjZGVmaW5lIElOVEVHRVJfQVJHICA1 CiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tYXBwbHkzLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLWFwcGx5My5jCmluZGV4IDM3YzUyMDli OTFjLi44ZmMyMDAzMGVkNyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVp bHRpbi1hcHBseTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLWFwcGx5 My5jCkBAIC02LDYgKzYsNyBAQAogCiAvKiB7IGRnLWRvIHJ1biB9ICovCiAvKiB7IGRnLXJl cXVpcmUtZWZmZWN0aXZlLXRhcmdldCB1bnR5cGVkX2Fzc2VtYmx5IH0gKi8KKy8qIHsgZGct eGZhaWwtcnVuLWlmICJjYW4gY2F1c2Ugc3RhY2sgdW5kZXJmbG93IiB7IGFtZGdjbi0qLSog fSB9ICovCiAKIAogI2RlZmluZSBJTlRFR0VSX0FSRyAgNQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1hcHBseTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2J1aWx0aW4tYXBwbHk0LmMKaW5kZXggY2NhOTE4N2ExZDMuLmFhNDkxYzE4ZGU0IDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLWFwcGx5NC5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tYXBwbHk0LmMKQEAgLTMsNiArMyw3IEBACiAv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1tbXgiIHsgdGFyZ2V0IHsgeyBpPzg2 LSotKiB4ODZfNjQtKi0qIH0gJiYgaWEzMiB9IH0gfSAqLwogLyogeyBkZy1kbyBydW4gfSAq LwogLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdW50eXBlZF9hc3NlbWJseSB9 ICovCisvKiB7IGRnLXhmYWlsLXJ1bi1pZiAiY2FuIGNhdXNlIHN0YWNrIHVuZGVyZmxvdyIg eyBhbWRnY24tKi0qIH0gfSAqLwogCiBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CiAKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvc3RhY2thbGlnbi9idWls dGluLWFwcGx5LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvc3RhY2thbGln bi9idWlsdGluLWFwcGx5LTMuYwppbmRleCAzN2M1MjA5YjkxYy4uOGZjMjAwMzBlZDcgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvc3RhY2thbGlnbi9idWls dGluLWFwcGx5LTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3N0YWNr YWxpZ24vYnVpbHRpbi1hcHBseS0zLmMKQEAgLTYsNiArNiw3IEBACiAKIC8qIHsgZGctZG8g cnVuIH0gKi8KIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHVudHlwZWRfYXNz ZW1ibHkgfSAqLworLyogeyBkZy14ZmFpbC1ydW4taWYgImNhbiBjYXVzZSBzdGFjayB1bmRl cmZsb3ciIHsgYW1kZ2NuLSotKiB9IH0gKi8KIAogCiAjZGVmaW5lIElOVEVHRVJfQVJHICA1 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3N0YWNrYWxpZ24v YnVpbHRpbi1hcHBseS00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3N0YWNr YWxpZ24vYnVpbHRpbi1hcHBseS00LmMKaW5kZXggNzhiMTAzMjJlZGMuLjk0YjIwMTIzNzI0 IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3N0YWNrYWxpZ24v YnVpbHRpbi1hcHBseS00LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9z dGFja2FsaWduL2J1aWx0aW4tYXBwbHktNC5jCkBAIC0yLDYgKzIsNyBAQAogLyogeyBkZy1k byBydW4gfSAqLwogLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mZ251ODktaW5saW5l IiB9ICovCiAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB1bnR5cGVkX2Fzc2Vt Ymx5IH0gKi8KKy8qIHsgZGcteGZhaWwtcnVuLWlmICJjYW4gY2F1c2Ugc3RhY2sgdW5kZXJm bG93IiB7IGFtZGdjbi0qLSogfSB9ICovCiAKIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsK IApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oIGIvaW5jbHVkZS9nb21w LWNvbnN0YW50cy5oCmluZGV4IDNmNzJhMTVlZjU1Li4xYjliMDdkYzI0NSAxMDA2NDQKLS0t IGEvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCisrKyBiL2luY2x1ZGUvZ29tcC1jb25zdGFu dHMuaApAQCAtMjg0LDcgKzI4NCw3IEBAIGVudW0gZ29tcF9tYXBfa2luZAogICAgdG8gdGhl IHBsdWdpbiBpbnRlcmZhY2UgZGVmaW5lZCBpbiBsaWJnb21wL2xpYmdvbXAuaC4gICovCiAj ZGVmaW5lIEdPTVBfVkVSU0lPTgkyCiAjZGVmaW5lIEdPTVBfVkVSU0lPTl9OVklESUFfUFRY IDEKLSNkZWZpbmUgR09NUF9WRVJTSU9OX0dDTiAyCisjZGVmaW5lIEdPTVBfVkVSU0lPTl9H Q04gMwogCiAjZGVmaW5lIEdPTVBfVkVSU0lPTl9QQUNLKExJQiwgREVWKSAoKChMSUIpIDw8 IDE2KSB8IChERVYpKQogI2RlZmluZSBHT01QX1ZFUlNJT05fTElCKFBBQ0spICgoKFBBQ0sp ID4+IDE2KSAmIDB4ZmZmZikKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL2djbi9saWJn b21wLWdjbi5oIGIvbGliZ29tcC9jb25maWcvZ2NuL2xpYmdvbXAtZ2NuLmgKaW5kZXggY2Mw ZmMxMzQ5MTUuLmY2MmI3ZGRlMGU3IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9nY24v bGliZ29tcC1nY24uaAorKysgYi9saWJnb21wL2NvbmZpZy9nY24vbGliZ29tcC1nY24uaApA QCAtMzAsNiArMzAsNDAgQEAKICNpZm5kZWYgTElCR09NUF9HQ05fSAogI2RlZmluZSBMSUJH T01QX0dDTl9IIDEKIAorI2RlZmluZSBERUZBVUxUX0dDTl9TVEFDS19TSVpFICgzMioxMDI0 KQorI2RlZmluZSBERUZBVUxUX1RFQU1fQVJFTkFfU0laRSAoNjQqMTAyNCkKKworc3RydWN0 IGhlYXAKK3sKKyAgaW50NjRfdCBzaXplOworICBjaGFyIGRhdGFbMF07Cit9OworCisvKiBU aGlzIHN0cnVjdCBkZWZpbmVzIHRoZSAodW5vZmZpY2lhbCkgQUJJLWRlZmluZWQgdmFsdWVz IHRoZSBjb21waWxlcgorICAgZXhwZWN0cyB0byBmaW5kIGluIGZpcnN0IGJ5dGVzIG9mIHRo ZSBrZXJuYXJncyBzcGFjZS4KKyAgIFRoZSBwbHVnaW4gbWF5IGNob29zZSB0byBwbGFjZSBh ZGRpdGlvbmFsIGRhdGEgbGF0ZXIgaW4gdGhlIGtlcm5hcmdzCisgICBtZW1vcnkgYWxsb2Nh dGlvbiwgYnV0IHRob3NlIGFyZSBub3QgaW4gYW55IGZpeGVkIGxvY2F0aW9uLiAgKi8KK3N0 cnVjdCBrZXJuYXJnc19hYmkgeworICAvKiBMZWF2ZSBzcGFjZSBmb3IgdGhlIHJlYWwga2Vy bmVsIGFyZ3VtZW50cy4KKyAgICAgT3BlbkFDQyBhbmQgT3Blbk1QIG9ubHkgdXNlIG9uZSBw b2ludGVyLiAgKi8KKyAgaW50NjRfdCBkdW1teTE7CisgIGludDY0X3QgZHVtbXkyOworCisg IC8qIEEgcG9pbnRlciB0byBzdHJ1Y3Qgb3V0cHV0LCBiZWxvdywgZm9yIGNvbnNvbGUgb3V0 cHV0IGRhdGEuICAqLworICBpbnQ2NF90IG91dF9wdHI7CQkvKiBPZmZzZXQgMTYuICAqLwor CisgIC8qIEEgcG9pbnRlciB0byBzdHJ1Y3QgaGVhcC4gICovCisgIGludDY0X3QgaGVhcF9w dHI7CQkvKiBPZmZzZXQgMjQuICAqLworCisgIC8qIEEgcG9pbnRlciB0byB0aGUgZXBoZW1l cmFsIG1lbW9yeSBhcmVhcy4KKyAgICAgVGhlIHRlYW0gYXJlbmEgaXMgb25seSBuZWVkZWQg Zm9yIE9wZW5NUC4KKyAgICAgRWFjaCBzaG91bGQgaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIGFs bCB0aGUgdGVhbXMgYW5kIHRocmVhZHMuICAqLworICBpbnQ2NF90IGFyZW5hX3B0cjsJCS8q IE9mZnNldCAzMi4gICovCisgIGludDY0X3Qgc3RhY2tfcHRyOwkJLyogT2Zmc2V0IDQwLiAg Ki8KKyAgaW50IGFyZW5hX3NpemVfcGVyX3RlYW07CS8qIE9mZnNldCA0OC4gICovCisgIGlu dCBzdGFja19zaXplX3Blcl90aHJlYWQ7CS8qIE9mZnNldCA1Mi4gICovCit9OworCiAvKiBU aGlzIHN0cnVjdCBpcyBhbHNvIHVzZWQgaW4gTmV3bGliJ3MgbGliYy9zeXMvYW1kZ2NuL3dy aXRlLmMuICAqLwogc3RydWN0IG91dHB1dAogewpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25m aWcvZ2NuL3RlYW0uYyBiL2xpYmdvbXAvY29uZmlnL2djbi90ZWFtLmMKaW5kZXggNTI3YWEw ODhjMmEuLmYwMzIwN2M4NGUzIDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9nY24vdGVh bS5jCisrKyBiL2xpYmdvbXAvY29uZmlnL2djbi90ZWFtLmMKQEAgLTYwLDE0ICs2MCwxNiBA QCBnb21wX2djbl9lbnRlcl9rZXJuZWwgKHZvaWQpCiAgICAgICAvKiBJbml0aWFsaXplIHRo ZSB0ZWFtIGFyZW5hIGZvciBvcHRpbWl6ZWQgbWVtb3J5IGFsbG9jYXRpb24uCiAgICAgICAg ICBUaGUgYXJlbmEgaGFzIGJlZW4gYWxsb2NhdGVkIG9uIHRoZSBob3N0IHNpZGUsIGFuZCB0 aGUgYWRkcmVzcwogICAgICAgICAgcGFzc2VkIGluIHZpYSB0aGUga2VybmFyZ3MuICBFYWNo IHRlYW0gdGFrZXMgYSBzbWFsbCBzbGljZSBvZiBpdC4gICovCi0gICAgICB2b2lkICoqa2Vy bmFyZ3MgPSAodm9pZCoqKSBfX2J1aWx0aW5fZ2NuX2tlcm5hcmdfcHRyICgpOwotICAgICAg dm9pZCAqdGVhbV9hcmVuYSA9IChrZXJuYXJnc1s0XSArIFRFQU1fQVJFTkFfU0laRSp0ZWFt aWQpOworICAgICAgc3RydWN0IGtlcm5hcmdzX2FiaSAqa2VybmFyZ3MgPQorCShzdHJ1Y3Qg a2VybmFyZ3NfYWJpKikgX19idWlsdGluX2djbl9rZXJuYXJnX3B0ciAoKTsKKyAgICAgIHZv aWQgKnRlYW1fYXJlbmEgPSAoKHZvaWQqKWtlcm5hcmdzLT5hcmVuYV9wdHIKKwkJCSAgKyBr ZXJuYXJncy0+YXJlbmFfc2l6ZV9wZXJfdGVhbSAqIHRlYW1pZCk7CiAgICAgICB2b2lkICog X19sZHMgKmFyZW5hX3N0YXJ0ID0gKHZvaWQgKiBfX2xkcyAqKVRFQU1fQVJFTkFfU1RBUlQ7 CiAgICAgICB2b2lkICogX19sZHMgKmFyZW5hX2ZyZWUgPSAodm9pZCAqIF9fbGRzICopVEVB TV9BUkVOQV9GUkVFOwogICAgICAgdm9pZCAqIF9fbGRzICphcmVuYV9lbmQgPSAodm9pZCAq IF9fbGRzICopVEVBTV9BUkVOQV9FTkQ7CiAgICAgICAqYXJlbmFfc3RhcnQgPSB0ZWFtX2Fy ZW5hOwogICAgICAgKmFyZW5hX2ZyZWUgPSB0ZWFtX2FyZW5hOwotICAgICAgKmFyZW5hX2Vu ZCA9IHRlYW1fYXJlbmEgKyBURUFNX0FSRU5BX1NJWkU7CisgICAgICAqYXJlbmFfZW5kID0g dGVhbV9hcmVuYSArIGtlcm5hcmdzLT5hcmVuYV9zaXplX3Blcl90ZWFtOwogCiAgICAgICAv KiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgdGVhbS1sb2NhbC1zdG9yYWdlIGRhdGEu ICAqLwogICAgICAgc3RydWN0IGdvbXBfdGhyZWFkICp0aHJzID0gdGVhbV9tYWxsb2NfY2xl YXJlZCAoc2l6ZW9mICgqdGhycykKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC5oIGIv bGliZ29tcC9saWJnb21wLmgKaW5kZXggZTdlNDA5ZmYxMDUuLmJhOGZlMzQ4YWJhIDEwMDY0 NAotLS0gYS9saWJnb21wL2xpYmdvbXAuaAorKysgYi9saWJnb21wL2xpYmdvbXAuaApAQCAt MTEyLDggKzExMiw4IEBAIGV4dGVybiB2b2lkIGdvbXBfYWxpZ25lZF9mcmVlICh2b2lkICop OwogLyogT3B0aW1pemVkIGFsbG9jYXRvcnMgZm9yIHRlYW0tc3BlY2lmaWMgZGF0YSB0aGF0 IHdpbGwgZGllIHdpdGggdGhlIHRlYW0uICAqLwogCiAjaWZkZWYgX19BTURHQ05fXworI2lu Y2x1ZGUgImxpYmdvbXAtZ2NuLmgiCiAvKiBUaGUgYXJlbmEgaXMgaW5pdGlhbGl6ZWQgaW4g Y29uZmlnL2djbi90ZWFtLmMuICAqLwotI2RlZmluZSBURUFNX0FSRU5BX1NJWkUgIDY0KjEw MjQgIC8qIE11c3QgbWF0Y2ggdGhlIHZhbHVlIGluIHBsdWdpbi1nY24uYy4gICovCiAjZGVm aW5lIFRFQU1fQVJFTkFfU1RBUlQgMTYgIC8qIExEUyBvZmZzZXQgb2YgZnJlZSBwb2ludGVy LiAgKi8KICNkZWZpbmUgVEVBTV9BUkVOQV9GUkVFICAyNCAgLyogTERTIG9mZnNldCBvZiBm cmVlIHBvaW50ZXIuICAqLwogI2RlZmluZSBURUFNX0FSRU5BX0VORCAgIDMyICAvKiBMRFMg b2Zmc2V0IG9mIGVuZCBwb2ludGVyLiAgKi8KQEAgLTEzNSw3ICsxMzUsOCBAQCB0ZWFtX21h bGxvYyAoc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgLyogV2hpbGUgdGhpcyBpcyBleHBl cmltZW50YWwsIGxldCdzIG1ha2Ugc3VyZSB3ZSBrbm93IHdoZW4gT09NCiAJIGhhcHBlbnMu ICAqLwotICAgICAgY29uc3QgY2hhciBtc2dbXSA9ICJHQ04gdGVhbSBhcmVuYSBleGhhdXN0 ZWRcbiI7CisgICAgICBjb25zdCBjaGFyIG1zZ1tdID0gIkdDTiB0ZWFtIGFyZW5hIGV4aGF1 c3RlZDsiCisJCQkgIiBjb25maWd1cmUgd2l0aCBHQ05fVEVBTV9BUkVOQV9TSVpFPWJ5dGVz XG4iOwogICAgICAgd3JpdGUgKDIsIG1zZywgc2l6ZW9mKG1zZyktMSk7CiAKICAgICAgIC8q IEZhbGwgYmFjayB0byB1c2luZyB0aGUgaGVhcCAoc2xvd2x5KS4gICovCmRpZmYgLS1naXQg YS9saWJnb21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4t Z2NuLmMKaW5kZXggYjVkOWRhYzdjODYuLmE3YjM1MDU5YWIzIDEwMDY0NAotLS0gYS9saWJn b21wL3BsdWdpbi9wbHVnaW4tZ2NuLmMKKysrIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdj bi5jCkBAIC0yMzcsMjAgKzIzNyw3IEBAIHN0cnVjdCBrZXJuZWxfZGlzcGF0Y2gKICAgIGlu IGxpYmdvbXAgdGFyZ2V0IGNvZGUuICAqLwogCiBzdHJ1Y3Qga2VybmFyZ3MgewotICAvKiBM ZWF2ZSBzcGFjZSBmb3IgdGhlIHJlYWwga2VybmVsIGFyZ3VtZW50cy4KLSAgICAgT3BlbkFD QyBhbmQgT3Blbk1QIG9ubHkgdXNlIG9uZSBwb2ludGVyLiAgKi8KLSAgaW50NjRfdCBkdW1t eTE7Ci0gIGludDY0X3QgZHVtbXkyOwotCi0gIC8qIEEgcG9pbnRlciB0byBzdHJ1Y3Qgb3V0 cHV0LCBiZWxvdywgZm9yIGNvbnNvbGUgb3V0cHV0IGRhdGEuICAqLwotICBpbnQ2NF90IG91 dF9wdHI7Ci0KLSAgLyogQSBwb2ludGVyIHRvIHN0cnVjdCBoZWFwLCBiZWxvdy4gICovCi0g IGludDY0X3QgaGVhcF9wdHI7Ci0KLSAgLyogQSBwb2ludGVyIHRvIGFuIGVwaGVtZXJhbCBt ZW1vcnkgYXJlbmEuCi0gICAgT25seSBuZWVkZWQgZm9yIE9wZW5NUC4gICovCi0gIGludDY0 X3QgYXJlbmFfcHRyOworICBzdHJ1Y3Qga2VybmFyZ3NfYWJpIGFiaTsKIAogICAvKiBPdXRw dXQgZGF0YS4gICovCiAgIHN0cnVjdCBvdXRwdXQgb3V0cHV0X2RhdGE7CkBAIC00MjYsOSAr NDEzLDkgQEAgc3RydWN0IGFnZW50X2luZm8KICAgLyogVGhlIEhTQSBtZW1vcnkgcmVnaW9u IGZyb20gd2hpY2ggdG8gYWxsb2NhdGUgZGV2aWNlIGRhdGEuICAqLwogICBoc2FfcmVnaW9u X3QgZGF0YV9yZWdpb247CiAKLSAgLyogQWxsb2NhdGVkIHRlYW0gYXJlbmFzLiAgKi8KLSAg c3RydWN0IHRlYW1fYXJlbmFfbGlzdCAqdGVhbV9hcmVuYV9saXN0OwotICBwdGhyZWFkX211 dGV4X3QgdGVhbV9hcmVuYV93cml0ZV9sb2NrOworICAvKiBBbGxvY2F0ZWQgZXBoZW1lcmFs IG1lbW9yaWVzICh0ZWFtIGFyZW5hIGFuZCBzdGFjayBzcGFjZSkuICAqLworICBzdHJ1Y3Qg ZXBoZW1lcmFsX21lbW9yaWVzX2xpc3QgKmVwaGVtZXJhbF9tZW1vcmllc19saXN0OworICBw dGhyZWFkX211dGV4X3QgZXBoZW1lcmFsX21lbW9yaWVzX3dyaXRlX2xvY2s7CiAKICAgLyog UmVhZC13cml0ZSBsb2NrIHRoYXQgcHJvdGVjdHMga2VybmVscyB3aGljaCBhcmUgcnVubmlu ZyBvciBhYm91dCB0byBiZSBydW4KICAgICAgZnJvbSBpbnRlcmZlcmVuY2Ugd2l0aCBsb2Fk aW5nIGFuZCB1bmxvYWRpbmcgb2YgaW1hZ2VzLiAgTmVlZHMgdG8gYmUKQEAgLTUxMCwxNyAr NDk3LDE4IEBAIHN0cnVjdCBtb2R1bGVfaW5mbwogfTsKIAogLyogQSBsaW5rZWQgbGlzdCBv ZiBtZW1vcnkgYXJlbmFzIGFsbG9jYXRlZCBvbiB0aGUgZGV2aWNlLgotICAgVGhlc2UgYXJl IG9ubHkgdXNlZCBieSBPcGVuTVAsIGFzIGEgbWVhbnMgdG8gb3B0aW1pemUgcGVyLXRlYW0g bWFsbG9jLiAgKi8KKyAgIFRoZXNlIGFyZSB1c2VkIGJ5IE9wZW5NUCwgYXMgYSBtZWFucyB0 byBvcHRpbWl6ZSBwZXItdGVhbSBtYWxsb2MsCisgICBhbmQgZm9yIGhvc3QtYWNjZXNzaWJs ZSBzdGFjayBzcGFjZS4gICovCiAKLXN0cnVjdCB0ZWFtX2FyZW5hX2xpc3QKK3N0cnVjdCBl cGhlbWVyYWxfbWVtb3JpZXNfbGlzdAogewotICBzdHJ1Y3QgdGVhbV9hcmVuYV9saXN0ICpu ZXh0OworICBzdHJ1Y3QgZXBoZW1lcmFsX21lbW9yaWVzX2xpc3QgKm5leHQ7CiAKLSAgLyog VGhlIG51bWJlciBvZiB0ZWFtcyBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBhbGxvY2F0 aW9uLiAgKi8KLSAgaW50IG51bV90ZWFtczsKLSAgLyogVGhlIGRldmljZSBhZGRyZXNzIG9m IHRoZSBhcmVuYSBpdHNlbGYuICAqLwotICB2b2lkICphcmVuYTsKLSAgLyogQSBmbGFnIHRv IHByZXZlbnQgdHdvIGFzeW5jaHJvbm91cyBrZXJuZWxzIHRyeWluZyB0byB1c2UgdGhlIHNh bWUgYXJlbmEuCisgIC8qIFRoZSBzaXplIGlzIGRldGVybWluZWQgYnkgdGhlIG51bWJlciBv ZiB0ZWFtcyBhbmQgdGhyZWFkcy4gICovCisgIHNpemVfdCBzaXplOworICAvKiBUaGUgZGV2 aWNlIGFkZHJlc3MgYWxsb2NhdGVkIG1lbW9yeS4gICovCisgIHZvaWQgKmFkZHJlc3M7Cisg IC8qIEEgZmxhZyB0byBwcmV2ZW50IHR3byBhc3luY2hyb25vdXMga2VybmVscyB0cnlpbmcg dG8gdXNlIHRoZSBzYW1lIG1lbW9yeS4KICAgICAgVGhlIG11dGV4IGlzIGxvY2tlZCB1bnRp bCB0aGUga2VybmVsIGV4aXRzLiAgKi8KICAgcHRocmVhZF9tdXRleF90IGluX3VzZTsKIH07 CkBAIC01MzksMTUgKzUyNyw2IEBAIHN0cnVjdCBoc2FfY29udGV4dF9pbmZvCiAgIGNoYXIg ZHJpdmVyX3ZlcnNpb25fc1szMF07CiB9OwogCi0vKiBGb3JtYXQgb2YgdGhlIG9uLWRldmlj ZSBoZWFwLgotCi0gICBUaGlzIG11c3QgbWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gTmV3bGli IGFuZCBnY24tcnVuLiAgKi8KLQotc3RydWN0IGhlYXAgewotICBpbnQ2NF90IHNpemU7Ci0g IGNoYXIgZGF0YVswXTsKLX07Ci0KIC8qIH19fSAgKi8KIC8qIHt7eyBHbG9iYWwgdmFyaWFi bGVzICAqLwogCkBAIC01NjUsNiArNTQ0LDExIEBAIHN0YXRpYyBzdHJ1Y3QgaHNhX3J1bnRp bWVfZm5faW5mbyBoc2FfZm5zOwogCiBzdGF0aWMgc2l6ZV90IGdjbl9rZXJuZWxfaGVhcF9z aXplID0gREVGQVVMVF9HQ05fSEVBUF9TSVpFOwogCisvKiBFcGhlbWVyYWwgbWVtb3J5IHNp emVzIGZvciBlYWNoIGtlcm5lbCBsYXVuY2guICAqLworCitzdGF0aWMgaW50IHRlYW1fYXJl bmFfc2l6ZSA9IERFRkFVTFRfVEVBTV9BUkVOQV9TSVpFOworc3RhdGljIGludCBzdGFja19z aXplID0gREVGQVVMVF9HQ05fU1RBQ0tfU0laRTsKKwogLyogRmxhZyB0byBkZWNpZGUgd2hl dGhlciBwcmludCB0byBzdGRlcnIgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpcyBnb2luZyBv bi4KICAgIFNldCBpbiBpbml0X2RlYnVnIGRlcGVuZGluZyBvbiBlbnZpcm9ubWVudCB2YXJp YWJsZXMuICAqLwogCkBAIC0xMDIwLDkgKzEwMDQsMTMgQEAgcHJpbnRfa2VybmVsX2Rpc3Bh dGNoIChzdHJ1Y3Qga2VybmVsX2Rpc3BhdGNoICpkaXNwYXRjaCwgdW5zaWduZWQgaW5kZW50 KQogICBmcHJpbnRmIChzdGRlcnIsICIlKnNxdWV1ZTogJXBcbiIsIGluZGVudCwgIiIsIGRp c3BhdGNoLT5xdWV1ZSk7CiAgIGZwcmludGYgKHN0ZGVyciwgIiUqc2tlcm5hcmdfYWRkcmVz czogJXBcbiIsIGluZGVudCwgIiIsIGtlcm5hcmdzKTsKICAgZnByaW50ZiAoc3RkZXJyLCAi JSpzaGVhcCBhZGRyZXNzOiAlcFxuIiwgaW5kZW50LCAiIiwKLQkgICAodm9pZCopa2VybmFy Z3MtPmhlYXBfcHRyKTsKLSAgZnByaW50ZiAoc3RkZXJyLCAiJSpzYXJlbmEgYWRkcmVzczog JXBcbiIsIGluZGVudCwgIiIsCi0JICAgKHZvaWQqKWtlcm5hcmdzLT5hcmVuYV9wdHIpOwor CSAgICh2b2lkKilrZXJuYXJncy0+YWJpLmhlYXBfcHRyKTsKKyAgZnByaW50ZiAoc3RkZXJy LCAiJSpzYXJlbmEgYWRkcmVzczogJXAgKCVkIGJ5dGVzIHBlciB3b3JrZ3JvdXApXG4iLCBp bmRlbnQsCisJICAgIiIsICh2b2lkKilrZXJuYXJncy0+YWJpLmFyZW5hX3B0ciwKKwkgICBr ZXJuYXJncy0+YWJpLmFyZW5hX3NpemVfcGVyX3RlYW0pOworICBmcHJpbnRmIChzdGRlcnIs ICIlKnNzdGFjayBhZGRyZXNzOiAlcCAoJWQgYnl0ZXMgcGVyIHdhdmVmcm9udClcbiIsIGlu ZGVudCwKKwkgICAiIiwgKHZvaWQqKWtlcm5hcmdzLT5hYmkuc3RhY2tfcHRyLAorCSAgIGtl cm5hcmdzLT5hYmkuc3RhY2tfc2l6ZV9wZXJfdGhyZWFkKTsKICAgZnByaW50ZiAoc3RkZXJy LCAiJSpzb2JqZWN0OiAlbHVcbiIsIGluZGVudCwgIiIsIGRpc3BhdGNoLT5vYmplY3QpOwog ICBmcHJpbnRmIChzdGRlcnIsICIlKnNwcml2YXRlX3NlZ21lbnRfc2l6ZTogJXVcbiIsIGlu ZGVudCwgIiIsCiAJICAgZGlzcGF0Y2gtPnByaXZhdGVfc2VnbWVudF9zaXplKTsKQEAgLTEw ODIsNiArMTA3MCwyMiBAQCBpbml0X2Vudmlyb25tZW50X3ZhcmlhYmxlcyAodm9pZCkKICAg ICAgIGlmICh0bXApCiAJZ2NuX2tlcm5lbF9oZWFwX3NpemUgPSB0bXA7CiAgICAgfQorCisg IGNvbnN0IGNoYXIgKmFyZW5hID0gc2VjdXJlX2dldGVudiAoIkdDTl9URUFNX0FSRU5BX1NJ WkUiKTsKKyAgaWYgKGFyZW5hKQorICAgIHsKKyAgICAgIGludCB0bXAgPSBhdG9pIChhcmVu YSk7CisgICAgICBpZiAodG1wKQorCXRlYW1fYXJlbmFfc2l6ZSA9IHRtcDs7CisgICAgfQor CisgIGNvbnN0IGNoYXIgKnN0YWNrID0gc2VjdXJlX2dldGVudiAoIkdDTl9TVEFDS19TSVpF Iik7CisgIGlmIChzdGFjaykKKyAgICB7CisgICAgICBpbnQgdG1wID0gYXRvaSAoc3RhY2sp OworICAgICAgaWYgKHRtcCkKKwlzdGFja19zaXplID0gdG1wOzsKKyAgICB9CiB9CiAKIC8q IFJldHVybiBtYWxsb2MnZCBzdHJpbmcgd2l0aCBuYW1lIG9mIFNZTUJPTC4gICovCkBAIC0x NjkzLDg1ICsxNjk3LDEwMyBAQCBpc2FfY29kZShjb25zdCBjaGFyICppc2EpIHsKIC8qIH19 fSAgKi8KIC8qIHt7eyBSdW4gICovCiAKLS8qIENyZWF0ZSBvciByZXVzZSBhIHRlYW0gYXJl bmEuCisvKiBDcmVhdGUgb3IgcmV1c2UgYSB0ZWFtIGFyZW5hIGFuZCBzdGFjayBzcGFjZS4K ICAKICAgIFRlYW0gYXJlbmFzIGFyZSB1c2VkIGJ5IE9wZW5NUCB0byBhdm9pZCBjYWxsaW5n IG1hbGxvYyBtdWx0aXBsZSB0aW1lcwogICAgd2hpbGUgc2V0dGluZyB1cCBlYWNoIHRlYW0u ICBUaGlzIGlzIHB1cmVseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KIAotICAgQWxs b2NhdGluZyBhbiBhcmVuYSBhbHNvIGNvc3RzIHBlcmZvcm1hbmNlLCBhbGJlaXQgb24gdGhl IGhvc3Qgc2lkZSwgc28KLSAgIHRoaXMgZnVuY3Rpb24gd2lsbCByZXVzZSBhbiBleGlzdGlu ZyBhcmVuYSBpZiBhIGxhcmdlIGVub3VnaCBvbmUgaXMgaWRsZS4KLSAgIFRoZSBhcmVuYSBp cyByZWxlYXNlZCwgYnV0IG5vdCBkZWFsbG9jYXRlZCwgd2hlbiB0aGUga2VybmVsIGV4aXRz LiAgKi8KKyAgIFRoZSBzdGFjayBzcGFjZSBpcyB1c2VkIGJ5IGFsbCBrZXJuZWxzLiAgV2Ug bXVzdCBhbGxvY2F0ZSBpdCBpbiBzdWNoIGEKKyAgIHdheSB0aGF0IHRoZSByZXZlcnNlIG9m ZmxvYWQgaW1wbG1lbnRhdGlvbiBjYW4gYWNjZXNzIHRoZSBkYXRhLgogCi1zdGF0aWMgdm9p ZCAqCi1nZXRfdGVhbV9hcmVuYSAoc3RydWN0IGFnZW50X2luZm8gKmFnZW50LCBpbnQgbnVt X3RlYW1zKQorICAgQWxsb2NhdGluZyB0aGlzIG1lbW9yeSBjb3N0cyBwZXJmb3JtYW5jZSwg c28gdGhpcyBmdW5jdGlvbiB3aWxsIHJldXNlIGFuCisgICBleGlzdGluZyBhbGxvY2F0aW9u IGlmIGEgbGFyZ2UgZW5vdWdoIG9uZSBpcyBpZGxlLgorICAgVGhlIG1lbW9yeSBsb2NrIGlz IHJlbGVhc2VkLCBidXQgbm90IGRlYWxsb2NhdGVkLCB3aGVuIHRoZSBrZXJuZWwgZXhpdHMu ICAqLworCitzdGF0aWMgdm9pZAorY29uZmlndXJlX2VwaGVtZXJhbF9tZW1vcmllcyAoc3Ry dWN0IGtlcm5lbF9pbmZvICprZXJuZWwsCisJCQkgICAgICBzdHJ1Y3Qga2VybmFyZ3NfYWJp ICprZXJuYXJncywgaW50IG51bV90ZWFtcywKKwkJCSAgICAgIGludCBudW1fdGhyZWFkcykK IHsKLSAgc3RydWN0IHRlYW1fYXJlbmFfbGlzdCAqKm5leHRfcHRyID0gJmFnZW50LT50ZWFt X2FyZW5hX2xpc3Q7Ci0gIHN0cnVjdCB0ZWFtX2FyZW5hX2xpc3QgKml0ZW07CisgIHN0cnVj dCBhZ2VudF9pbmZvICphZ2VudCA9IGtlcm5lbC0+YWdlbnQ7CisgIHN0cnVjdCBlcGhlbWVy YWxfbWVtb3JpZXNfbGlzdCAqKm5leHRfcHRyID0gJmFnZW50LT5lcGhlbWVyYWxfbWVtb3Jp ZXNfbGlzdDsKKyAgc3RydWN0IGVwaGVtZXJhbF9tZW1vcmllc19saXN0ICppdGVtOworCisg IGludCBhY3R1YWxfYXJlbmFfc2l6ZSA9IChrZXJuZWwtPmtpbmQgPT0gS0lORF9PUEVOTVAK KwkJCSAgID8gdGVhbV9hcmVuYV9zaXplIDogMCk7CisgIGludCBhY3R1YWxfYXJlbmFfdG90 YWxfc2l6ZSA9IGFjdHVhbF9hcmVuYV9zaXplICogbnVtX3RlYW1zOworICBzaXplX3Qgc2l6 ZSA9IChhY3R1YWxfYXJlbmFfdG90YWxfc2l6ZQorCQkgKyBudW1fdGVhbXMgKiBudW1fdGhy ZWFkcyAqIHN0YWNrX3NpemUpOwogCiAgIGZvciAoaXRlbSA9ICpuZXh0X3B0cjsgaXRlbTsg bmV4dF9wdHIgPSAmaXRlbS0+bmV4dCwgaXRlbSA9IGl0ZW0tPm5leHQpCiAgICAgewotICAg ICAgaWYgKGl0ZW0tPm51bV90ZWFtcyA8IG51bV90ZWFtcykKKyAgICAgIGlmIChpdGVtLT5z aXplIDwgc2l6ZSkKIAljb250aW51ZTsKIAotICAgICAgaWYgKHB0aHJlYWRfbXV0ZXhfdHJ5 bG9jayAoJml0ZW0tPmluX3VzZSkpCi0JY29udGludWU7Ci0KLSAgICAgIHJldHVybiBpdGVt LT5hcmVuYTsKKyAgICAgIGlmIChwdGhyZWFkX211dGV4X3RyeWxvY2sgKCZpdGVtLT5pbl91 c2UpID09IDApCisJYnJlYWs7CiAgICAgfQogCi0gIEdDTl9ERUJVRyAoIkNyZWF0aW5nIGEg bmV3IGFyZW5hIGZvciAlZCB0ZWFtc1xuIiwgbnVtX3RlYW1zKTsKLQotICBpZiAocHRocmVh ZF9tdXRleF9sb2NrICgmYWdlbnQtPnRlYW1fYXJlbmFfd3JpdGVfbG9jaykpCisgIGlmICgh aXRlbSkKICAgICB7Ci0gICAgICBHT01QX1BMVUdJTl9lcnJvciAoIkNvdWxkIG5vdCBsb2Nr IGEgR0NOIGFnZW50IHByb2dyYW0gbXV0ZXgiKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg ICB9Ci0gIGl0ZW0gPSBtYWxsb2MgKHNpemVvZiAoKml0ZW0pKTsKLSAgaXRlbS0+bnVtX3Rl YW1zID0gbnVtX3RlYW1zOwotICBpdGVtLT5uZXh0ID0gTlVMTDsKLSAgKm5leHRfcHRyID0g aXRlbTsKKyAgICAgIEdDTl9ERUJVRyAoIkNyZWF0aW5nIGEgbmV3ICVzc3RhY2sgZm9yICVk IHRlYW1zIHdpdGggJWQgdGhyZWFkcyIKKwkJICIgKCV6ZCBieXRlcylcbiIsIChhY3R1YWxf YXJlbmFfc2l6ZSA/ICJhcmVuYSBhbmQgIiA6ICIiKSwKKwkJIG51bV90ZWFtcywgbnVtX3Ro cmVhZHMsIHNpemUpOwogCi0gIGlmIChwdGhyZWFkX211dGV4X2luaXQgKCZpdGVtLT5pbl91 c2UsIE5VTEwpKQotICAgIHsKLSAgICAgIEdPTVBfUExVR0lOX2Vycm9yICgiRmFpbGVkIHRv IGluaXRpYWxpemUgYSBHQ04gdGVhbSBhcmVuYSB3cml0ZSBtdXRleCIpOwotICAgICAgcmV0 dXJuIGZhbHNlOwotICAgIH0KLSAgaWYgKHB0aHJlYWRfbXV0ZXhfbG9jayAoJml0ZW0tPmlu X3VzZSkpCi0gICAgewotICAgICAgR09NUF9QTFVHSU5fZXJyb3IgKCJDb3VsZCBub3QgbG9j ayBhIEdDTiBhZ2VudCBwcm9ncmFtIG11dGV4Iik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgfQotICBpZiAocHRocmVhZF9tdXRleF91bmxvY2sgKCZhZ2VudC0+dGVhbV9hcmVuYV93 cml0ZV9sb2NrKSkKLSAgICB7Ci0gICAgICBHT01QX1BMVUdJTl9lcnJvciAoIkNvdWxkIG5v dCB1bmxvY2sgYSBHQ04gYWdlbnQgcHJvZ3JhbSBtdXRleCIpOwotICAgICAgcmV0dXJuIGZh bHNlOwotICAgIH0KKyAgICAgIGlmIChwdGhyZWFkX211dGV4X2xvY2sgKCZhZ2VudC0+ZXBo ZW1lcmFsX21lbW9yaWVzX3dyaXRlX2xvY2spKQorCXsKKwkgIEdPTVBfUExVR0lOX2Vycm9y ICgiQ291bGQgbm90IGxvY2sgYSBHQ04gYWdlbnQgcHJvZ3JhbSBtdXRleCIpOworCSAgcmV0 dXJuOworCX0KKyAgICAgIGl0ZW0gPSBtYWxsb2MgKHNpemVvZiAoKml0ZW0pKTsKKyAgICAg IGl0ZW0tPnNpemUgPSBzaXplOworICAgICAgaXRlbS0+bmV4dCA9IE5VTEw7CisgICAgICAq bmV4dF9wdHIgPSBpdGVtOwogCi0gIGNvbnN0IGludCBURUFNX0FSRU5BX1NJWkUgPSA2NCox MDI0OyAgLyogTXVzdCBtYXRjaCBsaWJnb21wLmguICAqLwotICBoc2Ffc3RhdHVzX3Qgc3Rh dHVzOwotICBzdGF0dXMgPSBoc2FfZm5zLmhzYV9tZW1vcnlfYWxsb2NhdGVfZm4gKGFnZW50 LT5kYXRhX3JlZ2lvbiwKLQkJCQkJICAgVEVBTV9BUkVOQV9TSVpFKm51bV90ZWFtcywKLQkJ CQkJICAgJml0ZW0tPmFyZW5hKTsKLSAgaWYgKHN0YXR1cyAhPSBIU0FfU1RBVFVTX1NVQ0NF U1MpCi0gICAgaHNhX2ZhdGFsICgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgR0NO IGtlcm5lbCBhcmVuYSIsIHN0YXR1cyk7Ci0gIHN0YXR1cyA9IGhzYV9mbnMuaHNhX21lbW9y eV9hc3NpZ25fYWdlbnRfZm4gKGl0ZW0tPmFyZW5hLCBhZ2VudC0+aWQsCi0JCQkJCSAgICAg ICBIU0FfQUNDRVNTX1BFUk1JU1NJT05fUlcpOwotICBpZiAoc3RhdHVzICE9IEhTQV9TVEFU VVNfU1VDQ0VTUykKLSAgICBoc2FfZmF0YWwgKCJDb3VsZCBub3QgYXNzaWduIGFyZW5hIG1l bW9yeSB0byBkZXZpY2UiLCBzdGF0dXMpOworICAgICAgaWYgKHB0aHJlYWRfbXV0ZXhfaW5p dCAoJml0ZW0tPmluX3VzZSwgTlVMTCkpCisJeworCSAgR09NUF9QTFVHSU5fZXJyb3IgKCJG YWlsZWQgdG8gaW5pdGlhbGl6ZSBhIEdDTiBtZW1vcnkgd3JpdGUgbXV0ZXgiKTsKKwkgIHJl dHVybjsKKwl9CisgICAgICBpZiAocHRocmVhZF9tdXRleF9sb2NrICgmaXRlbS0+aW5fdXNl KSkKKwl7CisJICBHT01QX1BMVUdJTl9lcnJvciAoIkNvdWxkIG5vdCBsb2NrIGEgR0NOIGFn ZW50IHByb2dyYW0gbXV0ZXgiKTsKKwkgIHJldHVybjsKKwl9CisgICAgICBpZiAocHRocmVh ZF9tdXRleF91bmxvY2sgKCZhZ2VudC0+ZXBoZW1lcmFsX21lbW9yaWVzX3dyaXRlX2xvY2sp KQorCXsKKwkgIEdPTVBfUExVR0lOX2Vycm9yICgiQ291bGQgbm90IHVubG9jayBhIEdDTiBh Z2VudCBwcm9ncmFtIG11dGV4Iik7CisJICByZXR1cm47CisJfQorCisgICAgICBoc2Ffc3Rh dHVzX3Qgc3RhdHVzOworICAgICAgc3RhdHVzID0gaHNhX2Zucy5oc2FfbWVtb3J5X2FsbG9j YXRlX2ZuIChhZ2VudC0+ZGF0YV9yZWdpb24sIHNpemUsCisJCQkJCSAgICAgICAmaXRlbS0+ YWRkcmVzcyk7CisgICAgICBpZiAoc3RhdHVzICE9IEhTQV9TVEFUVVNfU1VDQ0VTUykKKwlo c2FfZmF0YWwgKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBHQ04ga2VybmVsIGFy ZW5hIiwgc3RhdHVzKTsKKyAgICAgIHN0YXR1cyA9IGhzYV9mbnMuaHNhX21lbW9yeV9hc3Np Z25fYWdlbnRfZm4gKGl0ZW0tPmFkZHJlc3MsIGFnZW50LT5pZCwKKwkJCQkJCSAgIEhTQV9B Q0NFU1NfUEVSTUlTU0lPTl9SVyk7CisgICAgICBpZiAoc3RhdHVzICE9IEhTQV9TVEFUVVNf U1VDQ0VTUykKKwloc2FfZmF0YWwgKCJDb3VsZCBub3QgYXNzaWduIGFyZW5hICYgc3RhY2sg bWVtb3J5IHRvIGRldmljZSIsIHN0YXR1cyk7CisgICAgfQogCi0gIHJldHVybiBpdGVtLT5h cmVuYTsKKyAga2VybmFyZ3MtPmFyZW5hX3B0ciA9IChhY3R1YWxfYXJlbmFfdG90YWxfc2l6 ZQorCQkJID8gKHVpbnQ2NF90KWl0ZW0tPmFkZHJlc3MKKwkJCSA6IDApOworICBrZXJuYXJn cy0+c3RhY2tfcHRyID0gKHVpbnQ2NF90KWl0ZW0tPmFkZHJlc3MgKyBhY3R1YWxfYXJlbmFf dG90YWxfc2l6ZTsKKyAga2VybmFyZ3MtPmFyZW5hX3NpemVfcGVyX3RlYW0gPSBhY3R1YWxf YXJlbmFfc2l6ZTsKKyAga2VybmFyZ3MtPnN0YWNrX3NpemVfcGVyX3RocmVhZCA9IHN0YWNr X3NpemU7CiB9CiAKLS8qIE1hcmsgYSB0ZWFtIGFyZW5hIGF2YWlsYWJsZSBmb3IgcmV1c2Uu ICAqLworLyogTWFyayBhbiBlcGhlbWVyYWwgbWVtb3J5IHNwYWNlIGF2YWlsYWJsZSBmb3Ig cmV1c2UuICAqLwogCiBzdGF0aWMgdm9pZAotcmVsZWFzZV90ZWFtX2FyZW5hIChzdHJ1Y3Qg YWdlbnRfaW5mbyogYWdlbnQsIHZvaWQgKmFyZW5hKQorcmVsZWFzZV9lcGhlbWVyYWxfbWVt b3JpZXMgKHN0cnVjdCBhZ2VudF9pbmZvKiBhZ2VudCwgdm9pZCAqYWRkcmVzcykKIHsKLSAg c3RydWN0IHRlYW1fYXJlbmFfbGlzdCAqaXRlbTsKKyAgc3RydWN0IGVwaGVtZXJhbF9tZW1v cmllc19saXN0ICppdGVtOwogCi0gIGZvciAoaXRlbSA9IGFnZW50LT50ZWFtX2FyZW5hX2xp c3Q7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KQorICBmb3IgKGl0ZW0gPSBhZ2VudC0+ZXBo ZW1lcmFsX21lbW9yaWVzX2xpc3Q7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KQogICAgIHsK LSAgICAgIGlmIChpdGVtLT5hcmVuYSA9PSBhcmVuYSkKKyAgICAgIGlmIChpdGVtLT5hZGRy ZXNzID09IGFkZHJlc3MpCiAJewogCSAgaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmaXRl bS0+aW5fdXNlKSkKIAkgICAgR09NUF9QTFVHSU5fZXJyb3IgKCJDb3VsZCBub3QgdW5sb2Nr IGEgR0NOIGFnZW50IHByb2dyYW0gbXV0ZXgiKTsKQEAgLTE3ODQsMjIgKzE4MDYsMjIgQEAg cmVsZWFzZV90ZWFtX2FyZW5hIChzdHJ1Y3QgYWdlbnRfaW5mbyogYWdlbnQsIHZvaWQgKmFy ZW5hKQogLyogQ2xlYW4gdXAgYWxsIHRoZSBhbGxvY2F0ZWQgdGVhbSBhcmVuYXMuICAqLwog CiBzdGF0aWMgYm9vbAotZGVzdHJveV90ZWFtX2FyZW5hcyAoc3RydWN0IGFnZW50X2luZm8g KmFnZW50KQorZGVzdHJveV9lcGhlbWVyYWxfbWVtb3JpZXMgKHN0cnVjdCBhZ2VudF9pbmZv ICphZ2VudCkKIHsKLSAgc3RydWN0IHRlYW1fYXJlbmFfbGlzdCAqaXRlbSwgKm5leHQ7Cisg IHN0cnVjdCBlcGhlbWVyYWxfbWVtb3JpZXNfbGlzdCAqaXRlbSwgKm5leHQ7CiAKLSAgZm9y IChpdGVtID0gYWdlbnQtPnRlYW1fYXJlbmFfbGlzdDsgaXRlbTsgaXRlbSA9IG5leHQpCisg IGZvciAoaXRlbSA9IGFnZW50LT5lcGhlbWVyYWxfbWVtb3JpZXNfbGlzdDsgaXRlbTsgaXRl bSA9IG5leHQpCiAgICAgewogICAgICAgbmV4dCA9IGl0ZW0tPm5leHQ7Ci0gICAgICBoc2Ff Zm5zLmhzYV9tZW1vcnlfZnJlZV9mbiAoaXRlbS0+YXJlbmEpOworICAgICAgaHNhX2Zucy5o c2FfbWVtb3J5X2ZyZWVfZm4gKGl0ZW0tPmFkZHJlc3MpOwogICAgICAgaWYgKHB0aHJlYWRf bXV0ZXhfZGVzdHJveSAoJml0ZW0tPmluX3VzZSkpCiAJewotCSAgR09NUF9QTFVHSU5fZXJy b3IgKCJGYWlsZWQgdG8gZGVzdHJveSBhIEdDTiB0ZWFtIGFyZW5hIG11dGV4Iik7CisJICBH T01QX1BMVUdJTl9lcnJvciAoIkZhaWxlZCB0byBkZXN0cm95IGEgR0NOIG1lbW9yeSBtdXRl eCIpOwogCSAgcmV0dXJuIGZhbHNlOwogCX0KICAgICAgIGZyZWUgKGl0ZW0pOwogICAgIH0K LSAgYWdlbnQtPnRlYW1fYXJlbmFfbGlzdCA9IE5VTEw7CisgIGFnZW50LT5lcGhlbWVyYWxf bWVtb3JpZXNfbGlzdCA9IE5VTEw7CiAKICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xODcxLDcg KzE4OTMsOCBAQCBhbGxvY19ieV9hZ2VudCAoc3RydWN0IGFnZW50X2luZm8gKmFnZW50LCBz aXplX3Qgc2l6ZSkKICAgIHRoZSBuZWNlc3NhcnkgZGV2aWNlIHNpZ25hbHMgYW5kIG1lbW9y eSBhbGxvY2F0aW9ucy4gICovCiAKIHN0YXRpYyBzdHJ1Y3Qga2VybmVsX2Rpc3BhdGNoICoK LWNyZWF0ZV9rZXJuZWxfZGlzcGF0Y2ggKHN0cnVjdCBrZXJuZWxfaW5mbyAqa2VybmVsLCBp bnQgbnVtX3RlYW1zKQorY3JlYXRlX2tlcm5lbF9kaXNwYXRjaCAoc3RydWN0IGtlcm5lbF9p bmZvICprZXJuZWwsIGludCBudW1fdGVhbXMsCisJCQlpbnQgbnVtX3RocmVhZHMpCiB7CiAg IHN0cnVjdCBhZ2VudF9pbmZvICphZ2VudCA9IGtlcm5lbC0+YWdlbnQ7CiAgIHN0cnVjdCBr ZXJuZWxfZGlzcGF0Y2ggKnNoYWRvdwpAQCAtMTkwNiw3ICsxOTI5LDcgQEAgY3JlYXRlX2tl cm5lbF9kaXNwYXRjaCAoc3RydWN0IGtlcm5lbF9pbmZvICprZXJuZWwsIGludCBudW1fdGVh bXMpCiAgIHN0cnVjdCBrZXJuYXJncyAqa2VybmFyZ3MgPSBzaGFkb3ctPmtlcm5hcmdfYWRk cmVzczsKIAogICAvKiBaZXJvLWluaXRpYWxpemUgdGhlIG91dHB1dF9kYXRhIChtaW5pbXVt IG5lZWRlZCkuICAqLwotICBrZXJuYXJncy0+b3V0X3B0ciA9IChpbnQ2NF90KSZrZXJuYXJn cy0+b3V0cHV0X2RhdGE7CisgIGtlcm5hcmdzLT5hYmkub3V0X3B0ciA9IChpbnQ2NF90KSZr ZXJuYXJncy0+b3V0cHV0X2RhdGE7CiAgIGtlcm5hcmdzLT5vdXRwdXRfZGF0YS5uZXh0X291 dHB1dCA9IDA7CiAgIGZvciAodW5zaWduZWQgaSA9IDA7CiAgICAgICAgaSA8IChzaXplb2Yg KGtlcm5hcmdzLT5vdXRwdXRfZGF0YS5xdWV1ZSkKQEAgLTE5MTYsMTMgKzE5MzksMTAgQEAg Y3JlYXRlX2tlcm5lbF9kaXNwYXRjaCAoc3RydWN0IGtlcm5lbF9pbmZvICprZXJuZWwsIGlu dCBudW1fdGVhbXMpCiAgIGtlcm5hcmdzLT5vdXRwdXRfZGF0YS5jb25zdW1lZCA9IDA7CiAK ICAgLyogUGFzcyBpbiB0aGUgaGVhcCBsb2NhdGlvbi4gICovCi0gIGtlcm5hcmdzLT5oZWFw X3B0ciA9IChpbnQ2NF90KWtlcm5lbC0+bW9kdWxlLT5oZWFwOworICBrZXJuYXJncy0+YWJp LmhlYXBfcHRyID0gKGludDY0X3Qpa2VybmVsLT5tb2R1bGUtPmhlYXA7CiAKLSAgLyogQ3Jl YXRlIGFuIGFyZW5hLiAgKi8KLSAgaWYgKGtlcm5lbC0+a2luZCA9PSBLSU5EX09QRU5NUCkK LSAgICBrZXJuYXJncy0+YXJlbmFfcHRyID0gKGludDY0X3QpZ2V0X3RlYW1fYXJlbmEgKGFn ZW50LCBudW1fdGVhbXMpOwotICBlbHNlCi0gICAga2VybmFyZ3MtPmFyZW5hX3B0ciA9IDA7 CisgIC8qIENyZWF0ZSB0aGUgZXBoZW1lcmFsIG1lbW9yeSBzcGFjZXMuICAqLworICBjb25m aWd1cmVfZXBoZW1lcmFsX21lbW9yaWVzIChrZXJuZWwsICZrZXJuYXJncy0+YWJpLCBudW1f dGVhbXMsIG51bV90aHJlYWRzKTsKIAogICAvKiBFbnN1cmUgd2UgY2FuIHJlY29nbml6ZSB1 bnNldCByZXR1cm4gdmFsdWVzLiAgKi8KICAga2VybmFyZ3MtPm91dHB1dF9kYXRhLnJldHVy bl92YWx1ZSA9IDB4Y2FmZTAwMDA7CkBAIC0yMDA2LDkgKzIwMjYsMTAgQEAgcmVsZWFzZV9r ZXJuZWxfZGlzcGF0Y2ggKHN0cnVjdCBrZXJuZWxfZGlzcGF0Y2ggKnNoYWRvdykKICAgR0NO X0RFQlVHICgiUmVsZWFzZWQga2VybmVsIGRpc3BhdGNoOiAlcFxuIiwgc2hhZG93KTsKIAog ICBzdHJ1Y3Qga2VybmFyZ3MgKmtlcm5hcmdzID0gc2hhZG93LT5rZXJuYXJnX2FkZHJlc3M7 Ci0gIHZvaWQgKmFyZW5hID0gKHZvaWQgKilrZXJuYXJncy0+YXJlbmFfcHRyOwotICBpZiAo YXJlbmEpCi0gICAgcmVsZWFzZV90ZWFtX2FyZW5hIChzaGFkb3ctPmFnZW50LCBhcmVuYSk7 CisgIHZvaWQgKmFkZHIgPSAodm9pZCAqKWtlcm5hcmdzLT5hYmkuYXJlbmFfcHRyOworICBp ZiAoIWFkZHIpCisgICAgYWRkciA9ICh2b2lkICopa2VybmFyZ3MtPmFiaS5zdGFja19wdHI7 CisgIHJlbGVhc2VfZXBoZW1lcmFsX21lbW9yaWVzIChzaGFkb3ctPmFnZW50LCBhZGRyKTsK IAogICBoc2FfZm5zLmhzYV9tZW1vcnlfZnJlZV9mbiAoc2hhZG93LT5rZXJuYXJnX2FkZHJl c3MpOwogCkBAIC0yMjM4LDcgKzIyNTksOCBAQCBydW5fa2VybmVsIChzdHJ1Y3Qga2VybmVs X2luZm8gKmtlcm5lbCwgdm9pZCAqdmFycywKIAkgICAgIHBhY2tldC0+d29ya2dyb3VwX3Np emVfeik7CiAKICAgc3RydWN0IGtlcm5lbF9kaXNwYXRjaCAqc2hhZG93Ci0gICAgPSBjcmVh dGVfa2VybmVsX2Rpc3BhdGNoIChrZXJuZWwsIHBhY2tldC0+Z3JpZF9zaXplX3gpOworICAg ID0gY3JlYXRlX2tlcm5lbF9kaXNwYXRjaCAoa2VybmVsLCBwYWNrZXQtPmdyaWRfc2l6ZV94 LAorCQkJICAgICAgcGFja2V0LT5ncmlkX3NpemVfeik7CiAgIHNoYWRvdy0+cXVldWUgPSBj b21tYW5kX3E7CiAKICAgaWYgKGRlYnVnKQpAQCAtMzI4MCwxNCArMzMwMiwxNCBAQCBHT01Q X09GRkxPQURfaW5pdF9kZXZpY2UgKGludCBuKQogICAgICAgR09NUF9QTFVHSU5fZXJyb3Ig KCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhIEdDTiBhZ2VudCBxdWV1ZSBtdXRleCIpOwogICAg ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCAoJmFn ZW50LT50ZWFtX2FyZW5hX3dyaXRlX2xvY2ssIE5VTEwpKQorICBpZiAocHRocmVhZF9tdXRl eF9pbml0ICgmYWdlbnQtPmVwaGVtZXJhbF9tZW1vcmllc193cml0ZV9sb2NrLCBOVUxMKSkK ICAgICB7CiAgICAgICBHT01QX1BMVUdJTl9lcnJvciAoIkZhaWxlZCB0byBpbml0aWFsaXpl IGEgR0NOIHRlYW0gYXJlbmEgd3JpdGUgbXV0ZXgiKTsKICAgICAgIHJldHVybiBmYWxzZTsK ICAgICB9CiAgIGFnZW50LT5hc3luY19xdWV1ZXMgPSBOVUxMOwogICBhZ2VudC0+b21wX2Fz eW5jX3F1ZXVlID0gTlVMTDsKLSAgYWdlbnQtPnRlYW1fYXJlbmFfbGlzdCA9IE5VTEw7Cisg IGFnZW50LT5lcGhlbWVyYWxfbWVtb3JpZXNfbGlzdCA9IE5VTEw7CiAKICAgdWludDMyX3Qg cXVldWVfc2l6ZTsKICAgaHNhX3N0YXR1c190IHN0YXR1czsKQEAgLTM2NDAsNyArMzY2Miw3 IEBAIEdPTVBfT0ZGTE9BRF9maW5pX2RldmljZSAoaW50IG4pCiAgICAgICBhZ2VudC0+bW9k dWxlID0gTlVMTDsKICAgICB9CiAKLSAgaWYgKCFkZXN0cm95X3RlYW1fYXJlbmFzIChhZ2Vu dCkpCisgIGlmICghZGVzdHJveV9lcGhlbWVyYWxfbWVtb3JpZXMgKGFnZW50KSkKICAgICBy ZXR1cm4gZmFsc2U7CiAKICAgaWYgKCFkZXN0cm95X2hzYV9wcm9ncmFtIChhZ2VudCkpCkBA IC0zNjY2LDkgKzM2ODgsOSBAQCBHT01QX09GRkxPQURfZmluaV9kZXZpY2UgKGludCBuKQog ICAgICAgR09NUF9QTFVHSU5fZXJyb3IgKCJGYWlsZWQgdG8gZGVzdHJveSBhIEdDTiBhZ2Vu dCBxdWV1ZSBtdXRleCIpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgaWYgKHB0 aHJlYWRfbXV0ZXhfZGVzdHJveSAoJmFnZW50LT50ZWFtX2FyZW5hX3dyaXRlX2xvY2spKQor ICBpZiAocHRocmVhZF9tdXRleF9kZXN0cm95ICgmYWdlbnQtPmVwaGVtZXJhbF9tZW1vcmll c193cml0ZV9sb2NrKSkKICAgICB7Ci0gICAgICBHT01QX1BMVUdJTl9lcnJvciAoIkZhaWxl ZCB0byBkZXN0cm95IGEgR0NOIHRlYW0gYXJlbmEgbXV0ZXgiKTsKKyAgICAgIEdPTVBfUExV R0lOX2Vycm9yICgiRmFpbGVkIHRvIGRlc3Ryb3kgYSBHQ04gbWVtb3J5IG11dGV4Iik7CiAg ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICBhZ2VudC0+aW5pdGlhbGl6ZWQgPSBmYWxz ZTsK --------------SPuOk6PIVu9m8M9eZWnGM96F--