From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 8ABCA398203B for ; Tue, 20 Jul 2021 14:25:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8ABCA398203B 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: Nc/QhQv8beLu3mB9uz4ds9wO6IsQBLHqchZztL8WKF3xoAO1Jg393OZFaA6aRTZ10f1HuhIxzO p0VmBj1vLRtF1eQsNUMoQy7tU7X/4azd6q2xzZawvYHjQtLmOVIq7tlV4wY8Eh+kc8XU6UHOfg 4i5HzObm1BP0uPA+6zlzaommllToMy5nMaRMHNwLnnB/XkMz1BrB6ZXoxiKX1WNkmn8GVpBtkk kpHPbdpkSkxJACX/UrG7xFvOQJ6GTcHogaq1ooOJxPlSHZQMMjt1GTiX0OeLI0dxsghhGTjcxW zYtJ+esOxtV+Q+khDKrqT+XA X-IronPort-AV: E=Sophos;i="5.84,254,1620720000"; d="scan'208";a="63726307" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 20 Jul 2021 06:25:24 -0800 IronPort-SDR: 7ug8+p60pZ5qFTjZi1v6jZApMCzSBUeXHCiS48Tx4I2QjzNkLBW1vEQprRYjK15LWA+0wHVhhH kHHao+yL8HPhhGb204OgGZNR7vx2nbTQP3bbpOI597+pxv/0zZeKWSXzsNd5d9QIa7GXy1LHQg OCdoDVv7fHyFjhZ3THZ0Ty52K97+lJkhR1ipc1SpsoI/yEjJdpb94SeZcWaAhO95sbaZz0ZhA5 cD8gbGJIr9d5eM4O/A4Msk49O3baK/nATvuFmKM+bD4jbCCGVNO8H0d2Nsk2h7NEakIPbRBNj1 Mdk= From: Chung-Lin Tang Subject: [PATCH v6 2/2] BZ #17645, fix slow DSO sorting behavior in dynamic loader -- Algorithm changes To: GNU C Library , Florian Weimer Message-ID: <30aa9fbd-fc08-9a6f-d34b-accb47abd8af@codesourcery.com> Date: Tue, 20 Jul 2021 22:25:17 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------BDBA544A487057756615FCAE" Content-Language: en-US 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-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org 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: , X-List-Received-Date: Tue, 20 Jul 2021 14:25:28 -0000 --------------BDBA544A487057756615FCAE Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Florian, This is v6 of the algorithms part of the patch set. (there was no v5, I've bumped my version reference to be in sync with the v6 testing patch) Besides the nits you noted, which should be fixed, the main issues you raised in the last review round were: 1) Keeping the main program at the first of the sorting results. The raised concerns that may interact with this include: a) main executable having a soname b) constructors for the main executable hardwired to run last in elf/dl-init.c I've fixed this by introducing a new bit-field in struct link_map, literally 'l_main_map' that is set only for the main executable (I am not aware of another bit that provides the same condition). The algorithm adjustments are also quite elegant: the condition for DFS traversal is now "l_visited == 0 && l_main_map == 0", which will ensure that the map for the main program will always be placed at the start of the sorting results, when it will be at the rpo_head of the last call to dfs_traversal. I've placed l_main_map together with l_visited inside struct link_map, to enable compiler optimizations to extract those bits together and combine the zero-test of both bits. I've added a new tst-dso-ordering10 test in the Testing Infrastructure patch, that uses the soname feature to test: tst-dso-ordering10: {}->a->b->c;soname({})=c # main program has soname of 'c' output: b>a>{} [BZ #17645] [BZ #15311] [BZ #15310] * elf/dl-close.c (_dl_close_worker): Remove used[], done[] char arrays, use l_map_used/l_map_done bitfields instead. Adjust call to _dl_sort_maps. * elf/dl-deps.c (_dl_map_object_deps): Adjust call to _dl_sort_maps. * elf/dl-fini.c (_dl_fini): Likewise. * elf/dl-sort_maps.c (_dl_sort_maps_original): Adapted from original _dl_sort_maps. (dfs_traversal): New static function. (_dl_sort_maps_dfs): New Reverse-Postorder (RPO) based implementation. (_dl_sort_maps): Select and call either _dl_sort_maps_original or _dl_sort_maps_dfs based on glibc.rtld.dynamic_sort. * elf/dl-tunables.list (rtld): New namespace with tunable 'dynamic_sort'. * elf/tst-rtld-list-tunables.exp (glibc.rtld.dynamic_sort): Add new tunable parameters. * elf/rtld.c (dl_main): Initialize main_map->l_main_map bit to 1. * include/link.h (struct link_map): Add l_main_map:1, l_visited:1, l_map_used:1, and l_map_done:1 bitfields. * sysdeps/generic/ldsodefs.h (_dl_sort_maps): Adjust declaration. --------------BDBA544A487057756615FCAE Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="dlsort-02-changes-v6.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dlsort-02-changes-v6.patch" ZGlmZiAtLWdpdCBhL2VsZi9kbC1jbG9zZS5jIGIvZWxmL2RsLWNsb3NlLmMKaW5kZXggZjM5 MDAxY2FiOS4uYTU1YjNhMDBmYSAxMDA2NDQKLS0tIGEvZWxmL2RsLWNsb3NlLmMKKysrIGIv 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 NTcsNyArNTUxLDcgQEAgX2RsX2Nsb3NlX3dvcmtlciAoc3RydWN0IGxpbmtfbWFwICptYXAs 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 c29ydC1tYXBzLmMKaW5kZXggZDIxNzcwMjY3YS4uOTFjNTAwOWFjNCAxMDA2NDQKLS0tIGEv ZWxmL2RsLXNvcnQtbWFwcy5jCisrKyBiL2VsZi9kbC1zb3J0LW1hcHMuYwpAQCAtMTYsMTYg KzE2LDI0IEBACiAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlm IG5vdCwgc2VlCiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAor I2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGxkc29kZWZzLmg+CisjaW5jbHVkZSA8 ZWxmL2RsLXR1bmFibGVzLmg+CiAKKy8qIE5vdGU6IHRoaXMgaXMgdGhlIG9sZGVyLCAib3Jp Z2luYWwiIHNvcnRpbmcgYWxnb3JpdGhtLCBiZWluZyB1c2VkIGFzCisgICBkZWZhdWx0IHVw IHRvIDIuMzIuCiAKLS8qIFNvcnQgYXJyYXkgTUFQUyBhY2NvcmRpbmcgdG8gZGVwZW5kZW5j 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 Cit2b2lkCitfZGxfc29ydF9tYXBzIChzdHJ1Y3QgbGlua19tYXAgKiptYXBzLCB1bnNpZ25l ZCBpbnQgbm1hcHMsCisJICAgICAgIHVuc2lnbmVkIGludCBza2lwLCBib29sIGZvcl9maW5p KQoreworICAvKiBJbmRleCBjb2RlIGZvciBzb3J0aW5nIGFsZ29yaXRobSBjdXJyZW50bHkg aW4gdXNlLiAgKi8KKyAgc3RhdGljIGludDMyX3QgYWxnb3JpdGhtID0gMDsKKyAgaWYgKF9f Z2xpYmNfdW5saWtlbHkgKGFsZ29yaXRobSA9PSAwKSkKKyAgICBhbGdvcml0aG0gPSBUVU5B QkxFX0dFVCAoZ2xpYmMsIHJ0bGQsIGR5bmFtaWNfc29ydCwKKwkJCSAgICAgaW50MzJfdCwg TlVMTCk7CisKKyAgLyogSXQgY2FuIGJlIHRlbXB0aW5nIHRvIHVzZSBhIHN0YXRpYyBmdW5j dGlvbiBwb2ludGVyIHRvIHN0b3JlIGFuZCBjYWxsCisgICAgIHRoZSBjdXJyZW50IHNlbGVj dGVkIHNvcnRpbmcgYWxnb3JpdGhtIHJvdXRpbmUsIGJ1dCBleHBlcmltZW50YXRpb24KKyAg ICAgc2hvd3MgdGhhdCBjdXJyZW50IHByb2Nlc3NvcnMgc3RpbGwgZG8gbm90IGhhbmRsZSBp bmRpcmVjdCBicmFuY2hlcworICAgICB0aGF0IGVmZmljaWVudGx5LCBwbHVzIGEgc3RhdGlj IGZ1bmN0aW9uIHBvaW50ZXIgd2lsbCBpbnZvbHZlCisgICAgIFBUUl9NQU5HTEUvREVNQU5H TEUsIGZ1cnRoZXIgaW1wYWlyaW5nIHBlcmZvcm1hbmNlIG9mIHNtYWxsLCBjb21tb24KKyAg ICAgaW5wdXQgY2FzZXMuIEEgc2ltcGxlIGlmLWNhc2Ugd2l0aCBkaXJlY3QgZnVuY3Rpb24g Y2FsbHMgYXBwZWFycyB0bworICAgICBiZSB0aGUgZmFzdGVzdC4gICovCisgIGlmIChfX2ds aWJjX2xpa2VseSAoYWxnb3JpdGhtID09IDEpKQorICAgIF9kbF9zb3J0X21hcHNfb3JpZ2lu YWwgKG1hcHMsIG5tYXBzLCBza2lwLCBmb3JfZmluaSk7CisgIGVsc2UgaWYgKGFsZ29yaXRo bSA9PSAyKQorICAgIF9kbF9zb3J0X21hcHNfZGZzIChtYXBzLCBubWFwcywgc2tpcCwgZm9y X2ZpbmkpOworICBlbHNlCisgICAgX19idWlsdGluX3VucmVhY2hhYmxlICgpOworfQorCisj ZW5kaWYgLyogSEFWRV9UVU5BQkxFUy4gICovCmRpZmYgLS1naXQgYS9lbGYvZGwtdHVuYWJs ZXMubGlzdCBiL2VsZi9kbC10dW5hYmxlcy5saXN0CmluZGV4IDhkZGQ0YTIzMTQuLjQ2ZmZi MjM3ODQgMTAwNjQ0Ci0tLSBhL2VsZi9kbC10dW5hYmxlcy5saXN0CisrKyBiL2VsZi9kbC10 dW5hYmxlcy5saXN0CkBAIC0xNTYsNCArMTU2LDEzIEBAIGdsaWJjIHsKICAgICAgIHNlY3Vy aXR5X2xldmVsOiBTWElEX0lHTk9SRQogICAgIH0KICAgfQorCisgIHJ0bGQgeworICAgIGR5 bmFtaWNfc29ydCB7CisgICAgICB0eXBlOiBJTlRfMzIKKyAgICAgIG1pbnZhbDogMQorICAg ICAgbWF4dmFsOiAyCisgICAgICBkZWZhdWx0OiAxCisgICAgfQorICB9CiB9CmRpZmYgLS1n aXQgYS9lbGYvcnRsZC5jIGIvZWxmL3J0bGQuYwppbmRleCBkNzMzMzU5ZWFmLi5hYmRjMTNj MTNhIDEwMDY0NAotLS0gYS9lbGYvcnRsZC5jCisrKyBiL2VsZi9ydGxkLmMKQEAgLTEzODks NiArMTM4OSw5IEBAIGRsX21haW4gKGNvbnN0IEVsZlcoUGhkcikgKnBoZHIsCiAgICAgICBt YWluX21hcC0+bF9uYW1lID0gKGNoYXIgKikgIiI7CiAgICAgICAqdXNlcl9lbnRyeSA9IG1h aW5fbWFwLT5sX2VudHJ5OwogCisgICAgICAvKiBTZXQgYml0IGluZGljYXRpbmcgdGhpcyBp cyB0aGUgbWFpbiBwcm9ncmFtIG1hcC4gICovCisgICAgICBtYWluX21hcC0+bF9tYWluX21h cCA9IDE7CisKICNpZmRlZiBIQVZFX0FVWF9WRUNUT1IKICAgICAgIC8qIEFkanVzdCB0aGUg b24tc3RhY2sgYXV4aWxpYXJ5IHZlY3RvciBzbyB0aGF0IGl0IGxvb2tzIGxpa2UgdGhlCiAJ IGJpbmFyeSB3YXMgZXhlY3V0ZWQgZGlyZWN0bHkuICAqLwpkaWZmIC0tZ2l0IGEvZWxmL3Rz dC1ydGxkLWxpc3QtdHVuYWJsZXMuZXhwIGIvZWxmL3RzdC1ydGxkLWxpc3QtdHVuYWJsZXMu ZXhwCmluZGV4IDlmNjZjNTI4ODUuLjliZjU3MjcxNWYgMTAwNjQ0Ci0tLSBhL2VsZi90c3Qt cnRsZC1saXN0LXR1bmFibGVzLmV4cAorKysgYi9lbGYvdHN0LXJ0bGQtbGlzdC10dW5hYmxl cy5leHAKQEAgLTEwLDUgKzEwLDYgQEAgZ2xpYmMubWFsbG9jLnRjYWNoZV9tYXg6IDB4MCAo bWluOiAweDAsIG1heDogMHhbZl0rKQogZ2xpYmMubWFsbG9jLnRjYWNoZV91bnNvcnRlZF9s aW1pdDogMHgwIChtaW46IDB4MCwgbWF4OiAweFtmXSspCiBnbGliYy5tYWxsb2MudG9wX3Bh ZDogMHgwIChtaW46IDB4MCwgbWF4OiAweFtmXSspCiBnbGliYy5tYWxsb2MudHJpbV90aHJl c2hvbGQ6IDB4MCAobWluOiAweDAsIG1heDogMHhbZl0rKQorZ2xpYmMucnRsZC5keW5hbWlj X3NvcnQ6IDEgKG1pbjogMSwgbWF4OiAyKQogZ2xpYmMucnRsZC5ubnM6IDB4NCAobWluOiAw eDEsIG1heDogMHgxMCkKIGdsaWJjLnJ0bGQub3B0aW9uYWxfc3RhdGljX3RsczogMHgyMDAg KG1pbjogMHgwLCBtYXg6IDB4W2ZdKykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGluay5oIGIv aW5jbHVkZS9saW5rLmgKaW5kZXggNGFmMTZjYjU5Ni4uNTBmNDVkYjI0MyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW5rLmgKKysrIGIvaW5jbHVkZS9saW5rLmgKQEAgLTE4MSw2ICsxODEs MTEgQEAgc3RydWN0IGxpbmtfbWFwCiAgICAgdW5zaWduZWQgaW50IGxfaW5pdF9jYWxsZWQ6 MTsgLyogTm9uemVybyBpZiBEVF9JTklUIGZ1bmN0aW9uIGNhbGxlZC4gICovCiAgICAgdW5z aWduZWQgaW50IGxfZ2xvYmFsOjE7CS8qIE5vbnplcm8gaWYgb2JqZWN0IGluIF9kbF9nbG9i YWxfc2NvcGUuICAqLwogICAgIHVuc2lnbmVkIGludCBsX3Jlc2VydmVkOjI7CS8qIFJlc2Vy dmVkIGZvciBpbnRlcm5hbCB1c2UuICAqLworICAgIHVuc2lnbmVkIGludCBsX21haW5fbWFw OjE7ICAvKiBOb256ZXJvIGZvciB0aGUgbWFwIG9mIHRoZSBtYWluIHByb2dyYW0uICAqLwor ICAgIHVuc2lnbmVkIGludCBsX3Zpc2l0ZWQ6MTsgICAvKiBVc2VkIGludGVybmFsbHkgZm9y IG1hcCBkZXBlbmRlbmN5CisJCQkJICAgZ3JhcGggdHJhdmVyc2FsLiAgKi8KKyAgICB1bnNp Z25lZCBpbnQgbF9tYXBfdXNlZDoxOyAgLyogVGhlc2UgdHdvIGJpdHMgYXJlIHVzZWQgZHVy aW5nIHRyYXZlcnNhbCAqLworICAgIHVuc2lnbmVkIGludCBsX21hcF9kb25lOjE7ICAvKiBv ZiBtYXBzIGluIF9kbF9jbG9zZV93b3JrZXIuICovCiAgICAgdW5zaWduZWQgaW50IGxfcGhk cl9hbGxvY2F0ZWQ6MTsgLyogTm9uemVybyBpZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgcG9pbnRl ZAogCQkJCQl0byBieSBgbF9waGRyJyBpcyBhbGxvY2F0ZWQuICAqLwogICAgIHVuc2lnbmVk IGludCBsX3NvbmFtZV9hZGRlZDoxOyAvKiBOb256ZXJvIGlmIHRoZSBTT05BTUUgaXMgZm9y IHN1cmUgaW4KZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9sZHNvZGVmcy5oIGIvc3lz ZGVwcy9nZW5lcmljL2xkc29kZWZzLmgKaW5kZXggOWMxNTI1OTIzNi4uYWQ0OGEwZDdkYSAx MDA2NDQKLS0tIGEvc3lzZGVwcy9nZW5lcmljL2xkc29kZWZzLmgKKysrIGIvc3lzZGVwcy9n ZW5lcmljL2xkc29kZWZzLmgKQEAgLTEwODQsNyArMTA4NCw3IEBAIGV4dGVybiB2b2lkIF9k bF9maW5pICh2b2lkKSBhdHRyaWJ1dGVfaGlkZGVuOwogCiAvKiBTb3J0IGFycmF5IE1BUFMg YWNjb3JkaW5nIHRvIGRlcGVuZGVuY2llcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHMuICAq LwogZXh0ZXJuIHZvaWQgX2RsX3NvcnRfbWFwcyAoc3RydWN0IGxpbmtfbWFwICoqbWFwcywg dW5zaWduZWQgaW50IG5tYXBzLAotCQkJICAgY2hhciAqdXNlZCwgYm9vbCBmb3JfZmluaSkg YXR0cmlidXRlX2hpZGRlbjsKKwkJCSAgIHVuc2lnbmVkIGludCBza2lwLCBib29sIGZvcl9m aW5pKSBhdHRyaWJ1dGVfaGlkZGVuOwogCiAvKiBUaGUgZHluYW1pYyBsaW5rZXIgY2FsbHMg dGhpcyBmdW5jdGlvbiBiZWZvcmUgYW5kIGhhdmluZyBjaGFuZ2luZwogICAgYW55IHNoYXJl ZCBvYmplY3QgbWFwcGluZ3MuICBUaGUgYHJfc3RhdGUnIG1lbWJlciBvZiBgc3RydWN0IHJf ZGVidWcnCg== --------------BDBA544A487057756615FCAE--