From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 7C507385480B for ; Sun, 3 Jan 2021 11:22:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7C507385480B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ChungLin_Tang@mentor.com IronPort-SDR: cz+bsKhTL2mY8d0uSqiX607O4w0FI1bBBpDxzaEhT0B70KTt1Ve+3ZGwZG3mRLaFOdMqv5sNzw UjEWjJclQZ1lMY3tVG0xyOVCGVMxskoMCWc/HVpKZAxPFNgZMyIP+zZrdCPmzyw48Zj9atzqwQ SqGIRw52HTO5X+TM21Okx63kXsACzHA0wiOxxJCUPG60Oyhe2mOrcw+k5/ivBYodXU9o8nLHas BHDVt+DUK9coFjTYDxR6E37tEOmyEx4cLyD9FEA5fWRVnJ4wOiHaClqHsxuUvKns521/q8cBgY HqY= X-IronPort-AV: E=Sophos;i="5.78,471,1599552000"; d="scan'208";a="56720429" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 03 Jan 2021 03:22:54 -0800 IronPort-SDR: Ike9mhuvOrKA5U7KwT4V/HalG0OcKGiiGv4xQhNYZJNHGdWB5Oe2GMfF8/CEipGxsTPVsBZyPA Ah8k+g0dVH7bbYMa6drIlMrIiRdGfC6l5iLB3v6dSN6kp8EGS9Z1TpXqG7yhsRIOOeSG2yuic+ rHmQYOjHvADAyz4XtaNLV016+ALhNEO1EhlIEwWnFr619KjeThkATBNGOLWyMkeQxMetCSwaVi fgpDMa7+3wABaIPlxbkuJ1vG5WxZtk9FK/8SvDb1iaaqG0lT20ReTTCE5OvIByAWyo7v2BAA8V Qck= From: Chung-Lin Tang Subject: [PATCH v4 2/2] BZ #17645, fix slow DSO sorting behavior in dynamic loader -- Algorithm changes To: GNU C Library , Carlos O'Donell Message-ID: <85ab188b-64c2-d1fd-33fa-d7d2e6fb2d97@codesourcery.com> Date: Sun, 3 Jan 2021 19:22:48 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------6D58F5ACFD455A08ACA3A864" Content-Language: en-US X-ClientProxiedBy: svr-orw-mbx-01.mgc.mentorg.com (147.34.90.201) To svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) X-Spam-Status: No, score=-10.3 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.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Sun, 03 Jan 2021 11:22:58 -0000 --------------6D58F5ACFD455A08ACA3A864 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Carlos, the sorting algorithm code portions of the patch has not been updated a lot for this v4 version, mainly a rebase of v3 to current master. Here was the v3 version for reference (responded to some v2 issues there). Unfortunately this one never seemed to got a review, though it seems the main issues were in the testing infrastructure patch. https://sourceware.org/pipermail/libc-alpha/2020-July/116546.html Note that in the attached patch, I still have the old sorting algorithm set as default, the more "conservative" setting. This can be adjusted if deemed appropriate when patch is approved. Tested current master on x86_64-linux with no regressions, seeking approval for getting this into 2.33. Thanks, Chung-Lin 2021-01-03 Chung-Lin Tang [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'. * include/link.h (struct link_map): Add l_visited:1, l_map_used:1, and l_map_done:1 bitfields. * sysdeps/generic/ldsodefs.h (_dl_sort_maps): Adjust declaration. --------------6D58F5ACFD455A08ACA3A864 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="dlsort-02-changes-v4.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dlsort-02-changes-v4.patch" ZGlmZiAtLWdpdCBhL2VsZi9kbC1jbG9zZS5jIGIvZWxmL2RsLWNsb3NlLmMKaW5kZXggYzUx YmVjZDA2Yi4uODRkMjVhMjlkMCAxMDA2NDQKLS0tIGEvZWxmL2RsLWNsb3NlLmMKKysrIGIv ZWxmL2RsLWNsb3NlLmMKQEAgLTE2NCw4ICsxNjQsNiBAQCBfZGxfY2xvc2Vfd29ya2VyIChz dHJ1Y3QgbGlua19tYXAgKm1hcCwgYm9vbCBmb3JjZSkKIAogICBib29sIGFueV90bHMgPSBm YWxzZTsKICAgY29uc3QgdW5zaWduZWQgaW50IG5sb2FkZWQgPSBucy0+X25zX25sb2FkZWQ7 Ci0gIGNoYXIgdXNlZFtubG9hZGVkXTsKLSAgY2hhciBkb25lW25sb2FkZWRdOwogICBzdHJ1 Y3QgbGlua19tYXAgKm1hcHNbbmxvYWRlZF07CiAKICAgLyogUnVuIG92ZXIgdGhlIGxpc3Qg YW5kIGFzc2lnbiBpbmRleGVzIHRvIHRoZSBsaW5rIG1hcHMgYW5kIGVudGVyCkBAIC0xNzMs MjQgKzE3MSwyMSBAQCBfZGxfY2xvc2Vfd29ya2VyIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwg Ym9vbCBmb3JjZSkKICAgaW50IGlkeCA9IDA7CiAgIGZvciAoc3RydWN0IGxpbmtfbWFwICps ID0gbnMtPl9uc19sb2FkZWQ7IGwgIT0gTlVMTDsgbCA9IGwtPmxfbmV4dCkKICAgICB7Cisg ICAgICBsLT5sX21hcF91c2VkID0gMDsKKyAgICAgIGwtPmxfbWFwX2RvbmUgPSAwOwogICAg ICAgbC0+bF9pZHggPSBpZHg7CiAgICAgICBtYXBzW2lkeF0gPSBsOwogICAgICAgKytpZHg7 Ci0KICAgICB9CiAgIGFzc2VydCAoaWR4ID09IG5sb2FkZWQpOwogCi0gIC8qIFByZXBhcmUg dGhlIGJpdG1hcHMuICAqLwotICBtZW1zZXQgKHVzZWQsICdcMCcsIHNpemVvZiAodXNlZCkp OwotICBtZW1zZXQgKGRvbmUsICdcMCcsIHNpemVvZiAoZG9uZSkpOwotCiAgIC8qIEtlZXAg dHJhY2sgb2YgdGhlIGxvd2VzdCBpbmRleCBsaW5rIG1hcCB3ZSBoYXZlIGNvdmVyZWQgYWxy ZWFkeS4gICovCiAgIGludCBkb25lX2luZGV4ID0gLTE7CiAgIHdoaWxlICgrK2RvbmVfaW5k ZXggPCBubG9hZGVkKQogICAgIHsKICAgICAgIHN0cnVjdCBsaW5rX21hcCAqbCA9IG1hcHNb ZG9uZV9pbmRleF07CiAKLSAgICAgIGlmIChkb25lW2RvbmVfaW5kZXhdKQorICAgICAgaWYg KGwtPmxfbWFwX2RvbmUpCiAJLyogQWxyZWFkeSBoYW5kbGVkLiAgKi8KIAljb250aW51ZTsK IApAQCAtMjAxLDEyICsxOTYsMTIgQEAgX2RsX2Nsb3NlX3dvcmtlciAoc3RydWN0IGxpbmtf bWFwICptYXAsIGJvb2wgZm9yY2UpCiAJICAvKiBTZWUgQ09OQ1VSUkVOQ1kgTk9URVMgaW4g Y3hhX3RocmVhZF9hdGV4aXRfaW1wbC5jIHRvIGtub3cgd2h5CiAJICAgICBhY3F1aXJlIGlz IHN1ZmZpY2llbnQgYW5kIGNvcnJlY3QuICAqLwogCSAgJiYgYXRvbWljX2xvYWRfYWNxdWly ZSAoJmwtPmxfdGxzX2R0b3JfY291bnQpID09IDAKLQkgICYmICF1c2VkW2RvbmVfaW5kZXhd KQorCSAgJiYgIWwtPmxfbWFwX3VzZWQpCiAJY29udGludWU7CiAKICAgICAgIC8qIFdlIG5l ZWQgdGhpcyBvYmplY3QgYW5kIHdlIGhhbmRsZSBpdCBub3cuICAqLwotICAgICAgZG9uZVtk b25lX2luZGV4XSA9IDE7Ci0gICAgICB1c2VkW2RvbmVfaW5kZXhdID0gMTsKKyAgICAgIGwt PmxfbWFwX3VzZWQgPSAxOworICAgICAgbC0+bF9tYXBfZG9uZSA9IDE7CiAgICAgICAvKiBT aWduYWwgdGhlIG9iamVjdCBpcyBzdGlsbCBuZWVkZWQuICAqLwogICAgICAgbC0+bF9pZHgg PSBJRFhfU1RJTExfVVNFRDsKIApAQCAtMjIyLDkgKzIxNyw5IEBAIF9kbF9jbG9zZV93b3Jr ZXIgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNlKQogCQl7CiAJCSAgYXNzZXJ0 ICgoKmxwKS0+bF9pZHggPj0gMCAmJiAoKmxwKS0+bF9pZHggPCBubG9hZGVkKTsKIAotCQkg IGlmICghdXNlZFsoKmxwKS0+bF9pZHhdKQorCQkgIGlmICghKCpscCktPmxfbWFwX3VzZWQp CiAJCSAgICB7Ci0JCSAgICAgIHVzZWRbKCpscCktPmxfaWR4XSA9IDE7CisJCSAgICAgICgq bHApLT5sX21hcF91c2VkID0gMTsKIAkJICAgICAgLyogSWYgd2UgbWFya2VkIGEgbmV3IG9i amVjdCBhcyB1c2VkLCBhbmQgd2UndmUKIAkJCSBhbHJlYWR5IHByb2Nlc3NlZCBpdCwgdGhl biB3ZSBuZWVkIHRvIGdvIGJhY2sKIAkJCSBhbmQgcHJvY2VzcyBhZ2FpbiBmcm9tIHRoYXQg cG9pbnQgZm9yd2FyZCB0bwpAQCAtMjQ3LDkgKzI0Miw5IEBAIF9kbF9jbG9zZV93b3JrZXIg KHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNlKQogCSAgICAgIHsKIAkJYXNzZXJ0 IChqbWFwLT5sX2lkeCA+PSAwICYmIGptYXAtPmxfaWR4IDwgbmxvYWRlZCk7CiAKLQkJaWYg KCF1c2VkW2ptYXAtPmxfaWR4XSkKKwkJaWYgKCFqbWFwLT5sX21hcF91c2VkKQogCQkgIHsK LQkJICAgIHVzZWRbam1hcC0+bF9pZHhdID0gMTsKKwkJICAgIGptYXAtPmxfbWFwX3VzZWQg PSAxOwogCQkgICAgaWYgKGptYXAtPmxfaWR4IC0gMSA8IGRvbmVfaW5kZXgpCiAJCSAgICAg IGRvbmVfaW5kZXggPSBqbWFwLT5sX2lkeCAtIDE7CiAJCSAgfQpAQCAtMjU5LDggKzI1NCw3 IEBAIF9kbF9jbG9zZV93b3JrZXIgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBib29sIGZvcmNl KQogCiAgIC8qIFNvcnQgdGhlIGVudHJpZXMuICBXZSBjYW4gc2tpcCBsb29raW5nIGZvciB0 aGUgYmluYXJ5IGl0c2VsZiB3aGljaCBpcwogICAgICBhdCB0aGUgZnJvbnQgb2YgdGhlIHNl YXJjaCBsaXN0IGZvciB0aGUgbWFpbiBuYW1lc3BhY2UuICAqLwotICBfZGxfc29ydF9tYXBz IChtYXBzICsgKG5zaWQgPT0gTE1fSURfQkFTRSksIG5sb2FkZWQgLSAobnNpZCA9PSBMTV9J RF9CQVNFKSwKLQkJIHVzZWQgKyAobnNpZCA9PSBMTV9JRF9CQVNFKSwgdHJ1ZSk7CisgIF9k bF9zb3J0X21hcHMgKG1hcHMsIG5sb2FkZWQsIChuc2lkID09IExNX0lEX0JBU0UpLCB0cnVl KTsKIAogICAvKiBDYWxsIGFsbCB0ZXJtaW5hdGlvbiBmdW5jdGlvbnMgYXQgb25jZS4gICov CiAjaWZkZWYgU0hBUkVECkBAIC0yNzcsNyArMjcxLDcgQEAgX2RsX2Nsb3NlX3dvcmtlciAo c3RydWN0IGxpbmtfbWFwICptYXAsIGJvb2wgZm9yY2UpCiAgICAgICAvKiBBbGwgZWxlbWVu dHMgbXVzdCBiZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UuICAqLwogICAgICAgYXNzZXJ0IChp bWFwLT5sX25zID09IG5zaWQpOwogCi0gICAgICBpZiAoIXVzZWRbaV0pCisgICAgICBpZiAo IWltYXAtPmxfbWFwX3VzZWQpCiAJewogCSAgYXNzZXJ0IChpbWFwLT5sX3R5cGUgPT0gbHRf bG9hZGVkICYmICFpbWFwLT5sX25vZGVsZXRlX2FjdGl2ZSk7CiAKQEAgLTMzMCw3ICszMjQs NyBAQCBfZGxfY2xvc2Vfd29ya2VyIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgYm9vbCBmb3Jj ZSkKIAkgIGlmIChpIDwgZmlyc3RfbG9hZGVkKQogCSAgICBmaXJzdF9sb2FkZWQgPSBpOwog CX0KLSAgICAgIC8qIEVsc2UgdXNlZFtpXS4gICovCisgICAgICAvKiBFbHNlIGltYXAtPmxf bWFwX3VzZWQuICAqLwogICAgICAgZWxzZSBpZiAoaW1hcC0+bF90eXBlID09IGx0X2xvYWRl ZCkKIAl7CiAJICBzdHJ1Y3Qgcl9zY29wZV9lbGVtICpuZXdfbGlzdCA9IE5VTEw7CkBAIC01 NTQsNyArNTQ4LDcgQEAgX2RsX2Nsb3NlX3dvcmtlciAoc3RydWN0IGxpbmtfbWFwICptYXAs 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 c29ydC1tYXBzLmMKaW5kZXggZDIxNzcwMjY3YS4uNWFhOTZmNGNjMSAxMDA2NDQKLS0tIGEv 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 ICAgKytpOwpAQCAtMTIwLDMgKzEyMCwxNzcgQEAgX2RsX3NvcnRfbWFwcyAoc3RydWN0IGxp bmtfbWFwICoqbWFwcywgdW5zaWduZWQgaW50IG5tYXBzLCBjaGFyICp1c2VkLAogICAgIG5l eHQ6OwogICAgIH0KIH0KKworI2lmICFIQVZFX1RVTkFCTEVTCisvKiBJbiB0aGlzIGNhc2Us IGp1c3QgZGVmYXVsdCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtLiAgKi8KK3N0cm9uZ19h bGlhcyAoX2RsX3NvcnRfbWFwc19vcmlnaW5hbCwgX2RsX3NvcnRfbWFwcyk7CisjZWxzZQor CisvKiBXZSB1c2UgYSByZWN1cnNpdmUgZnVuY3Rpb24gZHVlIHRvIGl0cyBiZXR0ZXIgY2xh cml0eSBhbmQgZWFzZSBvZgorICAgaW1wbGVtZW50YXRpb24sIGFzIHdlbGwgYXMgZmFzdGVy IGV4ZWN1dGlvbiBzcGVlZC4gV2UgYWxyZWFkeSB1c2UKKyAgIGFsbG9jYSgpIGZvciBsaXN0 IGFsbG9jYXRpb24gZHVyaW5nIHRoZSBicmVhZHRoLWZpcnN0IHNlYXJjaCBvZgorICAgZGVw ZW5kZW5jaWVzIGluIF9kbF9tYXBfb2JqZWN0X2RlcHMoKSwgYW5kIHRoaXMgc2hvdWxkIGJl IG9uIHRoZQorICAgc2FtZSBvcmRlciBvZiB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlLiAgKi8K Kworc3RhdGljIHZvaWQKK2Rmc190cmF2ZXJzYWwgKHN0cnVjdCBsaW5rX21hcCAqKipycG8s IHN0cnVjdCBsaW5rX21hcCAqbWFwLAorCSAgICAgICBib29sICpkb19yZWxkZXBzKQorewor ICBpZiAobWFwLT5sX3Zpc2l0ZWQpCisgICAgcmV0dXJuOworCisgIG1hcC0+bF92aXNpdGVk ID0gMTsKKworICBpZiAobWFwLT5sX2luaXRmaW5pKQorICAgIHsKKyAgICAgIGZvciAoaW50 IGkgPSAwOyBtYXAtPmxfaW5pdGZpbmlbaV0gIT0gTlVMTDsgaSsrKQorCXsKKwkgIHN0cnVj dCBsaW5rX21hcCAqZGVwID0gbWFwLT5sX2luaXRmaW5pW2ldOworCSAgaWYgKGRlcC0+bF92 aXNpdGVkID09IDApCisJICAgIGRmc190cmF2ZXJzYWwgKHJwbywgZGVwLCBkb19yZWxkZXBz KTsKKwl9CisgICAgfQorCisgIGlmIChfX2dsaWJjX3VubGlrZWx5IChkb19yZWxkZXBzICE9 IE5VTEwgJiYgbWFwLT5sX3JlbGRlcHMgIT0gTlVMTCkpCisgICAgeworICAgICAgLyogSW5k aWNhdGUgdGhhdCB3ZSBlbmNvdW50ZXJlZCByZWxvY2F0aW9uIGRlcGVuZGVuY2llcyBkdXJp bmcKKwkgdHJhdmVyc2FsLiAgKi8KKyAgICAgICpkb19yZWxkZXBzID0gdHJ1ZTsKKworICAg ICAgZm9yIChpbnQgbSA9IG1hcC0+bF9yZWxkZXBzLT5hY3QgLSAxOyBtID49IDA7IG0tLSkK Kwl7CisJICBzdHJ1Y3QgbGlua19tYXAgKmRlcCA9IG1hcC0+bF9yZWxkZXBzLT5saXN0W21d OworCSAgaWYgKGRlcC0+bF92aXNpdGVkID09IDApCisJICAgIGRmc190cmF2ZXJzYWwgKHJw bywgZGVwLCBkb19yZWxkZXBzKTsKKwl9CisgICAgfQorCisgICpycG8gLT0gMTsKKyAgKipy cG8gPSBtYXA7Cit9CisKKy8qIFRvcG9sb2dpY2FsbHkgc29ydCBhcnJheSBNQVBTIGFjY29y ZGluZyB0byBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvbnRhaW5lZAorICAgb2JqZWN0cy4gICov CisKK3N0YXRpYyB2b2lkCitfZGxfc29ydF9tYXBzX2RmcyAoc3RydWN0IGxpbmtfbWFwICoq bWFwcywgdW5zaWduZWQgaW50IG5tYXBzLAorCQkgICB1bnNpZ25lZCBpbnQgc2tpcCBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksIGJvb2wgZm9yX2ZpbmkpCit7CisgIGZvciAoaW50IGkg PSBubWFwcyAtIDE7IGkgPj0gMDsgaS0tKQorICAgIG1hcHNbaV0tPmxfdmlzaXRlZCA9IDA7 CisKKyAgLyogV2UgYXBwbHkgREZTIHRyYXZlcnNhbCBmb3IgZWFjaCBvZiBtYXBzW2ldIHVu dGlsIHRoZSB3aG9sZSB0b3RhbCBvcmRlcgorICAgICBpcyBmb3VuZCBhbmQgd2UncmUgYXQg dGhlIHN0YXJ0IG9mIHRoZSBSZXZlcnNlLVBvc3RvcmRlciAoUlBPKSBzZXF1ZW5jZSwKKyAg ICAgd2hpY2ggaXMgYSB0b3BvbG9naWNhbCBzb3J0LgorCisgICAgIFdlIGdvIGZyb20gbWFw c1tubWFwcyAtIDFdIGJhY2t3YXJkcyB0b3dhcmRzIG1hcHNbMF0gYXQgdGhpcyBsZXZlbC4K KyAgICAgRHVlIHRvIHRoZSBicmVhZHRoLWZpcnN0IHNlYXJjaCAoQkZTKSBvcmRlcmluZyB3 ZSByZWNlaXZlLCBnb2luZworICAgICBiYWNrd2FyZHMgdXN1YWxseSBnaXZlcyBhIG1vcmUg c2hhbGxvdyBkZXB0aC1maXJzdCByZWN1cnNpb24gZGVwdGgsCisgICAgIGFkZGluZyBtb3Jl IHN0YWNrIHVzYWdlIHNhZmV0eS4gQWxzbywgY29tYmluZWQgd2l0aCB0aGUgbmF0dXJhbAor ICAgICBwcm9jZXNzaW5nIG9yZGVyIG9mIGxfaW5pdGZpbmlbXSBhdCBlYWNoIG5vZGUgZHVy aW5nIERGUywgdGhpcyBtYWludGFpbnMKKyAgICAgYW4gb3JkZXJpbmcgY2xvc2VyIHRvIHRo ZSBvcmlnaW5hbCBsaW5rIG9yZGVyaW5nIGluIHRoZSBzb3J0aW5nIHJlc3VsdHMKKyAgICAg dW5kZXIgbW9zdCBzaW1wbGVyIGNhc2VzLgorCisgICAgIEFub3RoZXIgcmVhc29uIHdlIG9y ZGVyIHRoZSB0b3AgbGV2ZWwgYmFja3dhcmRzLCBpdCB0aGF0IG1hcHNbMF0gaXMKKyAgICAg dXN1YWxseSBleGFjdGx5IHRoZSBtYWluIG9iamVjdCBvZiB3aGljaCB3ZSdyZSBpbiB0aGUg bWlkc3Qgb2YKKyAgICAgX2RsX21hcF9vYmplY3RfZGVwcygpIHByb2Nlc3NpbmcsIGFuZCBt YXBzWzBdLT5sX2luaXRmaW5pW10gaXMgc3RpbGwKKyAgICAgYmxhbmsuIElmIHdlIHN0YXJ0 IHRoZSB0cmF2ZXJzYWwgZnJvbSBtYXBzWzBdLCBzaW5jZSBoYXZpbmcgbm8KKyAgICAgZGVw ZW5kZW5jaWVzIHlldCBmaWxsZWQgaW4sIG1hcHNbMF0gd2lsbCBhbHdheXMgYmUgaW1tZWRp YXRlbHkKKyAgICAgaW5jb3JyZWN0bHkgcGxhY2VkIGF0IHRoZSBsYXN0IHBsYWNlIGluIHRo ZSBvcmRlciAoZmlyc3QgaW4gcmV2ZXJzZSkuCisgICAgIEFkanVzdGluZyB0aGUgb3JkZXIg c28gdGhhdCBtYXBzWzBdIGlzIGxhc3QgdHJhdmVyc2VkIG5hdHVyYWxseSBhdm9pZHMKKyAg ICAgdGhpcyBwcm9ibGVtLgorCisgICAgIEZ1cnRoZXIsIHRoZSBvbGQgIm9wdGltaXphdGlv biIgb2Ygc2tpcHBpbmcgdGhlIG1haW4gb2JqZWN0IGF0IG1hcHNbMF0KKyAgICAgZnJvbSB0 aGUgY2FsbC1zaXRlIChpLmUuIF9kbF9zb3J0X21hcHMobWFwcysxLG5tYXBzLTEpKSBpcyBp biBnZW5lcmFsCisgICAgIG5vIGxvbmdlciB2YWxpZCwgc2luY2UgdHJhdmVyc2luZyBhbG9u ZyBvYmplY3QgZGVwZW5kZW5jeS1saW5rcworICAgICBtYXkgImZpbmQiIHRoZSBtYWluIG9i amVjdCBldmVuIHdoZW4gaXQgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBpbml0aWFsCisgICAg IG9yZGVyIChlLmcuIGEgZGxvcGVuKCknZWQgc2hhcmVkIG9iamVjdCBjYW4gaGF2ZSBjaXJj dWxhciBkZXBlbmRlbmNpZXMKKyAgICAgbGlua2VkIGJhY2sgdG8gaXRzZWxmKS4gSW4gc3Vj aCBhIGNhc2UsIHRyYXZlcnNpbmcgTi0xIG9iamVjdHMgd2lsbAorICAgICBjcmVhdGUgYSBO LW9iamVjdCByZXN1bHQsIGFuZCByYWlzZSBwcm9ibGVtcy4KKworICAgICBUbyBzdW1tYXJp emUsIGp1c3QgcGFzc2luZyBpbiB0aGUgZnVsbCBsaXN0LCBhbmQgaXRlcmF0aW5nIGZyb20g YmFjaworICAgICB0byBmcm9udCBtYWtlcyB0aGluZ3MgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9y d2FyZC4gICovCisKKyAgLyogQXJyYXkgdG8gaG9sZCBSUE8gc29ydGluZyByZXN1bHRzLCBi ZWZvcmUgd2UgY29weSBiYWNrIHRvIG1hcHNbXS4gICovCisgIHN0cnVjdCBsaW5rX21hcCAq cnBvW25tYXBzXTsKKworICAvKiBUaGUgJ2hlYWQnIHBvc2l0aW9uIGR1cmluZyBlYWNoIERG UyBpdGVyYXRpb24uIE5vdGUgdGhhdCB3ZSBzdGFydCBhdAorICAgICBvbmUgcGFzdCB0aGUg bGFzdCBlbGVtZW50IGR1ZSB0byBmaXJzdC1kZWNyZW1lbnQtdGhlbi1zdG9yZSAoc2VlIHRo ZQorICAgICBib3R0b20gb2YgYWJvdmUgZGZzX3RyYXZlcnNhbCgpIHJvdXRpbmUpLiAgKi8K KyAgc3RydWN0IGxpbmtfbWFwICoqcnBvX2hlYWQgPSAmcnBvW25tYXBzXTsKKworICBib29s IGRvX3JlbGRlcHMgPSBmYWxzZTsKKyAgYm9vbCAqZG9fcmVsZGVwc19yZWYgPSAoZm9yX2Zp bmkgPyAmZG9fcmVsZGVwcyA6IE5VTEwpOworCisgIGZvciAoaW50IGkgPSBubWFwcyAtIDE7 IGkgPj0gMDsgaS0tKQorICAgIHsKKyAgICAgIGRmc190cmF2ZXJzYWwgKCZycG9faGVhZCwg bWFwc1tpXSwgZG9fcmVsZGVwc19yZWYpOworCisgICAgICAvKiBXZSBjYW4gYnJlYWsgZWFy bHkgaWYgYWxsIG9iamVjdHMgYXJlIGFscmVhZHkgcGxhY2VkLiAgKi8KKyAgICAgIGlmIChy cG9faGVhZCA9PSBycG8pCisJZ290byBlbmQ7CisgICAgfQorICBhc3NlcnQgKHJwb19oZWFk ID09IHJwbyk7CisKKyBlbmQ6CisgIC8qIEhlcmUgd2UgbWF5IGRvIGEgc2Vjb25kIHBhc3Mg b2Ygc29ydGluZywgdXNpbmcgb25seSBsX2luaXRmaW5pW10KKyAgICAgc3RhdGljIGRlcGVu ZGVuY3kgbGlua3MuIFRoaXMgaXMgYXZvaWRlZCBpZiAhRk9SX0ZJTkkgb3IgaWYgd2UgZGlk bid0CisgICAgIGZpbmQgYW55IHJlbGRlcHMgaW4gdGhlIGZpcnN0IERGUyB0cmF2ZXJzYWwu CisKKyAgICAgVGhlIHJlYXNvbiB3ZSBkbyB0aGlzIGlzOiB3aGlsZSBpdCBpcyB1bnNwZWNp ZmllZCBob3cgY2lyY3VsYXIKKyAgICAgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBoYW5kbGVk LCB0aGUgcHJlc3VtZWQgcmVhc29uYWJsZSBiZWhhdmlvciBpcyB0bworICAgICBoYXZlIGRl c3RydWN0b3JzIHRvIHJlc3BlY3Qgc3RhdGljIGRlcGVuZGVuY3kgbGlua3MgYXMgbXVjaCBh cyBwb3NzaWJsZSwKKyAgICAgb3ZlcnJpZGluZyByZWxkZXBzIGlmIG5lZWRlZC4gQW5kIHRo ZSBmaXJzdCBzb3J0aW5nIHBhc3MsIHdoaWNoIHRha2VzCisgICAgIGxfaW5pdGZpbmkvbF9y ZWxkZXBzIGxpbmtzIGVxdWFsbHksIG1heSBub3QgcHJlc2VydmUgdGhpcyBwcmlvcml0eS4K KworICAgICBIZW5jZSB3ZSBkbyBhIDJuZCBzb3J0aW5nIHBhc3MsIHRha2luZyBvbmx5IERU X05FRURFRCBsaW5rcyBpbnRvIGFjY291bnQKKyAgICAgKHNlZSBob3cgdGhlIGRvX3JlbGRl cHMgYXJndW1lbnQgdG8gZGZzX3RyYXZlcnNhbCgpIGlzIE5VTEwgYmVsb3cpLiAgKi8KKyAg aWYgKGRvX3JlbGRlcHMpCisgICAgeworICAgICAgZm9yIChpbnQgaSA9IG5tYXBzIC0gMTsg aSA+PSAwOyBpLS0pCisJcnBvW2ldLT5sX3Zpc2l0ZWQgPSAwOworCisgICAgICBzdHJ1Y3Qg bGlua19tYXAgKiptYXBzX2hlYWQgPSAmbWFwc1tubWFwc107CisgICAgICBmb3IgKGludCBp ID0gbm1hcHMgLSAxOyBpID49IDA7IGktLSkKKwl7CisJICBkZnNfdHJhdmVyc2FsICgmbWFw c19oZWFkLCBycG9baV0sIE5VTEwpOworCisJICAvKiBXZSBjYW4gYnJlYWsgZWFybHkgaWYg YWxsIG9iamVjdHMgYXJlIGFscmVhZHkgcGxhY2VkLgorCSAgICAgVGhlIGJlbG93IG1lbWNw eSBpcyBub3QgbmVlZGVkIGluIHRoZSBkb19yZWxkZXBzIGNhc2UgaGVyZSwKKwkgICAgIHNp bmNlIHdlIHdyb3RlIGJhY2sgdG8gbWFwc1tdIGR1cmluZyBERlMgdHJhdmVyc2FsLiAgKi8K KwkgIGlmIChtYXBzX2hlYWQgPT0gbWFwcykKKwkgICAgcmV0dXJuOworCX0KKyAgICAgIGFz c2VydCAobWFwc19oZWFkID09IG1hcHMpOworICAgICAgcmV0dXJuOworICAgIH0KKworICBt ZW1jcHkgKG1hcHMsIHJwbywgc2l6ZW9mIChzdHJ1Y3QgbGlua19tYXAgKikgKiBubWFwcyk7 Cit9CisKK3ZvaWQKK19kbF9zb3J0X21hcHMgKHN0cnVjdCBsaW5rX21hcCAqKm1hcHMsIHVu c2lnbmVkIGludCBubWFwcywKKwkgICAgICAgdW5zaWduZWQgaW50IHNraXAsIGJvb2wgZm9y X2ZpbmkpCit7CisgIC8qIEluZGV4IGNvZGUgZm9yIHNvcnRpbmcgYWxnb3JpdGhtIGN1cnJl bnRseSBpbiB1c2UuICAqLworICBzdGF0aWMgaW50MzJfdCBhbGdvcml0aG0gPSAwOworICBp ZiAoX19nbGliY191bmxpa2VseSAoYWxnb3JpdGhtID09IDApKQorICAgIGFsZ29yaXRobSA9 IFRVTkFCTEVfR0VUIChnbGliYywgcnRsZCwgZHluYW1pY19zb3J0LAorCQkJICAgICBpbnQz Ml90LCBOVUxMKTsKKworICAvKiBJdCBjYW4gYmUgdGVtcHRpbmcgdG8gdXNlIGEgc3RhdGlj IGZ1bmN0aW9uIHBvaW50ZXIgdG8gc3RvcmUgYW5kIGNhbGwKKyAgICAgdGhlIGN1cnJlbnQg c2VsZWN0ZWQgc29ydGluZyBhbGdvcml0aG0gcm91dGluZSwgYnV0IGV4cGVyaW1lbnRhdGlv bgorICAgICBzaG93cyB0aGF0IGN1cnJlbnQgcHJvY2Vzc29ycyBzdGlsbCBkbyBub3QgaGFu ZGxlIGluZGlyZWN0IGJyYW5jaGVzCisgICAgIHRoYXQgZWZmaWNpZW50bHksIHBsdXMgYSBz dGF0aWMgZnVuY3Rpb24gcG9pbnRlciB3aWxsIGludm9sdmUKKyAgICAgUFRSX01BTkdMRS9E RU1BTkdMRSwgZnVydGhlciBpbXBhaXJpbmcgcGVyZm9ybWFuY2Ugb2Ygc21hbGwsIGNvbW1v bgorICAgICBpbnB1dCBjYXNlcy4gQSBzaW1wbGUgaWYtY2FzZSB3aXRoIGRpcmVjdCBmdW5j dGlvbiBjYWxscyBhcHBlYXJzIHRvCisgICAgIGJlIHRoZSBmYXN0ZXN0LiAgKi8KKyAgaWYg KF9fZ2xpYmNfbGlrZWx5IChhbGdvcml0aG0gPT0gMSkpCisgICAgX2RsX3NvcnRfbWFwc19v cmlnaW5hbCAobWFwcywgbm1hcHMsIHNraXAsIGZvcl9maW5pKTsKKyAgZWxzZSBpZiAoYWxn b3JpdGhtID09IDIpCisgICAgX2RsX3NvcnRfbWFwc19kZnMgKG1hcHMsIG5tYXBzLCBza2lw LCBmb3JfZmluaSk7CisgIGVsc2UKKyAgICBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCk7Cit9 CisKKyNlbmRpZiAvKiBIQVZFX1RVTkFCTEVTLiAgKi8KZGlmZiAtLWdpdCBhL2VsZi9kbC10 dW5hYmxlcy5saXN0IGIvZWxmL2RsLXR1bmFibGVzLmxpc3QKaW5kZXggM2NmMGFkODNlYy4u ODUxNTcwNDBhZCAxMDA2NDQKLS0tIGEvZWxmL2RsLXR1bmFibGVzLmxpc3QKKysrIGIvZWxm L2RsLXR1bmFibGVzLmxpc3QKQEAgLTE1MCw0ICsxNTAsMTMgQEAgZ2xpYmMgewogICAgICAg c2VjdXJpdHlfbGV2ZWw6IFNYSURfSUdOT1JFCiAgICAgfQogICB9CisKKyAgcnRsZCB7Cisg ICAgZHluYW1pY19zb3J0IHsKKyAgICAgIHR5cGU6IElOVF8zMgorICAgICAgbWludmFsOiAx CisgICAgICBtYXh2YWw6IDIKKyAgICAgIGRlZmF1bHQ6IDEKKyAgICB9CisgIH0KIH0KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGluay5oIGIvaW5jbHVkZS9saW5rLmgKaW5kZXggNGFmMTZj YjU5Ni4uZjJkYmNiYWY3NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW5rLmgKKysrIGIvaW5j bHVkZS9saW5rLmgKQEAgLTE4MSw2ICsxODEsMTAgQEAgc3RydWN0IGxpbmtfbWFwCiAgICAg dW5zaWduZWQgaW50IGxfaW5pdF9jYWxsZWQ6MTsgLyogTm9uemVybyBpZiBEVF9JTklUIGZ1 bmN0aW9uIGNhbGxlZC4gICovCiAgICAgdW5zaWduZWQgaW50IGxfZ2xvYmFsOjE7CS8qIE5v bnplcm8gaWYgb2JqZWN0IGluIF9kbF9nbG9iYWxfc2NvcGUuICAqLwogICAgIHVuc2lnbmVk IGludCBsX3Jlc2VydmVkOjI7CS8qIFJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuICAqLwor ICAgIHVuc2lnbmVkIGludCBsX3Zpc2l0ZWQ6MTsgICAvKiBVc2VkIGludGVybmFsbHkgZm9y IG1hcCBkZXBlbmRlbmN5CisJCQkJICAgZ3JhcGggdHJhdmVyc2FsLiAgKi8KKyAgICB1bnNp Z25lZCBpbnQgbF9tYXBfdXNlZDoxOyAgLyogVGhlc2UgdHdvIGJpdHMgYXJlIHVzZWQgZHVy aW5nIHRyYXZlcnNhbCAqLworICAgIHVuc2lnbmVkIGludCBsX21hcF9kb25lOjE7ICAvKiBv ZiBtYXBzIGluIF9kbF9jbG9zZV93b3JrZXIoKS4gKi8KICAgICB1bnNpZ25lZCBpbnQgbF9w aGRyX2FsbG9jYXRlZDoxOyAvKiBOb256ZXJvIGlmIHRoZSBkYXRhIHN0cnVjdHVyZSBwb2lu dGVkCiAJCQkJCXRvIGJ5IGBsX3BoZHInIGlzIGFsbG9jYXRlZC4gICovCiAgICAgdW5zaWdu ZWQgaW50IGxfc29uYW1lX2FkZGVkOjE7IC8qIE5vbnplcm8gaWYgdGhlIFNPTkFNRSBpcyBm b3Igc3VyZSBpbgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2xkc29kZWZzLmggYi9z eXNkZXBzL2dlbmVyaWMvbGRzb2RlZnMuaAppbmRleCBhYWI3MjQ1ZTkzLi4zMzllMmQ0MzEw IDEwMDY0NAotLS0gYS9zeXNkZXBzL2dlbmVyaWMvbGRzb2RlZnMuaAorKysgYi9zeXNkZXBz L2dlbmVyaWMvbGRzb2RlZnMuaApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgZXh0ZXJuIHZvaWQg X2RsX2ZpbmkgKHZvaWQpIGF0dHJpYnV0ZV9oaWRkZW47CiAKIC8qIFNvcnQgYXJyYXkgTUFQ UyBhY2NvcmRpbmcgdG8gZGVwZW5kZW5jaWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0cy4g ICovCiBleHRlcm4gdm9pZCBfZGxfc29ydF9tYXBzIChzdHJ1Y3QgbGlua19tYXAgKiptYXBz LCB1bnNpZ25lZCBpbnQgbm1hcHMsCi0JCQkgICBjaGFyICp1c2VkLCBib29sIGZvcl9maW5p KSBhdHRyaWJ1dGVfaGlkZGVuOworCQkJICAgdW5zaWduZWQgaW50IHNraXAsIGJvb2wgZm9y X2ZpbmkpIGF0dHJpYnV0ZV9oaWRkZW47CiAKIC8qIFRoZSBkeW5hbWljIGxpbmtlciBjYWxs cyB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBhbmQgaGF2aW5nIGNoYW5naW5nCiAgICBhbnkgc2hh cmVkIG9iamVjdCBtYXBwaW5ncy4gIFRoZSBgcl9zdGF0ZScgbWVtYmVyIG9mIGBzdHJ1Y3Qg cl9kZWJ1ZycK --------------6D58F5ACFD455A08ACA3A864--