From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.devel Subject: Re: MPS: weak hash tables Date: Wed, 03 Jul 2024 09:31:19 +0000 Message-ID: <-plQctKgNkvp-LJ9ov2QAiXQKxd9V-hI0yz_opRGxQtbknubCjH4rH2-ymgbw_Qr1ZhB1rtlmiEW8XtuIVNr7nR_Yj20AH6WkH6kUGp68g0=@protonmail.com> References: <87o77gvxz3.fsf@gmail.com> <1VNw6cPSIpKfxNRqQBpVleX2BDbQuUqwLQzo-C8N-_PRvNNLG3BnhbcWpUJkiJYnOogBvqRTcLApebjqdZel7CgXVx9T0CnPn6_go_AugDA=@protonmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_oukBD5uEHl3DH2UMmVRa6O8prpTHAWacd7zyo6WTnA" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35326"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Helmut Eller , Eli Zaretskii , Emacs Devel To: =?utf-8?Q?Gerd_M=C3=B6llmann?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Jul 03 12:53:13 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sOxbs-0008rv-EG for ged-emacs-devel@m.gmane-mx.org; Wed, 03 Jul 2024 12:53:12 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sOxbG-0002cT-Ad; Wed, 03 Jul 2024 06:52:34 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOwKp-0007c3-IU for emacs-devel@gnu.org; Wed, 03 Jul 2024 05:31:31 -0400 Original-Received: from mail-4316.protonmail.ch ([185.70.43.16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOwKm-0001ak-CY; Wed, 03 Jul 2024 05:31:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1719999084; x=1720258284; bh=6R87fPBBG70xZbWwNjMaI53EzF8L2aSfQPt31dEwoso=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=MC6XEfV3c49YOyDrywNbHqbNOGrdEGM7lK/WWjTAk1mHdTkA3BZnIe6whvYbR8aig NRNOTAN2dHtCAhHigctagbWMYO0Ezvs5RbfYMFFGvUickZJynddkUjJL8ITaOOGAvW EelkNWZFT+5luRcilttFi0UPoQ1dVDbfRbQPC6v2AUTVjT+4nPjyyDdmGmfXhcCcVJ uWdeGsIQ7KyEAiumdkbMekxAFAeQ/+ig5C4sGe2sZDcQ7rHkC4UHxsOaIIze0wB6R3 IH7StdlrIHR87prA5yX2PHCQdsiJbA4k/0sS46DNZ48y8vk1UO8i9Se1TEa1kmlgo8 DWnl2HZdOsaWw== In-Reply-To: Feedback-ID: 112775352:user:proton X-Pm-Message-ID: c39f2cf66e69b294779726684d60a599f3de041a Received-SPF: pass client-ip=185.70.43.16; envelope-from=pipcet@protonmail.com; helo=mail-4316.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 03 Jul 2024 06:52:28 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:321242 Archived-At: This is a multi-part message in MIME format. --b1_oukBD5uEHl3DH2UMmVRa6O8prpTHAWacd7zyo6WTnA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Wednesday, July 3rd, 2024 at 08:26, Gerd M=C3=B6llmann wrote: > The PVEC_FREE lead to an abort, which I think I fixed. Please pull. Thanks, sorry for missing that! So I've implemented Helmut's idea, but it's turned out uglier than I though= t it would... And of course the same needs to be done for the marker vector, right? Just thinking about a different idea, but it's not quite there yet... Pip --b1_oukBD5uEHl3DH2UMmVRa6O8prpTHAWacd7zyo6WTnA Content-Type: text/x-patch; name=0001-Use-two-words-for-each-entry-in-a-weak-hash-table.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Use-two-words-for-each-entry-in-a-weak-hash-table.patch RnJvbSAwZTJiNDE3OTUzZmM1NzhjODE5ZjMxZWU5ZTViOTExY2Y4MjdmZmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAcHJvdG9ubWFpbC5jb20+CkRhdGU6 IFdlZCwgMyBKdWwgMjAyNCAwOToyMjowMyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFVzZSB0d28g d29yZHMgZm9yIGVhY2ggZW50cnkgaW4gYSB3ZWFrIGhhc2ggdGFibGUKCi0tLQogc3JjL2Zucy5j ICAgfCAgMzYgKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaWdjLmMgICB8IDEwNiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvbGlzcC5oICB8 ICA0MSArKysrKysrKysrLS0tLS0tLS0tLQogc3JjL3ByaW50LmMgfCAgIDIgKwogNCBmaWxlcyBj aGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2Zucy5jIGIvc3JjL2Zucy5jCmluZGV4IDI1MGNmNmMzYTdlLi5hZDExMWRkNjcwOCAxMDA2 NDQKLS0tIGEvc3JjL2Zucy5jCisrKyBiL3NyYy9mbnMuYwpAQCAtNTQxNSwxOSArNTQxNSwxOSBA QCBzd2VlcF93ZWFrX3RhYmxlIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBib29sIHJlbW92 ZV9lbnRyaWVzX3ApCiBzZXRfd2Vha19oYXNoX25leHRfc2xvdCAoc3RydWN0IExpc3BfV2Vha19I YXNoX1RhYmxlICpoLCBwdHJkaWZmX3QgaWR4LCBwdHJkaWZmX3QgdmFsKQogewogICBlYXNzZXJ0 IChpZHggPj0gMCAmJiBpZHggPCBYRklYTlVNIChoLT5zdHJvbmctPnRhYmxlX3NpemUpKTsKLSAg aC0+c3Ryb25nLT5uZXh0W2lkeF0ubGlzcF9vYmplY3QgPSBtYWtlX2ZpeG51bSAodmFsKTsKKyAg aC0+c3Ryb25nLT5uZXh0W2lkeF0gPSBtYWtlX3dlYWtfaGFzaF90YWJsZV9lbnRyeSAobWFrZV9m aXhudW0gKHZhbCkpOwogfQogc3RhdGljIHZvaWQKIHNldF93ZWFrX2hhc2hfaGFzaF9zbG90IChz dHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGUgKmgsIHB0cmRpZmZfdCBpZHgsIGhhc2hfaGFzaF90 IHZhbCkKIHsKICAgZWFzc2VydCAoaWR4ID49IDAgJiYgaWR4IDwgWEZJWE5VTSAoaC0+c3Ryb25n LT50YWJsZV9zaXplKSk7Ci0gIGgtPnN0cm9uZy0+aGFzaFtpZHhdLmxpc3Bfb2JqZWN0ID0gbWFr ZV9maXhudW0gKHZhbCk7CisgIGgtPnN0cm9uZy0+aGFzaFtpZHhdID0gbWFrZV93ZWFrX2hhc2hf dGFibGVfZW50cnkgKG1ha2VfZml4bnVtICh2YWwpKTsKIH0KIHN0YXRpYyB2b2lkCiBzZXRfd2Vh a19oYXNoX2luZGV4X3Nsb3QgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwgcHRyZGlm Zl90IGlkeCwgcHRyZGlmZl90IHZhbCkKIHsKICAgZWFzc2VydCAoaWR4ID49IDAgJiYgaWR4IDwg d2Vha19oYXNoX3RhYmxlX2luZGV4X3NpemUgKGgpKTsKLSAgaC0+c3Ryb25nLT5pbmRleFtpZHhd Lmxpc3Bfb2JqZWN0ID0gbWFrZV9maXhudW0gKHZhbCk7CisgIGgtPnN0cm9uZy0+aW5kZXhbaWR4 XSA9IG1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5IChtYWtlX2ZpeG51bSAodmFsKSk7CiB9CiAK IHN0YXRpYyBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGUgKgpAQCAtNTQ0MiwxNCArNTQ0Miwx NCBAQCBjaGVja19tYXliZV93ZWFrX2hhc2hfdGFibGUgKExpc3BfT2JqZWN0IG9iaikKIFdFQUtf SEFTSF9ORVhUIChzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGUgKmgsIHB0cmRpZmZfdCBpZHgp CiB7CiAgIGVhc3NlcnQgKGlkeCA+PSAwICYmIGlkeCA8IFhGSVhOVU0gKGgtPnN0cm9uZy0+dGFi bGVfc2l6ZSkpOwotICByZXR1cm4gWEZJWE5VTSAoaC0+c3Ryb25nLT5uZXh0W2lkeF0ubGlzcF9v YmplY3QpOworICByZXR1cm4gWEZJWE5VTSAod2Vha19oYXNoX3RhYmxlX2VudHJ5IChoLT5zdHJv bmctPm5leHRbaWR4XSkpOwogfQogCiBzdGF0aWMgcHRyZGlmZl90CiBXRUFLX0hBU0hfSU5ERVgg KHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwgcHRyZGlmZl90IGlkeCkKIHsKICAgZWFz c2VydCAoaWR4ID49IDAgJiYgaWR4IDwgd2Vha19oYXNoX3RhYmxlX2luZGV4X3NpemUgKGgpKTsK LSAgcmV0dXJuIFhGSVhOVU0gKGgtPnN0cm9uZy0+aW5kZXhbaWR4XS5saXNwX29iamVjdCk7Cisg IHJldHVybiBYRklYTlVNICh3ZWFrX2hhc2hfdGFibGVfZW50cnkgKGgtPnN0cm9uZy0+aW5kZXhb aWR4XSkpOwogfQogCiBzdGF0aWMgc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlICoKQEAgLTU1 NDcsMTkgKzU1NDcsMjIgQEAgbWFrZV93ZWFrX2hhc2hfdGFibGUgKGNvbnN0IHN0cnVjdCBoYXNo X3RhYmxlX3Rlc3QgKnRlc3QsIEVNQUNTX0lOVCBzaXplLAogICAgIHsKICAgICAgIGZvciAocHRy ZGlmZl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogCXsKLQkgIGgtPnN0cm9uZy0+a2V5W2ldLmxp c3Bfb2JqZWN0ID0gSEFTSF9VTlVTRURfRU5UUllfS0VZOwotCSAgaC0+c3Ryb25nLT52YWx1ZVtp XS5wdHIgPSAwOworCSAgaC0+c3Ryb25nLT5rZXlbaV0gPQorCSAgICBtYWtlX3dlYWtfaGFzaF90 YWJsZV9lbnRyeSAoSEFTSF9VTlVTRURfRU5UUllfS0VZKTsKKwkgIGgtPnN0cm9uZy0+dmFsdWVb aV0gPQorCSAgICBtYWtlX3dlYWtfaGFzaF90YWJsZV9lbnRyeSAoUW5pbCk7CiAJfQogCiAgICAg ICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IHNpemUgLSAxOyBpKyspCi0JaC0+c3Ryb25nLT5u ZXh0W2ldLmxpc3Bfb2JqZWN0ID0gbWFrZV9maXhudW0oaSArIDEpOwotICAgICAgaC0+c3Ryb25n LT5uZXh0W3NpemUgLSAxXS5saXNwX29iamVjdCA9IG1ha2VfZml4bnVtKC0xKTsKKwloLT5zdHJv bmctPm5leHRbaV0gPSBtYWtlX3dlYWtfaGFzaF90YWJsZV9lbnRyeSAobWFrZV9maXhudW0oaSAr IDEpKTsKKyAgICAgIGgtPnN0cm9uZy0+bmV4dFtzaXplIC0gMV0gPQorCW1ha2Vfd2Vha19oYXNo X3RhYmxlX2VudHJ5IChtYWtlX2ZpeG51bSgtMSkpOwogCiAgICAgICBpbnQgaW5kZXhfYml0cyA9 IGNvbXB1dGVfaGFzaF9pbmRleF9iaXRzIChzaXplKTsKICAgICAgIGgtPnN0cm9uZy0+aW5kZXhf Yml0cyA9IG1ha2VfZml4bnVtIChpbmRleF9iaXRzKTsKICAgICAgIHB0cmRpZmZfdCBpbmRleF9z aXplID0gd2Vha19oYXNoX3RhYmxlX2luZGV4X3NpemUgKGgpOwogICAgICAgZm9yIChwdHJkaWZm X3QgaSA9IDA7IGkgPCBpbmRleF9zaXplOyBpKyspCi0JaC0+c3Ryb25nLT5pbmRleFtpXS5saXNw X29iamVjdCA9IG1ha2VfZml4bnVtICgtMSk7CisJaC0+c3Ryb25nLT5pbmRleFtpXSA9IG1ha2Vf d2Vha19oYXNoX3RhYmxlX2VudHJ5IChtYWtlX2ZpeG51bSAoLTEpKTsKIAogICAgICAgaC0+c3Ry b25nLT5uZXh0X2ZyZWUgPSBtYWtlX2ZpeG51bSAoMCk7CiAgICAgfQpAQCAtNTYyNiwxOCArNTYy OSwxOSBAQCBtYXliZV9yZXNpemVfd2Vha19oYXNoX3RhYmxlIChzdHJ1Y3QgTGlzcF9XZWFrX0hh c2hfVGFibGUgKmgpCiAJfQogCiAgICAgICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IG5ld19z aXplIC0gMTsgaSsrKQotCXN0cm9uZy0+bmV4dFtpXS5saXNwX29iamVjdCA9IG1ha2VfZml4bnVt IChpICsgMSk7Ci0gICAgICBzdHJvbmctPm5leHRbbmV3X3NpemUgLSAxXS5saXNwX29iamVjdCA9 IG1ha2VfZml4bnVtICgtMSk7CisJc3Ryb25nLT5uZXh0W2ldID0gbWFrZV93ZWFrX2hhc2hfdGFi bGVfZW50cnkgKG1ha2VfZml4bnVtIChpICsgMSkpOworICAgICAgc3Ryb25nLT5uZXh0W25ld19z aXplIC0gMV0gPQorCW1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5IChtYWtlX2ZpeG51bSAoLTEp KTsKIAogICAgICAgZm9yIChwdHJkaWZmX3QgaSA9IDA7IGkgPCBuZXdfc2l6ZTsgaSsrKQogCXsK LQkgIHN0cm9uZy0+a2V5W2ldLmxpc3Bfb2JqZWN0ID0gSEFTSF9VTlVTRURfRU5UUllfS0VZOwot CSAgc3Ryb25nLT52YWx1ZVtpXS5saXNwX29iamVjdCA9IFFuaWw7CisJICBzdHJvbmctPmtleVtp XSA9IG1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5IChIQVNIX1VOVVNFRF9FTlRSWV9LRVkpOwor CSAgc3Ryb25nLT52YWx1ZVtpXSA9IG1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5IChRbmlsKTsK IAl9CiAKICAgICAgIHB0cmRpZmZfdCBpbmRleF9zaXplID0gKHB0cmRpZmZfdCkxIDw8IGluZGV4 X2JpdHM7CiAgICAgICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IGluZGV4X3NpemU7IGkrKykK LQlzdHJvbmctPmluZGV4W2ldLmxpc3Bfb2JqZWN0ID0gbWFrZV9maXhudW0gKC0xKTsKKwlzdHJv bmctPmluZGV4W2ldID0gbWFrZV93ZWFrX2hhc2hfdGFibGVfZW50cnkgKG1ha2VfZml4bnVtICgt MSkpOwogCiAgICAgICBzdHJvbmctPmluZGV4X2JpdHMgPSBtYWtlX2ZpeG51bSAoaW5kZXhfYml0 cyk7CiAgICAgICBzdHJvbmctPnRhYmxlX3NpemUgPSBtYWtlX2ZpeG51bSAobmV3X3NpemUpOwpA QCAtNTgwMSw3ICs1ODA1LDcgQEAgd2Vha19oYXNoX2NsZWFyIChzdHJ1Y3QgTGlzcF9XZWFrX0hh c2hfVGFibGUgKmgpCiAKICAgcHRyZGlmZl90IGluZGV4X3NpemUgPSB3ZWFrX2hhc2hfdGFibGVf aW5kZXhfc2l6ZSAoaCk7CiAgIGZvciAocHRyZGlmZl90IGkgPSAwOyBpIDwgaW5kZXhfc2l6ZTsg aSsrKQotICAgIGgtPnN0cm9uZy0+aW5kZXhbaV0ubGlzcF9vYmplY3QgPSBtYWtlX2ZpeG51bSAo LTEpOworICAgIGgtPnN0cm9uZy0+aW5kZXhbaV0gPSBtYWtlX3dlYWtfaGFzaF90YWJsZV9lbnRy eSAobWFrZV9maXhudW0gKC0xKSk7CiAKICAgaC0+c3Ryb25nLT5uZXh0X2ZyZWUgPSBtYWtlX2Zp eG51bSAoMCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaWdjLmMgYi9zcmMvaWdjLmMKaW5kZXggMWIx ZTY5ZWRlNWQuLmVmYjgxMDZkMTM5IDEwMDY0NAotLS0gYS9zcmMvaWdjLmMKKysrIGIvc3JjL2ln Yy5jCkBAIC0yODEsNiArMjgxLDggQEAgaXNfYnVpbHRpbl9zdWJyIChlbnVtIGlnY19vYmpfdHlw ZSB0eXBlLCB2b2lkICpjbGllbnQpCiBzdGF0aWMgYm9vbAogaGFzX2hlYWRlciAodm9pZCAqY2xp ZW50LCBib29sIGlzX3ZlY3RvcikKIHsKKyAgaWYgKGNsaWVudCA9PSBOVUxMKQorICAgIHJldHVy biBmYWxzZTsKICAgaWYgKGlzX3ZlY3RvciAmJiBpc19idWlsdGluX3N1YnIgKElHQ19PQkpfVkVD VE9SLCBjbGllbnQpKQogICAgIHJldHVybiBmYWxzZTsKICAgaWYgKGNfc3ltYm9sX3AgKGNsaWVu dCkpCkBAIC05MTIsNiArOTE0LDI4IEBAIGZpeF9yYXcgKG1wc19zc190IHNzLCBtcHNfYWRkcl90 ICpwKQogICByZXR1cm4gTVBTX1JFU19PSzsKIH0KIAorc3RhdGljIG1wc19yZXNfdAorZml4X2Jh c2UgKG1wc19zc190IHNzLCBtcHNfYWRkcl90ICpwKQoreworICBNUFNfU0NBTl9CRUdJTiAoc3Mp CisgIHsKKyAgICBtcHNfYWRkcl90IGJhc2UgPSAqcDsKKyAgICBpZiAoYmFzZSA9PSBOVUxMKQor ICAgICAgcmV0dXJuIE1QU19SRVNfT0s7CisgICAgaWYgKGlzX2FsaWduZWQgKGJhc2UpKQorICAg ICAgeworCWlmIChNUFNfRklYMSAoc3MsIGJhc2UpKQorCSAgeworCSAgICBtcHNfcmVzX3QgcmVz ID0gTVBTX0ZJWDIgKHNzLCBwKTsKKwkgICAgaWYgKHJlcyAhPSBNUFNfUkVTX09LKQorCSAgICAg IHJldHVybiByZXM7CisJICB9CisgICAgICB9CisgIH0KKyAgTVBTX1NDQU5fRU5EIChzcyk7Cisg IHJldHVybiBNUFNfUkVTX09LOworfQorCiAjZGVmaW5lIElHQ19GSVgxMl9PQkooc3MsIHApICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC05MzIsNiArOTU2LDE2IEBAICNkZWZpbmUg SUdDX0ZJWDEyX1JBVyhzcywgcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgIHdoaWxlICgwKQogCisjZGVmaW5lIElHQ19GSVgxMl9CQVNFKHNzLCBw KQkJCQkJCVwKKyAgZG8JCQkJCQkJCQlcCisgICAgewkJCQkJCQkJCVwKKyAgICAgIG1wc19yZXNf dCByZXM7CQkJCQkJCVwKKyAgICAgIE1QU19GSVhfQ0FMTCAoc3MsIHJlcyA9IGZpeF9iYXNlIChz cywgKG1wc19hZGRyX3QgKikgKHApKSk7CVwKKyAgICAgIGlmIChyZXMgIT0gTVBTX1JFU19PSykJ CQkJCQlcCisJcmV0dXJuIHJlczsJCQkJCQkJXAorICAgIH0JCQkJCQkJCQlcCisgIHdoaWxlICgw KQorCiAjZGVmaW5lIElHQ19GSVgxMl9OT0JKUyhzcywgYSwgbikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xOTE3LDcgKzE5NTEsNyBAQCBmaXhfd2Vha19o YXNoX3RhYmxlX3N0cm9uZ19wYXJ0IChtcHNfc3NfdCBzcywgc3RydWN0IExpc3BfV2Vha19IYXNo X1RhYmxlX1N0cm9uZwogCSAgfQogCWZvciAoc3NpemVfdCBpID0gMiAqIFhGSVhOVU0gKHQtPnRh YmxlX3NpemUpOyBpIDwgbGltaXQ7IGkrKykKIAkgIHsKLQkgICAgSUdDX0ZJWDEyX09CSiAoc3Ms ICZ0LT5lbnRyaWVzW2ldLmxpc3Bfb2JqZWN0KTsKKwkgICAgSUdDX0ZJWDEyX0JBU0UgKHNzLCAm dC0+ZW50cmllc1tpXS5pbnRwdHIpOwogCSAgfQogICAgICAgfQogICB9CkBAIC0xOTUzLDkgKzE5 ODcsOSBAQCBmaXhfd2Vha19oYXNoX3RhYmxlX3dlYWtfcGFydCAobXBzX3NzX3Qgc3MsIHN0cnVj dCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9XZWFrX1BhcgogCiAJZm9yIChzc2l6ZV90IGkgPSAwOyBp IDwgbGltaXQ7IGkrKykKIAkgIHsKLQkgICAgYm9vbCB3YXNfbmlsID0gTklMUCAody0+ZW50cmll c1tpXS5saXNwX29iamVjdCk7Ci0JICAgIElHQ19GSVgxMl9PQkogKHNzLCAmdy0+ZW50cmllc1tp XS5saXNwX29iamVjdCk7Ci0JICAgIGJvb2wgaXNfbm93X25pbCA9IE5JTFAgKHctPmVudHJpZXNb aV0ubGlzcF9vYmplY3QpOworCSAgICBib29sIHdhc19uaWwgPSB3LT5lbnRyaWVzW2ldLmludHB0 ciA9PSAwOworCSAgICBJR0NfRklYMTJfQkFTRSAoc3MsICZ3LT5lbnRyaWVzW2ldLmludHB0cik7 CisJICAgIGJvb2wgaXNfbm93X25pbCA9IHctPmVudHJpZXNbaV0uaW50cHRyID09IDA7CiAKIAkg ICAgaWYgKGlzX25vd19uaWwgJiYgIXdhc19uaWwpCiAJICAgICAgewpAQCAtMzgxMyw4ICszODQ3 LDYzIEBAIGlnY19tYWtlX2hhc2hfdGFibGVfdmVjIChzaXplX3QgbikKICAgcmV0dXJuIGFsbG9j IChuICogc2l6ZW9mIChMaXNwX09iamVjdCksIElHQ19PQkpfSEFTSF9WRUMpOwogfQogCitMaXNw X09iamVjdAord2Vha19oYXNoX3RhYmxlX2VudHJ5IChzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFi bGVfRW50cnkgZW50cnkpCit7CisgIGludHB0cl90IGFsaWdubWVudCA9IGVudHJ5LmludHB0ciAm IDE7CisgIG1wc19hZGRyX3QgY2xpZW50OworCisgIGlmIChhbGlnbm1lbnQgPT0gMCkKKyAgICB7 CisgICAgICBjbGllbnQgPSBiYXNlX3RvX2NsaWVudCAoKG1wc19hZGRyX3QpZW50cnkuaW50cHRy KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpbnRwdHJfdCByZWFsX3B0ciA9IGVudHJ5 LmludHB0ciBeIGFsaWdubWVudDsKKyAgICAgIGNsaWVudCA9IChtcHNfYWRkcl90KXJlYWxfcHRy OworICAgIH0KKworICBzd2l0Y2ggKFhGSVhOVU0gKGVudHJ5LmZpeG51bSkpCisgICAgeworICAg IGNhc2UgTGlzcF9TeW1ib2w6CisgICAgICByZXR1cm4gbWFrZV9saXNwX3N5bWJvbCAoY2xpZW50 KTsKKyAgICBjYXNlX0xpc3BfSW50OgorICAgICAgcmV0dXJuIG1ha2VfZml4bnVtIChlbnRyeS5p bnRwdHIgPj4gMSk7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBtYWtlX2xpc3BfcHRyIChj bGllbnQsIFhGSVhOVU0gKGVudHJ5LmZpeG51bSkpOworICAgIH0KK30KKworc3RydWN0IExpc3Bf V2Vha19IYXNoX1RhYmxlX0VudHJ5CittYWtlX3dlYWtfaGFzaF90YWJsZV9lbnRyeSAoTGlzcF9P YmplY3Qgb2JqKQoreworICBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgZW50cnkg PSB7IDAsIH07CisgIG1wc19hZGRyX3QgY2xpZW50OworICBlbnRyeS5maXhudW0gPSBtYWtlX2Zp eG51bSAoWFRZUEUgKG9iaikpOworCisgIGlmIChGSVhOVU1QIChvYmopKQorICAgIHsKKyAgICAg IGVudHJ5LmludHB0ciA9IChYRklYTlVNIChvYmopIDw8IDEpICsgMTsKKyAgICAgIHJldHVybiBl bnRyeTsKKyAgICB9CisgIGVsc2UgaWYgKEJBUkVfU1lNQk9MX1AgKG9iaikpCisgICAgY2xpZW50 ID0gWEJBUkVfU1lNQk9MIChvYmopOworICBlbHNlCisgICAgY2xpZW50ID0gWFVOVEFHIChvYmos IFhUWVBFIChvYmopLCB2b2lkKTsKKworICBpZiAoaGFzX2hlYWRlciAoY2xpZW50LCBWRUNUT1JM SUtFUCAob2JqKSkpCisgICAgZW50cnkuaW50cHRyID0gKGludHB0cl90KWNsaWVudF90b19iYXNl IChjbGllbnQpOworICBlbHNlCisgICAgeworICAgICAgZW50cnkuaW50cHRyID0gKGludHB0cl90 KWNsaWVudCArIDE7CisgICAgICBlYXNzZXJ0IChlbnRyeS5pbnRwdHIgJiAxKTsKKyAgICB9Cisg IHJldHVybiBlbnRyeTsKK30KKwogc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX1N0cm9uZ19Q YXJ0ICoKLWlnY19hbGxvY193ZWFrX2hhc2hfdGFibGVfc3Ryb25nX3BhcnQgKGhhc2hfdGFibGVf d2Vha25lc3NfdCB3ZWFrLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGluZGV4X2JpdHMpCitpZ2NfYWxs b2Nfd2Vha19oYXNoX3RhYmxlX3N0cm9uZ19wYXJ0IChoYXNoX3RhYmxlX3dlYWtuZXNzX3Qgd2Vh aywKKwkJCQkgICAgICAgc2l6ZV90IHNpemUsIHNpemVfdCBpbmRleF9iaXRzKQogewogICBzaXpl X3QgdG90YWxfc2l6ZTsKICAgc3dpdGNoICh3ZWFrKQpAQCAtMzgzMiwxMiArMzkyMSwxMyBAQCBp Z2NfYWxsb2Nfd2Vha19oYXNoX3RhYmxlX3N0cm9uZ19wYXJ0IChoYXNoX3RhYmxlX3dlYWtuZXNz X3Qgd2Vhaywgc2l6ZV90IHNpemUsCiAgICAgICBlbWFjc19hYm9ydCAoKTsKICAgICB9CiAgIHJl dHVybiBhbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfU3Ryb25nX1Bh cnQpICsKLQkJdG90YWxfc2l6ZSAqIHNpemVvZiAodW5pb24gTGlzcF9XZWFrX0hhc2hfVGFibGVf RW50cnkpLAorCQl0b3RhbF9zaXplICogc2l6ZW9mIChzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFi bGVfRW50cnkpLAogCQlJR0NfT0JKX1dFQUtfSEFTSF9UQUJMRV9TVFJPTkdfUEFSVCk7CiB9CiAK IHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9XZWFrX1BhcnQgKgotaWdjX2FsbG9jX3dlYWtf aGFzaF90YWJsZV93ZWFrX3BhcnQgKGhhc2hfdGFibGVfd2Vha25lc3NfdCB3ZWFrLCBzaXplX3Qg c2l6ZSwgc2l6ZV90IGluZGV4X2JpdHMpCitpZ2NfYWxsb2Nfd2Vha19oYXNoX3RhYmxlX3dlYWtf cGFydCAoaGFzaF90YWJsZV93ZWFrbmVzc190IHdlYWssCisJCQkJICAgICBzaXplX3Qgc2l6ZSwg c2l6ZV90IGluZGV4X2JpdHMpCiB7CiAgIHNpemVfdCB0b3RhbF9zaXplOwogICBzd2l0Y2ggKHdl YWspCkBAIC0zODU1LDcgKzM5NDUsNyBAQCBpZ2NfYWxsb2Nfd2Vha19oYXNoX3RhYmxlX3dlYWtf cGFydCAoaGFzaF90YWJsZV93ZWFrbmVzc190IHdlYWssIHNpemVfdCBzaXplLCBzaQogICAgICAg ZW1hY3NfYWJvcnQgKCk7CiAgICAgfQogICByZXR1cm4gYWxsb2MgKHNpemVvZiAoc3RydWN0IExp c3BfV2Vha19IYXNoX1RhYmxlX1dlYWtfUGFydCkgKwotCQl0b3RhbF9zaXplICogc2l6ZW9mICh1 bmlvbiBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSksCisJCXRvdGFsX3NpemUgKiBzaXplb2Yg KHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSksCiAJCUlHQ19PQkpfV0VBS19IQVNI X1RBQkxFX1dFQUtfUEFSVCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlz cC5oCmluZGV4IDkzMzQ0MWQzYTdlLi4zZmM1NTk4MmQyNCAxMDA2NDQKLS0tIGEvc3JjL2xpc3Au aAorKysgYi9zcmMvbGlzcC5oCkBAIC0yNjA5LDEzICsyNjA5LDE2IEBAICNkZWZpbmUgRE9PQkFS UkFZKG9hLCBpdCkJCQkJCVwKICAgIChoYXNoKSBpbmRpY2VzLiAgSXQncyBzaWduZWQgYW5kIGEg c3VidHlwZSBvZiBwdHJkaWZmX3QuICAqLwogdHlwZWRlZiBpbnQzMl90IGhhc2hfaWR4X3Q7CiAK LS8qIFRoZSByZWFzb24gZm9yIHRoaXMgdW51c3VhbCB1bmlvbiBpcyBhbiBNUFMgcGVjdWxpYXJp dHkgb24gMzItYml0IHg4NiBzeXN0ZW1zLiAqLwotdW5pb24gTGlzcF9XZWFrX0hhc2hfVGFibGVf RW50cnkKKy8qIFRoZSByZWFzb24gZm9yIHRoaXMgdW51c3VhbCBzdHJ1Y3R1cmUgaXMgYW4gTVBT IHBlY3VsaWFyaXR5IG9uIDMyLWJpdCB4ODYgc3lzdGVtcy4gKi8KK3N0cnVjdCBMaXNwX1dlYWtf SGFzaF9UYWJsZV9FbnRyeQogewotICB2b2lkICpwdHI7Ci0gIExpc3BfT2JqZWN0IGxpc3Bfb2Jq ZWN0OyAvKiBtdXN0IGJlIGEgZml4bnVtIG9yIEhBU0hfVU5VU0VEX0VOVFJZX0tFWSEgKi8KKyAg aW50cHRyX3QgaW50cHRyOyAvKiBtdXN0IGJlIGFuIE1QUyBiYXNlIHBvaW50ZXIgKi8KKyAgTGlz cF9PYmplY3QgZml4bnVtOyAvKiBhIGZpeG51bSBpbmRpY2F0aW5nIHRoZSB0YWcsIG9yIGp1c3Qg YSBmaXhudW0gKi8KIH07CiAKK2V4dGVybiBMaXNwX09iamVjdCB3ZWFrX2hhc2hfdGFibGVfZW50 cnkgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSBlbnRyeSk7CitleHRlcm4gc3Ry dWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX0VudHJ5IG1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5 IChMaXNwX09iamVjdCk7CisKIHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9TdHJvbmdfUGFy dAogewogICBMaXNwX09iamVjdCBpbmRleF9iaXRzOwpAQCAtMjYyMywxMSArMjYyNiwxMSBAQCAj ZGVmaW5lIERPT0JBUlJBWShvYSwgaXQpCQkJCQlcCiAgIExpc3BfT2JqZWN0IHRhYmxlX3NpemU7 CiAgIHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9XZWFrX1BhcnQgKndlYWs7CiAgIGNvbnN0 IHN0cnVjdCBoYXNoX3RhYmxlX3Rlc3QgKnRlc3Q7Ci0gIHVuaW9uIExpc3BfV2Vha19IYXNoX1Rh YmxlX0VudHJ5ICppbmRleDsgLyogaW50ZXJuYWwgcG9pbnRlciAqLwotICB1bmlvbiBMaXNwX1dl YWtfSGFzaF9UYWJsZV9FbnRyeSAqaGFzaDsgLyogZWl0aGVyIGludGVybmFsIHBvaW50ZXIgb3Ig cG9pbnRlciB0byBkZXBlbmRlbnQgb2JqZWN0ICovCi0gIHVuaW9uIExpc3BfV2Vha19IYXNoX1Rh YmxlX0VudHJ5ICprZXk7IC8qIGVpdGhlciBpbnRlcm5hbCBwb2ludGVyIG9yIHBvaW50ZXIgdG8g ZGVwZW5kZW50IG9iamVjdCAqLwotICB1bmlvbiBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSAq dmFsdWU7IC8qIGVpdGhlciBpbnRlcm5hbCBwb2ludGVyIG9yIHBvaW50ZXIgdG8gZGVwZW5kZW50 IG9iamVjdCAqLwotICB1bmlvbiBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSAqbmV4dDsgLyog aW50ZXJuYWwgcG9pbnRlciAqLworICBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkg KmluZGV4OyAvKiBpbnRlcm5hbCBwb2ludGVyIHRvIGFuIGFsbC1maXhudW0gYXJyYXkgKi8KKyAg c3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX0VudHJ5ICpoYXNoOyAvKiBpbnRlcm5hbCBwb2lu dGVyIHRvIGFuIGFsbC1maXhudW0gYXJyYXkgKi8KKyAgc3RydWN0IExpc3BfV2Vha19IYXNoX1Rh YmxlX0VudHJ5ICpuZXh0OyAvKiBpbnRlcm5hbCBwb2ludGVyIHRvIGFuIGFsbC1maXhudW0gYXJy YXkgKi8KKyAgc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX0VudHJ5ICprZXk7IC8qIGVpdGhl ciBpbnRlcm5hbCBwb2ludGVyIG9yIHBvaW50ZXIgdG8gZGVwZW5kZW50IG9iamVjdCAqLworICBz dHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgKnZhbHVlOyAvKiBlaXRoZXIgaW50ZXJu YWwgcG9pbnRlciBvciBwb2ludGVyIHRvIGRlcGVuZGVudCBvYmplY3QgKi8KICAgaGFzaF90YWJs ZV93ZWFrbmVzc190IHdlYWtuZXNzIDogMzsKICAgaGFzaF90YWJsZV9zdGRfdGVzdF90IGZyb3pl bl90ZXN0IDogMjsKIApAQCAtMjYzOSwxMyArMjY0MiwxMyBAQCAjZGVmaW5lIERPT0JBUlJBWShv YSwgaXQpCQkJCQlcCiAgICAgIHB1cmUgdGFibGVzIGFyZSBub3QsIGFuZCB3aGlsZSBhIHRhYmxl IGlzIGJlaW5nIG11dGF0ZWQgaXQgaXMKICAgICAgaW1tdXRhYmxlIGZvciByZWN1cnNpdmUgYXR0 ZW1wdHMgdG8gbXV0YXRlIGl0LiAgKi8KICAgYm9vbF9iZiBtdXRhYmxlIDogMTsKLSAgdW5pb24g TGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgZW50cmllc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OworICBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgZW50cmllc1tGTEVYSUJMRV9B UlJBWV9NRU1CRVJdOwogfTsKIAogc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxlX1dlYWtfUGFy dAogewogICBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfU3Ryb25nX1BhcnQgKnN0cm9uZzsK LSAgdW5pb24gTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgZW50cmllc1tGTEVYSUJMRV9BUlJB WV9NRU1CRVJdOworICBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGVfRW50cnkgZW50cmllc1tG TEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfTsKIAogc3RydWN0IExpc3BfV2Vha19IYXNoX1RhYmxl CkBAIC0yODYwLDEzICsyODYzLDEzIEBAIG1ha2VfbGlzcF93ZWFrX2hhc2hfdGFibGUgKHN0cnVj dCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCkKIFdFQUtfSEFTSF9LRVkgKGNvbnN0IHN0cnVjdCBM aXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwgcHRyZGlmZl90IGlkeCkKIHsKICAgZWFzc2VydCAoaWR4 ID49IDAgJiYgaWR4IDwgWEZJWE5VTSAoaC0+c3Ryb25nLT50YWJsZV9zaXplKSk7Ci0gIHJldHVy biBoLT5zdHJvbmctPmtleVtpZHhdLmxpc3Bfb2JqZWN0OworICByZXR1cm4gd2Vha19oYXNoX3Rh YmxlX2VudHJ5IChoLT5zdHJvbmctPmtleVtpZHhdKTsKIH0KIAogSU5MSU5FIExpc3BfT2JqZWN0 CiBXRUFLX0hBU0hfVkFMVUUgKGNvbnN0IHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwg cHRyZGlmZl90IGlkeCkKIHsKLSAgcmV0dXJuIGgtPnN0cm9uZy0+dmFsdWVbaWR4XS5saXNwX29i amVjdDsKKyAgcmV0dXJuIHdlYWtfaGFzaF90YWJsZV9lbnRyeSAoaC0+c3Ryb25nLT52YWx1ZVtp ZHhdKTsKIH0KIAogLyogVmFsdWUgaXMgdGhlIGhhc2ggY29kZSBjb21wdXRlZCBmb3IgZW50cnkg SURYIGluIGhhc2ggdGFibGUgSC4gICovCkBAIC0yODc0LDcgKzI4NzcsNyBAQCBXRUFLX0hBU0hf VkFMVUUgKGNvbnN0IHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwgcHRyZGlmZl90IGlk eCkKIFdFQUtfSEFTSF9IQVNIIChjb25zdCBzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGUgKmgs IHB0cmRpZmZfdCBpZHgpCiB7CiAgIGVhc3NlcnQgKGlkeCA+PSAwICYmIGlkeCA8IFhGSVhOVU0g KGgtPnN0cm9uZy0+dGFibGVfc2l6ZSkpOwotICByZXR1cm4gWEZJWE5VTSAoaC0+c3Ryb25nLT5o YXNoW2lkeF0ubGlzcF9vYmplY3QpOworICByZXR1cm4gWEZJWE5VTSAod2Vha19oYXNoX3RhYmxl X2VudHJ5IChoLT5zdHJvbmctPmhhc2hbaWR4XSkpOwogfQogCiAvKiBWYWx1ZSBpcyB0aGUgc2l6 ZSBvZiBoYXNoIHRhYmxlIEguICAqLwpAQCAtMjkyNSwxNCArMjkyOCwxNCBAQCB3ZWFrX2hhc2hf ZnJvbV9rZXkgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZSAqaCwgTGlzcF9PYmplY3Qga2V5 KQogICAgVGhlIGJvZHkgbWF5IHJlbW92ZSB0aGUgY3VycmVudCBlbnRyeSBvciBhbHRlciBpdHMg dmFsdWUgc2xvdCwgYnV0IG5vdAogICAgbXV0YXRlIFRBQkxFIGluIGFueSBvdGhlciB3YXkuICAq LwogIyBkZWZpbmUgRE9IQVNIX1dFQUsoaCwgaywgdikJCQkJCQlcCi0gIGZvciAodW5pb24gTGlz cF9XZWFrX0hhc2hfVGFibGVfRW50cnkgKmRvaGFzaF8jI2sjI18jI3YjI19rID0gKGgpLT5zdHJv bmctPmtleSwgXAorICBmb3IgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJsZV9FbnRyeSAqZG9o YXNoXyMjayMjXyMjdiMjX2sgPSAoaCktPnN0cm9uZy0+a2V5LCBcCiAJICpkb2hhc2hfIyNrIyNf IyN2IyNfdiA9IChoKS0+c3Ryb25nLT52YWx1ZSwJCQlcCiAJICpkb2hhc2hfIyNrIyNfIyN2IyNf ZW5kID0gZG9oYXNoXyMjayMjXyMjdiMjX2sJCQlcCiAJICsgV0VBS19IQVNIX1RBQkxFX1NJWkUg KGgpLAkJCQkJXAogCSAqZG9oYXNoXyMjayMjXyMjdiMjX2Jhc2UgPSBkb2hhc2hfIyNrIyNfIyN2 IyNfazsJCVwKICAgICAgICBkb2hhc2hfIyNrIyNfIyN2IyNfayA8IGRvaGFzaF8jI2sjI18jI3Yj I19lbmQJCQlcCi0JICYmIChrID0gZG9oYXNoXyMjayMjXyMjdiMjX2tbMF0ubGlzcF9vYmplY3Qs CQkJXAotCSAgICAgdiA9IGRvaGFzaF8jI2sjI18jI3YjI192WzBdLmxpc3Bfb2JqZWN0LCAvKm1h eWJlIHVudXNlZCovICh2b2lkKXYsCVwKKwkgJiYgKGsgPSB3ZWFrX2hhc2hfdGFibGVfZW50cnkg KGRvaGFzaF8jI2sjI18jI3YjI19rWzBdKSwJXAorCSAgICAgdiA9IHdlYWtfaGFzaF90YWJsZV9l bnRyeSAoZG9oYXNoXyMjayMjXyMjdiMjX3ZbMF0pLAlcCiAgICAgICAgICAgIHRydWUpOwkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIGVhc3NlcnQgKGRvaGFzaF8j I2sjI18jI3YjI19iYXNlID09IChoKS0+c3Ryb25nLT5rZXkJCVwKIAkJJiYgZG9oYXNoXyMjayMj XyMjdiMjX2VuZAkJCQlcCkBAIC00MjU1LDE0ICs0MjU4LDE0IEBAIHNldF9oYXNoX3ZhbHVlX3Ns b3QgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIHB0cmRpZmZfdCBpZHgsIExpc3BfT2JqZWN0 IHZhbCkKIHNldF93ZWFrX2hhc2hfa2V5X3Nsb3QgKHN0cnVjdCBMaXNwX1dlYWtfSGFzaF9UYWJs ZSAqaCwgcHRyZGlmZl90IGlkeCwgTGlzcF9PYmplY3QgdmFsKQogewogICBlYXNzZXJ0IChpZHgg Pj0gMCAmJiBpZHggPCBYRklYTlVNIChoLT5zdHJvbmctPnRhYmxlX3NpemUpKTsKLSAgaC0+c3Ry b25nLT5rZXlbaWR4XS5saXNwX29iamVjdCA9IHZhbDsKKyAgaC0+c3Ryb25nLT5rZXlbaWR4XSA9 IG1ha2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5ICh2YWwpOwogfQogCiBJTkxJTkUgdm9pZAogc2V0 X3dlYWtfaGFzaF92YWx1ZV9zbG90IChzdHJ1Y3QgTGlzcF9XZWFrX0hhc2hfVGFibGUgKmgsIHB0 cmRpZmZfdCBpZHgsIExpc3BfT2JqZWN0IHZhbCkKIHsKICAgZWFzc2VydCAoaWR4ID49IDAgJiYg aWR4IDwgWEZJWE5VTSAoaC0+c3Ryb25nLT50YWJsZV9zaXplKSApOwotICBoLT5zdHJvbmctPnZh bHVlW2lkeF0ubGlzcF9vYmplY3QgPSB2YWw7CisgIGgtPnN0cm9uZy0+dmFsdWVbaWR4XSA9IG1h a2Vfd2Vha19oYXNoX3RhYmxlX2VudHJ5ICh2YWwpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh L3NyYy9wcmludC5jIGIvc3JjL3ByaW50LmMKaW5kZXggZmE3MWRlOGYyZGQuLjhmZDM0NzNlNWMy IDEwMDY0NAotLS0gYS9zcmMvcHJpbnQuYworKysgYi9zcmMvcHJpbnQuYwpAQCAtMjc4OCw5ICsy Nzg4LDExIEBAIHByaW50X29iamVjdCAoTGlzcF9PYmplY3Qgb2JqLCBMaXNwX09iamVjdCBwcmlu dGNoYXJmdW4sIGJvb2wgZXNjYXBlZmxhZykKIAkJLS1wcmludF9kZXB0aDsgICAvKiBEb25lIHdp dGggdGhpcy4gICovCiAJICAgICAgfQogCSAgICBnb3RvIG5leHRfb2JqOworI2lmZGVmIEhBVkVf TVBTCiAJICBzdHJvbmdfaGFzaF90YWJsZToKIAkgICAgaCA9IFhIQVNIX1RBQkxFIChvYmopOwog CSAgICBnb3RvIGhhc2hfdGFibGVfZGF0YTsKKyNlbmRpZgogCSAgfQogCiAjaWZkZWYgSEFWRV9N UFMKLS0gCjIuNDUuMgoK --b1_oukBD5uEHl3DH2UMmVRa6O8prpTHAWacd7zyo6WTnA--