From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS3215 2.6.0.0/16 X-Spam-Status: No, score=-3.8 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id E51111F670 for ; Fri, 15 Oct 2021 15:23:22 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 254103857815 for ; Fri, 15 Oct 2021 15:23:22 +0000 (GMT) Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 5C95A385781F for ; Fri, 15 Oct 2021 15:22:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5C95A385781F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: u4hAKR1nmw6GHt43w+uYcTkXTJPFs9EMoAzcmyefZfCnCloylwL7siFgxw5boNSgw8NY4rOyb8 xT6ngu0RkTDvbze7jwPmdcQj87U0aXYcbWLNtM4wuIjKT1m+MW63Xwq3wWhA9GFz/17rgXcKn4 OPIKP8GKKsX/S2GBA7Emcw97B6wU2QTquYRAnrxHJi3FV7eIcUzs2CDIu9TawaqkCGdEvxseBC /J/SKGQD1GgcE9NfsCdwFVnurLx8BVX/UiIw6VTGNLq8VlJPeHnIogLE7Vz93nN8/Wlwb1smom 8xfWb2LPzPkF2iyNkB+CCNuz X-IronPort-AV: E=Sophos;i="5.85,376,1624348800"; d="scan'208";a="67101430" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 15 Oct 2021 07:22:16 -0800 IronPort-SDR: icPVplnTGvC0ok8RibVfKpwexXcwKE0zeRFmH+YNsTcq/U4GWpDHRjHldnmhc8tB1yF/5Fi8dt EbWRR5/khDzhDW+QDmcsG7uoqXuSRTNaAgaKqcDbGX03olkXh6+mbqJ5I6dKLs2tJj44sWfe3n kqn8Rg4gQf506AwFQ4FEMVDhCl+g5EU+Nxtpbv8UB85/YabjRusGt5arvzoIP1XZRJO6dZ8QvI XfL3TgSekJH040F0pkyfoidh9KJ54NYxlAqM5lixUMmqt1F0rZ5MAlBGwwcLnaYYu7zSmjbWBI wKk= Content-Type: multipart/mixed; boundary="------------sqIxhrhzkpLpYEo0CfXkR9N4" Message-ID: <83afca9e-8938-3093-c968-8769776094e9@codesourcery.com> Date: Fri, 15 Oct 2021 23:22:06 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: [PATCH v7 2/2] BZ #17645, fix slow DSO sorting behavior in dynamic loader -- Algorithm changes Content-Language: en-US To: Adhemerval Zanella , GNU C Library , Florian Weimer References: <30aa9fbd-fc08-9a6f-d34b-accb47abd8af@codesourcery.com> <334c6848-e805-4666-add5-e611f1d7c255@linaro.org> <4fefc9b5-64fa-1384-075c-4b3363d95941@codesourcery.com> From: Chung-Lin Tang In-Reply-To: X-ClientProxiedBy: SVR-ORW-MBX-09.mgc.mentorg.com (147.34.90.209) To svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" --------------sqIxhrhzkpLpYEo0CfXkR9N4 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Adhemerval, On 2021/10/6 1:15 AM, Adhemerval Zanella wrote: >> I'm not sure if defining 'enum dso_sort_algorithm' is really needed? >> Is __builtin_unreachable() that undesirable? > The tunables code should already sanitize the input and returns the > possible algorithms as a type, instead of a number. I think it is > clear to work with predefined type, than hint the compiler explicitly. Okay, understood. >> Also, the final code should probably add __glibc_likely() to the default >> algorithm case. > Sometime I think we abuse the __glibc_{un}likely, specially on short code > like that. But please reinstate it if you see that it does improve code > generation. I have re-done some microbenchmarking using hp-timing facilities, and it appears that __glibc_likely() helps a "little" bit overall (slightly more consistent on powerpc64le, a little less on my own x86_64 desktop), at worst no apparent improvement. So I've added it back. The attached patch is basically the version on the azanella/dso-opt branch, plus the above __glibc_likely() addition, plus a little bit of editing of comments. Rebased and re-tested, is this okay for master? Thanks, Chung-Lin --------------sqIxhrhzkpLpYEo0CfXkR9N4 Content-Type: text/plain; charset="UTF-8"; name="dlsort-02-changes-v7.patch" Content-Disposition: attachment; filename="dlsort-02-changes-v7.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2VsZi9kbC1jbG9zZS5jIGIvZWxmL2RsLWNsb3NlLmMKaW5kZXggY2Zl MGYxYzBjOS4uNGY1Y2ZjYzFjMyAxMDA2NDQKLS0tIGEvZWxmL2RsLWNsb3NlLmMKKysrIGIv ZWxmL2RsLWNsb3NlLmMKQEAgLTE2Nyw4ICsxNjcsNiBAQCBfZGxfY2xvc2Vfd29ya2VyIChz dHJ1Y3QgbGlua19tYXAgKm1hcCwgYm9vbCBmb3JjZSkKIAogICBib29sIGFueV90bHMgPSBm YWxzZTsKICAgY29uc3QgdW5zaWduZWQgaW50IG5sb2FkZWQgPSBucy0+X25zX25sb2FkZWQ7 Ci0gIGNoYXIgdXNlZFtubG9hZGVkXTsKLSAgY2hhciBkb25lW25sb2FkZWRdOwogICBzdHJ1 Y3QgbGlua19tYXAgKm1hcHNbbmxvYWRlZF07CiAKICAgLyogUnVuIG92ZXIgdGhlIGxpc3Qg YW5kIGFzc2lnbiBpbmRleGVzIHRvIHRoZSBsaW5rIG1hcHMgYW5kIGVudGVyCkBAIC0xNzYs MjQgKzE3NCwyMSBAQCBfZGxfY2xvc2Vfd29ya2VyIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwg Ym9vbCBmb3JjZSkKICAgaW50IGlkeCA9IDA7CiAgIGZvciAoc3RydWN0IGxpbmtfbWFwICps ID0gbnMtPl9uc19sb2FkZWQ7IGwgIT0gTlVMTDsgbCA9IGwtPmxfbmV4dCkKICAgICB7Cisg ICAgICBsLT5sX21hcF91c2VkID0gMDsKKyAgICAgIGwtPmxfbWFwX2RvbmUgPSAwOwogICAg ICAgbC0+bF9pZHggPSBpZHg7CiAgICAgICBtYXBzW2lkeF0gPSBsOwogICAgICAgKytpZHg7 Ci0KICAgICB9CiAgIGFzc2VydCAoaWR4ID09IG5sb2FkZWQpOwogCi0gIC8qIFByZXBhcmUg dGhlIGJpdG1hcHMuICAqLwotICBtZW1zZXQgKHVzZWQsICdcMCcsIHNpemVvZiAodXNlZCkp OwotICBtZW1zZXQgKGRvbmUsICdcMCcsIHNpemVvZiAoZG9uZSkpOwotCiAgIC8qIEtlZXAg dHJhY2sgb2YgdGhlIGxvd2VzdCBpbmRleCBsaW5rIG1hcCB3ZSBoYXZlIGNvdmVyZWQgYWxy ZWFkeS4gICovCiAgIGludCBkb25lX2luZGV4ID0gLTE7CiAgIHdoaWxlICgrK2RvbmVfaW5k ZXggPCBubG9hZGVkKQogICAgIHsKICAgICAgIHN0cnVjdCBsaW5rX21hcCAqbCA9IG1hcHNb ZG9uZV9pbmRleF07CiAKLSAgICAgIGlmIChkb25lW2RvbmVfaW5kZXhdKQorICAgICAgaWYg KGwtPmxfbWFwX2RvbmUpCiAJLyogQWxyZWFkeSBoYW5kbGVkLiAgKi8KIAljb250aW51ZTsK IApAQCAtMjA0LDEyICsxOTksMTIgQEAgX2RsX2Nsb3NlX3dvcmtlciAoc3RydWN0IGxpbmtf bWFwICptYXAsIGJvb2wgZm9yY2UpCiAJICAvKiBTZWUgQ09OQ1VSUkVOQ1kgTk9URVMgaW4g Y3hhX3RocmVhZF9hdGV4aXRfaW1wbC5jIHRvIGtub3cgd2h5CiAJICAgICBhY3F1aXJlIGlz IHN1ZmZpY2llbnQgYW5kIGNvcnJlY3QuICAqLwogCSAgJiYgYXRvbWljX2xvYWRfYWNxdWly ZSAoJmwtPmxfdGxzX2R0b3JfY291bnQpID09IDAKLQkgICYmICF1c2VkW2RvbmVfaW5kZXhd KQorCSAgJiYgIWwtPmxfbWFwX3VzZWQpCiAJY29udGludWU7CiAKICAgICAgIC8qIFdlIG5l ZWQgdGhpcyBvYmplY3QgYW5kIHdlIGhhbmRsZSBpdCBub3cuICAqLwotICAgICAgZG9uZVtk b25lX2luZGV4XSA9IDE7Ci0gICAgICB1c2VkW2RvbmVfaW5kZXhdID0gMTsKKyAgICAgIGwt PmxfbWFwX3VzZWQgPSAxOworICAgICAgbC0+bF9tYXBfZG9uZSA9IDE7CiAgICAgICAvKiBT aWduYWwgdGhlIG9iamVjdCBpcyBzdGlsbCBuZWVkZWQuICAqLwogICAgICAgbC0+bF9pZHgg PSBJRFhfU1RJTExfVVNFRDsKIApAQCAtMjI1LDkgKzIyMCw5IEBAIF9kbF9jbG9zZV93b3Jr ZXIgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNlKQogCQl7CiAJCSAgYXNzZXJ0 ICgoKmxwKS0+bF9pZHggPj0gMCAmJiAoKmxwKS0+bF9pZHggPCBubG9hZGVkKTsKIAotCQkg IGlmICghdXNlZFsoKmxwKS0+bF9pZHhdKQorCQkgIGlmICghKCpscCktPmxfbWFwX3VzZWQp CiAJCSAgICB7Ci0JCSAgICAgIHVzZWRbKCpscCktPmxfaWR4XSA9IDE7CisJCSAgICAgICgq bHApLT5sX21hcF91c2VkID0gMTsKIAkJICAgICAgLyogSWYgd2UgbWFya2VkIGEgbmV3IG9i amVjdCBhcyB1c2VkLCBhbmQgd2UndmUKIAkJCSBhbHJlYWR5IHByb2Nlc3NlZCBpdCwgdGhl biB3ZSBuZWVkIHRvIGdvIGJhY2sKIAkJCSBhbmQgcHJvY2VzcyBhZ2FpbiBmcm9tIHRoYXQg cG9pbnQgZm9yd2FyZCB0bwpAQCAtMjUwLDkgKzI0NSw5IEBAIF9kbF9jbG9zZV93b3JrZXIg KHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNlKQogCSAgICAgIHsKIAkJYXNzZXJ0 IChqbWFwLT5sX2lkeCA+PSAwICYmIGptYXAtPmxfaWR4IDwgbmxvYWRlZCk7CiAKLQkJaWYg KCF1c2VkW2ptYXAtPmxfaWR4XSkKKwkJaWYgKCFqbWFwLT5sX21hcF91c2VkKQogCQkgIHsK LQkJICAgIHVzZWRbam1hcC0+bF9pZHhdID0gMTsKKwkJICAgIGptYXAtPmxfbWFwX3VzZWQg PSAxOwogCQkgICAgaWYgKGptYXAtPmxfaWR4IC0gMSA8IGRvbmVfaW5kZXgpCiAJCSAgICAg IGRvbmVfaW5kZXggPSBqbWFwLT5sX2lkeCAtIDE7CiAJCSAgfQpAQCAtMjYyLDggKzI1Nyw3 IEBAIF9kbF9jbG9zZV93b3JrZXIgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNl KQogCiAgIC8qIFNvcnQgdGhlIGVudHJpZXMuICBXZSBjYW4gc2tpcCBsb29raW5nIGZvciB0 aGUgYmluYXJ5IGl0c2VsZiB3aGljaCBpcwogICAgICBhdCB0aGUgZnJvbnQgb2YgdGhlIHNl YXJjaCBsaXN0IGZvciB0aGUgbWFpbiBuYW1lc3BhY2UuICAqLwotICBfZGxfc29ydF9tYXBz IChtYXBzICsgKG5zaWQgPT0gTE1fSURfQkFTRSksIG5sb2FkZWQgLSAobnNpZCA9PSBMTV9J RF9CQVNFKSwKLQkJIHVzZWQgKyAobnNpZCA9PSBMTV9JRF9CQVNFKSwgdHJ1ZSk7CisgIF9k bF9zb3J0X21hcHMgKG1hcHMsIG5sb2FkZWQsIChuc2lkID09IExNX0lEX0JBU0UpLCB0cnVl KTsKIAogICAvKiBDYWxsIGFsbCB0ZXJtaW5hdGlvbiBmdW5jdGlvbnMgYXQgb25jZS4gICov CiAjaWZkZWYgU0hBUkVECkBAIC0yODAsNyArMjc0LDcgQEAgX2RsX2Nsb3NlX3dvcmtlciAo c3RydWN0IGxpbmtfbWFwICptYXAsIGJvb2wgZm9yY2UpCiAgICAgICAvKiBBbGwgZWxlbWVu dHMgbXVzdCBiZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UuICAqLwogICAgICAgYXNzZXJ0IChp bWFwLT5sX25zID09IG5zaWQpOwogCi0gICAgICBpZiAoIXVzZWRbaV0pCisgICAgICBpZiAo IWltYXAtPmxfbWFwX3VzZWQpCiAJewogCSAgYXNzZXJ0IChpbWFwLT5sX3R5cGUgPT0gbHRf bG9hZGVkICYmICFpbWFwLT5sX25vZGVsZXRlX2FjdGl2ZSk7CiAKQEAgLTMzMyw3ICszMjcs NyBAQCBfZGxfY2xvc2Vfd29ya2VyIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgYm9vbCBmb3Jj ZSkKIAkgIGlmIChpIDwgZmlyc3RfbG9hZGVkKQogCSAgICBmaXJzdF9sb2FkZWQgPSBpOwog CX0KLSAgICAgIC8qIEVsc2UgdXNlZFtpXS4gICovCisgICAgICAvKiBFbHNlIGltYXAtPmxf bWFwX3VzZWQuICAqLwogICAgICAgZWxzZSBpZiAoaW1hcC0+bF90eXBlID09IGx0X2xvYWRl ZCkKIAl7CiAJICBzdHJ1Y3Qgcl9zY29wZV9lbGVtICpuZXdfbGlzdCA9IE5VTEw7CkBAIC01 NjAsNyArNTU0LDcgQEAgX2RsX2Nsb3NlX3dvcmtlciAoc3RydWN0IGxpbmtfbWFwICptYXAs IGJvb2wgZm9yY2UpCiAgIGZvciAodW5zaWduZWQgaW50IGkgPSBmaXJzdF9sb2FkZWQ7IGkg PCBubG9hZGVkOyArK2kpCiAgICAgewogICAgICAgc3RydWN0IGxpbmtfbWFwICppbWFwID0g bWFwc1tpXTsKLSAgICAgIGlmICghdXNlZFtpXSkKKyAgICAgIGlmICghaW1hcC0+bF9tYXBf dXNlZCkKIAl7CiAJICBhc3NlcnQgKGltYXAtPmxfdHlwZSA9PSBsdF9sb2FkZWQpOwogCmRp ZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwppbmRleCAwODdhNDli MjEyLi4yMzdkOTYzNmM1IDEwMDY0NAotLS0gYS9lbGYvZGwtZGVwcy5jCisrKyBiL2VsZi9k bC1kZXBzLmMKQEAgLTYxMywxMCArNjEzLDkgQEAgRmlsdGVycyBub3Qgc3VwcG9ydGVkIHdp dGggTERfVFJBQ0VfUFJFTElOS0lORyIpKTsKIAogICAvKiBJZiBsaWJjLnNvLjYgaXMgdGhl IG1haW4gbWFwLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHNvcnQsIHNvCiAgICAgIHRoYXQg dGhlIHJlbG9jYXRpb24gb3JkZXIgaXMgY29ycmVjdCByZWdhcmRpbmcgbGliYy5zby42LiAg Ki8KLSAgaWYgKGxfaW5pdGZpbmlbMF0gPT0gR0wgKGRsX25zKVtsX2luaXRmaW5pWzBdLT5s X25zXS5saWJjX21hcCkKLSAgICBfZGxfc29ydF9tYXBzIChsX2luaXRmaW5pLCBubGlzdCwg TlVMTCwgZmFsc2UpOwotICBlbHNlCi0gICAgX2RsX3NvcnRfbWFwcyAoJmxfaW5pdGZpbmlb MV0sIG5saXN0IC0gMSwgTlVMTCwgZmFsc2UpOworICBfZGxfc29ydF9tYXBzIChsX2luaXRm aW5pLCBubGlzdCwKKwkJIChsX2luaXRmaW5pWzBdICE9IEdMIChkbF9ucylbbF9pbml0Zmlu aVswXS0+bF9uc10ubGliY19tYXApLAorCQkgZmFsc2UpOwogCiAgIC8qIFRlcm1pbmF0ZSB0 aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMuICAqLwogICBsX2luaXRmaW5pW25saXN0XSA9IE5V TEw7CmRpZmYgLS1naXQgYS9lbGYvZGwtZmluaS5jIGIvZWxmL2RsLWZpbmkuYwppbmRleCA2 ZGJkZmU0YjNlLi5jNjgzODg0YzM1IDEwMDY0NAotLS0gYS9lbGYvZGwtZmluaS5jCisrKyBi L2VsZi9kbC1maW5pLmMKQEAgLTkyLDggKzkyLDcgQEAgX2RsX2ZpbmkgKHZvaWQpCiAJICAv KiBOb3cgd2UgaGF2ZSB0byBkbyB0aGUgc29ydGluZy4gIFdlIGNhbiBza2lwIGxvb2tpbmcg Zm9yIHRoZQogCSAgICAgYmluYXJ5IGl0c2VsZiB3aGljaCBpcyBhdCB0aGUgZnJvbnQgb2Yg dGhlIHNlYXJjaCBsaXN0IGZvcgogCSAgICAgdGhlIG1haW4gbmFtZXNwYWNlLiAgKi8KLQkg IF9kbF9zb3J0X21hcHMgKG1hcHMgKyAobnMgPT0gTE1fSURfQkFTRSksIG5tYXBzIC0gKG5z ID09IExNX0lEX0JBU0UpLAotCQkJIE5VTEwsIHRydWUpOworCSAgX2RsX3NvcnRfbWFwcyAo bWFwcywgbm1hcHMsIChucyA9PSBMTV9JRF9CQVNFKSwgdHJ1ZSk7CiAKIAkgIC8qIFdlIGRv IG5vdCByZWx5IG9uIHRoZSBsaW5rZWQgbGlzdCBvZiBsb2FkZWQgb2JqZWN0IGFueW1vcmUK IAkgICAgIGZyb20gdGhpcyBwb2ludCBvbi4gIFdlIGhhdmUgb3VyIG93biBsaXN0IGhlcmUg KG1hcHMpLiAgVGhlCmRpZmYgLS1naXQgYS9lbGYvZGwtc29ydC1tYXBzLmMgYi9lbGYvZGwt c29ydC1tYXBzLmMKaW5kZXggZDIxNzcwMjY3YS4uYTI3NGVkNjZjYyAxMDA2NDQKLS0tIGEv ZWxmL2RsLXNvcnQtbWFwcy5jCisrKyBiL2VsZi9kbC1zb3J0LW1hcHMuYwpAQCAtMTYsMTYg KzE2LDI0IEBACiAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlm IG5vdCwgc2VlCiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAor I2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGxkc29kZWZzLmg+CisjaW5jbHVkZSA8 ZWxmL2RsLXR1bmFibGVzLmg+CiAKKy8qIE5vdGU6IHRoaXMgaXMgdGhlIG9sZGVyLCAib3Jp Z2luYWwiIHNvcnRpbmcgYWxnb3JpdGhtLCBiZWluZyB1c2VkIGFzCisgICBkZWZhdWx0IHVw IHRvIDIuMzUuCiAKLS8qIFNvcnQgYXJyYXkgTUFQUyBhY2NvcmRpbmcgdG8gZGVwZW5kZW5j aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0cy4KLSAgIEFycmF5IFVTRUQsIGlmIG5vbi1O VUxMLCBpcyBwZXJtdXRhdGVkIGFsb25nIE1BUFMuICBJZiBGT1JfRklOSSB0aGlzIGlzCi0g ICBjYWxsZWQgZm9yIGZpbmlzaGluZyBhbiBvYmplY3QuICAqLwotdm9pZAotX2RsX3NvcnRf bWFwcyAoc3RydWN0IGxpbmtfbWFwICoqbWFwcywgdW5zaWduZWQgaW50IG5tYXBzLCBjaGFy ICp1c2VkLAotCSAgICAgICBib29sIGZvcl9maW5pKQorICAgU29ydCBhcnJheSBNQVBTIGFj Y29yZGluZyB0byBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzLgorICAg SWYgRk9SX0ZJTkkgaXMgdHJ1ZSwgdGhpcyBpcyBjYWxsZWQgZm9yIGZpbmlzaGluZyBhbiBv YmplY3QuICAqLworc3RhdGljIHZvaWQKK19kbF9zb3J0X21hcHNfb3JpZ2luYWwgKHN0cnVj dCBsaW5rX21hcCAqKm1hcHMsIHVuc2lnbmVkIGludCBubWFwcywKKwkJCXVuc2lnbmVkIGlu dCBza2lwLCBib29sIGZvcl9maW5pKQogeworICAvKiBBbGxvd3MgY2FsbGVyIHRvIGRvIHRo ZSBjb21tb24gb3B0aW1pemF0aW9uIG9mIHNraXBwaW5nIHRoZSBmaXJzdCBtYXAsCisgICAg IHVzdWFsbHkgdGhlIG1haW4gYmluYXJ5LiAgKi8KKyAgbWFwcyArPSBza2lwOworICBubWFw cyAtPSBza2lwOworCiAgIC8qIEEgbGlzdCBvZiBvbmUgZWxlbWVudCBuZWVkIG5vdCBiZSBz b3J0ZWQuICAqLwogICBpZiAobm1hcHMgPD0gMSkKICAgICByZXR1cm47CkBAIC02NiwxNCAr NzQsNiBAQCBfZGxfc29ydF9tYXBzIChzdHJ1Y3QgbGlua19tYXAgKiptYXBzLCB1bnNpZ25l ZCBpbnQgbm1hcHMsIGNoYXIgKnVzZWQsCiAJCQkgICAoayAtIGkpICogc2l6ZW9mIChtYXBz WzBdKSk7CiAJCSAgbWFwc1trXSA9IHRoaXNwOwogCi0JCSAgaWYgKHVzZWQgIT0gTlVMTCkK LQkJICAgIHsKLQkJICAgICAgY2hhciBoZXJlX3VzZWQgPSB1c2VkW2ldOwotCQkgICAgICBt ZW1tb3ZlICgmdXNlZFtpXSwgJnVzZWRbaSArIDFdLAotCQkJICAgICAgIChrIC0gaSkgKiBz aXplb2YgKHVzZWRbMF0pKTsKLQkJICAgICAgdXNlZFtrXSA9IGhlcmVfdXNlZDsKLQkJICAg IH0KLQogCQkgIGlmIChzZWVuW2kgKyAxXSA+IG5tYXBzIC0gaSkKIAkJICAgIHsKIAkJICAg ICAgKytpOwpAQCAtMTIwLDMgKzEyMCwxODMgQEAgX2RsX3NvcnRfbWFwcyAoc3RydWN0IGxp bmtfbWFwICoqbWFwcywgdW5zaWduZWQgaW50IG5tYXBzLCBjaGFyICp1c2VkLAogICAgIG5l eHQ6OwogICAgIH0KIH0KKworI2lmICFIQVZFX1RVTkFCTEVTCisvKiBJbiB0aGlzIGNhc2Us IGp1c3QgZGVmYXVsdCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtLiAgKi8KK3N0cm9uZ19h bGlhcyAoX2RsX3NvcnRfbWFwc19vcmlnaW5hbCwgX2RsX3NvcnRfbWFwcyk7CisjZWxzZQor CisvKiBXZSB1c2UgYSByZWN1cnNpdmUgZnVuY3Rpb24gZHVlIHRvIGl0cyBiZXR0ZXIgY2xh cml0eSBhbmQgZWFzZSBvZgorICAgaW1wbGVtZW50YXRpb24sIGFzIHdlbGwgYXMgZmFzdGVy IGV4ZWN1dGlvbiBzcGVlZC4gV2UgYWxyZWFkeSB1c2UKKyAgIGFsbG9jYSgpIGZvciBsaXN0 IGFsbG9jYXRpb24gZHVyaW5nIHRoZSBicmVhZHRoLWZpcnN0IHNlYXJjaCBvZgorICAgZGVw ZW5kZW5jaWVzIGluIF9kbF9tYXBfb2JqZWN0X2RlcHMoKSwgYW5kIHRoaXMgc2hvdWxkIGJl IG9uIHRoZQorICAgc2FtZSBvcmRlciBvZiB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlLgorCisg ICBOb3RlOiB0aGUgJypycG8nIHBhcmFtZXRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBv bmUgcGFzdCB0aGUKKyAgIGxhc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgd2hlcmUgd2Ugc2F2 ZSB0aGUgc29ydCByZXN1bHRzLCBhbmQgaXMKKyAgIGRlY3JlbWVudGVkIGJlZm9yZSBzdG9y aW5nIHRoZSBjdXJyZW50IG1hcCBhdCBlYWNoIGxldmVsLiAgKi8KKworc3RhdGljIHZvaWQK K2Rmc190cmF2ZXJzYWwgKHN0cnVjdCBsaW5rX21hcCAqKipycG8sIHN0cnVjdCBsaW5rX21h cCAqbWFwLAorCSAgICAgICBib29sICpkb19yZWxkZXBzKQoreworICBpZiAobWFwLT5sX3Zp c2l0ZWQpCisgICAgcmV0dXJuOworCisgIG1hcC0+bF92aXNpdGVkID0gMTsKKworICBpZiAo bWFwLT5sX2luaXRmaW5pKQorICAgIHsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBtYXAtPmxf aW5pdGZpbmlbaV0gIT0gTlVMTDsgaSsrKQorCXsKKwkgIHN0cnVjdCBsaW5rX21hcCAqZGVw ID0gbWFwLT5sX2luaXRmaW5pW2ldOworCSAgaWYgKGRlcC0+bF92aXNpdGVkID09IDAKKwkg ICAgICAmJiBkZXAtPmxfbWFpbl9tYXAgPT0gMCkKKwkgICAgZGZzX3RyYXZlcnNhbCAocnBv LCBkZXAsIGRvX3JlbGRlcHMpOworCX0KKyAgICB9CisKKyAgaWYgKF9fZ2xpYmNfdW5saWtl bHkgKGRvX3JlbGRlcHMgIT0gTlVMTCAmJiBtYXAtPmxfcmVsZGVwcyAhPSBOVUxMKSkKKyAg ICB7CisgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHdlIGVuY291bnRlcmVkIHJlbG9jYXRpb24g ZGVwZW5kZW5jaWVzIGR1cmluZworCSB0cmF2ZXJzYWwuICAqLworICAgICAgKmRvX3JlbGRl cHMgPSB0cnVlOworCisgICAgICBmb3IgKGludCBtID0gbWFwLT5sX3JlbGRlcHMtPmFjdCAt IDE7IG0gPj0gMDsgbS0tKQorCXsKKwkgIHN0cnVjdCBsaW5rX21hcCAqZGVwID0gbWFwLT5s X3JlbGRlcHMtPmxpc3RbbV07CisJICBpZiAoZGVwLT5sX3Zpc2l0ZWQgPT0gMAorCSAgICAg ICYmIGRlcC0+bF9tYWluX21hcCA9PSAwKQorCSAgICBkZnNfdHJhdmVyc2FsIChycG8sIGRl cCwgZG9fcmVsZGVwcyk7CisJfQorICAgIH0KKworICAqcnBvIC09IDE7CisgICoqcnBvID0g bWFwOworfQorCisvKiBUb3BvbG9naWNhbGx5IHNvcnQgYXJyYXkgTUFQUyBhY2NvcmRpbmcg dG8gZGVwZW5kZW5jaWVzIG9mIHRoZSBjb250YWluZWQKKyAgIG9iamVjdHMuICAqLworCitz dGF0aWMgdm9pZAorX2RsX3NvcnRfbWFwc19kZnMgKHN0cnVjdCBsaW5rX21hcCAqKm1hcHMs IHVuc2lnbmVkIGludCBubWFwcywKKwkJICAgdW5zaWduZWQgaW50IHNraXAgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpLCBib29sIGZvcl9maW5pKQoreworICBmb3IgKGludCBpID0gbm1h cHMgLSAxOyBpID49IDA7IGktLSkKKyAgICBtYXBzW2ldLT5sX3Zpc2l0ZWQgPSAwOworCisg IC8qIFdlIGFwcGx5IERGUyB0cmF2ZXJzYWwgZm9yIGVhY2ggb2YgbWFwc1tpXSB1bnRpbCB0 aGUgd2hvbGUgdG90YWwgb3JkZXIKKyAgICAgaXMgZm91bmQgYW5kIHdlJ3JlIGF0IHRoZSBz dGFydCBvZiB0aGUgUmV2ZXJzZS1Qb3N0b3JkZXIgKFJQTykgc2VxdWVuY2UsCisgICAgIHdo aWNoIGlzIGEgdG9wb2xvZ2ljYWwgc29ydC4KKworICAgICBXZSBnbyBmcm9tIG1hcHNbbm1h cHMgLSAxXSBiYWNrd2FyZHMgdG93YXJkcyBtYXBzWzBdIGF0IHRoaXMgbGV2ZWwuCisgICAg IER1ZSB0byB0aGUgYnJlYWR0aC1maXJzdCBzZWFyY2ggKEJGUykgb3JkZXJpbmcgd2UgcmVj ZWl2ZSwgZ29pbmcKKyAgICAgYmFja3dhcmRzIHVzdWFsbHkgZ2l2ZXMgYSBtb3JlIHNoYWxs b3cgZGVwdGgtZmlyc3QgcmVjdXJzaW9uIGRlcHRoLAorICAgICBhZGRpbmcgbW9yZSBzdGFj ayB1c2FnZSBzYWZldHkuIEFsc28sIGNvbWJpbmVkIHdpdGggdGhlIG5hdHVyYWwKKyAgICAg cHJvY2Vzc2luZyBvcmRlciBvZiBsX2luaXRmaW5pW10gYXQgZWFjaCBub2RlIGR1cmluZyBE RlMsIHRoaXMgbWFpbnRhaW5zCisgICAgIGFuIG9yZGVyaW5nIGNsb3NlciB0byB0aGUgb3Jp Z2luYWwgbGluayBvcmRlcmluZyBpbiB0aGUgc29ydGluZyByZXN1bHRzCisgICAgIHVuZGVy IG1vc3Qgc2ltcGxlciBjYXNlcy4KKworICAgICBBbm90aGVyIHJlYXNvbiB3ZSBvcmRlciB0 aGUgdG9wIGxldmVsIGJhY2t3YXJkcywgaXQgdGhhdCBtYXBzWzBdIGlzCisgICAgIHVzdWFs bHkgZXhhY3RseSB0aGUgbWFpbiBvYmplY3Qgb2Ygd2hpY2ggd2UncmUgaW4gdGhlIG1pZHN0 IG9mCisgICAgIF9kbF9tYXBfb2JqZWN0X2RlcHMoKSBwcm9jZXNzaW5nLCBhbmQgbWFwc1sw XS0+bF9pbml0ZmluaVtdIGlzIHN0aWxsCisgICAgIGJsYW5rLiBJZiB3ZSBzdGFydCB0aGUg dHJhdmVyc2FsIGZyb20gbWFwc1swXSwgc2luY2UgaGF2aW5nIG5vCisgICAgIGRlcGVuZGVu Y2llcyB5ZXQgZmlsbGVkIGluLCBtYXBzWzBdIHdpbGwgYWx3YXlzIGJlIGltbWVkaWF0ZWx5 CisgICAgIGluY29ycmVjdGx5IHBsYWNlZCBhdCB0aGUgbGFzdCBwbGFjZSBpbiB0aGUgb3Jk ZXIgKGZpcnN0IGluIHJldmVyc2UpLgorICAgICBBZGp1c3RpbmcgdGhlIG9yZGVyIHNvIHRo YXQgbWFwc1swXSBpcyBsYXN0IHRyYXZlcnNlZCBuYXR1cmFsbHkgYXZvaWRzCisgICAgIHRo aXMgcHJvYmxlbS4KKworICAgICBGdXJ0aGVyLCB0aGUgb2xkICJvcHRpbWl6YXRpb24iIG9m IHNraXBwaW5nIHRoZSBtYWluIG9iamVjdCBhdCBtYXBzWzBdCisgICAgIGZyb20gdGhlIGNh bGwtc2l0ZSAoaS5lLiBfZGxfc29ydF9tYXBzKG1hcHMrMSxubWFwcy0xKSkgaXMgaW4gZ2Vu ZXJhbAorICAgICBubyBsb25nZXIgdmFsaWQsIHNpbmNlIHRyYXZlcnNpbmcgYWxvbmcgb2Jq ZWN0IGRlcGVuZGVuY3ktbGlua3MKKyAgICAgbWF5ICJmaW5kIiB0aGUgbWFpbiBvYmplY3Qg ZXZlbiB3aGVuIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgaW5pdGlhbAorICAgICBvcmRl ciAoZS5nLiBhIGRsb3BlbigpJ2VkIHNoYXJlZCBvYmplY3QgY2FuIGhhdmUgY2lyY3VsYXIg ZGVwZW5kZW5jaWVzCisgICAgIGxpbmtlZCBiYWNrIHRvIGl0c2VsZikuIEluIHN1Y2ggYSBj YXNlLCB0cmF2ZXJzaW5nIE4tMSBvYmplY3RzIHdpbGwKKyAgICAgY3JlYXRlIGEgTi1vYmpl Y3QgcmVzdWx0LCBhbmQgcmFpc2UgcHJvYmxlbXMuCisKKyAgICAgVG8gc3VtbWFyaXplLCBq dXN0IHBhc3NpbmcgaW4gdGhlIGZ1bGwgbGlzdCwgYW5kIGl0ZXJhdGluZyBmcm9tIGJhY2sK KyAgICAgdG8gZnJvbnQgbWFrZXMgdGhpbmdzIG11Y2ggbW9yZSBzdHJhaWdodGZvcndhcmQu ICAqLworCisgIC8qIEFycmF5IHRvIGhvbGQgUlBPIHNvcnRpbmcgcmVzdWx0cywgYmVmb3Jl IHdlIGNvcHkgYmFjayB0byBtYXBzW10uICAqLworICBzdHJ1Y3QgbGlua19tYXAgKnJwb1tu bWFwc107CisKKyAgLyogVGhlICdoZWFkJyBwb3NpdGlvbiBkdXJpbmcgZWFjaCBERlMgaXRl cmF0aW9uLiBOb3RlIHRoYXQgd2Ugc3RhcnQgYXQKKyAgICAgb25lIHBhc3QgdGhlIGxhc3Qg ZWxlbWVudCBkdWUgdG8gZmlyc3QtZGVjcmVtZW50LXRoZW4tc3RvcmUgKHNlZSB0aGUKKyAg ICAgYm90dG9tIG9mIGFib3ZlIGRmc190cmF2ZXJzYWwoKSByb3V0aW5lKS4gICovCisgIHN0 cnVjdCBsaW5rX21hcCAqKnJwb19oZWFkID0gJnJwb1tubWFwc107CisKKyAgYm9vbCBkb19y ZWxkZXBzID0gZmFsc2U7CisgIGJvb2wgKmRvX3JlbGRlcHNfcmVmID0gKGZvcl9maW5pID8g JmRvX3JlbGRlcHMgOiBOVUxMKTsKKworICBmb3IgKGludCBpID0gbm1hcHMgLSAxOyBpID49 IDA7IGktLSkKKyAgICB7CisgICAgICBkZnNfdHJhdmVyc2FsICgmcnBvX2hlYWQsIG1hcHNb aV0sIGRvX3JlbGRlcHNfcmVmKTsKKworICAgICAgLyogV2UgY2FuIGJyZWFrIGVhcmx5IGlm IGFsbCBvYmplY3RzIGFyZSBhbHJlYWR5IHBsYWNlZC4gICovCisgICAgICBpZiAocnBvX2hl YWQgPT0gcnBvKQorCWdvdG8gZW5kOworICAgIH0KKyAgYXNzZXJ0IChycG9faGVhZCA9PSBy cG8pOworCisgZW5kOgorICAvKiBIZXJlIHdlIG1heSBkbyBhIHNlY29uZCBwYXNzIG9mIHNv cnRpbmcsIHVzaW5nIG9ubHkgbF9pbml0ZmluaVtdCisgICAgIHN0YXRpYyBkZXBlbmRlbmN5 IGxpbmtzLiBUaGlzIGlzIGF2b2lkZWQgaWYgIUZPUl9GSU5JIG9yIGlmIHdlIGRpZG4ndAor ICAgICBmaW5kIGFueSByZWxkZXBzIGluIHRoZSBmaXJzdCBERlMgdHJhdmVyc2FsLgorCisg ICAgIFRoZSByZWFzb24gd2UgZG8gdGhpcyBpczogd2hpbGUgaXQgaXMgdW5zcGVjaWZpZWQg aG93IGNpcmN1bGFyCisgICAgIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgaGFuZGxlZCwgdGhl IHByZXN1bWVkIHJlYXNvbmFibGUgYmVoYXZpb3IgaXMgdG8KKyAgICAgaGF2ZSBkZXN0cnVj dG9ycyB0byByZXNwZWN0IHN0YXRpYyBkZXBlbmRlbmN5IGxpbmtzIGFzIG11Y2ggYXMgcG9z c2libGUsCisgICAgIG92ZXJyaWRpbmcgcmVsZGVwcyBpZiBuZWVkZWQuIEFuZCB0aGUgZmly c3Qgc29ydGluZyBwYXNzLCB3aGljaCB0YWtlcworICAgICBsX2luaXRmaW5pL2xfcmVsZGVw cyBsaW5rcyBlcXVhbGx5LCBtYXkgbm90IHByZXNlcnZlIHRoaXMgcHJpb3JpdHkuCisKKyAg ICAgSGVuY2Ugd2UgZG8gYSAybmQgc29ydGluZyBwYXNzLCB0YWtpbmcgb25seSBEVF9ORUVE RUQgbGlua3MgaW50byBhY2NvdW50CisgICAgIChzZWUgaG93IHRoZSBkb19yZWxkZXBzIGFy Z3VtZW50IHRvIGRmc190cmF2ZXJzYWwoKSBpcyBOVUxMIGJlbG93KS4gICovCisgIGlmIChk b19yZWxkZXBzKQorICAgIHsKKyAgICAgIGZvciAoaW50IGkgPSBubWFwcyAtIDE7IGkgPj0g MDsgaS0tKQorCXJwb1tpXS0+bF92aXNpdGVkID0gMDsKKworICAgICAgc3RydWN0IGxpbmtf bWFwICoqbWFwc19oZWFkID0gJm1hcHNbbm1hcHNdOworICAgICAgZm9yIChpbnQgaSA9IG5t YXBzIC0gMTsgaSA+PSAwOyBpLS0pCisJeworCSAgZGZzX3RyYXZlcnNhbCAoJm1hcHNfaGVh ZCwgcnBvW2ldLCBOVUxMKTsKKworCSAgLyogV2UgY2FuIGJyZWFrIGVhcmx5IGlmIGFsbCBv YmplY3RzIGFyZSBhbHJlYWR5IHBsYWNlZC4KKwkgICAgIFRoZSBiZWxvdyBtZW1jcHkgaXMg bm90IG5lZWRlZCBpbiB0aGUgZG9fcmVsZGVwcyBjYXNlIGhlcmUsCisJICAgICBzaW5jZSB3 ZSB3cm90ZSBiYWNrIHRvIG1hcHNbXSBkdXJpbmcgREZTIHRyYXZlcnNhbC4gICovCisJICBp ZiAobWFwc19oZWFkID09IG1hcHMpCisJICAgIHJldHVybjsKKwl9CisgICAgICBhc3NlcnQg KG1hcHNfaGVhZCA9PSBtYXBzKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgbWVtY3B5 IChtYXBzLCBycG8sIHNpemVvZiAoc3RydWN0IGxpbmtfbWFwICopICogbm1hcHMpOworfQor Cit2b2lkCitfZGxfc29ydF9tYXBzX2luaXQgKHZvaWQpCit7CisgIGludDMyX3QgYWxnb3Jp dGhtID0gVFVOQUJMRV9HRVQgKGdsaWJjLCBydGxkLCBkeW5hbWljX3NvcnQsIGludDMyX3Qs IE5VTEwpOworICBHTFJPKGRsX2Rzb19zb3J0X2FsZ28pID0gYWxnb3JpdGhtID09IDEgPyBk c29fc29ydF9hbGdvcml0aG1fb3JpZ2luYWwKKwkJCQkJICA6IGRzb19zb3J0X2FsZ29yaXRo bV9kZnM7Cit9CisKK3ZvaWQKK19kbF9zb3J0X21hcHMgKHN0cnVjdCBsaW5rX21hcCAqKm1h cHMsIHVuc2lnbmVkIGludCBubWFwcywKKwkgICAgICAgdW5zaWduZWQgaW50IHNraXAsIGJv b2wgZm9yX2ZpbmkpCit7CisgIC8qIEl0IGNhbiBiZSB0ZW1wdGluZyB0byB1c2UgYSBzdGF0 aWMgZnVuY3Rpb24gcG9pbnRlciB0byBzdG9yZSBhbmQgY2FsbAorICAgICB0aGUgY3VycmVu dCBzZWxlY3RlZCBzb3J0aW5nIGFsZ29yaXRobSByb3V0aW5lLCBidXQgZXhwZXJpbWVudGF0 aW9uCisgICAgIHNob3dzIHRoYXQgY3VycmVudCBwcm9jZXNzb3JzIHN0aWxsIGRvIG5vdCBo YW5kbGUgaW5kaXJlY3QgYnJhbmNoZXMKKyAgICAgdGhhdCBlZmZpY2llbnRseSwgcGx1cyBh IHN0YXRpYyBmdW5jdGlvbiBwb2ludGVyIHdpbGwgaW52b2x2ZQorICAgICBQVFJfTUFOR0xF L0RFTUFOR0xFLCBmdXJ0aGVyIGltcGFpcmluZyBwZXJmb3JtYW5jZSBvZiBzbWFsbCwgY29t bW9uCisgICAgIGlucHV0IGNhc2VzLiBBIHNpbXBsZSBpZi1jYXNlIHdpdGggZGlyZWN0IGZ1 bmN0aW9uIGNhbGxzIGFwcGVhcnMgdG8KKyAgICAgYmUgdGhlIGZhc3Rlc3QuICAqLworICBp ZiAoX19nbGliY19saWtlbHkgKEdMUk8oZGxfZHNvX3NvcnRfYWxnbykgPT0gZHNvX3NvcnRf YWxnb3JpdGhtX29yaWdpbmFsKSkKKyAgICBfZGxfc29ydF9tYXBzX29yaWdpbmFsIChtYXBz LCBubWFwcywgc2tpcCwgZm9yX2ZpbmkpOworICBlbHNlCisgICAgX2RsX3NvcnRfbWFwc19k ZnMgKG1hcHMsIG5tYXBzLCBza2lwLCBmb3JfZmluaSk7Cit9CisKKyNlbmRpZiAvKiBIQVZF X1RVTkFCTEVTLiAgKi8KZGlmZiAtLWdpdCBhL2VsZi9kbC1zdXBwb3J0LmMgYi9lbGYvZGwt c3VwcG9ydC5jCmluZGV4IGQ5OWMxZjFkNjIuLjk4ZDVkOGRiNWMgMTAwNjQ0Ci0tLSBhL2Vs Zi9kbC1zdXBwb3J0LmMKKysrIGIvZWxmL2RsLXN1cHBvcnQuYwpAQCAtMTY2LDYgKzE2Niw4 IEBAIHNpemVfdCBfZGxfcGhudW07CiB1aW50NjRfdCBfZGxfaHdjYXA7CiB1aW50NjRfdCBf ZGxfaHdjYXAyOwogCitlbnVtIGRzb19zb3J0X2FsZ29yaXRobSBfZGxfZHNvX3NvcnRfYWxn bzsKKwogLyogVGhlIHZhbHVlIG9mIHRoZSBGUFUgY29udHJvbCB3b3JkIHRoZSBrZXJuZWwg d2lsbCBwcmVzZXQgaW4gaGFyZHdhcmUuICAqLwogZnB1X2NvbnRyb2xfdCBfZGxfZnB1X2Nv bnRyb2wgPSBfRlBVX0RFRkFVTFQ7CiAKZGlmZiAtLWdpdCBhL2VsZi9kbC1zeXNkZXAuYyBi L2VsZi9kbC1zeXNkZXAuYwppbmRleCAyYzY4NGMyZGIyLi40ZGMzNjZlZWE0IDEwMDY0NAot LS0gYS9lbGYvZGwtc3lzZGVwLmMKKysrIGIvZWxmL2RsLXN5c2RlcC5jCkBAIC0yMzEsNiAr MjMxLDkgQEAgX2RsX3N5c2RlcF9zdGFydCAodm9pZCAqKnN0YXJ0X2FyZ3B0ciwKIAogICBf X3R1bmFibGVzX2luaXQgKF9lbnZpcm9uKTsKIAorICAvKiBJbml0aWFsaXplIERTTyBzb3J0 aW5nIGFsZ29yaXRobSBhZnRlciB0dW5hYmxlcy4gICovCisgIF9kbF9zb3J0X21hcHNfaW5p dCAoKTsKKwogI2lmZGVmIERMX1NZU0RFUF9JTklUCiAgIERMX1NZU0RFUF9JTklUOwogI2Vu ZGlmCmRpZmYgLS1naXQgYS9lbGYvZGwtdHVuYWJsZXMubGlzdCBiL2VsZi9kbC10dW5hYmxl cy5saXN0CmluZGV4IDhkZGQ0YTIzMTQuLjQ2ZmZiMjM3ODQgMTAwNjQ0Ci0tLSBhL2VsZi9k bC10dW5hYmxlcy5saXN0CisrKyBiL2VsZi9kbC10dW5hYmxlcy5saXN0CkBAIC0xNTYsNCAr MTU2LDEzIEBAIGdsaWJjIHsKICAgICAgIHNlY3VyaXR5X2xldmVsOiBTWElEX0lHTk9SRQog ICAgIH0KICAgfQorCisgIHJ0bGQgeworICAgIGR5bmFtaWNfc29ydCB7CisgICAgICB0eXBl OiBJTlRfMzIKKyAgICAgIG1pbnZhbDogMQorICAgICAgbWF4dmFsOiAyCisgICAgICBkZWZh dWx0OiAxCisgICAgfQorICB9CiB9CmRpZmYgLS1naXQgYS9lbGYvZHNvLXNvcnQtdGVzdHMt MS5kZWYgYi9lbGYvZHNvLXNvcnQtdGVzdHMtMS5kZWYKaW5kZXggODczZGRmNTVkOS4uNWY3 ZjE4ZWYyNyAxMDA2NDQKLS0tIGEvZWxmL2Rzby1zb3J0LXRlc3RzLTEuZGVmCisrKyBiL2Vs Zi9kc28tc29ydC10ZXN0cy0xLmRlZgpAQCAtNjIsNSArNjIsNSBAQCBvdXRwdXQ6IGI+YT57 fTxhPGIKICMgVGhlIGJlbG93IGV4cGVjdGVkIG91dHB1dHMgYXJlIHdoYXQgdGhlIHR3byBh bGdvcml0aG1zIGN1cnJlbnRseSBwcm9kdWNlCiAjIHJlc3BlY3RpdmVseSwgZm9yIHJlZ3Jl c3Npb24gdGVzdGluZyBwdXJwb3Nlcy4KIHRzdC1iejE1MzExOiB7K2E7K2U7K2Y7K2c7K2Q7 JWQ7LWQ7LWc7LWY7LWU7LWF9O2EtPmItPmMtPmQ7ZD0+W2JhXTtjPT5hO2I9PmU9PmE7Yz0+ Zj0+YjtkPT5nPT5jCi14ZmFpbF9vdXRwdXQoZ2xpYmMucnRsZC5keW5hbWljX3NvcnQ9MSk6 IHsrYVtkPmM+Yj5hPl07K2VbZT5dOytmW2Y+XTsrZ1tnPl07K2RbXTslZChiKGUoYSgpKSlh KClnKGMoYSgpZihiKGUoYSgpKSkpKSkpOy1kW107LWdbXTstZltdOy1lW107LWFbPGE8Yzxk PGc8ZjxiPGVdO30KK291dHB1dChnbGliYy5ydGxkLmR5bmFtaWNfc29ydD0xKTogeythW2Q+ Yz5iPmE+XTsrZVtlPl07K2ZbZj5dOytnW2c+XTsrZFtdOyVkKGIoZShhKCkpKWEoKWcoYyhh KClmKGIoZShhKCkpKSkpKSk7LWRbXTstZ1tdOy1mW107LWVbXTstYVs8YTxjPGQ8ZzxmPGI8 ZV07fQogb3V0cHV0KGdsaWJjLnJ0bGQuZHluYW1pY19zb3J0PTIpOiB7K2FbZD5jPmI+YT5d OytlW2U+XTsrZltmPl07K2dbZz5dOytkW107JWQoYihlKGEoKSkpYSgpZyhjKGEoKWYoYihl KGEoKSkpKSkpKTstZFtdOy1nW107LWZbXTstZVtdOy1hWzxnPGY8YTxiPGM8ZDxlXTt9CmRp ZmYgLS1naXQgYS9lbGYvcnRsZC5jIGIvZWxmL3J0bGQuYwppbmRleCA2Y2ZiN2NmNjcyLi5j MzgyYTQ0OGU0IDEwMDY0NAotLS0gYS9lbGYvcnRsZC5jCisrKyBiL2VsZi9ydGxkLmMKQEAg LTEzOTAsNiArMTM5MCw5IEBAIGRsX21haW4gKGNvbnN0IEVsZlcoUGhkcikgKnBoZHIsCiAg ICAgICBtYWluX21hcC0+bF9uYW1lID0gKGNoYXIgKikgIiI7CiAgICAgICAqdXNlcl9lbnRy eSA9IG1haW5fbWFwLT5sX2VudHJ5OwogCisgICAgICAvKiBTZXQgYml0IGluZGljYXRpbmcg dGhpcyBpcyB0aGUgbWFpbiBwcm9ncmFtIG1hcC4gICovCisgICAgICBtYWluX21hcC0+bF9t YWluX21hcCA9IDE7CisKICNpZmRlZiBIQVZFX0FVWF9WRUNUT1IKICAgICAgIC8qIEFkanVz dCB0aGUgb24tc3RhY2sgYXV4aWxpYXJ5IHZlY3RvciBzbyB0aGF0IGl0IGxvb2tzIGxpa2Ug dGhlCiAJIGJpbmFyeSB3YXMgZXhlY3V0ZWQgZGlyZWN0bHkuICAqLwpkaWZmIC0tZ2l0IGEv ZWxmL3RzdC1ydGxkLWxpc3QtdHVuYWJsZXMuZXhwIGIvZWxmL3RzdC1ydGxkLWxpc3QtdHVu YWJsZXMuZXhwCmluZGV4IDlmNjZjNTI4ODUuLjliZjU3MjcxNWYgMTAwNjQ0Ci0tLSBhL2Vs Zi90c3QtcnRsZC1saXN0LXR1bmFibGVzLmV4cAorKysgYi9lbGYvdHN0LXJ0bGQtbGlzdC10 dW5hYmxlcy5leHAKQEAgLTEwLDUgKzEwLDYgQEAgZ2xpYmMubWFsbG9jLnRjYWNoZV9tYXg6 IDB4MCAobWluOiAweDAsIG1heDogMHhbZl0rKQogZ2xpYmMubWFsbG9jLnRjYWNoZV91bnNv cnRlZF9saW1pdDogMHgwIChtaW46IDB4MCwgbWF4OiAweFtmXSspCiBnbGliYy5tYWxsb2Mu dG9wX3BhZDogMHgwIChtaW46IDB4MCwgbWF4OiAweFtmXSspCiBnbGliYy5tYWxsb2MudHJp bV90aHJlc2hvbGQ6IDB4MCAobWluOiAweDAsIG1heDogMHhbZl0rKQorZ2xpYmMucnRsZC5k eW5hbWljX3NvcnQ6IDEgKG1pbjogMSwgbWF4OiAyKQogZ2xpYmMucnRsZC5ubnM6IDB4NCAo bWluOiAweDEsIG1heDogMHgxMCkKIGdsaWJjLnJ0bGQub3B0aW9uYWxfc3RhdGljX3Rsczog MHgyMDAgKG1pbjogMHgwLCBtYXg6IDB4W2ZdKykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu ay5oIGIvaW5jbHVkZS9saW5rLmgKaW5kZXggNDg0ZWU2Y2IxYi4uYzFjMzgyY2NmYSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW5rLmgKKysrIGIvaW5jbHVkZS9saW5rLmgKQEAgLTE4MSw2 ICsxODEsMTEgQEAgc3RydWN0IGxpbmtfbWFwCiAgICAgdW5zaWduZWQgaW50IGxfaW5pdF9j YWxsZWQ6MTsgLyogTm9uemVybyBpZiBEVF9JTklUIGZ1bmN0aW9uIGNhbGxlZC4gICovCiAg ICAgdW5zaWduZWQgaW50IGxfZ2xvYmFsOjE7CS8qIE5vbnplcm8gaWYgb2JqZWN0IGluIF9k bF9nbG9iYWxfc2NvcGUuICAqLwogICAgIHVuc2lnbmVkIGludCBsX3Jlc2VydmVkOjI7CS8q IFJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuICAqLworICAgIHVuc2lnbmVkIGludCBsX21h aW5fbWFwOjE7ICAvKiBOb256ZXJvIGZvciB0aGUgbWFwIG9mIHRoZSBtYWluIHByb2dyYW0u ICAqLworICAgIHVuc2lnbmVkIGludCBsX3Zpc2l0ZWQ6MTsgICAvKiBVc2VkIGludGVybmFs bHkgZm9yIG1hcCBkZXBlbmRlbmN5CisJCQkJICAgZ3JhcGggdHJhdmVyc2FsLiAgKi8KKyAg ICB1bnNpZ25lZCBpbnQgbF9tYXBfdXNlZDoxOyAgLyogVGhlc2UgdHdvIGJpdHMgYXJlIHVz ZWQgZHVyaW5nIHRyYXZlcnNhbCAqLworICAgIHVuc2lnbmVkIGludCBsX21hcF9kb25lOjE7 ICAvKiBvZiBtYXBzIGluIF9kbF9jbG9zZV93b3JrZXIuICovCiAgICAgdW5zaWduZWQgaW50 IGxfcGhkcl9hbGxvY2F0ZWQ6MTsgLyogTm9uemVybyBpZiB0aGUgZGF0YSBzdHJ1Y3R1cmUg cG9pbnRlZAogCQkJCQl0byBieSBgbF9waGRyJyBpcyBhbGxvY2F0ZWQuICAqLwogICAgIHVu c2lnbmVkIGludCBsX3NvbmFtZV9hZGRlZDoxOyAvKiBOb256ZXJvIGlmIHRoZSBTT05BTUUg aXMgZm9yIHN1cmUgaW4KZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9sZHNvZGVmcy5o IGIvc3lzZGVwcy9nZW5lcmljL2xkc29kZWZzLmgKaW5kZXggOWVjMTUxMWJiMC4uZDQxOGRm NDAxOSAxMDA2NDQKLS0tIGEvc3lzZGVwcy9nZW5lcmljL2xkc29kZWZzLmgKKysrIGIvc3lz ZGVwcy9nZW5lcmljL2xkc29kZWZzLmgKQEAgLTIzNSw2ICsyMzUsMTMgQEAgZW51bSBhbGxv d21hc2sKICAgfTsKIAogCisvKiBEU08gc29ydCBhbGdvcml0aG0gdG8gdXNlIChjaGVjayBk bC1zb3J0LW1hcHMuYykuICAqLworZW51bSBkc29fc29ydF9hbGdvcml0aG0KKyAgeworICAg IGRzb19zb3J0X2FsZ29yaXRobV9vcmlnaW5hbCwKKyAgICBkc29fc29ydF9hbGdvcml0aG1f ZGZzCisgIH07CisKIHN0cnVjdCBhdWRpdF9pZmFjZXMKIHsKICAgdm9pZCAoKmFjdGl2aXR5 KSAodWludHB0cl90ICosIHVuc2lnbmVkIGludCk7CkBAIC02NjgsNiArNjc1LDggQEAgc3Ry dWN0IHJ0bGRfZ2xvYmFsX3JvCiAgICAgIHBsYXRmb3Jtcy4gICovCiAgIEVYVEVSTiB1aW50 NjRfdCBfZGxfaHdjYXAyOwogCisgIEVYVEVSTiBlbnVtIGRzb19zb3J0X2FsZ29yaXRobSBf ZGxfZHNvX3NvcnRfYWxnbzsKKwogI2lmZGVmIFNIQVJFRAogICAvKiBXZSBhZGQgYSBmdW5j dGlvbiB0YWJsZSB0byBfcnRsZF9nbG9iYWwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvCiAgICAg IGNhbGwgdGhlIGZ1bmN0aW9uIGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgUExULiAg VGhlIHJlc3VsdApAQCAtMTA5NCw3ICsxMTAzLDcgQEAgZXh0ZXJuIHZvaWQgX2RsX2Zpbmkg KHZvaWQpIGF0dHJpYnV0ZV9oaWRkZW47CiAKIC8qIFNvcnQgYXJyYXkgTUFQUyBhY2NvcmRp bmcgdG8gZGVwZW5kZW5jaWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0cy4gICovCiBleHRl cm4gdm9pZCBfZGxfc29ydF9tYXBzIChzdHJ1Y3QgbGlua19tYXAgKiptYXBzLCB1bnNpZ25l ZCBpbnQgbm1hcHMsCi0JCQkgICBjaGFyICp1c2VkLCBib29sIGZvcl9maW5pKSBhdHRyaWJ1 dGVfaGlkZGVuOworCQkJICAgdW5zaWduZWQgaW50IHNraXAsIGJvb2wgZm9yX2ZpbmkpIGF0 dHJpYnV0ZV9oaWRkZW47CiAKIC8qIFRoZSBkeW5hbWljIGxpbmtlciBjYWxscyB0aGlzIGZ1 bmN0aW9uIGJlZm9yZSBhbmQgaGF2aW5nIGNoYW5naW5nCiAgICBhbnkgc2hhcmVkIG9iamVj dCBtYXBwaW5ncy4gIFRoZSBgcl9zdGF0ZScgbWVtYmVyIG9mIGBzdHJ1Y3Qgcl9kZWJ1ZycK QEAgLTEyMjUsNiArMTIzNCw5IEBAIGV4dGVybiBzdHJ1Y3QgbGlua19tYXAgKiBfZGxfZ2V0 X2RsX21haW5fbWFwICh2b2lkKQogIyBlbmRpZgogI2VuZGlmCiAKKy8qIEluaXRpYWxpemUg dGhlIERTTyBzb3J0IGFsZ29yaXRobSB0byB1c2UuICAqLworZXh0ZXJuIHZvaWQgX2RsX3Nv cnRfbWFwc19pbml0ICh2b2lkKSBhdHRyaWJ1dGVfaGlkZGVuOworCiAvKiBJbml0aWFsaXph dGlvbiBvZiBsaWJwdGhyZWFkIGZvciBzdGF0aWNhbGx5IGxpbmtlZCBhcHBsaWNhdGlvbnMu CiAgICBJZiBsaWJwdGhyZWFkIGlzIG5vdCBsaW5rZWQgaW4sIHRoaXMgaXMgYW4gZW1wdHkg ZnVuY3Rpb24uICAqLwogdm9pZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsICh2b2lk KSB3ZWFrX2Z1bmN0aW9uOwo= --------------sqIxhrhzkpLpYEo0CfXkR9N4--