From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id AB8963858C39 for ; Sun, 24 Jul 2022 11:51:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AB8963858C39 Received: from localhost.localdomain (xry111.site [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 3BAC16683B; Sun, 24 Jul 2022 07:51:53 -0400 (EDT) Message-ID: <71ad82b8b669d4233b7fd4741add7b58bd7ac20e.camel@xry111.site> Subject: Re: [PATCH v7 00/13] GLIBC LoongArch PATCHES From: Xi Ruoyao To: WANG Xuerui , caiyinyu , adhemerval.zanella@linaro.org, libc-alpha@sourceware.org, joseph_myers@mentor.com, carlos@redhat.com Cc: liuzhensong@loongson.cn Date: Sun, 24 Jul 2022 19:51:51 +0800 In-Reply-To: References: <20220719012056.1461897-1-caiyinyu@loongson.cn> Content-Type: multipart/mixed; boundary="=-yYaoV7EpblQHnSkK3Z7J" User-Agent: Evolution 3.44.3 MIME-Version: 1.0 X-Spam-Status: No, score=-6.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FROM_SUSPICIOUS_NTLD, GIT_PATCH_0, KAM_STOCKGEN, LIKELY_SPAM_FROM, PDS_OTHER_BAD_TLD, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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, 24 Jul 2022 11:51:58 -0000 --=-yYaoV7EpblQHnSkK3Z7J Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, 2022-07-24 at 17:49 +0800, WANG Xuerui wrote: > Of these, the ifunc failures are "expected" by you, the=20 > elf/check-abi-libc diff is trivial (maybe you just didn't rebase as=20 > frequently): >=20 > --- ../sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist 2022-07-23=20 > 14:45:57.490029442 +0800 > +++ /home/xenon/src/glibc/build/libc.symlist=C2=A0=C2=A0=C2=A0 2022-07-24= =20 > 13:44:10.416642655 +0800 > @@ -496 +496 @@ GLIBC_2.36 _mcount F > -GLIBC_2.36 _nl_default_dirname D 0x12 > +GLIBC_2.36 _nl_default_dirname D 0x17 > @@ -541,0 +542,3 @@ GLIBC_2.36 alphasort64 F > +GLIBC_2.36 arc4random F > +GLIBC_2.36 arc4random_buf F > +GLIBC_2.36 arc4random_uniform F arc4random is just merged two days ago. > The others may need some love. Of course they're possibly because of my= =20 > particular environment (Gentoo is a little bit different than "ordinary"= =20 > distros like Debian/Fedora, and I already have to symlink the=20 > libgcc_s.so and libstdc++.so to pass the nptl tests at all) I can tell tst-nss-files-hosts-long is most likely PR24816. For the others I'm not sure. By "symlink libgcc_s.so and libstdc++.so" I guess you are running tests in a temporary system ("Gentoo stage 1" IIRC). In LFS we also get some additional test failures in the temporary system [1] so it's better to rerun the tests in a full system. (In earlier LFS releases we also needed to symlink libgcc_s.so and libstdc++.so for glibc tests, but it's no longer needed now thanks to a major refactoring [2].) [1]: https://www.linuxfromscratch.org/lfs/view/systemd/chapter08/glibc.html [2]: https://lists.linuxfromscratch.org/sympa/arc/lfs-dev/2020-05/msg00000.= html My test result on LFS (fully built) with a patched ld seems clean. The patch is originally published at https://sourceware.org/pipermail/binutils/2022-July/121852.html, but it's in a large series introducing new relocation types. I managed to rebased and adjusted the patch so it can be applied individually for binutils-gdb master branch. The patch is attached in this mail. +Zhensong: is there any possibility to merge this patch for binutils master and 2.39 release branch (including 2.38 release branch would be even better) so at least glibc ifunc tests will be happy? XPASS: conform/UNIX98/ndbm.h/linknamespace XPASS: conform/XOPEN2K/ndbm.h/linknamespace XPASS: conform/XOPEN2K8/ndbm.h/linknamespace XPASS: conform/XPG42/ndbm.h/linknamespace UNSUPPORTED: crypt/cert FAIL: elf/check-abi-libc UNSUPPORTED: elf/tst-env-setuid UNSUPPORTED: elf/tst-env-setuid-tunables XPASS: elf/tst-protected1a XPASS: elf/tst-protected1b UNSUPPORTED: elf/tst-valgrind-smoke UNSUPPORTED: misc/tst-adjtimex UNSUPPORTED: misc/tst-clock_adjtime UNSUPPORTED: misc/tst-ntp_adjtime UNSUPPORTED: misc/tst-pkey UNSUPPORTED: misc/tst-rseq UNSUPPORTED: misc/tst-rseq-disable UNSUPPORTED: nptl/test-cond-printers UNSUPPORTED: nptl/test-condattr-printers UNSUPPORTED: nptl/test-mutex-printers UNSUPPORTED: nptl/test-mutexattr-printers UNSUPPORTED: nptl/test-rwlock-printers UNSUPPORTED: nptl/test-rwlockattr-printers UNSUPPORTED: nptl/tst-pthread-gdb-attach UNSUPPORTED: nptl/tst-pthread-gdb-attach-static UNSUPPORTED: nptl/tst-rseq-nptl UNSUPPORTED: stdlib/tst-secure-getenv UNSUPPORTED: time/tst-clock_settime UNSUPPORTED: time/tst-settimeofday Summary of test results: 1 FAIL 4576 PASS 22 UNSUPPORTED 12 XFAIL 6 XPASS --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University --=-yYaoV7EpblQHnSkK3Z7J Content-Disposition: attachment; filename="binutils-loongarch-ifunc.patch" Content-Type: text/x-patch; name="binutils-loongarch-ifunc.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyOTI4ZWRkNGRhMjg0YmZmNDJjNzcwY2IyOWRiZjk0ZjgzZTdmNjljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsaXV6aGVuc29uZyA8bGl1emhlbnNvbmdAbG9vbmdzb24uY24+ CkRhdGU6IEZyaSwgMTUgSnVsIDIwMjIgMTY6MDc6NDggKzA4MDAKU3ViamVjdDogW1BBVENIXSBM b29uZ0FyY2g6IE1vdmUgaWZ1bmMgaW5mbyB0byByZWxhLmR5biBmcm9tIHJlbGEucGx0CgpEZWxl dGUgUl9MQVJDSF9JUkVMQVRJVkUgZnJvbSBkeW5hbWljIGxvYWRlciAoZ2xpYmMgbGQuc28pIHdo ZW4KbG9hZGluZyBsYXp5IGZ1bmN0aW9uIChyZWxhLnBsdCBzZWN0aW9uKS4KCkluIGR5bmFtaWMg cHJvZ3JhbXMsIG1vdmUgaWZ1bmMgZHluYW1pYyByZWxvY2F0ZSBpbmZvIHRvIHNlY3Rpb24Kc3Jl bGdvdCBmcm9tIHNyZWxwbHQuCi0tLQogYmZkL2VsZm5uLWxvb25nYXJjaC5jIHwgMzM4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMx MSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9iZmQvZWxmbm4t bG9vbmdhcmNoLmMgYi9iZmQvZWxmbm4tbG9vbmdhcmNoLmMKaW5kZXggNWI0NDkwMWI5ZTAuLjdj MGI4OGYyMmRlIDEwMDY0NAotLS0gYS9iZmQvZWxmbm4tbG9vbmdhcmNoLmMKKysrIGIvYmZkL2Vs Zm5uLWxvb25nYXJjaC5jCkBAIC0xMTk2LDYgKzExOTYsMjU5IEBAIGFsbG9jYXRlX2R5bnJlbG9j cyAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKmluZikKICAgcmV0dXJuIHRy dWU7CiB9CiAKKy8qIEJhc2VkIGZ1bmN0aW9uIF9iZmRfZWxmX2FsbG9jYXRlX2lmdW5jX2R5bl9y ZWxvY3MuCisgICBGb3IgbG9jYWwgZGVmIGFuZCByZWYgaWZ1bmMsCisgICBkeW5hbWljIHJlbG9j YXRpb25zIGFyZSBzdG9yZWQgaW4KKyAgIDEuICByZWxbYV0uaXJlbGlmdW5jIHNlY3Rpb24gaW4g UElDIG9iamVjdC4KKyAgIDIuICByZWxbYV0uc3JlbGdvdCBzZWN0aW9uIGluIGR5bmFtaWMgZXhl Y3V0YWJsZS4KKyAgIDMuICByZWxbYV0uaXJlbHBsdCBzZWN0aW9uIGluIHN0YXRpYyBleGVjdXRh YmxlLgorICAgQ2hhbmdlIGlmdW5jIGR5bmFtaWMgaW5mbyBmcm9tIHNyZWxwbHQgdG8gc3JlbGdv dC4KKyAgIEluIGxvYWRlciwgcmVtb3ZlIFJfTEFSQ0hfSVJFTEFDVElWRSBmcm9tIHJlbGEgbGF6 eSBpbiBsZC5zby4gICovCisKK3N0YXRpYyBib29sCitsb2NhbF9hbGxvY2F0ZV9pZnVuY19keW5f cmVsb2NzIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkJCQkgICAgc3RydWN0IGVsZl9s aW5rX2hhc2hfZW50cnkgKmgsCisJCQkJICAgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqKmhlYWQs CisJCQkJICAgIHVuc2lnbmVkIGludCBwbHRfZW50cnlfc2l6ZSwKKwkJCQkgICAgdW5zaWduZWQg aW50IHBsdF9oZWFkZXJfc2l6ZSwKKwkJCQkgICAgdW5zaWduZWQgaW50IGdvdF9lbnRyeV9zaXpl LAorCQkJCSAgICBib29sIGF2b2lkX3BsdCkKK3sKKyAgYXNlY3Rpb24gKnBsdCwgKmdvdHBsdCwg KnJlbHBsdDsKKyAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpwOworICB1bnNpZ25lZCBpbnQgc2l6 ZW9mX3JlbG9jOworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOworICBzdHJ1 Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSAqaHRhYjsKKyAgLyogSWYgQVZPSURfUExUIGlzIFRSVUUs IGRvbid0IHVzZSBQTFQgaWYgcG9zc2libGUuICAqLworICBib29sIHVzZV9wbHQgPSAhYXZvaWRf cGx0IHx8IGgtPnBsdC5yZWZjb3VudCA+IDA7CisgIGJvb2wgbmVlZF9keW5yZWxvYyA9ICF1c2Vf cGx0IHx8IGJmZF9saW5rX3BpYyAoaW5mbyk7CisKKyAgLyogV2hlbiBhIFBJQyBvYmplY3QgcmVm ZXJlbmNlcyBhIFNUVF9HTlVfSUZVTkMgc3ltYm9sIGRlZmluZWQKKyAgICAgaW4gZXhlY3V0YWJs ZSBvciBpdCBpc24ndCByZWZlcmVuY2VkIHZpYSBQTFQsIHRoZSBhZGRyZXNzIG9mCisgICAgIHRo ZSByZXNvbHZlZCBmdW5jdGlvbiBtYXkgYmUgdXNlZC4gIEJ1dCBpbiBub24tUElDIGV4ZWN1dGFi bGUsCisgICAgIHRoZSBhZGRyZXNzIG9mIGl0cyBwbHQgc2xvdCBtYXkgYmUgdXNlZC4gIFBvaW50 ZXIgZXF1YWxpdHkgbWF5CisgICAgIG5vdCB3b3JrIGNvcnJlY3RseS4gIFBJRSBvciBub24tUExU IHJlZmVyZW5jZSBzaG91bGQgYmUgdXNlZCBpZgorICAgICBwb2ludGVyIGVxdWFsaXR5IGlzIHJl cXVpcmVkIGhlcmUuCisKKyAgICAgSWYgU1RUX0dOVV9JRlVOQyBzeW1ib2wgaXMgZGVmaW5lZCBp biBwb3NpdGlvbi1kZXBlbmRlbnQgZXhlY3V0YWJsZSwKKyAgICAgYmFja2VuZCBzaG91bGQgY2hh bmdlIGl0IHRvIHRoZSBub3JtYWwgZnVuY3Rpb24gYW5kIHNldCBpdHMgYWRkcmVzcworICAgICB0 byBpdHMgUExUIGVudHJ5IHdoaWNoIHNob3VsZCBiZSByZXNvbHZlZCBieSBSXypfSVJFTEFUSVZF IGF0CisgICAgIHJ1bi10aW1lLiAgQWxsIGV4dGVybmFsIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHJl c29sdmVkIHRvIGl0cyBQTFQgaW4KKyAgICAgZXhlY3V0YWJsZS4gICovCisgIGlmICghbmVlZF9k eW5yZWxvYworICAgICAgJiYgIShiZmRfbGlua19wZGUgKGluZm8pICYmIGgtPmRlZl9yZWd1bGFy KQorICAgICAgJiYgKGgtPmR5bmluZHggIT0gLTEKKwkgIHx8IGluZm8tPmV4cG9ydF9keW5hbWlj KQorICAgICAgJiYgaC0+cG9pbnRlcl9lcXVhbGl0eV9uZWVkZWQpCisgICAgeworICAgICAgaW5m by0+Y2FsbGJhY2tzLT5laW5mbworCS8qIHhnZXR0ZXh0OmMtZm9ybWF0LiAgKi8KKwkoXygiJUYl UDogZHluYW1pYyBTVFRfR05VX0lGVU5DIHN5bWJvbCBgJXMnIHdpdGggcG9pbnRlciAiCisJICAg ImVxdWFsaXR5IGluIGAlcEInIGNhbiBub3QgYmUgdXNlZCB3aGVuIG1ha2luZyBhbiAiCisJICAg ImV4ZWN1dGFibGU7IHJlY29tcGlsZSB3aXRoIC1mUElFIGFuZCByZWxpbmsgd2l0aCAtcGllXG4i KSwKKwkgaC0+cm9vdC5yb290LnN0cmluZywKKwkgaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25l cik7CisgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKKyAgICAgIHJl dHVybiBmYWxzZTsKKyAgICB9CisKKyAgaHRhYiA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKTsKKwor ICAvKiBXaGVuIHRoZSBzeW1ib2wgaXMgbWFya2VkIHdpdGggcmVndWxhciByZWZlcmVuY2UsIGlm IFBMVCBpc24ndCB1c2VkCisgICAgIG9yIHdlIGFyZSBidWlsZGluZyBhIFBJQyBvYmplY3QsIHdl IG11c3Qga2VlcCBkeW5hbWljIHJlbG9jYXRpb24KKyAgICAgaWYgdGhlcmUgaXMgbm9uLUdPVCBy ZWZlcmVuY2UgYW5kIHVzZSBQTFQgaWYgdGhlcmUgaXMgUEMtcmVsYXRpdmUKKyAgICAgcmVmZXJl bmNlLiAgKi8KKyAgaWYgKG5lZWRfZHlucmVsb2MgJiYgaC0+cmVmX3JlZ3VsYXIpCisgICAgewor ICAgICAgYm9vbCBrZWVwID0gZmFsc2U7CisgICAgICBmb3IgKHAgPSAqaGVhZDsgcCAhPSBOVUxM OyBwID0gcC0+bmV4dCkKKwlpZiAocC0+Y291bnQpCisJICB7CisJICAgIGgtPm5vbl9nb3RfcmVm ID0gMTsKKwkgICAgLyogTmVlZCBkeW5hbWljIHJlbG9jYXRpb25zIGZvciBub24tR09UIHJlZmVy ZW5jZS4gICovCisJICAgIGtlZXAgPSB0cnVlOworCSAgICBpZiAocC0+cGNfY291bnQpCisJICAg ICAgeworCQkvKiBNdXN0IHVzZSBQTFQgZm9yIFBDLXJlbGF0aXZlIHJlZmVyZW5jZS4gICovCisJ CXVzZV9wbHQgPSB0cnVlOworCQluZWVkX2R5bnJlbG9jID0gYmZkX2xpbmtfcGljIChpbmZvKTsK KwkJYnJlYWs7CisJICAgICAgfQorCSAgfQorICAgICAgaWYgKGtlZXApCisJZ290byBrZWVwOwor ICAgIH0KKworICAvKiBTdXBwb3J0IGdhcmJhZ2UgY29sbGVjdGlvbiBhZ2FpbnN0IFNUVF9HTlVf SUZVTkMgc3ltYm9scy4gICovCisgIGlmIChoLT5wbHQucmVmY291bnQgPD0gMCAmJiBoLT5nb3Qu cmVmY291bnQgPD0gMCkKKyAgICB7CisgICAgICBoLT5nb3QgPSBodGFiLT5pbml0X2dvdF9vZmZz ZXQ7CisgICAgICBoLT5wbHQgPSBodGFiLT5pbml0X3BsdF9vZmZzZXQ7CisgICAgICAqaGVhZCA9 IE5VTEw7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgLyogUmV0dXJuIGFuZCBkaXNj YXJkIHNwYWNlIGZvciBkeW5hbWljIHJlbG9jYXRpb25zIGFnYWluc3QgaXQgaWYKKyAgICAgaXQg aXMgbmV2ZXIgcmVmZXJlbmNlZC4gICovCisgIGlmICghaC0+cmVmX3JlZ3VsYXIpCisgICAgewor ICAgICAgaWYgKGgtPnBsdC5yZWZjb3VudCA+IDAKKwkgIHx8IGgtPmdvdC5yZWZjb3VudCA+IDAp CisJYWJvcnQgKCk7CisgICAgICBoLT5nb3QgPSBodGFiLT5pbml0X2dvdF9vZmZzZXQ7CisgICAg ICBoLT5wbHQgPSBodGFiLT5pbml0X3BsdF9vZmZzZXQ7CisgICAgICAqaGVhZCA9IE5VTEw7Cisg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyBrZWVwOgorICBiZWQgPSBnZXRfZWxmX2JhY2tl bmRfZGF0YSAoaW5mby0+b3V0cHV0X2JmZCk7CisgIGlmIChiZWQtPnJlbGFfcGx0c19hbmRfY29w aWVzX3ApCisgICAgc2l6ZW9mX3JlbG9jID0gYmVkLT5zLT5zaXplb2ZfcmVsYTsKKyAgZWxzZQor ICAgIHNpemVvZl9yZWxvYyA9IGJlZC0+cy0+c2l6ZW9mX3JlbDsKKworICAvKiBXaGVuIGJ1aWxk aW5nIGEgc3RhdGljIGV4ZWN1dGFibGUsIHVzZSBpcGx0LCBpZ290LnBsdCBhbmQKKyAgICAgcmVs W2FdLmlwbHQgc2VjdGlvbnMgZm9yIFNUVF9HTlVfSUZVTkMgc3ltYm9scy4gICovCisgIGlmICho dGFiLT5zcGx0ICE9IE5VTEwpCisgICAgeworICAgICAgcGx0ID0gaHRhYi0+c3BsdDsKKyAgICAg IGdvdHBsdCA9IGh0YWItPnNnb3RwbHQ7CisgICAgICAvKiBDaGFuZ2UgZHluYW1pYyBpbmZvIG9m IGlmdW5jIGdvdHBsdCBmcm9tIHNyZWxwbHQgdG8gc3JlbGdvdC4gICovCisgICAgICByZWxwbHQg PSBodGFiLT5zcmVsZ290OworCisgICAgICAvKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBwbHQgZW50 cnkgYW5kIFBMVCBpcyB1c2VkLCBtYWtlIHJvb20gZm9yCisJIHRoZSBzcGVjaWFsIGZpcnN0IGVu dHJ5LiAgKi8KKyAgICAgIGlmIChwbHQtPnNpemUgPT0gMCAmJiB1c2VfcGx0KQorCXBsdC0+c2l6 ZSArPSBwbHRfaGVhZGVyX3NpemU7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcGx0ID0g aHRhYi0+aXBsdDsKKyAgICAgIGdvdHBsdCA9IGh0YWItPmlnb3RwbHQ7CisgICAgICByZWxwbHQg PSBodGFiLT5pcmVscGx0OworICAgIH0KKworICBpZiAodXNlX3BsdCkKKyAgICB7CisgICAgICAv KiBEb24ndCB1cGRhdGUgdmFsdWUgb2YgU1RUX0dOVV9JRlVOQyBzeW1ib2wgdG8gUExULiAgV2Ug bmVlZAorCSB0aGUgb3JpZ2luYWwgdmFsdWUgZm9yIFJfKl9JUkVMQVRJVkUuICAqLworICAgICAg aC0+cGx0Lm9mZnNldCA9IHBsdC0+c2l6ZTsKKworICAgICAgLyogTWFrZSByb29tIGZvciB0aGlz IGVudHJ5IGluIHRoZSBwbHQvaXBsdCBzZWN0aW9uLiAgKi8KKyAgICAgIHBsdC0+c2l6ZSArPSBw bHRfZW50cnlfc2l6ZTsKKworICAgICAgLyogV2UgYWxzbyBuZWVkIHRvIG1ha2UgYW4gZW50cnkg aW4gdGhlIGdvdC5wbHQvZ290LmlwbHQgc2VjdGlvbiwKKwkgd2hpY2ggd2lsbCBiZSBwbGFjZWQg aW4gdGhlIGdvdCBzZWN0aW9uIGJ5IHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KKyAgICAgIGdvdHBs dC0+c2l6ZSArPSBnb3RfZW50cnlfc2l6ZTsKKyAgICB9CisKKyAgLyogV2UgYWxzbyBuZWVkIHRv IG1ha2UgYW4gZW50cnkgaW4gdGhlIHJlbFthXS5wbHQvLnJlbFthXS5pcGx0CisgICAgIHNlY3Rp b24gZm9yIEdPVFBMVCByZWxvY2F0aW9uIGlmIFBMVCBpcyB1c2VkLiAgKi8KKyAgaWYgKHVzZV9w bHQpCisgICAgeworICAgICAgcmVscGx0LT5zaXplICs9IHNpemVvZl9yZWxvYzsKKyAgICAgIHJl bHBsdC0+cmVsb2NfY291bnQrKzsKKyAgICB9CisKKyAgLyogV2UgbmVlZCBkeW5hbWljIHJlbG9j YXRpb24gZm9yIFNUVF9HTlVfSUZVTkMgc3ltYm9sIG9ubHkgd2hlbgorICAgICB0aGVyZSBpcyBh IG5vbi1HT1QgcmVmZXJlbmNlIGluIGEgUElDIG9iamVjdCBvciBQTFQgaXNuJ3QgdXNlZC4gICov CisgIGlmICghbmVlZF9keW5yZWxvYyB8fCAhaC0+bm9uX2dvdF9yZWYpCisgICAgKmhlYWQgPSBO VUxMOworCisgIC8qIEZpbmFsbHksIGFsbG9jYXRlIHNwYWNlLiAgKi8KKyAgcCA9ICpoZWFkOwor ICBpZiAocCAhPSBOVUxMKQorICAgIHsKKyAgICAgIGJmZF9zaXplX3R5cGUgY291bnQgPSAwOwor ICAgICAgZG8KKwl7CisJICBjb3VudCArPSBwLT5jb3VudDsKKwkgIHAgPSBwLT5uZXh0OworCX0K KyAgICAgIHdoaWxlIChwICE9IE5VTEwpOworCisgICAgICBodGFiLT5pZnVuY19yZXNvbHZlcnMg PSBjb3VudCAhPSAwOworCisgICAgICAvKiBEeW5hbWljIHJlbG9jYXRpb25zIGFyZSBzdG9yZWQg aW4KKwkgMS4gIHJlbFthXS5zcmVsZ290IHNlY3Rpb24gaW4gUElDIG9iamVjdC4KKwkgMi4gIHJl bFthXS5zcmVsZ290IHNlY3Rpb24gaW4gZHluYW1pYyBleGVjdXRhYmxlLgorCSAzLiAgcmVsW2Fd LmlyZWxwbHQgc2VjdGlvbiBpbiBzdGF0aWMgZXhlY3V0YWJsZS4gICovCisgICAgICBpZiAoaHRh Yi0+c3BsdCAhPSBOVUxMKQorCWh0YWItPnNyZWxnb3QtPnNpemUgKz0gY291bnQgKiBzaXplb2Zf cmVsb2M7CisgICAgICBlbHNlCisJeworCSAgcmVscGx0LT5zaXplICs9IGNvdW50ICogc2l6ZW9m X3JlbG9jOworCSAgcmVscGx0LT5yZWxvY19jb3VudCArPSBjb3VudDsKKwl9CisgICAgfQorCisg IC8qIEZvciBTVFRfR05VX0lGVU5DIHN5bWJvbCwgZ290LnBsdCBoYXMgdGhlIHJlYWwgZnVuY3Rp b24gYWRkcmVzcworICAgICBhbmQgZ290IGhhcyB0aGUgUExUIGVudHJ5IGFkZGRyZXNzLiAgV2Ug d2lsbCBsb2FkIHRoZSBHT1QgZW50cnkKKyAgICAgd2l0aCB0aGUgUExUIGVudHJ5IGluIGZpbmlz aF9keW5hbWljX3N5bWJvbCBpZiBpdCBpcyB1c2VkLiAgRm9yCisgICAgIGJyYW5jaCwgaXQgdXNl cyBnb3QucGx0LiAgRm9yIHN5bWJvbCB2YWx1ZSwgaWYgUExUIGlzIHVzZWQsCisgICAgIDEuICBV c2UgZ290LnBsdCBpbiBhIFBJQyBvYmplY3QgaWYgaXQgaXMgZm9yY2VkIGxvY2FsIG9yIG5vdAor ICAgICBkeW5hbWljLgorICAgICAyLiAgVXNlIGdvdC5wbHQgaW4gYSBub24tUElDIG9iamVjdCBp ZiBwb2ludGVyIGVxdWFsaXR5IGlzbid0CisgICAgIG5lZWRlZC4KKyAgICAgMy4gIFVzZSBnb3Qu cGx0IGluIFBJRS4KKyAgICAgNC4gIFVzZSBnb3QucGx0IGlmIGdvdCBpc24ndCB1c2VkLgorICAg ICA1LiAgT3RoZXJ3aXNlIHVzZSBnb3Qgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGFtb25nIGRp ZmZlcmVudAorICAgICBvYmplY3RzIGF0IHJ1bi10aW1lLgorICAgICBJZiBQTFQgaXNuJ3QgdXNl ZCwgYWx3YXlzIHVzZSBnb3QgZm9yIHN5bWJvbCB2YWx1ZS4KKyAgICAgV2Ugb25seSBuZWVkIHRv IHJlbG9jYXRlIGdvdCBlbnRyeSBpbiBQSUMgb2JqZWN0IG9yIGluIGR5bmFtaWMKKyAgICAgZXhl Y3V0YWJsZSB3aXRob3V0IFBMVC4gICovCisgIGlmICh1c2VfcGx0CisgICAgICAmJiAoaC0+Z290 LnJlZmNvdW50IDw9IDAKKwkgIHx8IChiZmRfbGlua19waWMgKGluZm8pCisJICAgICAgJiYgKGgt PmR5bmluZHggPT0gLTEKKwkJICB8fCBoLT5mb3JjZWRfbG9jYWwpKQorCSAgfHwgKAorCSAgICAg ICFoLT5wb2ludGVyX2VxdWFsaXR5X25lZWRlZCkKKwkgIHx8IGh0YWItPnNnb3QgPT0gTlVMTCkp CisgICAgeworICAgICAgLyogVXNlIGdvdC5wbHQuICAqLworICAgICAgaC0+Z290Lm9mZnNldCA9 IChiZmRfdm1hKSAtMTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIXVzZV9wbHQp CisJeworCSAgLyogUExUIGlzbid0IHVzZWQuICAqLworCSAgaC0+cGx0Lm9mZnNldCA9IChiZmRf dm1hKSAtMTsKKwl9CisgICAgICBpZiAoaC0+Z290LnJlZmNvdW50IDw9IDApCisJeworCSAgLyog R09UIGlzbid0IG5lZWQgd2hlbiB0aGVyZSBhcmUgb25seSByZWxvY2F0aW9ucyBmb3Igc3RhdGlj CisJICAgICBwb2ludGVycy4gICovCisJICBoLT5nb3Qub2Zmc2V0ID0gKGJmZF92bWEpIC0xOwor CX0KKyAgICAgIGVsc2UKKwl7CisJICBoLT5nb3Qub2Zmc2V0ID0gaHRhYi0+c2dvdC0+c2l6ZTsK KwkgIGh0YWItPnNnb3QtPnNpemUgKz0gZ290X2VudHJ5X3NpemU7CisJICAvKiBOZWVkIHRvIHJl bG9jYXRlIHRoZSBHT1QgZW50cnkgaW4gYSBQSUMgb2JqZWN0IG9yIFBMVCBpc24ndAorCSAgICAg dXNlZC4gIE90aGVyd2lzZSwgdGhlIEdPVCBlbnRyeSB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBQ TFQKKwkgICAgIGVudHJ5IGFuZCBkeW5hbWljIEdPVCByZWxvY2F0aW9uIGlzbid0IG5lZWRlZC4g ICovCisJICBpZiAobmVlZF9keW5yZWxvYykKKwkgICAgeworCSAgICAgIC8qIEZvciBub24tc3Rh dGljIGV4ZWN1dGFibGUsIGR5bmFtaWMgR09UIHJlbG9jYXRpb24gaXMgaW4KKwkJIHJlbFthXS5n b3Qgc2VjdGlvbiwgYnV0IGZvciBzdGF0aWMgZXhlY3V0YWJsZSwgaXQgaXMKKwkJIGluIHJlbFth XS5pcGx0IHNlY3Rpb24uICAqLworCSAgICAgIGlmIChodGFiLT5zcGx0ICE9IE5VTEwpCisJCWh0 YWItPnNyZWxnb3QtPnNpemUgKz0gc2l6ZW9mX3JlbG9jOworCSAgICAgIGVsc2UKKwkJeworCQkg IHJlbHBsdC0+c2l6ZSArPSBzaXplb2ZfcmVsb2M7CisJCSAgcmVscGx0LT5yZWxvY19jb3VudCsr OworCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgIHJldHVybiB0cnVlOworfQorCiAvKiBBbGxv Y2F0ZSBzcGFjZSBpbiAucGx0LCAuZ290IGFuZCBhc3NvY2lhdGVkIHJlbG9jIHNlY3Rpb25zIGZv cgogICAgaWZ1bmMgZHluYW1pYyByZWxvY3MuICAqLwogCkBAIC0xMjIzLDE0ICsxNDc2LDI1IEBA IGVsZk5OX2xvb25nYXJjaF9hbGxvY2F0ZV9pZnVuY19keW5yZWxvY3MgKHN0cnVjdCBlbGZfbGlu a19oYXNoX2VudHJ5ICpoLAogCiAgIC8qIFNpbmNlIFNUVF9HTlVfSUZVTkMgc3ltYm9sIG11c3Qg Z28gdGhyb3VnaCBQTFQsIHdlIGhhbmRsZSBpdAogICAgICBoZXJlIGlmIGl0IGlzIGRlZmluZWQg YW5kIHJlZmVyZW5jZWQgaW4gYSBub24tc2hhcmVkIG9iamVjdC4gICovCi0gIGlmIChoLT50eXBl ID09IFNUVF9HTlVfSUZVTkMKLSAgICAgICYmIGgtPmRlZl9yZWd1bGFyKQotICAgIHJldHVybiBf YmZkX2VsZl9hbGxvY2F0ZV9pZnVuY19keW5fcmVsb2NzIChpbmZvLCBoLAorICBpZiAoaC0+dHlw ZSA9PSBTVFRfR05VX0lGVU5DICYmIGgtPmRlZl9yZWd1bGFyKQorICAgIHsKKyAgICAgIGlmIChT WU1CT0xfUkVGRVJFTkNFU19MT0NBTCAoaW5mbywgaCkpCisJcmV0dXJuIGxvY2FsX2FsbG9jYXRl X2lmdW5jX2R5bl9yZWxvY3MgKGluZm8sIGgsCiAJCQkJCSAgICAgICAmaC0+ZHluX3JlbG9jcywK IAkJCQkJICAgICAgIFBMVF9FTlRSWV9TSVpFLAogCQkJCQkgICAgICAgUExUX0hFQURFUl9TSVpF LAogCQkJCQkgICAgICAgR09UX0VOVFJZX1NJWkUsCiAJCQkJCSAgICAgICBmYWxzZSk7CisgICAg ICBlbHNlCisJcmV0dXJuIF9iZmRfZWxmX2FsbG9jYXRlX2lmdW5jX2R5bl9yZWxvY3MgKGluZm8s IGgsCisJCQkJCSAgICAgICAmaC0+ZHluX3JlbG9jcywKKwkJCQkJICAgICAgIFBMVF9FTlRSWV9T SVpFLAorCQkJCQkgICAgICAgUExUX0hFQURFUl9TSVpFLAorCQkJCQkgICAgICAgR09UX0VOVFJZ X1NJWkUsCisJCQkJCSAgICAgICBmYWxzZSk7CisKKyAgICB9CisKICAgcmV0dXJuIHRydWU7CiB9 CiAKQEAgLTIxNTAsMTMgKzI0MTQsNyBAQCBsb29uZ2FyY2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24g KGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJCQkJICAgICAr IGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPnZtYQogCQkJCSAgICAgKyBo LT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9vZmZzZXQpOwogCi0JCSAgLyogRHluYW1pYyBy ZWxvY2F0aW9ucyBhcmUgc3RvcmVkIGluCi0JCSAgICAgMS4gLnJlbGEuaWZ1bmMgc2VjdGlvbiBp biBQSUMgb2JqZWN0LgotCQkgICAgIDIuIC5yZWxhLmdvdCBzZWN0aW9uIGluIGR5bmFtaWMgZXhl Y3V0YWJsZS4KLQkJICAgICAzLiAucmVsYS5pcGx0IHNlY3Rpb24gaW4gc3RhdGljIGV4ZWN1dGFi bGUuICAqLwotCQkgIGlmIChiZmRfbGlua19waWMgKGluZm8pKQotCQkgICAgc3JlbG9jID0gaHRh Yi0+ZWxmLmlyZWxpZnVuYzsKLQkJICBlbHNlIGlmIChodGFiLT5lbGYuc3BsdCAhPSBOVUxMKQor CQkgIGlmIChodGFiLT5lbGYuc3BsdCAhPSBOVUxMKQogCQkgICAgc3JlbG9jID0gaHRhYi0+ZWxm LnNyZWxnb3Q7CiAJCSAgZWxzZQogCQkgICAgc3JlbG9jID0gaHRhYi0+ZWxmLmlyZWxwbHQ7CkBA IC0yNDI3LDcgKzI2ODUsOSBAQCBsb29uZ2FyY2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAq b3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAkgIGlmIChoICE9IE5V TEwpCiAJICAgIHsKLQkgICAgICBvZmYgPSBoLT5nb3Qub2Zmc2V0OworCSAgICAgIGJmZF92bWEg YWx0X29mZiA9IGgtPmdvdC5vZmZzZXQ7CisJICAgICAgc3RydWN0IGJmZF9zZWN0aW9uICphbHRf Z290ID0gZ290OworCSAgICAgIG9mZiA9IGFsdF9vZmY7CiAKIAkgICAgICBpZiAob2ZmID09IE1J TlVTX09ORQogCQkgICYmIGgtPnR5cGUgIT0gU1RUX0dOVV9JRlVOQykKQEAgLTI0NTAsMjAgKzI3 MTAsMTkgQEAgbG9vbmdhcmNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQs IHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAogCQkgICAgfQogCiAJCSAgYmZkX3ZtYSBwbHRf aW5kZXggPSBoLT5wbHQub2Zmc2V0IC8gUExUX0VOVFJZX1NJWkU7Ci0JCSAgb2ZmID0gcGx0X2lu ZGV4ICogR09UX0VOVFJZX1NJWkU7CisJCSAgYWx0X29mZiA9IHBsdF9pbmRleCAqIEdPVF9FTlRS WV9TSVpFOwogCiAJCSAgaWYgKGh0YWItPmVsZi5zcGx0ICE9IE5VTEwpCiAJCSAgICB7CiAJCSAg ICAgIC8qIFNlY3Rpb24gLnBsdCBoZWFkZXIgaXMgMiB0aW1lcyBvZiBwbHQgZW50cnkuICAqLwot CQkgICAgICBvZmYgPSBzZWNfYWRkcihodGFiLT5lbGYuc2dvdHBsdCkgKyBvZmYKLQkJCS0gc2Vj X2FkZHIoaHRhYi0+ZWxmLnNnb3QpOworCQkgICAgICBhbHRfZ290ID0gaHRhYi0+ZWxmLnNnb3Rw bHQ7CiAJCSAgICB9CiAJCSAgZWxzZQogCQkgICAgewogCQkgICAgICAvKiBTZWN0aW9uIGlwbHQg bm90IGhhcyBwbHQgaGVhZGVyLiAgKi8KLQkJICAgICAgb2ZmID0gc2VjX2FkZHIoaHRhYi0+ZWxm Lmlnb3RwbHQpICsgb2ZmCi0JCQktIHNlY19hZGRyKGh0YWItPmVsZi5zZ290KTsKKwkJICAgICAg YWx0X2dvdCA9IGh0YWItPmVsZi5pZ290cGx0OwogCQkgICAgfQorCQkgIG9mZiA9IHNlY19hZGRy KGFsdF9nb3QpICsgYWx0X29mZiAtIHNlY19hZGRyKGh0YWItPmVsZi5zZ290KTsKIAkJfQogCiAJ ICAgICAgaWYgKCFXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MIChpc19keW4sIGlzX3Bp YywgaCkKQEAgLTI1MjUsNyArMjc4NCw3IEBAIGxvb25nYXJjaF9lbGZfcmVsb2NhdGVfc2VjdGlv biAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAkJCSAgb3V0 cmVsLnJfYWRkZW5kID0gcmVsb2NhdGlvbjsgLyogTGluay10aW1lIGFkZHIuICAqLwogCQkJICBs b29uZ2FyY2hfZWxmX2FwcGVuZF9yZWxhIChvdXRwdXRfYmZkLCBzLCAmb3V0cmVsKTsKIAkJCX0K LQkJICAgICAgYmZkX3B1dF9OTiAob3V0cHV0X2JmZCwgcmVsb2NhdGlvbiwgZ290LT5jb250ZW50 cyArIG9mZik7CisJCSAgICAgIGJmZF9wdXRfTk4gKG91dHB1dF9iZmQsIHJlbG9jYXRpb24sIGFs dF9nb3QtPmNvbnRlbnRzICsgYWx0X29mZik7CiAJCSAgICAgIGgtPmdvdC5vZmZzZXQgfD0gMTsK IAkJICAgIH0KIAkJfQpAQCAtMjg2MCw3ICszMTE5LDEwIEBAIGxvb25nYXJjaF9lbGZfZmluaXNo X2R5bmFtaWNfc3ltYm9sIChiZmQgKm91dHB1dF9iZmQsCiAKIAkgIHBsdCA9IGh0YWItPmVsZi5z cGx0OwogCSAgZ290cGx0ID0gaHRhYi0+ZWxmLnNnb3RwbHQ7Ci0JICByZWxwbHQgPSBodGFiLT5l bGYuc3JlbHBsdDsKKwkgIGlmIChoLT50eXBlID09IFNUVF9HTlVfSUZVTkMgJiYgU1lNQk9MX1JF RkVSRU5DRVNfTE9DQUwgKGluZm8sIGgpKQorCSAgICByZWxwbHQgPSBodGFiLT5lbGYuc3JlbGdv dDsKKwkgIGVsc2UKKwkgICAgcmVscGx0ID0gaHRhYi0+ZWxmLnNyZWxwbHQ7CiAJICBwbHRfaWR4 ID0gKGgtPnBsdC5vZmZzZXQgLSBQTFRfSEVBREVSX1NJWkUpIC8gUExUX0VOVFJZX1NJWkU7CiAJ ICBnb3RfYWRkcmVzcyA9CiAJICAgIHNlY19hZGRyIChnb3RwbHQpICsgR09UUExUX0hFQURFUl9T SVpFICsgcGx0X2lkeCAqIEdPVF9FTlRSWV9TSVpFOwpAQCAtMjg5NiwyMyArMzE1OCw0NSBAQCBs b29uZ2FyY2hfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCAoYmZkICpvdXRwdXRfYmZkLAogICAg ICAgcmVsYS5yX29mZnNldCA9IGdvdF9hZGRyZXNzOwogCiAgICAgICAvKiBUUlVFIGlmIHRoaXMg aXMgYSBQTFQgcmVmZXJlbmNlIHRvIGEgbG9jYWwgSUZVTkMuICAqLwotICAgICAgaWYgKFBMVF9M T0NBTF9JRlVOQ19QKGluZm8sIGgpKQorICAgICAgaWYgKFBMVF9MT0NBTF9JRlVOQ19QIChpbmZv LCBoKQorCSAgJiYgKHJlbHBsdCA9PSBodGFiLT5lbGYuc3JlbGdvdAorCSAgICAgIHx8IHJlbHBs dCA9PSBodGFiLT5lbGYuaXJlbHBsdCkpCiAJewotCSAgcmVsYS5yX2luZm8gPSBFTEZOTl9SX0lO Rk8gKDAsIFJfTEFSQ0hfSVJFTEFUSVZFKTsKLQkgIHJlbGEucl9hZGRlbmQgPSAoaC0+cm9vdC51 LmRlZi52YWx1ZQotCQkJICAgKyBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9zZWN0aW9u LT52bWEKLQkJCSAgICsgaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0KTsKKwkg ICAgeworCSAgICAgIHJlbGEucl9pbmZvID0gRUxGTk5fUl9JTkZPICgwLCBSX0xBUkNIX0lSRUxB VElWRSk7CisJICAgICAgcmVsYS5yX2FkZGVuZCA9IChoLT5yb290LnUuZGVmLnZhbHVlCisJCQkg ICAgICAgKyBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEKKwkJCSAg ICAgICArIGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3V0cHV0X29mZnNldCk7CisJICAgIH0KKwor CSAgICAvKiBGaW5kIHRoZSBzcGFjZSBhZnRlciBkeW4gc29ydC4gICovCisJICAgIHsKKwkgICAg ICBFbGZfSW50ZXJuYWxfUmVsYSAqZHluID0gKEVsZl9JbnRlcm5hbF9SZWxhICopcmVscGx0LT5j b250ZW50czsKKwkgICAgICBib29sIGZpbGwgPSBmYWxzZTsKKwkgICAgICBmb3IgKDtkeW4gPCBk eW4gKyByZWxwbHQtPnNpemUgLyBzaXplb2YgKCpkeW4pOyBkeW4rKykKKwkJeworCQkgIGlmICgw ID09IGR5bi0+cl9vZmZzZXQpCisJCSAgICB7CisJCSAgICAgIGJlZC0+cy0+c3dhcF9yZWxvY2Ff b3V0IChvdXRwdXRfYmZkLCAmcmVsYSwKKwkJCQkJICAgICAgIChiZmRfYnl0ZSAqKWR5bik7CisJ CSAgICAgIHJlbHBsdC0+cmVsb2NfY291bnQrKzsKKwkJICAgICAgZmlsbCA9IHRydWU7CisJCSAg ICAgIGJyZWFrOworCQkgICAgfQorCQl9CisJICAgICAgQkZEX0FTU0VSVCAoZmlsbCk7CisJICAg IH0KKwogCX0KICAgICAgIGVsc2UKIAl7Ci0JICAvKiBGaWxsIGluIHRoZSBlbnRyeSBpbiB0aGUg LnJlbGEucGx0IHNlY3Rpb24uICAqLworCSAgLyogRmlsbCBpbiB0aGUgZW50cnkgaW4gdGhlIHJl bGEucGx0IHNlY3Rpb24uICAqLwogCSAgcmVsYS5yX2luZm8gPSBFTEZOTl9SX0lORk8gKGgtPmR5 bmluZHgsIFJfTEFSQ0hfSlVNUF9TTE9UKTsKIAkgIHJlbGEucl9hZGRlbmQgPSAwOworCSAgbG9j ID0gcmVscGx0LT5jb250ZW50cyArIHBsdF9pZHggKiBzaXplb2YgKEVsZk5OX0V4dGVybmFsX1Jl bGEpOworCSAgYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQgKG91dHB1dF9iZmQsICZyZWxhLCBsb2Mp OwogCX0KIAotICAgICAgbG9jID0gcmVscGx0LT5jb250ZW50cyArIHBsdF9pZHggKiBzaXplb2Yg KEVsZk5OX0V4dGVybmFsX1JlbGEpOwotICAgICAgYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQgKG91 dHB1dF9iZmQsICZyZWxhLCBsb2MpOwotCiAgICAgICBpZiAoIWgtPmRlZl9yZWd1bGFyKQogCXsK IAkgIC8qIE1hcmsgdGhlIHN5bWJvbCBhcyB1bmRlZmluZWQsIHJhdGhlciB0aGFuIGFzIGRlZmlu ZWQgaW4KLS0gCjIuMzcuMAoK --=-yYaoV7EpblQHnSkK3Z7J--