From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1apFnd-00021g-Kl for mharc-grub-devel@gnu.org; Sun, 10 Apr 2016 09:53:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60715) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1apFnW-0001tX-BS for grub-devel@gnu.org; Sun, 10 Apr 2016 09:53:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1apFnR-0006oz-DU for grub-devel@gnu.org; Sun, 10 Apr 2016 09:53:06 -0400 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:37194) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1apFnQ-0006ov-P9 for grub-devel@gnu.org; Sun, 10 Apr 2016 09:53:01 -0400 Received: by mail-wm0-x232.google.com with SMTP id n3so73443578wmn.0 for ; Sun, 10 Apr 2016 06:53:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20150623.gappssmtp.com; s=20150623; h=from:subject:to:message-id:date:user-agent:mime-version; bh=lg8mePL+lDggqK8ylzS8hwQZTqded6FrOfs8TKFMiWs=; b=dB5AXRMvZO/29K5LaIUiFcMDZgHEVMl/7nlyeb5UBC0s4JJHwQoicQsOTSW0CRcy8h SjF+3l5XREdsJydIsfnLerTnRoEZgumTdab607ITzToB8ixQqCOA8XuFJ3xLbOyhXj1X Ecgze5ubTOq2d0G/RPmHb2zUJ96SH3hKHiED5UPUYItwSdi6XmmG0Oh/U/uI6BRekArw rEv6oJeQVZ0zUTIZDmTE0FBQvpUh+FhgNqcCokKbQm8/8ZmN+P76YzG0B1SRFfr5J8MY L4VPZoAFeQI14B7VFhieoO1sgUPjwIn62oykBR8QxyoTIC8Y4ES+iFdMjKpwd+VscjEr EPWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:message-id:date:user-agent :mime-version; bh=lg8mePL+lDggqK8ylzS8hwQZTqded6FrOfs8TKFMiWs=; b=kv7lPl/txPD0LlbomT//1d4ERt829ZdYMsJeHMEbmmAH8YOhLuRaIQT8RhSO4k0LnO 6TnCAUUm63H1qtQokMy7YBtf+YXj5XBbWLVYgWLJIgLd88Bl8vqUgs01+7CU0w8vDUXp wemShptd7pSTV3/NtLdZN0GuS8bJVHkLAwg8DVwn9npX4zF5wwIx5cKd3pIEH/SZya3/ sxLsemgD6BYKjK6elCXHep2qI5cXOF6RfA8XSNrM73hHCwEUAZCaZo47VdVmLcD5iWLK JZgj0WYW73HufiaR1mZ//sTU7maprrgnnbyET1nXEDFcJO6eF9ME52X9ueM5vfRsXS+T MRTQ== X-Gm-Message-State: AD7BkJKX+iwP3XISA2e/Nzto7fEqVEqXaj8jeRwb9DEgQbPCMSAFV9B0RrASTxIX97wM3g== X-Received: by 10.28.227.130 with SMTP id a124mr13851669wmh.2.1460296379424; Sun, 10 Apr 2016 06:52:59 -0700 (PDT) Received: from [192.168.0.10] (gge44-1-78-198-200-53.fbx.proxad.net. [78.198.200.53]) by smtp.googlemail.com with ESMTPSA id js8sm22799000wjc.37.2016.04.10.06.52.57 for (version=TLSv1/SSLv3 cipher=OTHER); Sun, 10 Apr 2016 06:52:58 -0700 (PDT) From: Pete Batard Subject: [PATCH] fs: remove implicit compiler calls to memset/memcpy To: grub-devel@gnu.org Message-ID: <570A5AB8.7040901@akeo.ie> Date: Sun, 10 Apr 2016 15:52:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060303070606030001090407" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::232 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Apr 2016 13:53:11 -0000 This is a multi-part message in MIME format. --------------060303070606030001090407 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi, I am using the GRUB codebase to build generic read-only EFI file system drivers [1] and during that process, I found that some compilers (e.g. MSVC, but most likely others) may insert implicit calls to memset/memcpy when initializing or copying structure content, which defeats the use of grub_memset/grub_memcpy as well as the avoidance of standard libraries. This patch ensures that grub_memset/grub_memcpy are used where required in the file system sources (as well as some corollary files). The patch also removes unnecessary trailing whitespaces for the affected files. A couple of additional notes: * The patch also removes page breaks on some files as this is something my git client (TortoiseGit) does automatically on its own and that doesn't seem to be configurable. I do hope that this isn't a deal breaker, as it would be a major PITA for me to rework patches to keep the breaks in, and I kind of fail to see why we'd want to keep them in the sources. * Yes, the 'const char nl[2] = "\n";' in misc.h does generate an implicit memcpy(), at least with MSVC for ARM. For what is worth, every non whitespace change that was applied in this patch stems from looking at the generated assembly, and isolating the memset/memcpy references. * In zfs.c, you'll see that some function calls had to be modified to get their parameters by reference, as passing them by value was also generating implicit memcpy calls. Regards, /Pete [1] https://github.com/pbatard/efifs --------------060303070606030001090407 Content-Type: text/plain; charset=UTF-8; name="fs-remove-implicit-compiler-calls-to-memset-memcpy.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="fs-remove-implicit-compiler-calls-to-memset-memcpy.patch" RnJvbSBmMTA3NjA3Y2JlMjA1MmVmZmUwOWFhZGQxZTQ0MWQ0MTZjNzNmOTVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlIEJhdGFyZCA8cGV0ZUBha2VvLmllPgpEYXRl OiBTdW4sIDEwIEFwciAyMDE2IDE0OjQ1OjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gZnM6 IHJlbW92ZSBpbXBsaWNpdCBjb21waWxlciBjYWxscyB0byBtZW1zZXQvbWVtY3B5CgpTb21l IGNvbXBpbGVycyBtYXkgaW5zZXJ0IGNhbGxzIHRvIG1lbXNldC9tZW1jcHkgd2hlbiBpbml0 aWFsaXppbmcKb3IgY29weWluZyBzdHJ1Y3R1cmUgY29udGVudC4gVGhpcyBwYXRjaCBlbnN1 cmVzIHRoYXQgZ3J1Yl9tZW1zZXQKYW5kIGdydWJfbWVtY3B5IGFyZSB1c2VkIGluc3RlYWQu CgpBbHNvIGZpeCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBmb3IgYWZmZWN0ZWQgZmlsZXMuCi0t LQogZ3J1Yi1jb3JlL2ZzL2FmZnMuYyAgICB8ICAxOCArKy0tCiBncnViLWNvcmUvZnMvYmZz LmMgICAgIHwgIDMzICsrKy0tLQogZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgICB8ICAgOCArLQog Z3J1Yi1jb3JlL2ZzL2hmcy5jICAgICB8ICA0MiArKysrLS0tLQogZ3J1Yi1jb3JlL2ZzL2hm c3BsdXMuYyB8ICAxNiArLS0KIGdydWItY29yZS9mcy9pc285NjYwLmMgfCAgMzAgKysrLS0t CiBncnViLWNvcmUvZnMvdWRmLmMgICAgIHwgICA0ICstCiBncnViLWNvcmUvZnMvemZzL3pm cy5jIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGdydWItY29yZS9pby9nemlvLmMgICAgfCAgIDggKy0KIGluY2x1ZGUvZ3J1Yi9t aXNjLmggICAgfCAgIDIgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRpb25zKCsp LCAyMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL2FmZnMuYyBi L2dydWItY29yZS9mcy9hZmZzLmMKaW5kZXggZjY3Mzg5Ny4uMjZiNzRhNyAxMDA2NDQKLS0t IGEvZ3J1Yi1jb3JlL2ZzL2FmZnMuYworKysgYi9ncnViLWNvcmUvZnMvYWZmcy5jCkBAIC05 OSw3ICs5OSw3IEBAIGVudW0KICNkZWZpbmUgQUZGU19NQVhfTE9HX0JMT0NLX1NJWkUgNAog I2RlZmluZSBBRkZTX01BWF9TVVBFUkJMT0NLIDEKIAotDAorCiAKIHN0cnVjdCBncnViX2Zz aGVscF9ub2RlCiB7CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IGdydWJfYWZmc19kYXRh CiAKIHN0YXRpYyBncnViX2RsX3QgbXlfbW9kOwogCi0MCisKIHN0YXRpYyBncnViX2Rpc2tf YWRkcl90CiBncnViX2FmZnNfcmVhZF9ibG9jayAoZ3J1Yl9mc2hlbHBfbm9kZV90IG5vZGUs IGdydWJfZGlza19hZGRyX3QgZmlsZWJsb2NrKQogewpAQCAtMzQ1LDggKzM0NSw4IEBAIGdy dWJfYWZmc19jcmVhdGVfbm9kZSAoZ3J1Yl9mc2hlbHBfbm9kZV90IGRpciwKICAgaWYgKGxl biA+IHNpemVvZiAoZmlsLT5uYW1lKSkKICAgICBsZW4gPSBzaXplb2YgKGZpbC0+bmFtZSk7 CiAgICpncnViX2xhdGluMV90b191dGY4IChuYW1lX3U4LCBmaWwtPm5hbWUsIGxlbikgPSAn XDAnOwotICAKLSAgKCpub2RlKS0+ZGkgPSAqZmlsOworCisgIGdydWJfbWVtY3B5ICgmKCpu b2RlKS0+ZGksIGZpbCwgc2l6ZW9mICgqZmlsKSk7CiAgIGZvciAobmVzdCA9IDA7IG5lc3Qg PCA4OyBuZXN0KyspCiAgICAgewogICAgICAgc3dpdGNoICgoKm5vZGUpLT5kaS50eXBlKQpA QCAtNDA4LDggKzQwOCw4IEBAIGdydWJfYWZmc19pdGVyYXRlX2RpciAoZ3J1Yl9mc2hlbHBf bm9kZV90IGRpciwKICAgbm9kZSA9IGdydWJfemFsbG9jIChzaXplb2YgKCpub2RlKSk7CiAg IGlmICghbm9kZSkKICAgICByZXR1cm4gMTsKLSAgICAKLSAgKm5vZGUgPSAqZGlyOworCisg IGdydWJfbWVtY3B5IChub2RlLCBkaXIsIHNpemVvZiAoKmRpcikpOwogICBpZiAoaG9vayAo Ii4iLCBHUlVCX0ZTSEVMUF9ESVIsIG5vZGUsIGhvb2tfZGF0YSkpCiAgICAgcmV0dXJuIDE7 CiAgIGlmIChkaXItPnBhcmVudCkKQEAgLTQxNyw3ICs0MTcsNyBAQCBncnViX2FmZnNfaXRl cmF0ZV9kaXIgKGdydWJfZnNoZWxwX25vZGVfdCBkaXIsCiAgICAgICBub2RlID0gZ3J1Yl96 YWxsb2MgKHNpemVvZiAoKm5vZGUpKTsKICAgICAgIGlmICghbm9kZSkKIAlyZXR1cm4gMTsK LSAgICAgICpub2RlID0gKmRpci0+cGFyZW50OworICAgICAgZ3J1Yl9tZW1jcHkgKG5vZGUs IGRpci0+cGFyZW50LCBzaXplb2YgKCpkaXItPnBhcmVudCkpOwogICAgICAgaWYgKGhvb2sg KCIuLiIsIEdSVUJfRlNIRUxQX0RJUiwgbm9kZSwgaG9va19kYXRhKSkKIAlyZXR1cm4gMTsK ICAgICB9CkBAIC00OTEsNyArNDkxLDcgQEAgZ3J1Yl9hZmZzX29wZW4gKHN0cnVjdCBncnVi X2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgZ290byBmYWlsOwogCiAgIGZp bGUtPnNpemUgPSBncnViX2JlX3RvX2NwdTMyIChmZGlyby0+ZGkuc2l6ZSk7Ci0gIGRhdGEt PmRpcm9wZW4gPSAqZmRpcm87CisgIGdydWJfbWVtY3B5ICgmZGF0YS0+ZGlyb3BlbiwgZmRp cm8sIHNpemVvZiAoKmZkaXJvKSk7CiAgIGdydWJfZnJlZSAoZmRpcm8pOwogCiAgIGZpbGUt PmRhdGEgPSBkYXRhOwpAQCAtNjgxLDcgKzY4MSw3IEBAIGdydWJfYWZmc19tdGltZSAoZ3J1 Yl9kZXZpY2VfdCBkZXZpY2UsIGdydWJfaW50MzJfdCAqdCkKICAgcmV0dXJuIEdSVUJfRVJS X05PTkU7CiB9CiAKLQwKKwogc3RhdGljIHN0cnVjdCBncnViX2ZzIGdydWJfYWZmc19mcyA9 CiAgIHsKICAgICAubmFtZSA9ICJhZmZzIiwKZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy9i ZnMuYyBiL2dydWItY29yZS9mcy9iZnMuYwppbmRleCBkMmI0OTBiLi43MWNhNjc0IDEwMDY0 NAotLS0gYS9ncnViLWNvcmUvZnMvYmZzLmMKKysrIGIvZ3J1Yi1jb3JlL2ZzL2Jmcy5jCkBA IC01MzAsMTMgKzUzMCwxMyBAQCBpdGVyYXRlX2luX2JfdHJlZSAoZ3J1Yl9kaXNrX3QgZGlz aywKICAgICAgIGVyciA9IHJlYWRfYl9ub2RlIChkaXNrLCBzYiwgaW5vLAogCQkJIG5vZGVf b2ZmLAogCQkJICZub2RlLAotCQkJICZrZXlfZGF0YSwgCisJCQkgJmtleV9kYXRhLAogCQkJ ICZrZXlsZW5faWR4LAogCQkJICZrZXlfdmFsdWVzKTsKIAogICAgICAgaWYgKGVycikKIAly ZXR1cm4gMDsKLSAgICAgIAorCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9iZnNfdG9f Y3B1X3RyZWVoZWFkIChub2RlLT5jb3VudF9rZXlzKTsgaSsrKQogCXsKIAkgIGNoYXIgYzsK QEAgLTY4Miw3ICs2ODIsNyBAQCBmaW5kX2luX2JfdHJlZSAoZ3J1Yl9kaXNrX3QgZGlzaywK IAkJbGV2ZWwtLTsKIAkJZ3J1Yl9mcmVlIChub2RlKTsKIAkJY29udGludWU7Ci0JICAgICAg fQkgICAgICAKKwkgICAgICB9CiAJICB9CiAJZWxzZSBpZiAobGV2ZWwgIT0gMAogCQkgJiYg aSArIDEgPCBncnViX2Jmc190b19jcHVfdHJlZWhlYWQgKG5vZGUtPmNvdW50X2tleXMpKQpA QCAtODAyLDExICs4MDIsMTEgQEAgZmluZF9maWxlIChjb25zdCBjaGFyICpwYXRoLCBncnVi X2Rpc2tfdCBkaXNrLAogCSAgIGVudW0gZ3J1Yl9mc2hlbHBfZmlsZXR5cGUgZXhwdHlwZSkK IHsKICAgZ3J1Yl9lcnJfdCBlcnI7Ci0gIHN0cnVjdCBncnViX2ZzaGVscF9ub2RlIHJvb3Qg PSB7Ci0gICAgLmRpc2sgPSBkaXNrLAotICAgIC5zYiA9IHNiLAotICB9OwotICBzdHJ1Y3Qg Z3J1Yl9mc2hlbHBfbm9kZSAqZm91bmQ7CisgIHN0cnVjdCBncnViX2ZzaGVscF9ub2RlIHJv b3QsICpmb3VuZDsKKworICBncnViX21lbXNldCAoJnJvb3QsIDAsIHNpemVvZiAocm9vdCkp OworICByb290LmRpc2sgPSBkaXNrOworICByb290LnNiID0gc2I7CiAKICAgZXJyID0gcmVh ZF9leHRlbnQgKGRpc2ssIHNiLCAmc2ItPnJvb3RfZGlyLCAwLCAwLCAmcm9vdC5pbm8sCiAJ CSAgICAgc2l6ZW9mIChyb290LmlubykpOwpAQCAtODI3LDcgKzgyNyw3IEBAIG1vdW50IChn cnViX2Rpc2tfdCBkaXNrLCBzdHJ1Y3QgZ3J1Yl9iZnNfc3VwZXJibG9jayAqc2IpCiAgIGdy dWJfZXJyX3QgZXJyOwogICBlcnIgPSBncnViX2Rpc2tfcmVhZCAoZGlzaywgU1VQRVJCTE9D SywgMCwgc2l6ZW9mICgqc2IpLCBzYik7CiAgIGlmIChlcnIgPT0gR1JVQl9FUlJfT1VUX09G X1JBTkdFKQotICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRlMsIAorICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRlMsCiAjaWZkZWYgTU9ERV9BRlMK IAkJICAgICAgICJub3QgYW4gQUZTIGZpbGVzeXN0ZW0iCiAjZWxzZQpAQCAtODQzLDcgKzg0 Myw3IEBAIG1vdW50IChncnViX2Rpc2tfdCBkaXNrLCBzdHJ1Y3QgZ3J1Yl9iZnNfc3VwZXJi bG9jayAqc2IpCiAgICAgICB8fCAoZ3J1Yl9iZnNfdG9fY3B1MzIgKHNiLT5ic2l6ZSkKIAkg ICE9ICgxVSA8PCBncnViX2Jmc190b19jcHUzMiAoc2ItPmxvZzJfYnNpemUpKSkKICAgICAg IHx8IGdydWJfYmZzX3RvX2NwdTMyIChzYi0+bG9nMl9ic2l6ZSkgPCBHUlVCX0RJU0tfU0VD VE9SX0JJVFMpCi0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywgCisg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywKICNpZmRlZiBNT0RFX0FG UwogCQkgICAgICAgIm5vdCBhbiBBRlMgZmlsZXN5c3RlbSIKICNlbHNlCkBAIC04ODcsMTMg Kzg4NywxNCBAQCBzdGF0aWMgZ3J1Yl9lcnJfdAogZ3J1Yl9iZnNfZGlyIChncnViX2Rldmlj ZV90IGRldmljZSwgY29uc3QgY2hhciAqcGF0aCwKIAkgICAgICBncnViX2ZzX2Rpcl9ob29r X3QgaG9vaywgdm9pZCAqaG9va19kYXRhKQogewotICBzdHJ1Y3QgZ3J1Yl9iZnNfZGlyX2N0 eCBjdHggPSB7Ci0gICAgLmRldmljZSA9IGRldmljZSwKLSAgICAuaG9vayA9IGhvb2ssCi0g ICAgLmhvb2tfZGF0YSA9IGhvb2tfZGF0YQotICB9OworICBzdHJ1Y3QgZ3J1Yl9iZnNfZGly X2N0eCBjdHg7CiAgIGdydWJfZXJyX3QgZXJyOwogCisgIGdydWJfbWVtc2V0ICgmY3R4LCAw LCBzaXplb2YgKGN0eCkpOworICBjdHguZGV2aWNlID0gZGV2aWNlOworICBjdHguaG9vayA9 IGhvb2s7CisgIGN0eC5ob29rX2RhdGEgPSBob29rX2RhdGE7CisKICAgZXJyID0gbW91bnQg KGRldmljZS0+ZGlzaywgJmN0eC5zYik7CiAgIGlmIChlcnIpCiAgICAgcmV0dXJuIGVycjsK QEAgLTkzMCw3ICs5MzEsNyBAQCBncnViX2Jmc19vcGVuIChzdHJ1Y3QgZ3J1Yl9maWxlICpm aWxlLCBjb25zdCBjaGFyICpuYW1lKQogICAgIGRhdGEgPSBncnViX3phbGxvYyAoc2l6ZW9m IChzdHJ1Y3QgZ3J1Yl9iZnNfZGF0YSkpOwogICAgIGlmICghZGF0YSkKICAgICAgIHJldHVy biBncnViX2Vycm5vOwotICAgIGRhdGEtPnNiID0gc2I7CisgICAgZ3J1Yl9tZW1jcHkgKCZk YXRhLT5zYiwgJnNiLCBzaXplb2YgKHNiKSk7CiAgICAgZ3J1Yl9tZW1jcHkgKCZkYXRhLT5p bm8sICZpbm8sIHNpemVvZiAoZGF0YS0+aW5vKSk7CiAgICAgZmlsZS0+ZGF0YSA9IGRhdGE7 CiAgICAgZmlsZS0+c2l6ZSA9IGdydWJfYmZzX3RvX2NwdTY0IChpbm8uc2l6ZSk7CmRpZmYg LS1naXQgYS9ncnViLWNvcmUvZnMvYnRyZnMuYyBiL2dydWItY29yZS9mcy9idHJmcy5jCmlu ZGV4IDljZmZhOTEuLjhkOTk4MTggMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9mcy9idHJmcy5j CisrKyBiL2dydWItY29yZS9mcy9idHJmcy5jCkBAIC0zNTUsNyArMzU1LDcgQEAgbmV4dCAo c3RydWN0IGdydWJfYnRyZnNfZGF0YSAqZGF0YSwKICAgKm91dHNpemUgPSBncnViX2xlX3Rv X2NwdTMyIChsZWFmLnNpemUpOwogICAqb3V0YWRkciA9IGRlc2MtPmRhdGFbZGVzYy0+ZGVw dGggLSAxXS5hZGRyICsgc2l6ZW9mIChzdHJ1Y3QgYnRyZnNfaGVhZGVyKQogICAgICsgZ3J1 Yl9sZV90b19jcHUzMiAobGVhZi5vZmZzZXQpOwotICAqa2V5X291dCA9IGxlYWYua2V5Owor ICBncnViX21lbWNweSAoa2V5X291dCwgJmxlYWYua2V5LCBzaXplb2YgKGxlYWYua2V5KSk7 CiAgIHJldHVybiAxOwogfQogCkBAIC00MzYsNyArNDM2LDcgQEAgbG93ZXJfYm91bmQgKHN0 cnVjdCBncnViX2J0cmZzX2RhdGEgKmRhdGEsCiAJCX0KIAkgICAgICBpZiAoa2V5X2NtcCAo Jm5vZGUua2V5LCBrZXlfaW4pID4gMCkKIAkJYnJlYWs7Ci0JICAgICAgbm9kZV9sYXN0ID0g bm9kZTsKKwkgICAgICBncnViX21lbWNweSAoJm5vZGVfbGFzdCwgJm5vZGUsIHNpemVvZiAo bm9kZSkpOwogCSAgICAgIGhhdmVfbGFzdCA9IDE7CiAJICAgIH0KIAkgIGlmIChoYXZlX2xh c3QpCkBAIC00OTAsNyArNDkwLDcgQEAgbG93ZXJfYm91bmQgKHN0cnVjdCBncnViX2J0cmZz X2RhdGEgKmRhdGEsCiAJICAgICAgYnJlYWs7CiAKIAkgICAgaGF2ZV9sYXN0ID0gMTsKLQkg ICAgbGVhZl9sYXN0ID0gbGVhZjsKKwkgICAgZ3J1Yl9tZW1jcHkgKCZsZWFmX2xhc3QsICZs ZWFmLCBzaXplb2YgKGxlYWYpKTsKIAkgIH0KIAogCWlmIChoYXZlX2xhc3QpCkBAIC0xNDg2 LDcgKzE0ODYsNyBAQCBmaW5kX3BhdGggKHN0cnVjdCBncnViX2J0cmZzX2RhdGEgKmRhdGEs CiAJICAgICAgZ3J1Yl9mcmVlIChvcmlncGF0aCk7CiAJICAgICAgcmV0dXJuIGVycjsKIAkg ICAgfQotCSAgKmtleSA9IGNkaXJlbC0+a2V5OworCSAgZ3J1Yl9tZW1jcHkgKGtleSwgJmNk aXJlbC0+a2V5LCBzaXplb2YgKGNkaXJlbC0+a2V5KSk7CiAJICBpZiAoKnR5cGUgPT0gR1JV Ql9CVFJGU19ESVJfSVRFTV9UWVBFX0RJUkVDVE9SWSkKIAkgICAga2V5LT50eXBlID0gR1JV Ql9CVFJGU19JVEVNX1RZUEVfRElSX0lURU07CiAJICBicmVhazsKZGlmZiAtLWdpdCBhL2dy dWItY29yZS9mcy9oZnMuYyBiL2dydWItY29yZS9mcy9oZnMuYwppbmRleCBmYzM2ODMxLi5h YjhhZWM0IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvZnMvaGZzLmMKKysrIGIvZ3J1Yi1jb3Jl L2ZzL2hmcy5jCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RydWN0IGdydWJfaGZzX3JlY29yZAog fTsKIAogc3RhdGljIGdydWJfZGxfdCBteV9tb2Q7Ci0MCisKIHN0YXRpYyBpbnQgZ3J1Yl9o ZnNfZmluZF9ub2RlIChzdHJ1Y3QgZ3J1Yl9oZnNfZGF0YSAqLCBjaGFyICosCiAJCQkgICAg ICAgZ3J1Yl91aW50MzJfdCwgaW50LCBjaGFyICosIGdydWJfc2l6ZV90KTsKIApAQCAtODU3 LDcgKzg1NywxMCBAQCBncnViX2hmc19pdGVyYXRlX2Rpcl9ub2RlX2ZvdW5kIChzdHJ1Y3Qg Z3J1Yl9oZnNfbm9kZSAqaG5kLCBzdHJ1Y3QgZ3J1Yl9oZnNfcmVjbwogICBzdHJ1Y3QgZ3J1 Yl9oZnNfY2F0YWxvZ19rZXkgKmNrZXkgPSByZWMtPmtleTsKIAogICAvKiBUaGUgbG93ZXN0 IGtleSBwb3NzaWJsZSB3aXRoIERJUiBhcyByb290IGRpcmVjdG9yeS4gICovCi0gIGNvbnN0 IHN0cnVjdCBncnViX2hmc19jYXRhbG9nX2tleSBrZXkgPSB7MCwgY3R4LT5kaXJfYmUsIDAs ICIifTsKKyAgc3RydWN0IGdydWJfaGZzX2NhdGFsb2dfa2V5IGtleTsKKworICBncnViX21l bXNldCAoJmtleSwgMCwgc2l6ZW9mIChrZXkpKTsKKyAga2V5LnBhcmVudF9kaXIgPSBjdHgt PmRpcl9iZTsKIAogICBpZiAoZ3J1Yl9oZnNfY21wX2NhdGtleXMgKHJlYy0+a2V5LCAma2V5 KSA8PSAwKQogICAgIGN0eC0+Zm91bmQgPSBncnViX2JlX3RvX2NwdTMyIChncnViX2dldF91 bmFsaWduZWQzMiAocmVjLT5kYXRhKSk7CkBAIC04ODIsNyArODg1LDcgQEAgZ3J1Yl9oZnNf aXRlcmF0ZV9kaXJfaXRfZGlyIChzdHJ1Y3QgZ3J1Yl9oZnNfbm9kZSAqaG5kIF9fYXR0cmli dXRlICgodW51c2VkKSksCiB7CiAgIHN0cnVjdCBncnViX2hmc19jYXRhbG9nX2tleSAqY2tl eSA9IHJlYy0+a2V5OwogICBzdHJ1Y3QgZ3J1Yl9oZnNfaXRlcmF0ZV9kaXJfbm9kZV9mb3Vu ZF9jdHggKmN0eCA9IGhvb2tfYXJnOwotICAKKwogICAvKiBTdG9wIHdoZW4gdGhlIGVudHJp ZXMgZG8gbm90IG1hdGNoIGFueW1vcmUuICAqLwogICBpZiAoY2tleS0+cGFyZW50X2RpciAh PSBjdHgtPmRpcl9iZSkKICAgICByZXR1cm4gMTsKQEAgLTEwNzYsNyArMTA3OSw3IEBAIG1h Y3JvbWFuX3RvX3V0ZjggKGNoYXIgKnRvLCBjb25zdCBncnViX3VpbnQ4X3QgKmZyb20sIGdy dWJfc2l6ZV90IGxlbiwKIAl7CiAJICAqb3B0cisrID0gJzonOwogCSAgY29udGludWU7Ci0J fQkKKwl9CiAgICAgICBpZiAoISgqaXB0ciAmIDB4ODApKQogCXsKIAkgICpvcHRyKysgPSAq aXB0cjsKQEAgLTEwOTMsNyArMTA5Niw3IEBAIHV0ZjhfdG9fbWFjcm9tYW4gKGdydWJfdWlu dDhfdCAqdG8sIGNvbnN0IGNoYXIgKmZyb20pCiAgIGdydWJfdWludDhfdCAqZW5kID0gdG8g KyAzMTsKICAgZ3J1Yl91aW50OF90ICpvcHRyID0gdG87CiAgIGNvbnN0IGNoYXIgKmlwdHIg PSBmcm9tOwotICAKKwogICB3aGlsZSAoKmlwdHIgJiYgb3B0ciA8IGVuZCkKICAgICB7CiAg ICAgICBpbnQgaSwgY2xlbjsKQEAgLTExMDMsNyArMTEwNiw3IEBAIHV0ZjhfdG9fbWFjcm9t YW4gKGdydWJfdWludDhfdCAqdG8sIGNvbnN0IGNoYXIgKmZyb20pCiAJICAqb3B0cisrID0g Jy8nOwogCSAgaXB0cisrOwogCSAgY29udGludWU7Ci0JfQkKKwl9CiAgICAgICBpZiAoISgq aXB0ciAmIDB4ODApKQogCXsKIAkgICpvcHRyKysgPSAqaXB0cisrOwpAQCAtMTE2NCw5ICsx MTY3LDkgQEAgbG9va3VwX2ZpbGUgKGdydWJfZnNoZWxwX25vZGVfdCBkaXIsCiAgICpmb3Vu ZG5vZGUgPSBncnViX21hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9mc2hlbHBfbm9kZSkp OwogICBpZiAoISpmb3VuZG5vZGUpCiAgICAgcmV0dXJuIGdydWJfZXJybm87Ci0gIAorCiAg ICgqZm91bmRub2RlKS0+aW5vZGUgPSBncnViX2JlX3RvX2NwdTMyIChmZHJlYy5kaXIuZGly aWQpOwotICAoKmZvdW5kbm9kZSktPmZkcmVjID0gZmRyZWM7CisgIGdydWJfbWVtY3B5ICgm KCpmb3VuZG5vZGUpLT5mZHJlYywgJmZkcmVjLCBzaXplb2YgKGZkcmVjKSk7CiAgICgqZm91 bmRub2RlKS0+ZGF0YSA9IGRpci0+ZGF0YTsKICAgKmZvdW5kdHlwZSA9IChmZHJlYy5mcmVj LnR5cGUgPT0gR1JVQl9IRlNfRklMRVRZUEVfRElSKSA/IEdSVUJfRlNIRUxQX0RJUiA6IEdS VUJfRlNIRUxQX1JFRzsKICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CkBAIC0xMTgwLDE3ICsx MTgzLDE0IEBAIGdydWJfaGZzX2ZpbmRfZGlyIChzdHJ1Y3QgZ3J1Yl9oZnNfZGF0YSAqZGF0 YSwgY29uc3QgY2hhciAqcGF0aCwKIAkJICAgZ3J1Yl9mc2hlbHBfbm9kZV90ICpmb3VuZCwK IAkJICAgZW51bSBncnViX2ZzaGVscF9maWxldHlwZSBleHB0eXBlKQogewotICBzdHJ1Y3Qg Z3J1Yl9mc2hlbHBfbm9kZSByb290ID0gewotICAgIC5kYXRhID0gZGF0YSwKLSAgICAuaW5v ZGUgPSBkYXRhLT5yb290ZGlyLAotICAgIC5mZHJlYyA9IHsKLSAgICAgIC5mcmVjID0gewot CS50eXBlID0gR1JVQl9IRlNfRklMRVRZUEVfRElSCi0gICAgICB9Ci0gICAgfQotICB9Owor ICBzdHJ1Y3QgZ3J1Yl9mc2hlbHBfbm9kZSByb290OwogICBncnViX2Vycl90IGVycjsKIAor ICBncnViX21lbXNldCAoJnJvb3QsIDAsIHNpemVvZiAocm9vdCkpOworICByb290LmRhdGEg PSBkYXRhOworICByb290Lmlub2RlID0gZGF0YS0+cm9vdGRpcjsKKyAgcm9vdC5mZHJlYy5m cmVjLnR5cGUgPSBHUlVCX0hGU19GSUxFVFlQRV9ESVI7CisKICAgZXJyID0gZ3J1Yl9mc2hl bHBfZmluZF9maWxlX2xvb2t1cCAocGF0aCwgJnJvb3QsIGZvdW5kLCBsb29rdXBfZmlsZSwg TlVMTCwgZXhwdHlwZSk7CiAKICAgaWYgKCZyb290ID09ICpmb3VuZCkKQEAgLTEyNTMsNyAr MTI1Myw3IEBAIGdydWJfaGZzX2Rpcl9ob29rIChzdHJ1Y3QgZ3J1Yl9oZnNfcmVjb3JkICpy ZWMsIHZvaWQgKmhvb2tfYXJnKQogICByZXR1cm4gMDsKIH0KIAotDAorCiBzdGF0aWMgZ3J1 Yl9lcnJfdAogZ3J1Yl9oZnNfZGlyIChncnViX2RldmljZV90IGRldmljZSwgY29uc3QgY2hh ciAqcGF0aCwgZ3J1Yl9mc19kaXJfaG9va190IGhvb2ssCiAJICAgICAgdm9pZCAqaG9va19k YXRhKQpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgZ3J1Yl9oZnNfZGlyIChncnViX2RldmljZV90 IGRldmljZSwgY29uc3QgY2hhciAqcGF0aCwgZ3J1Yl9mc19kaXJfaG9va190IGhvb2ssCiAg ICAgICAuaG9va19kYXRhID0gaG9va19kYXRhCiAgICAgfTsKICAgZ3J1Yl9mc2hlbHBfbm9k ZV90IGZvdW5kID0gTlVMTDsKLSAgCisKICAgZ3J1Yl9kbF9yZWYgKG15X21vZCk7CiAKICAg ZGF0YSA9IGdydWJfaGZzX21vdW50IChkZXZpY2UtPmRpc2spOwpAQCAtMTI5NCw3ICsxMjk0 LDcgQEAgZ3J1Yl9oZnNfb3BlbiAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY29uc3QgY2hh ciAqbmFtZSkKIHsKICAgc3RydWN0IGdydWJfaGZzX2RhdGEgKmRhdGE7CiAgIGdydWJfZnNo ZWxwX25vZGVfdCBmb3VuZCA9IE5VTEw7Ci0gIAorCiAgIGdydWJfZGxfcmVmIChteV9tb2Qp OwogCiAgIGRhdGEgPSBncnViX2hmc19tb3VudCAoZmlsZS0+ZGV2aWNlLT5kaXNrKTsKQEAg LTE0MTMsNyArMTQxMyw3IEBAIGdydWJfaGZzX3V1aWQgKGdydWJfZGV2aWNlX3QgZGV2aWNl LCBjaGFyICoqdXVpZCkKIH0KIAogCi0MCisKIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl9mcyBncnVi X2hmc19mcyA9CiAgIHsKICAgICAubmFtZSA9ICJoZnMiLApkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL2ZzL2hmc3BsdXMuYyBiL2dydWItY29yZS9mcy9oZnNwbHVzLmMKaW5kZXggMjExNTll OC4uYTg2NjNmMCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2ZzL2hmc3BsdXMuYworKysgYi9n cnViLWNvcmUvZnMvaGZzcGx1cy5jCkBAIC0xOSw3ICsxOSw3IEBACiAKIC8qIEhGUysgaXMg ZG9jdW1lbnRlZCBhdCBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90ZWNobm90ZXMvdG4v dG4xMTUwLmh0bWwgKi8KIAotI2RlZmluZSBncnViX2ZzaGVscF9ub2RlIGdydWJfaGZzcGx1 c19maWxlIAorI2RlZmluZSBncnViX2ZzaGVscF9ub2RlIGdydWJfaGZzcGx1c19maWxlCiAj aW5jbHVkZSA8Z3J1Yi9lcnIuaD4KICNpbmNsdWRlIDxncnViL2ZpbGUuaD4KICNpbmNsdWRl IDxncnViL21tLmg+CkBAIC0xMDUsNyArMTA1LDcgQEAgZW51bSBncnViX2hmc3BsdXNfZmls ZXR5cGUKIAogc3RhdGljIGdydWJfZGxfdCBteV9tb2Q7CiAKLQwKKwogCiBncnViX2Vycl90 ICgqZ3J1Yl9oZnNwbHVzX29wZW5fY29tcHJlc3NlZCkgKHN0cnVjdCBncnViX2ZzaGVscF9u b2RlICpub2RlKTsKIGdydWJfc3NpemVfdCAoKmdydWJfaGZzcGx1c19yZWFkX2NvbXByZXNz ZWQpIChzdHJ1Y3QgZ3J1Yl9oZnNwbHVzX2ZpbGUgKm5vZGUsCkBAIC0xNDUsNyArMTQ1LDcg QEAgZ3J1Yl9oZnNwbHVzX3JlYWRfYmxvY2sgKGdydWJfZnNoZWxwX25vZGVfdCBub2RlLCBn cnViX2Rpc2tfYWRkcl90IGZpbGVibG9jaykKIHsKICAgc3RydWN0IGdydWJfaGZzcGx1c19i dG5vZGUgKm5ub2RlID0gMDsKICAgZ3J1Yl9kaXNrX2FkZHJfdCBibGtzbGVmdCA9IGZpbGVi bG9jazsKLSAgc3RydWN0IGdydWJfaGZzcGx1c19leHRlbnQgKmV4dGVudHMgPSBub2RlLT5j b21wcmVzc2VkIAorICBzdHJ1Y3QgZ3J1Yl9oZnNwbHVzX2V4dGVudCAqZXh0ZW50cyA9IG5v ZGUtPmNvbXByZXNzZWQKICAgICA/ICZub2RlLT5yZXNvdXJjZV9leHRlbnRzWzBdIDogJm5v ZGUtPmV4dGVudHNbMF07CiAKICAgd2hpbGUgKDEpCkBAIC00NjEsNyArNDYxLDcgQEAgZ3J1 Yl9oZnNwbHVzX2NtcF9leHRrZXkgKHN0cnVjdCBncnViX2hmc3BsdXNfa2V5ICprZXlhLAog CiAgIGlmIChleHRrZXlfYS0+dHlwZSA8IGV4dGtleV9iLT50eXBlKQogICAgIHJldHVybiAt MTsKLSAgCisKICAgYWtleSA9IGdydWJfYmVfdG9fY3B1MzIgKGV4dGtleV9hLT5zdGFydCk7 CiAgIGlmIChha2V5ID4gZXh0a2V5X2ItPnN0YXJ0KQogICAgIHJldHVybiAxOwpAQCAtNTQ4 LDcgKzU0OCw3IEBAIGdydWJfaGZzcGx1c19idHJlZV9zZWFyY2ggKHN0cnVjdCBncnViX2hm c3BsdXNfYnRyZWUgKmJ0cmVlLAogCQkJICAgc3RydWN0IGdydWJfaGZzcGx1c19rZXlfaW50 ZXJuYWwgKmtleSwKIAkJCSAgIGludCAoKmNvbXBhcmVfa2V5cykgKHN0cnVjdCBncnViX2hm c3BsdXNfa2V5ICprZXlhLAogCQkJCQkJc3RydWN0IGdydWJfaGZzcGx1c19rZXlfaW50ZXJu YWwgKmtleWIpLAotCQkJICAgc3RydWN0IGdydWJfaGZzcGx1c19idG5vZGUgKiptYXRjaG5v ZGUsIAorCQkJICAgc3RydWN0IGdydWJfaGZzcGx1c19idG5vZGUgKiptYXRjaG5vZGUsCiAJ CQkgICBncnViX29mZl90ICprZXlvZmZzZXQpCiB7CiAgIGdydWJfdWludDY0X3QgY3Vycm5v ZGU7CkBAIC04MDAsNyArODAwLDcgQEAgZ3J1Yl9oZnNwbHVzX2l0ZXJhdGVfZGlyIChncnVi X2ZzaGVscF9ub2RlX3QgZGlyLAogICAgIGZzbm9kZSA9IGdydWJfbWFsbG9jIChzaXplb2Yg KCpmc25vZGUpKTsKICAgICBpZiAoIWZzbm9kZSkKICAgICAgIHJldHVybiAxOwotICAgICpm c25vZGUgPSAqZGlyOworICAgIGdydWJfbWVtY3B5IChmc25vZGUsIGRpciwgc2l6ZW9mICgq ZGlyKSk7CiAgICAgaWYgKGhvb2sgKCIuIiwgR1JVQl9GU0hFTFBfRElSLCBmc25vZGUsIGhv b2tfZGF0YSkpCiAgICAgICByZXR1cm4gMTsKICAgfQpAQCAtODUzLDcgKzg1Myw3IEBAIGdy dWJfaGZzcGx1c19vcGVuIChzdHJ1Y3QgZ3J1Yl9maWxlICpmaWxlLCBjb25zdCBjaGFyICpu YW1lKQogICAgIH0KIAogICBmaWxlLT5zaXplID0gZmRpcm8tPnNpemU7Ci0gIGRhdGEtPm9w ZW5lZF9maWxlID0gKmZkaXJvOworICBncnViX21lbWNweSAoJmRhdGEtPm9wZW5lZF9maWxl LCBmZGlybywgc2l6ZW9mICgqZmRpcm8pKTsKICAgZ3J1Yl9mcmVlIChmZGlybyk7CiAKICAg ZmlsZS0+ZGF0YSA9IGRhdGE7CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBncnViX2hmc3BsdXNf dXVpZCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXIgKip1dWlkKQogfQogCiAKLQwKKwog c3RhdGljIHN0cnVjdCBncnViX2ZzIGdydWJfaGZzcGx1c19mcyA9CiAgIHsKICAgICAubmFt ZSA9ICJoZnNwbHVzIiwKZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy9pc285NjYwLmMgYi9n cnViLWNvcmUvZnMvaXNvOTY2MC5jCmluZGV4IGM5YzgzNzQuLjMwMjUzZGYgMTAwNjQ0Ci0t LSBhL2dydWItY29yZS9mcy9pc285NjYwLmMKKysrIGIvZ3J1Yi1jb3JlL2ZzL2lzbzk2NjAu YwpAQCAtMTc0LDEzICsxNzQsMTMgQEAgZW51bQogICB9OwogCiBzdGF0aWMgZ3J1Yl9kbF90 IG15X21vZDsKLQwKKwogCiBzdGF0aWMgZ3J1Yl9lcnJfdAogaXNvOTY2MF90b191bml4dGlt ZSAoY29uc3Qgc3RydWN0IGdydWJfaXNvOTY2MF9kYXRlICppLCBncnViX2ludDMyX3QgKm5p eCkKIHsKICAgc3RydWN0IGdydWJfZGF0ZXRpbWUgZGF0ZXRpbWU7Ci0gIAorCiAgIGlmICgh IGktPnllYXJbMF0gJiYgISBpLT55ZWFyWzFdCiAgICAgICAmJiAhIGktPnllYXJbMl0gJiYg ISBpLT55ZWFyWzNdCiAgICAgICAmJiAhIGktPm1vbnRoWzBdICYmICEgaS0+bW9udGhbMV0K QEAgLTE5Nyw3ICsxOTcsNyBAQCBpc285NjYwX3RvX3VuaXh0aW1lIChjb25zdCBzdHJ1Y3Qg Z3J1Yl9pc285NjYwX2RhdGUgKmksIGdydWJfaW50MzJfdCAqbml4KQogICBkYXRldGltZS5o b3VyID0gKGktPmhvdXJbMF0gLSAnMCcpICogMTAgKyAoaS0+aG91clsxXSAtICcwJyk7CiAg IGRhdGV0aW1lLm1pbnV0ZSA9IChpLT5taW51dGVbMF0gLSAnMCcpICogMTAgKyAoaS0+bWlu dXRlWzFdIC0gJzAnKTsKICAgZGF0ZXRpbWUuc2Vjb25kID0gKGktPnNlY29uZFswXSAtICcw JykgKiAxMCArIChpLT5zZWNvbmRbMV0gLSAnMCcpOwotICAKKwogICBpZiAoIWdydWJfZGF0 ZXRpbWUydW5peHRpbWUgKCZkYXRldGltZSwgbml4KSkKICAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX05VTUJFUiwgImluY29ycmVjdCBkYXRlIik7CiAgICpuaXggLT0g aS0+b2Zmc2V0ICogNjAgKiAxNTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBpc285NjYwX3RvX3Vu aXh0aW1lMiAoY29uc3Qgc3RydWN0IGdydWJfaXNvOTY2MF9kYXRlMiAqaSwgZ3J1Yl9pbnQz Ml90ICpuaXgpCiAgIGRhdGV0aW1lLmhvdXIgPSBpLT5ob3VyOwogICBkYXRldGltZS5taW51 dGUgPSBpLT5taW51dGU7CiAgIGRhdGV0aW1lLnNlY29uZCA9IGktPnNlY29uZDsKLSAgCisK ICAgaWYgKCFncnViX2RhdGV0aW1lMnVuaXh0aW1lICgmZGF0ZXRpbWUsIG5peCkpCiAgICAg cmV0dXJuIDA7CiAgICpuaXggLT0gaS0+b2Zmc2V0ICogNjAgKiAxNTsKQEAgLTQwOCw3ICs0 MDgsNyBAQCBzZXRfcm9ja3JpZGdlIChzdHJ1Y3QgZ3J1Yl9pc285NjYwX2RhdGEgKmRhdGEp CiAgICAgICByb290bm9kZS5hbGxvY19kaXJlbnRzID0gQVJSQVlfU0laRSAocm9vdG5vZGUu ZGlyZW50cyk7CiAgICAgICByb290bm9kZS5oYXZlX2RpcmVudHMgPSAxOwogICAgICAgcm9v dG5vZGUuaGF2ZV9zeW1saW5rID0gMDsKLSAgICAgIHJvb3Rub2RlLmRpcmVudHNbMF0gPSBk YXRhLT52b2xkZXNjLnJvb3RkaXI7CisgICAgICBncnViX21lbWNweSAoJnJvb3Rub2RlLmRp cmVudHNbMF0sICZkYXRhLT52b2xkZXNjLnJvb3RkaXIsIHNpemVvZiAoZGF0YS0+dm9sZGVz Yy5yb290ZGlyKSk7CiAKICAgICAgIC8qIFRoZSAybmQgZGF0YSBieXRlIHN0b3JlZCBob3cg bWFueSBieXRlcyBhcmUgc2tpcHBlZCBldmVyeSB0aW1lCiAJIHRvIGdldCB0byB0aGUgU1VB IChTeXN0ZW0gVXNhZ2UgQXJlYSkuICAqLwpAQCAtNDk4LDcgKzQ5OCw3IEBAIGdydWJfaXNv OTY2MF9tb3VudCAoZ3J1Yl9kaXNrX3QgZGlzaykKIHN0YXRpYyBjaGFyICoKIGdydWJfaXNv OTY2MF9yZWFkX3N5bWxpbmsgKGdydWJfZnNoZWxwX25vZGVfdCBub2RlKQogewotICByZXR1 cm4gbm9kZS0+aGF2ZV9zeW1saW5rIAorICByZXR1cm4gbm9kZS0+aGF2ZV9zeW1saW5rCiAg ICAgPyBncnViX3N0cmR1cCAobm9kZS0+c3ltbGluawogCQkgICArIChub2RlLT5oYXZlX2Rp cmVudHMpICogc2l6ZW9mIChub2RlLT5kaXJlbnRzWzBdKQogCQkgICAtIHNpemVvZiAobm9k ZS0+ZGlyZW50cykpIDogZ3J1Yl9zdHJkdXAgKCIiKTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBh ZGRfcGFydCAoc3RydWN0IGl0ZXJhdGVfZGlyX2N0eCAqY3R4LAogICAgIHJldHVybjsKIAog ICBncnViX21lbWNweSAoY3R4LT5zeW1saW5rICsgc2l6ZSwgcGFydCwgbGVuMik7Ci0gIGN0 eC0+c3ltbGlua1tzaXplICsgbGVuMl0gPSAwOyAgCisgIGN0eC0+c3ltbGlua1tzaXplICsg bGVuMl0gPSAwOwogfQogCiBzdGF0aWMgZ3J1Yl9lcnJfdApAQCAtNzYyLDcgKzc2Miw3IEBA IGdydWJfaXNvOTY2MF9pdGVyYXRlX2RpciAoZ3J1Yl9mc2hlbHBfbm9kZV90IGRpciwKICAg ICAgICAgICAgIGN0eC5maWxlbmFtZV9hbGxvYyA9IDE7CiAgICAgICAgICAgfQogCi0Jbm9k ZS0+ZGlyZW50c1swXSA9IGRpcmVudDsKKwlncnViX21lbWNweSAoJm5vZGUtPmRpcmVudHNb MF0sICZkaXJlbnQsIHNpemVvZiAoZGlyZW50KSk7CiAJd2hpbGUgKGRpcmVudC5mbGFncyAm IEZMQUdfTU9SRV9FWFRFTlRTKQogCSAgewogCSAgICBvZmZzZXQgKz0gZGlyZW50LmxlbjsK QEAgLTc3Nyw3ICs3NzcsNyBAQCBncnViX2lzbzk2NjBfaXRlcmF0ZV9kaXIgKGdydWJfZnNo ZWxwX25vZGVfdCBkaXIsCiAJICAgICAgewogCQlzdHJ1Y3QgZ3J1Yl9mc2hlbHBfbm9kZSAq bmV3X25vZGU7CiAJCW5vZGUtPmFsbG9jX2RpcmVudHMgKj0gMjsKLQkJbmV3X25vZGUgPSBn cnViX3JlYWxsb2MgKG5vZGUsIAorCQluZXdfbm9kZSA9IGdydWJfcmVhbGxvYyAobm9kZSwK IAkJCQkJIHNpemVvZiAoc3RydWN0IGdydWJfZnNoZWxwX25vZGUpCiAJCQkJCSArICgobm9k ZS0+YWxsb2NfZGlyZW50cwogCQkJCQkgICAgIC0gQVJSQVlfU0laRSAobm9kZS0+ZGlyZW50 cykpCkBAIC03OTEsNyArNzkxLDcgQEAgZ3J1Yl9pc285NjYwX2l0ZXJhdGVfZGlyIChncnVi X2ZzaGVscF9ub2RlX3QgZGlyLAogCQkgIH0KIAkJbm9kZSA9IG5ld19ub2RlOwogCSAgICAg IH0KLQkgICAgbm9kZS0+ZGlyZW50c1tub2RlLT5oYXZlX2RpcmVudHMrK10gPSBkaXJlbnQ7 CisJICAgIGdydWJfbWVtY3B5ICgmbm9kZS0+ZGlyZW50c1tub2RlLT5oYXZlX2RpcmVudHMr K10sICZkaXJlbnQsIHNpemVvZiAoZGlyZW50KSk7CiAJICB9CiAJaWYgKGN0eC5zeW1saW5r KQogCSAgewpAQCAtODM3LDcgKzgzNyw3IEBAIGdydWJfaXNvOTY2MF9pdGVyYXRlX2RpciAo Z3J1Yl9mc2hlbHBfbm9kZV90IGRpciwKIH0KIAogCi0MCisKIC8qIENvbnRleHQgZm9yIGdy dWJfaXNvOTY2MF9kaXIuICAqLwogc3RydWN0IGdydWJfaXNvOTY2MF9kaXJfY3R4CiB7CkBA IC04ODEsNyArODgxLDcgQEAgZ3J1Yl9pc285NjYwX2RpciAoZ3J1Yl9kZXZpY2VfdCBkZXZp Y2UsIGNvbnN0IGNoYXIgKnBhdGgsCiAgIHJvb3Rub2RlLmFsbG9jX2RpcmVudHMgPSAwOwog ICByb290bm9kZS5oYXZlX2RpcmVudHMgPSAxOwogICByb290bm9kZS5oYXZlX3N5bWxpbmsg PSAwOwotICByb290bm9kZS5kaXJlbnRzWzBdID0gZGF0YS0+dm9sZGVzYy5yb290ZGlyOwor ICBncnViX21lbWNweSAoJnJvb3Rub2RlLmRpcmVudHNbMF0sICZkYXRhLT52b2xkZXNjLnJv b3RkaXIsIHNpemVvZiAoZGF0YS0+dm9sZGVzYy5yb290ZGlyKSk7CiAKICAgLyogVXNlIHRo ZSBmc2hlbHAgZnVuY3Rpb24gdG8gdHJhdmVyc2UgdGhlIHBhdGguICAqLwogICBpZiAoZ3J1 Yl9mc2hlbHBfZmluZF9maWxlIChwYXRoLCAmcm9vdG5vZGUsCkBAIC05MjQsNyArOTI0LDcg QEAgZ3J1Yl9pc285NjYwX29wZW4gKHN0cnVjdCBncnViX2ZpbGUgKmZpbGUsIGNvbnN0IGNo YXIgKm5hbWUpCiAgIHJvb3Rub2RlLmFsbG9jX2RpcmVudHMgPSAwOwogICByb290bm9kZS5o YXZlX2RpcmVudHMgPSAxOwogICByb290bm9kZS5oYXZlX3N5bWxpbmsgPSAwOwotICByb290 bm9kZS5kaXJlbnRzWzBdID0gZGF0YS0+dm9sZGVzYy5yb290ZGlyOworICBncnViX21lbWNw eSAoJnJvb3Rub2RlLmRpcmVudHNbMF0sICZkYXRhLT52b2xkZXNjLnJvb3RkaXIsIHNpemVv ZiAoZGF0YS0+dm9sZGVzYy5yb290ZGlyKSk7CiAKICAgLyogVXNlIHRoZSBmc2hlbHAgZnVu Y3Rpb24gdG8gdHJhdmVyc2UgdGhlIHBhdGguICAqLwogICBpZiAoZ3J1Yl9mc2hlbHBfZmlu ZF9maWxlIChuYW1lLCAmcm9vdG5vZGUsCkBAIC0xMDY5LDcgKzEwNjksNyBAQCBncnViX2lz bzk2NjBfdXVpZCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXIgKip1dWlkKQogfQogCiAv KiBHZXQgd3JpdGluZyB0aW1lIG9mIGZpbGVzeXN0ZW0uICovCi1zdGF0aWMgZ3J1Yl9lcnJf dCAKK3N0YXRpYyBncnViX2Vycl90CiBncnViX2lzbzk2NjBfbXRpbWUgKGdydWJfZGV2aWNl X3QgZGV2aWNlLCBncnViX2ludDMyX3QgKnRpbWVidWYpCiB7CiAgIHN0cnVjdCBncnViX2lz bzk2NjBfZGF0YSAqZGF0YTsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIGdydWJfaXNvOTY2MF9t dGltZSAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGdydWJfaW50MzJfdCAqdGltZWJ1ZikKIH0K IAogCi0MCisKIAogc3RhdGljIHN0cnVjdCBncnViX2ZzIGdydWJfaXNvOTY2MF9mcyA9CiAg IHsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy91ZGYuYyBiL2dydWItY29yZS9mcy91ZGYu YwppbmRleCA4MzliZmY4Li40NDQxYWQ0IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvZnMvdWRm LmMKKysrIGIvZ3J1Yi1jb3JlL2ZzL3VkZi5jCkBAIC01MzksNyArNTM5LDcgQEAgZ3J1Yl91 ZGZfcmVhZF9ibG9jayAoZ3J1Yl9mc2hlbHBfbm9kZV90IG5vZGUsIGdydWJfZGlza19hZGRy X3QgZmlsZWJsb2NrKQogCQkgICAgKGJ1ZiArIHNpemVvZiAoc3RydWN0IGdydWJfdWRmX2Fl ZCkpOwogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9Ci0JICAgICAgCisKIAkgIGlmIChmaWxl Ynl0ZXMgPCBhZGxlbikKIAkgICAgewogCSAgICAgIGdydWJfdWludDMyX3QgYWRfYmxvY2tf bnVtID0gYWQtPmJsb2NrLmJsb2NrX251bTsKQEAgLTc5Myw3ICs3OTMsNyBAQCBncnViX3Vk Zl9tb3VudCAoZ3J1Yl9kaXNrX3QgZGlzaykKICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAK LSAgZGF0YS0+cm9vdF9pY2IgPSByb290X2ZzLnJvb3RfaWNiOworICBncnViX21lbWNweSAo JmRhdGEtPnJvb3RfaWNiLCAmcm9vdF9mcy5yb290X2ljYiwgc2l6ZW9mIChyb290X2ZzLnJv b3RfaWNiKSk7CiAKICAgcmV0dXJuIGRhdGE7CiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS9m cy96ZnMvemZzLmMgYi9ncnViLWNvcmUvZnMvemZzL3pmcy5jCmluZGV4IDZlMWZmZjkuLjI5 MjdmM2EgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9mcy96ZnMvemZzLmMKKysrIGIvZ3J1Yi1j b3JlL2ZzL3pmcy96ZnMuYwpAQCAtMTQxLDcgKzE0MSw3IEBAIFpBUF9MRUFGX05VTUNIVU5L UyAoaW50IGJzKQogc3RhdGljIGlubGluZSB6YXBfbGVhZl9jaHVua190ICoKIFpBUF9MRUFG X0NIVU5LICh6YXBfbGVhZl9waHlzX3QgKmwsIGludCBicywgaW50IGlkeCkKIHsKLSAgcmV0 dXJuICYoKHphcF9sZWFmX2NodW5rX3QgKikgKGwtPmxfZW50cmllcyAKKyAgcmV0dXJuICYo KHphcF9sZWFmX2NodW5rX3QgKikgKGwtPmxfZW50cmllcwogCQkJCSArIChaQVBfTEVBRl9I QVNIX05VTUVOVFJJRVMoYnMpICogMikKIAkJCQkgLyBzaXplb2YgKGdydWJfcHJvcGVybHlf YWxpZ25lZF90KSkpW2lkeF07CiB9CkBAIC0xNzIsNyArMTcyLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgZGVjb21wX2VudHJ5CiAvKgogICogU2lnbmF0dXJlIGZvciBjaGVja3N1bSBmdW5jdGlv bnMuCiAgKi8KLXR5cGVkZWYgdm9pZCB6aW9fY2hlY2tzdW1fdChjb25zdCB2b2lkICpkYXRh LCBncnViX3VpbnQ2NF90IHNpemUsIAordHlwZWRlZiB2b2lkIHppb19jaGVja3N1bV90KGNv bnN0IHZvaWQgKmRhdGEsIGdydWJfdWludDY0X3Qgc2l6ZSwKIAkJCSAgICBncnViX3pmc19l bmRpYW5fdCBlbmRpYW4sIHppb19ja3N1bV90ICp6Y3ApOwogCiAvKgpAQCAtMjkzLDcgKzI5 Myw3IEBAIGNoZWNrX2ZlYXR1cmUoY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCB2 YWwsIHN0cnVjdCBncnViX3pmc19kaXJfY3R4ICpjdHgpCiBzdGF0aWMgZ3J1Yl9lcnJfdAog Y2hlY2tfbW9zX2ZlYXR1cmVzKGRub2RlX3BoeXNfdCAqbW9zbWRuX3BoeXMsZ3J1Yl96ZnNf ZW5kaWFuX3QgZW5kaWFuLHN0cnVjdCBncnViX3pmc19kYXRhKiBkYXRhICk7CiAKLXN0YXRp YyBncnViX2Vycl90IAorc3RhdGljIGdydWJfZXJyX3QKIHpsaWJfZGVjb21wcmVzcyAodm9p ZCAqcywgdm9pZCAqZCwKIAkJIGdydWJfc2l6ZV90IHNsZW4sIGdydWJfc2l6ZV90IGRsZW4p CiB7CkBAIC0zMDYsNyArMzA2LDcgQEAgemxpYl9kZWNvbXByZXNzICh2b2lkICpzLCB2b2lk ICpkLAogICByZXR1cm4gZ3J1Yl9lcnJubzsKIH0KIAotc3RhdGljIGdydWJfZXJyX3QgCitz dGF0aWMgZ3J1Yl9lcnJfdAogemxlX2RlY29tcHJlc3MgKHZvaWQgKnMsIHZvaWQgKmQsCiAJ CWdydWJfc2l6ZV90IHNsZW4sIGdydWJfc2l6ZV90IGRsZW4pCiB7CkBAIC00MTAsOCArNDEw LDggQEAgc3RhdGljIHppb19jaGVja3N1bV9pbmZvX3QgemlvX2NoZWNrc3VtX3RhYmxlW1pJ T19DSEVDS1NVTV9GVU5DVElPTlNdID0gewogICoKICAqLwogc3RhdGljIGdydWJfZXJyX3QK LXppb19jaGVja3N1bV92ZXJpZnkgKHppb19ja3N1bV90IHpjLCBncnViX3VpbnQzMl90IGNo ZWNrc3VtLAotCQkgICAgIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgCit6aW9fY2hlY2tz dW1fdmVyaWZ5ICh6aW9fY2tzdW1fdCAqemMsIGdydWJfdWludDMyX3QgY2hlY2tzdW0sCisJ CSAgICAgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLAogCQkgICAgIGNoYXIgKmJ1ZiwgZ3J1 Yl9zaXplX3Qgc2l6ZSkKIHsKICAgemlvX2Vja190ICp6ZWMgPSAoemlvX2Vja190ICopIChi dWYgKyBzaXplKSAtIDE7CkBAIC00MjEsMzUgKzQyMSwzNSBAQCB6aW9fY2hlY2tzdW1fdmVy aWZ5ICh6aW9fY2tzdW1fdCB6YywgZ3J1Yl91aW50MzJfdCBjaGVja3N1bSwKICAgaWYgKGNo ZWNrc3VtID49IFpJT19DSEVDS1NVTV9GVU5DVElPTlMgfHwgY2ktPmNpX2Z1bmMgPT0gTlVM TCkKICAgICB7CiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAidW5rbm93biBjaGVja3N1 bSBmdW5jdGlvbiAlZFxuIiwgY2hlY2tzdW0pOwotICAgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX05PVF9JTVBMRU1FTlRFRF9ZRVQsIAorICAgICAgcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX05PVF9JTVBMRU1FTlRFRF9ZRVQsCiAJCQkgInVua25vd24gY2hlY2tz dW0gZnVuY3Rpb24gJWQiLCBjaGVja3N1bSk7CiAgICAgfQogCiAgIGlmIChjaS0+Y2lfZWNr KQogICAgIHsKLSAgICAgIGV4cGVjdGVkX2Nrc3VtID0gemVjLT56ZWNfY2tzdW07ICAKLSAg ICAgIHplYy0+emVjX2Nrc3VtID0gemM7ICAKKyAgICAgIGdydWJfbWVtY3B5ICgmZXhwZWN0 ZWRfY2tzdW0sICZ6ZWMtPnplY19ja3N1bSwgc2l6ZW9mICh6ZWMtPnplY19ja3N1bSkpOwor ICAgICAgZ3J1Yl9tZW1jcHkgKCZ6ZWMtPnplY19ja3N1bSwgemMsIHNpemVvZiAoKnpjKSk7 CiAgICAgICBjaS0+Y2lfZnVuYyAoYnVmLCBzaXplLCBlbmRpYW4sICZhY3R1YWxfY2tzdW0p OwotICAgICAgemVjLT56ZWNfY2tzdW0gPSBleHBlY3RlZF9ja3N1bTsKLSAgICAgIHpjID0g ZXhwZWN0ZWRfY2tzdW07CisgICAgICBncnViX21lbWNweSAoJnplYy0+emVjX2Nrc3VtLCAm ZXhwZWN0ZWRfY2tzdW0sIHNpemVvZiAoZXhwZWN0ZWRfY2tzdW0pKTsKKyAgICAgIGdydWJf bWVtY3B5ICh6YywgJmV4cGVjdGVkX2Nrc3VtLCBzaXplb2YgKGV4cGVjdGVkX2Nrc3VtKSk7 CiAgICAgfQogICBlbHNlCiAgICAgY2ktPmNpX2Z1bmMgKGJ1Ziwgc2l6ZSwgZW5kaWFuLCAm YWN0dWFsX2Nrc3VtKTsKIAotICBpZiAoZ3J1Yl9tZW1jbXAgKCZhY3R1YWxfY2tzdW0sICZ6 YywKKyAgaWYgKGdydWJfbWVtY21wICgmYWN0dWFsX2Nrc3VtLCB6YywKIAkJICAgY2hlY2tz dW0gIT0gWklPX0NIRUNLU1VNX1NIQTI1Nl9NQUMgPyAzMiA6IDIwKSAhPSAwKQogICAgIHsK ICAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJjaGVja3N1bSAlcyB2ZXJpZmljYXRpb24g ZmFpbGVkXG4iLCBjaS0+Y2lfbmFtZSk7CiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAi YWN0dWFsIGNoZWNrc3VtICUwMTZsbHggJTAxNmxseCAlMDE2bGx4ICUwMTZsbHhcbiIsCi0J CSAgICAodW5zaWduZWQgbG9uZyBsb25nKSBhY3R1YWxfY2tzdW0uemNfd29yZFswXSwgCisJ CSAgICAodW5zaWduZWQgbG9uZyBsb25nKSBhY3R1YWxfY2tzdW0uemNfd29yZFswXSwKIAkJ ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIGFjdHVhbF9ja3N1bS56Y193b3JkWzFdLAotCQkg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgYWN0dWFsX2Nrc3VtLnpjX3dvcmRbMl0sIAorCQkg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgYWN0dWFsX2Nrc3VtLnpjX3dvcmRbMl0sCiAJCSAg ICAodW5zaWduZWQgbG9uZyBsb25nKSBhY3R1YWxfY2tzdW0uemNfd29yZFszXSk7CiAgICAg ICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZXhwZWN0ZWQgY2hlY2tzdW0gJTAxNmxseCAlMDE2 bGx4ICUwMTZsbHggJTAxNmxseFxuIiwKLQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHpj LnpjX3dvcmRbMF0sIAotCQkgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgemMuemNfd29yZFsx XSwKLQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHpjLnpjX3dvcmRbMl0sIAotCQkgICAg KHVuc2lnbmVkIGxvbmcgbG9uZykgemMuemNfd29yZFszXSk7CisJCSAgICAodW5zaWduZWQg bG9uZyBsb25nKSB6Yy0+emNfd29yZFswXSwKKwkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcp IHpjLT56Y193b3JkWzFdLAorCQkgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgemMtPnpjX3dv cmRbMl0sCisJCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSB6Yy0+emNfd29yZFszXSk7CiAg ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCBOXygiY2hlY2tzdW0g dmVyaWZpY2F0aW9uIGZhaWxlZCIpKTsKICAgICB9CiAKQEAgLTQ4MSwxNyArNDgxLDE3IEBA IHZkZXZfdWJlcmJsb2NrX2NvbXBhcmUgKHViZXJibG9ja190ICogdWIxLCB1YmVyYmxvY2tf dCAqIHViMikKICAgZWxzZQogICAgIHViMl9lbmRpYW4gPSBHUlVCX1pGU19CSUdfRU5ESUFO OwogCi0gIGlmIChncnViX3pmc190b19jcHU2NCAodWIxLT51Yl90eGcsIHViMV9lbmRpYW4p IAorICBpZiAoZ3J1Yl96ZnNfdG9fY3B1NjQgKHViMS0+dWJfdHhnLCB1YjFfZW5kaWFuKQog ICAgICAgPCBncnViX3pmc190b19jcHU2NCAodWIyLT51Yl90eGcsIHViMl9lbmRpYW4pKQog ICAgIHJldHVybiAtMTsKLSAgaWYgKGdydWJfemZzX3RvX2NwdTY0ICh1YjEtPnViX3R4Zywg dWIxX2VuZGlhbikgCisgIGlmIChncnViX3pmc190b19jcHU2NCAodWIxLT51Yl90eGcsIHVi MV9lbmRpYW4pCiAgICAgICA+IGdydWJfemZzX3RvX2NwdTY0ICh1YjItPnViX3R4ZywgdWIy X2VuZGlhbikpCiAgICAgcmV0dXJuIDE7CiAKLSAgaWYgKGdydWJfemZzX3RvX2NwdTY0ICh1 YjEtPnViX3RpbWVzdGFtcCwgdWIxX2VuZGlhbikgCisgIGlmIChncnViX3pmc190b19jcHU2 NCAodWIxLT51Yl90aW1lc3RhbXAsIHViMV9lbmRpYW4pCiAgICAgICA8IGdydWJfemZzX3Rv X2NwdTY0ICh1YjItPnViX3RpbWVzdGFtcCwgdWIyX2VuZGlhbikpCiAgICAgcmV0dXJuIC0x OwotICBpZiAoZ3J1Yl96ZnNfdG9fY3B1NjQgKHViMS0+dWJfdGltZXN0YW1wLCB1YjFfZW5k aWFuKSAKKyAgaWYgKGdydWJfemZzX3RvX2NwdTY0ICh1YjEtPnViX3RpbWVzdGFtcCwgdWIx X2VuZGlhbikKICAgICAgID4gZ3J1Yl96ZnNfdG9fY3B1NjQgKHViMi0+dWJfdGltZXN0YW1w LCB1YjJfZW5kaWFuKSkKICAgICByZXR1cm4gMTsKIApAQCAtNTI5LDcgKzUyOSw3IEBAIHVi ZXJibG9ja192ZXJpZnkgKHViZXJibG9ja19waHlzX3QgKiB1YiwgZ3J1Yl91aW50NjRfdCBv ZmZzZXQsCiAgIGdydWJfbWVtc2V0ICgmemMsIDAsIHNpemVvZiAoemMpKTsKIAogICB6Yy56 Y193b3JkWzBdID0gZ3J1Yl9jcHVfdG9femZzNjQgKG9mZnNldCwgZW5kaWFuKTsKLSAgZXJy ID0gemlvX2NoZWNrc3VtX3ZlcmlmeSAoemMsIFpJT19DSEVDS1NVTV9MQUJFTCwgZW5kaWFu LAorICBlcnIgPSB6aW9fY2hlY2tzdW1fdmVyaWZ5ICgmemMsIFpJT19DSEVDS1NVTV9MQUJF TCwgZW5kaWFuLAogCQkJICAgICAoY2hhciAqKSB1Yiwgcyk7CiAKICAgcmV0dXJuIGVycjsK QEAgLTU2OSw3ICs1NjksNyBAQCBmaW5kX2Jlc3R1YiAodWJlcmJsb2NrX3BoeXNfdCAqIHVi X2FycmF5LAogCSAgZ3J1Yl9lcnJubyA9IEdSVUJfRVJSX05PTkU7CiAJICBjb250aW51ZTsK IAl9Ci0gICAgICBpZiAodWJiZXN0ID09IE5VTEwgCisgICAgICBpZiAodWJiZXN0ID09IE5V TEwKIAkgIHx8IHZkZXZfdWJlcmJsb2NrX2NvbXBhcmUgKCYodWJwdHItPnVicF91YmVyYmxv Y2spLAogCQkJCSAgICAgJih1YmJlc3QtPnVicF91YmVyYmxvY2spKSA+IDApCiAJdWJiZXN0 ID0gdWJwdHI7CkBAIC01OTAsMTAgKzU5MCwxMCBAQCBnZXRfcHNpemUgKGJsa3B0cl90ICog YnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbikKIHN0YXRpYyBncnViX3VpbnQ2NF90CiBk dmFfZ2V0X29mZnNldCAoY29uc3QgZHZhX3QgKmR2YSwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5k aWFuKQogewotICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZHZhPSVsbHgsICVsbHhcbiIsIAot CQkodW5zaWduZWQgbG9uZyBsb25nKSBkdmEtPmR2YV93b3JkWzBdLCAKKyAgZ3J1Yl9kcHJp bnRmICgiemZzIiwgImR2YT0lbGx4LCAlbGx4XG4iLAorCQkodW5zaWduZWQgbG9uZyBsb25n KSBkdmEtPmR2YV93b3JkWzBdLAogCQkodW5zaWduZWQgbG9uZyBsb25nKSBkdmEtPmR2YV93 b3JkWzFdKTsKLSAgcmV0dXJuIGdydWJfemZzX3RvX2NwdTY0ICgoZHZhKS0+ZHZhX3dvcmRb MV0sIAorICByZXR1cm4gZ3J1Yl96ZnNfdG9fY3B1NjQgKChkdmEpLT5kdmFfd29yZFsxXSwK IAkJCSAgICBlbmRpYW4pIDw8IFNQQV9NSU5CTE9DS1NISUZUOwogfQogCkBAIC02NzIsNyAr NjcyLDcgQEAgZmlsbF92ZGV2X2luZm9fcmVhbCAoc3RydWN0IGdydWJfemZzX2RhdGEgKmRh dGEsCiAJewogCSAgZmlsbC0+ZGV2ID0gaW5zZXJ0LT5kZXY7CiAJICBmaWxsLT52ZGV2X3Bo eXNfc2VjdG9yID0gaW5zZXJ0LT52ZGV2X3BoeXNfc2VjdG9yOwotCSAgZmlsbC0+Y3VycmVu dF91YmVyYmxvY2sgPSBpbnNlcnQtPmN1cnJlbnRfdWJlcmJsb2NrOworCSAgZ3J1Yl9tZW1j cHkgKCZmaWxsLT5jdXJyZW50X3ViZXJibG9jaywgJmluc2VydC0+Y3VycmVudF91YmVyYmxv Y2ssIHNpemVvZiAoaW5zZXJ0LT5jdXJyZW50X3ViZXJibG9jaykpOwogCSAgZmlsbC0+b3Jp Z2luYWwgPSBpbnNlcnQtPm9yaWdpbmFsOwogCSAgaWYgKCFkYXRhLT5kZXZpY2Vfb3JpZ2lu YWwpCiAJICAgIGRhdGEtPmRldmljZV9vcmlnaW5hbCA9IGZpbGw7CkBAIC03MTYsNyArNzE2 LDcgQEAgZmlsbF92ZGV2X2luZm9fcmVhbCAoc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEs CiAgICAgICBpZiAoIWZpbGwtPmNoaWxkcmVuKQogCXsKIAkgIGZpbGwtPm5fY2hpbGRyZW4g PSBuZWxtOwotCSAgCisKIAkgIGZpbGwtPmNoaWxkcmVuID0gZ3J1Yl96YWxsb2MgKGZpbGwt Pm5fY2hpbGRyZW4KIAkJCQkJKiBzaXplb2YgKGZpbGwtPmNoaWxkcmVuWzBdKSk7CiAJfQpA QCAtODMyLDcgKzgzMiw3IEBAIG52bGlzdF9uZXh0X252cGFpciAoY29uc3QgY2hhciAqbnZs LCBjb25zdCBjaGFyICpudnBhaXIpCiAgICAgewogICAgICAgLyogc2tpcCBvdmVyIGhlYWRl ciwgbnZsX3ZlcnNpb24gYW5kIG52bF9udmZsYWcgKi8KICAgICAgIG52cGFpciA9IG52bCAr IDQgKiAzOwotICAgIH0gCisgICAgfQogICBlbHNlCiAgICAgewogICAgICAgLyogc2tpcCB0 byB0aGUgbmV4dCBudnBhaXIgKi8KQEAgLTg2NiwxMCArODY2LDEwIEBAIG52bGlzdF9uZXh0 X252cGFpciAoY29uc3QgY2hhciAqbnZsLCBjb25zdCBjaGFyICpudnBhaXIpCiAgIG5hbWVf bGVuID0gZ3J1Yl9iZV90b19jcHUzMiAoZ3J1Yl9nZXRfdW5hbGlnbmVkMzIgKG52cCkpOwog ICBudnAgKz0gNDsKIAotICBudnAgPSBudnAgKyAoKG5hbWVfbGVuICsgMykgJiB+Myk7IC8v IGFsaWduIAotICBpZiAobnZwICsgNCA+PSBudmwgKyBWREVWX1BIWVNfU0laRSAgICAgICAg ICAgICAgICAgICAgICAgIAorICBudnAgPSBudnAgKyAoKG5hbWVfbGVuICsgMykgJiB+Myk7 IC8vIGFsaWduCisgIGlmIChudnAgKyA0ID49IG52bCArIFZERVZfUEhZU19TSVpFCiAgICAg ICB8fCBlbmNvZGVfc2l6ZSA8IDAKLSAgICAgIHx8IG52cCArIDQgKyBlbmNvZGVfc2l6ZSA+ IG52bCArIFZERVZfUEhZU19TSVpFKSAgICAgICAKKyAgICAgIHx8IG52cCArIDQgKyBlbmNv ZGVfc2l6ZSA+IG52bCArIFZERVZfUEhZU19TSVpFKQogICAgIHsKICAgICAgIGdydWJfZHBy aW50ZiAoInpmcyIsICJudmxpc3Qgb3ZlcmZsb3dcbiIpOwogICAgICAgZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQkFEX0ZTLCAiaW5jb3JyZWN0IG52bGlzdCIpOwpAQCAtODg5LDcgKzg4OSw3 IEBAIG52cGFpcl9uYW1lIChjb25zdCBjaGFyICpudnAsIGNoYXIgKipidWYsIGdydWJfc2l6 ZV90ICpidWZsZW4pCiB7CiAgIC8qIHNraXAgb3ZlciBlbmNvZGUvZGVjb2RlIHNpemUgKi8K ICAgbnZwICs9IDQgKiAyOwotCQorCiAgICpidWYgPSAoY2hhciAqKSAobnZwICsgNCk7CiAg ICpidWZsZW4gPSBncnViX2JlX3RvX2NwdTMyIChncnViX2dldF91bmFsaWduZWQzMiAobnZw KSk7CiAKQEAgLTkzNiw3ICs5MzYsNyBAQCBudnBhaXJfdmFsdWUgKGNvbnN0IGNoYXIgKm52 cCxjaGFyICoqdmFsLAogCiAgIC8qIHNraXAgb3ZlciBuYW1lICovCiAgIG52cCA9IG52cCAr ICgobmFtZV9sZW4gKyAzKSAmIH4zKTsgLyogYWxpZ24gKi8KLQkKKwogICAvKiBza2lwIG92 ZXIgdHlwZSAqLwogICBudnAgKz0gNDsKICAgbmVsbSA9IGdydWJfYmVfdG9fY3B1MzIgKGdy dWJfZ2V0X3VuYWxpZ25lZDMyIChudnApKTsKQEAgLTk1MCw3ICs5NTAsNyBAQCBudnBhaXJf dmFsdWUgKGNvbnN0IGNoYXIgKm52cCxjaGFyICoqdmFsLAogICAqc2l6ZV9vdXQgPSBlbmNv ZGVfc2l6ZTsKICAgaWYgKG5lbG1fb3V0KQogICAgICpuZWxtX291dCA9IG5lbG07Ci0JICAg IAorCiAgIHJldHVybiAxOwogfQogCkBAIC05OTksNyArOTk5LDcgQEAgY2hlY2tfcG9vbF9s YWJlbCAoc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEsCiAgICAgfQogICAvKiBOb3cgY2hl Y2sgdGhlIGludGVncml0eSBvZiB0aGUgdmRldl9waHlzX3Qgc3RydWN0dXJlIHRob3VnaCBj aGVja3N1bS4gICovCiAgIFpJT19TRVRfQ0hFQ0tTVU0oJmVtcHR5Y2tzdW0sIGRpc2tkZXNj LT52ZGV2X3BoeXNfc2VjdG9yIDw8IDksIDAsIDAsIDApOwotICBlcnIgPSB6aW9fY2hlY2tz dW1fdmVyaWZ5IChlbXB0eWNrc3VtLCBaSU9fQ0hFQ0tTVU1fTEFCRUwsIGVuZGlhbiwKKyAg ZXJyID0gemlvX2NoZWNrc3VtX3ZlcmlmeSAoJmVtcHR5Y2tzdW0sIFpJT19DSEVDS1NVTV9M QUJFTCwgZW5kaWFuLAogCQkJICAgICBudmxpc3QsIFZERVZfUEhZU19TSVpFKTsKICAgaWYg KGVycikKICAgICByZXR1cm4gZXJyOwpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgc2Nhbl9kaXNr IChncnViX2RldmljZV90IGRldiwgc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEsCiAgICAg ICBkZXNjLnZkZXZfcGh5c19zZWN0b3IKIAk9IGxhYmVsICogKHNpemVvZiAodmRldl9sYWJl bF90KSA+PiBTUEFfTUlOQkxPQ0tTSElGVCkKIAkrICgoVkRFVl9TS0lQX1NJWkUgKyBWREVW X0JPT1RfSEVBREVSX1NJWkUpID4+IFNQQV9NSU5CTE9DS1NISUZUKQotCSsgKGxhYmVsIDwg VkRFVl9MQUJFTFMgLyAyID8gMCA6IAorCSsgKGxhYmVsIDwgVkRFVl9MQUJFTFMgLyAyID8g MCA6CiAJICAgQUxJR05fRE9XTiAoZ3J1Yl9kaXNrX2dldF9zaXplIChkZXYtPmRpc2spLCBz aXplb2YgKHZkZXZfbGFiZWxfdCkpCiAJICAgLSBWREVWX0xBQkVMUyAqIChzaXplb2YgKHZk ZXZfbGFiZWxfdCkgPj4gU1BBX01JTkJMT0NLU0hJRlQpKTsKIApAQCAtMTIyMiw3ICsxMjIy LDcgQEAgc2Nhbl9kaXNrIChncnViX2RldmljZV90IGRldiwgc3RydWN0IGdydWJfemZzX2Rh dGEgKmRhdGEsCiAgICAgICBncnViX2ZyZWUgKGJoKTsKICAgICAgIHJldHVybiBHUlVCX0VS Ul9OT05FOwogICAgIH0KLSAgCisKICAgZ3J1Yl9mcmVlICh1Yl9hcnJheSk7CiAgIGdydWJf ZnJlZSAoYmgpOwogCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBzY2FuX2RldmljZXNfaXRlciAo Y29uc3QgY2hhciAqbmFtZSwgdm9pZCAqaG9va19kYXRhKQogCiAgIGlmICghaW5zZXJ0ZWQp CiAgICAgZ3J1Yl9kZXZpY2VfY2xvc2UgKGRldik7Ci0gIAorCiAgIHJldHVybiAwOwogfQog CkBAIC0xMzc5LDcgKzEzNzksNyBAQCByZWNvdmVyeSAoZ3J1Yl91aW50OF90ICpidWZzWzRd LCBncnViX3NpemVfdCBzLCBjb25zdCBpbnQgbmJ1ZnMsCiAJZm9yIChpID0gMDsgaSA8IG5i dWZzOyBpKyspCiAJICB7CiAJICAgIGdydWJfdWludDhfdCBtdWw7Ci0JICAgIGZvciAoaiA9 IGk7IGogPCBuYnVmczsgaisrKQkgICAgCisJICAgIGZvciAoaiA9IGk7IGogPCBuYnVmczsg aisrKQogCSAgICAgIGlmIChtYXRyaXgxW2ldW2pdKQogCQlicmVhazsKIAkgICAgaWYgKGog PT0gbmJ1ZnMpCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQCByZWNvdmVyeSAoZ3J1Yl91aW50OF90 ICpidWZzWzRdLCBncnViX3NpemVfdCBzLCBjb25zdCBpbnQgbmJ1ZnMsCiAgICAgICB9CiAg ICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CVUcsICJ0 b28gYmlnIG1hdHJpeCIpOwotICAgIH0gICAgICAKKyAgICB9CiB9CiAKIHN0YXRpYyBncnVi X2Vycl90CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCByZWFkX2RldmljZSAoZ3J1Yl91aW50NjRf dCBvZmZzZXQsIHN0cnVjdCBncnViX3pmc19kZXZpY2VfZGVzYyAqZGVzYywKIAlpbnQgaWR4 LCBvcmlnX2lkeDsKIAogCWlmIChkZXNjLT5ucGFyaXR5IDwgMSB8fCBkZXNjLT5ucGFyaXR5 ID4gMykKLQkgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5URURf WUVULCAKKwkgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5URURf WUVULAogCQkJICAgICAicmFpZHolZCBpcyBub3Qgc3VwcG9ydGVkIiwgZGVzYy0+bnBhcml0 eSk7CiAKIAlpZiAoZGVzYy0+bl9jaGlsZHJlbiA8PSBkZXNjLT5ucGFyaXR5IHx8IGRlc2Mt Pm5fY2hpbGRyZW4gPCAxKQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgcmVhZF9kZXZpY2UgKGdy dWJfdWludDY0X3Qgb2Zmc2V0LCBzdHJ1Y3QgZ3J1Yl96ZnNfZGV2aWNlX2Rlc2MgKmRlc2Ms CiAJCWxlbiAtPSBjc2l6ZTsKIAkJaWR4LS07CiAJICAgICAgfQotCSAgICBmb3IgKGkgPSAw OyBpIDwgZmFpbGVkX2RldmljZXMgCisJICAgIGZvciAoaSA9IDA7IGkgPCBmYWlsZWRfZGV2 aWNlcwogCQkgICAmJiByZWNvdmVyeV9sZW5baV0gPT0gcmVjb3ZlcnlfbGVuWzBdOwogCQkg aSsrKTsKIAkgICAgLyogU2luY2UgdGhlIGNodW5rcyBoYXZlIHZhcmlhYmxlIGxlbmd0aCBo YW5kbGUgdGhlIGxhc3QgYmxvY2sKQEAgLTE3NDQsNyArMTc0NCw3IEBAIHppb19yZWFkX2dh bmcgKGJsa3B0cl90ICogYnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgZHZhX3QgKiBk dmEsIHZvaWQgKmJ1ZiwKICAgLyogc2VsZiBjaGVja3N1bWluZyB0aGUgZ2FuZyBibG9jayBo ZWFkZXIgKi8KICAgWklPX1NFVF9DSEVDS1NVTSAoJnpjLCBEVkFfR0VUX1ZERVYgKGR2YSks CiAJCSAgICBkdmFfZ2V0X29mZnNldCAoZHZhLCBlbmRpYW4pLCBicC0+YmxrX2JpcnRoLCAw KTsKLSAgZXJyID0gemlvX2NoZWNrc3VtX3ZlcmlmeSAoemMsIFpJT19DSEVDS1NVTV9HQU5H X0hFQURFUiwgZW5kaWFuLAorICBlcnIgPSB6aW9fY2hlY2tzdW1fdmVyaWZ5ICgmemMsIFpJ T19DSEVDS1NVTV9HQU5HX0hFQURFUiwgZW5kaWFuLAogCQkJICAgICAoY2hhciAqKSB6aW9f Z2IsIFNQQV9HQU5HQkxPQ0tTSVpFKTsKICAgaWYgKGVycikKICAgICB7CkBAIC0xNzc1LDcg KzE3NzUsNyBAQCB6aW9fcmVhZF9nYW5nIChibGtwdHJfdCAqIGJwLCBncnViX3pmc19lbmRp YW5fdCBlbmRpYW4sIGR2YV90ICogZHZhLCB2b2lkICpidWYsCiAgKiBSZWFkIGluIGEgYmxv Y2sgb2YgcmF3IGRhdGEgdG8gYnVmLgogICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotemlvX3Jl YWRfZGF0YSAoYmxrcHRyX3QgKiBicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lk ICpidWYsIAoremlvX3JlYWRfZGF0YSAoYmxrcHRyX3QgKiBicCwgZ3J1Yl96ZnNfZW5kaWFu X3QgZW5kaWFuLCB2b2lkICpidWYsCiAJICAgICAgIHN0cnVjdCBncnViX3pmc19kYXRhICpk YXRhKQogewogICBpbnQgaSwgcHNpemU7CkBAIC0xODQzLDcgKzE4NDMsNyBAQCBkZWNvZGVf ZW1iZWRkZWRfYnBfY29tcHJlc3NlZChjb25zdCBibGtwdHJfdCAqYnAsIHZvaWQgKmJ1ZikK ICAqIGFuZCBwdXQgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGluIGJ1Zi4KICAqLwogc3RhdGlj IGdydWJfZXJyX3QKLXppb19yZWFkIChibGtwdHJfdCAqYnAsIGdydWJfemZzX2VuZGlhbl90 IGVuZGlhbiwgdm9pZCAqKmJ1ZiwgCit6aW9fcmVhZCAoYmxrcHRyX3QgKmJwLCBncnViX3pm c19lbmRpYW5fdCBlbmRpYW4sIHZvaWQgKipidWYsCiAJICBncnViX3NpemVfdCAqc2l6ZSwg c3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEpCiB7CiAgIGdydWJfc2l6ZV90IGxzaXplLCBw c2l6ZTsKQEAgLTE5MTUsNyArMTkxNSw3IEBAIHppb19yZWFkIChibGtwdHJfdCAqYnAsIGdy dWJfemZzX2VuZGlhbl90IGVuZGlhbiwgdm9pZCAqKmJ1ZiwKIAogICBpZiAoIUJQX0lTX0VN QkVEREVEKGJwKSkKICAgICB7Ci0gICAgICBlcnIgPSB6aW9fY2hlY2tzdW1fdmVyaWZ5ICh6 YywgY2hlY2tzdW0sIGVuZGlhbiwKKyAgICAgIGVyciA9IHppb19jaGVja3N1bV92ZXJpZnkg KCZ6YywgY2hlY2tzdW0sIGVuZGlhbiwKIAkJCSAgICAgICAgIGNvbXBidWYsIHBzaXplKTsK ICAgICAgIGlmIChlcnIpCiAgICAgICAgIHsKQEAgLTE5MjksNyArMTkyOSw3IEBAIHppb19y ZWFkIChibGtwdHJfdCAqYnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgdm9pZCAqKmJ1 ZiwKICAgaWYgKGVuY3J5cHRlZCkKICAgICB7CiAgICAgICBpZiAoIWdydWJfemZzX2RlY3J5 cHQpCi0JZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAKKwllcnIgPSBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfRlMsCiAJCQkgIE5fKCJtb2R1bGUgYCVzJyBpc24ndCBs b2FkZWQiKSwKIAkJCSAgInpmc2NyeXB0Iik7CiAgICAgICBlbHNlCkBAIC0xOTUzLDcgKzE5 NTMsNyBAQCB6aW9fcmVhZCAoYmxrcHRyX3QgKmJwLCBncnViX3pmc19lbmRpYW5fdCBlbmRp YW4sIHZvaWQgKipidWYsCiAJCQkJCSAgICAgICBlbmRpYW4pKTsKIAkgICAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAibm8ga2V5IGZvdW5kIGluIGtleWNoYWlu Iik7CiAJICAgIH0KLQkgIGdydWJfZHByaW50ZiAoInpmcyIsICJ1c2luZyBrZXkgJXUgKCUi IFBSSXhHUlVCX1VJTlQ2NF9UIAorCSAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInVzaW5nIGtl eSAldSAoJSIgUFJJeEdSVUJfVUlOVDY0X1QKIAkJCSIsICVwKSBmb3IgdHhnICUiIFBSSXhH UlVCX1VJTlQ2NF9UICJcbiIsCiAJCQliZXN0aSwgZGF0YS0+c3Vidm9sLmtleXJpbmdbYmVz dGldLnR4ZywKIAkJCWRhdGEtPnN1YnZvbC5rZXlyaW5nW2Jlc3RpXS5jaXBoZXIsCkBAIC0y MDAxLDcgKzIwMDEsNyBAQCB6aW9fcmVhZCAoYmxrcHRyX3QgKmJwLCBncnViX3pmc19lbmRp YW5fdCBlbmRpYW4sIHZvaWQgKipidWYsCiAgKgogICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAot ZG11X3JlYWQgKGRub2RlX2VuZF90ICogZG4sIGdydWJfdWludDY0X3QgYmxraWQsIHZvaWQg KipidWYsIAorZG11X3JlYWQgKGRub2RlX2VuZF90ICogZG4sIGdydWJfdWludDY0X3QgYmxr aWQsIHZvaWQgKipidWYsCiAJICBncnViX3pmc19lbmRpYW5fdCAqZW5kaWFuX291dCwgc3Ry dWN0IGdydWJfemZzX2RhdGEgKmRhdGEpCiB7CiAgIGludCBsZXZlbDsKQEAgLTIwMzEsOCAr MjAzMSw4IEBAIGRtdV9yZWFkIChkbm9kZV9lbmRfdCAqIGRuLCBncnViX3VpbnQ2NF90IGJs a2lkLCB2b2lkICoqYnVmLAogCiAgICAgICBpZiAoQlBfSVNfSE9MRSAoYnApKQogCXsKLQkg IGdydWJfc2l6ZV90IHNpemUgPSBncnViX3pmc190b19jcHUxNiAoZG4tPmRuLmRuX2RhdGFi bGtzenNlYywgCi0JCQkJCQlkbi0+ZW5kaWFuKSAKKwkgIGdydWJfc2l6ZV90IHNpemUgPSBn cnViX3pmc190b19jcHUxNiAoZG4tPmRuLmRuX2RhdGFibGtzenNlYywKKwkJCQkJCWRuLT5l bmRpYW4pCiAJICAgIDw8IFNQQV9NSU5CTE9DS1NISUZUOwogCSAgKmJ1ZiA9IGdydWJfbWFs bG9jIChzaXplKTsKIAkgIGlmICghKmJ1ZikKQEAgLTIwOTYsNyArMjA5Niw3IEBAIG16YXBf bG9va3VwIChtemFwX3BoeXNfdCAqIHphcG9iaiwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFu LAogfQogCiBzdGF0aWMgaW50Ci1temFwX2l0ZXJhdGUgKG16YXBfcGh5c190ICogemFwb2Jq LCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sIGludCBvYmpzaXplLCAKK216YXBfaXRlcmF0 ZSAobXphcF9waHlzX3QgKiB6YXBvYmosIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgaW50 IG9ianNpemUsCiAJICAgICAgaW50ICgqaG9vaykgKGNvbnN0IGNoYXIgKm5hbWUsIGdydWJf dWludDY0X3QgdmFsLAogCQkJICAgc3RydWN0IGdydWJfemZzX2Rpcl9jdHggKmN0eCksCiAJ ICAgICAgc3RydWN0IGdydWJfemZzX2Rpcl9jdHggKmN0eCkKQEAgLTIxMTAsNyArMjExMCw3 IEBAIG16YXBfaXRlcmF0ZSAobXphcF9waHlzX3QgKiB6YXBvYmosIGdydWJfemZzX2VuZGlh bl90IGVuZGlhbiwgaW50IG9ianNpemUsCiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAi emFwOiBuYW1lID0gJXMsIHZhbHVlID0gJWxseCwgY2QgPSAleFxuIiwKIAkJICAgIG16YXBf ZW50W2ldLm16ZV9uYW1lLCAobG9uZyBsb25nKW16YXBfZW50W2ldLm16ZV92YWx1ZSwKIAkJ ICAgIChpbnQpbXphcF9lbnRbaV0ubXplX2NkKTsKLSAgICAgIGlmIChob29rIChtemFwX2Vu dFtpXS5temVfbmFtZSwgCisgICAgICBpZiAoaG9vayAobXphcF9lbnRbaV0ubXplX25hbWUs CiAJCWdydWJfemZzX3RvX2NwdTY0IChtemFwX2VudFtpXS5temVfdmFsdWUsIGVuZGlhbiks IGN0eCkpCiAJcmV0dXJuIDE7CiAgICAgfQpAQCAtMjE3MSwxMiArMjE3MSwxMiBAQCBuYW1l X2NtcCAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBncnViX3NpemVfdCBuLAog CiAgIGlmICghY2FzZV9pbnNlbnNpdGl2ZSkKICAgICByZXR1cm4gZ3J1Yl9tZW1jbXAgKHQx LCB0Miwgbik7Ci0gICAgICAKKwogICB3aGlsZSAobi0tKQogICAgIHsKICAgICAgIGlmIChn cnViX3RvdXBwZXIgKCp0MSkgIT0gZ3J1Yl90b3VwcGVyICgqdDIpKQogCXJldHVybiAoaW50 KSBncnViX3RvdXBwZXIgKCp0MSkgLSAoaW50KSBncnViX3RvdXBwZXIgKCp0Mik7Ci0JICAK KwogICAgICAgdDErKzsKICAgICAgIHQyKys7CiAgICAgfQpAQCAtMjIxNCw3ICsyMjE0LDcg QEAgemFwX2xlYWZfYXJyYXlfZXF1YWwgKHphcF9sZWFmX3BoeXNfdCAqIGwsIGdydWJfemZz X2VuZGlhbl90IGVuZGlhbiwKIAogLyogWFhYICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotemFw X2xlYWZfYXJyYXlfZ2V0ICh6YXBfbGVhZl9waHlzX3QgKiBsLCBncnViX3pmc19lbmRpYW5f dCBlbmRpYW4sIGludCBibGtzZnQsIAoremFwX2xlYWZfYXJyYXlfZ2V0ICh6YXBfbGVhZl9w aHlzX3QgKiBsLCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sIGludCBibGtzZnQsCiAJCSAg ICBpbnQgY2h1bmssIGdydWJfc2l6ZV90IGFycmF5X2xlbiwgY2hhciAqYnVmKQogewogICBn cnViX3NpemVfdCBic2VlbiA9IDA7CkBAIC0yMjc4LDcgKzIyNzgsNyBAQCB6YXBfbGVhZl9s b29rdXAgKHphcF9sZWFmX3BoeXNfdCAqIGwsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwK IAogICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgImZ6YXA6IGxlbmd0aCAlZFxuIiwgKGlu dCkgbGUtPmxlX25hbWVfbGVuZ3RoKTsKIAotICAgICAgaWYgKHphcF9sZWFmX2FycmF5X2Vx dWFsIChsLCBlbmRpYW4sIGJsa3NmdCwgCisgICAgICBpZiAoemFwX2xlYWZfYXJyYXlfZXF1 YWwgKGwsIGVuZGlhbiwgYmxrc2Z0LAogCQkJCWdydWJfemZzX3RvX2NwdTE2IChsZS0+bGVf bmFtZV9jaHVuayxlbmRpYW4pLAogCQkJCWdydWJfemZzX3RvX2NwdTE2IChsZS0+bGVfbmFt ZV9sZW5ndGgsIGVuZGlhbiksCiAJCQkJbmFtZSwgY2FzZV9pbnNlbnNpdGl2ZSkpCkBAIC0y MzI3LDcgKzIzMjcsNyBAQCBmemFwX2xvb2t1cCAoZG5vZGVfZW5kX3QgKiB6YXBfZG5vZGUs IHphcF9waHlzX3QgKiB6YXAsCiB7CiAgIHZvaWQgKmw7CiAgIGdydWJfdWludDY0X3QgaGFz aCwgaWR4LCBibGtpZDsKLSAgaW50IGJsa3NmdCA9IHpmc19sb2cyIChncnViX3pmc190b19j cHUxNiAoemFwX2Rub2RlLT5kbi5kbl9kYXRhYmxrc3pzZWMsIAorICBpbnQgYmxrc2Z0ID0g emZzX2xvZzIgKGdydWJfemZzX3RvX2NwdTE2ICh6YXBfZG5vZGUtPmRuLmRuX2RhdGFibGtz enNlYywKIAkJCQkJICAgIHphcF9kbm9kZS0+ZW5kaWFuKSA8PCBETk9ERV9TSElGVCk7CiAg IGdydWJfZXJyX3QgZXJyOwogICBncnViX3pmc19lbmRpYW5fdCBsZWFmZW5kaWFuOwpAQCAt MjM0MCw3ICsyMzQwLDcgQEAgZnphcF9sb29rdXAgKGRub2RlX2VuZF90ICogemFwX2Rub2Rl LCB6YXBfcGh5c190ICogemFwLAogCiAgIC8qIGdldCBibG9jayBpZCBmcm9tIGluZGV4ICov CiAgIGlmICh6YXAtPnphcF9wdHJ0YmwuenRfbnVtYmxrcyAhPSAwKQotICAgIHJldHVybiBn cnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5URURfWUVULCAKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfTk9UX0lNUExFTUVOVEVEX1lFVCwKIAkJICAgICAgICJl eHRlcm5hbCBwb2ludGVyIHRhYmxlcyBub3Qgc3VwcG9ydGVkIik7CiAgIGlkeCA9IFpBUF9I QVNIX0lEWCAoaGFzaCwgemFwLT56YXBfcHRydGJsLnp0X3NoaWZ0KTsKICAgYmxraWQgPSBn cnViX3pmc190b19jcHU2NCAoKChncnViX3VpbnQ2NF90ICopIHphcClbaWR4ICsgKDEgPDwg KGJsa3NmdCAtIDMgLSAxKSldLCB6YXBfZG5vZGUtPmVuZGlhbik7CkBAIC0yMzcyLDcgKzIz NzIsNyBAQCBmemFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5 c190ICogemFwLAogICB2b2lkICpsX2luOwogICBncnViX3VpbnQ2NF90IGlkeCwgaWR4Miwg YmxraWQ7CiAgIGdydWJfdWludDE2X3QgY2h1bms7Ci0gIGludCBibGtzZnQgPSB6ZnNfbG9n MiAoZ3J1Yl96ZnNfdG9fY3B1MTYgKHphcF9kbm9kZS0+ZG4uZG5fZGF0YWJsa3N6c2VjLCAK KyAgaW50IGJsa3NmdCA9IHpmc19sb2cyIChncnViX3pmc190b19jcHUxNiAoemFwX2Rub2Rl LT5kbi5kbl9kYXRhYmxrc3pzZWMsCiAJCQkJCSAgICB6YXBfZG5vZGUtPmVuZGlhbikgPDwg RE5PREVfU0hJRlQpOwogICBncnViX2Vycl90IGVycjsKICAgZ3J1Yl96ZnNfZW5kaWFuX3Qg ZW5kaWFuOwpAQCAtMjM4Myw3ICsyMzgzLDcgQEAgZnphcF9pdGVyYXRlIChkbm9kZV9lbmRf dCAqIHphcF9kbm9kZSwgemFwX3BoeXNfdCAqIHphcCwKICAgLyogZ2V0IGJsb2NrIGlkIGZy b20gaW5kZXggKi8KICAgaWYgKHphcC0+emFwX3B0cnRibC56dF9udW1ibGtzICE9IDApCiAg ICAgewotICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfTk9UX0lNUExFTUVOVEVEX1lFVCwg CisgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5URURfWUVULAogCQkg ICJleHRlcm5hbCBwb2ludGVyIHRhYmxlcyBub3Qgc3VwcG9ydGVkIik7CiAgICAgICByZXR1 cm4gMDsKICAgICB9CkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB6YXBfbG9va3VwIChkbm9kZV9l bmRfdCAqIHphcF9kbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCAqdmFs LAogICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgIm1pY3JvIHphcFxuIik7CiAgICAgICBl cnIgPSBtemFwX2xvb2t1cCAoemFwYnVmLCBlbmRpYW4sIHNpemUsIG5hbWUsIHZhbCwKIAkJ CSBjYXNlX2luc2Vuc2l0aXZlKTsKLSAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJyZXR1 cm5lZCAlZFxuIiwgZXJyKTsgICAgICAKKyAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJy ZXR1cm5lZCAlZFxuIiwgZXJyKTsKICAgICAgIGdydWJfZnJlZSAoemFwYnVmKTsKICAgICAg IHJldHVybiBlcnI7CiAgICAgfQpAQCAtMjUyMCw3ICsyNTIwLDcgQEAgemFwX2xvb2t1cCAo ZG5vZGVfZW5kX3QgKiB6YXBfZG5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsIGdydWJfdWludDY0 X3QgKnZhbCwKICAgICAgIC8qIHRoaXMgaXMgYSBmYXQgemFwICovCiAgICAgICBlcnIgPSBm emFwX2xvb2t1cCAoemFwX2Rub2RlLCB6YXBidWYsIG5hbWUsIHZhbCwgZGF0YSwKIAkJCSBj YXNlX2luc2Vuc2l0aXZlKTsKLSAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJyZXR1cm5l ZCAlZFxuIiwgZXJyKTsgICAgICAKKyAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJyZXR1 cm5lZCAlZFxuIiwgZXJyKTsKICAgICAgIGdydWJfZnJlZSAoemFwYnVmKTsKICAgICAgIHJl dHVybiBlcnI7CiAgICAgfQpAQCAtMjU1Myw3ICsyNTUzLDcgQEAgemFwX2l0ZXJhdGVfdTY0 X3RyYW5zZm9ybSAoY29uc3Qgdm9pZCAqbmFtZSwKIH0KIAogc3RhdGljIGludAotemFwX2l0 ZXJhdGVfdTY0IChkbm9kZV9lbmRfdCAqIHphcF9kbm9kZSwgCit6YXBfaXRlcmF0ZV91NjQg KGRub2RlX2VuZF90ICogemFwX2Rub2RlLAogCQkgaW50ICgqaG9vaykgKGNvbnN0IGNoYXIg Km5hbWUsIGdydWJfdWludDY0X3QgdmFsLAogCQkJICAgICAgc3RydWN0IGdydWJfemZzX2Rp cl9jdHggKmN0eCksCiAJCSBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSwgc3RydWN0IGdy dWJfemZzX2Rpcl9jdHggKmN0eCkKQEAgLTI2MDAsNyArMjYwMCw3IEBAIHphcF9pdGVyYXRl X3U2NCAoZG5vZGVfZW5kX3QgKiB6YXBfZG5vZGUsCiB9CiAKIHN0YXRpYyBpbnQKLXphcF9p dGVyYXRlIChkbm9kZV9lbmRfdCAqIHphcF9kbm9kZSwgCit6YXBfaXRlcmF0ZSAoZG5vZGVf ZW5kX3QgKiB6YXBfZG5vZGUsCiAJICAgICBncnViX3NpemVfdCBuYW1lZWxlbWxlbiwKIAkg ICAgIGludCAoKmhvb2spIChjb25zdCB2b2lkICpuYW1lLCBncnViX3NpemVfdCBuYW1lbGVu LAogCQkJICBjb25zdCB2b2lkICp2YWxfaW4sCkBAIC0yNjYwLDI0ICsyNjYwLDI0IEBAIGRu b2RlX2dldCAoZG5vZGVfZW5kX3QgKiBtZG4sIGdydWJfdWludDY0X3Qgb2JqbnVtLCBncnVi X3VpbnQ4X3QgdHlwZSwKICAgZ3J1Yl9lcnJfdCBlcnI7CiAgIGdydWJfemZzX2VuZGlhbl90 IGVuZGlhbjsKIAotICBibGtzeiA9IGdydWJfemZzX3RvX2NwdTE2IChtZG4tPmRuLmRuX2Rh dGFibGtzenNlYywgCisgIGJsa3N6ID0gZ3J1Yl96ZnNfdG9fY3B1MTYgKG1kbi0+ZG4uZG5f ZGF0YWJsa3N6c2VjLAogCQkJICAgICBtZG4tPmVuZGlhbikgPDwgU1BBX01JTkJMT0NLU0hJ RlQ7CiAgIGVwYnMgPSB6ZnNfbG9nMiAoYmxrc3opIC0gRE5PREVfU0hJRlQ7CiAgIGJsa2lk ID0gb2JqbnVtID4+IGVwYnM7CiAgIGlkeCA9IG9iam51bSAmICgoMSA8PCBlcGJzKSAtIDEp OwogCi0gIGlmIChkYXRhLT5kbm9kZV9idWYgIT0gTlVMTCAmJiBncnViX21lbWNtcCAoZGF0 YS0+ZG5vZGVfbWRuLCBtZG4sIAotCQkJCQkgICAgICBzaXplb2YgKCptZG4pKSA9PSAwIAor ICBpZiAoZGF0YS0+ZG5vZGVfYnVmICE9IE5VTEwgJiYgZ3J1Yl9tZW1jbXAgKGRhdGEtPmRu b2RlX21kbiwgbWRuLAorCQkJCQkgICAgICBzaXplb2YgKCptZG4pKSA9PSAwCiAgICAgICAm JiBvYmpudW0gPj0gZGF0YS0+ZG5vZGVfc3RhcnQgJiYgb2JqbnVtIDwgZGF0YS0+ZG5vZGVf ZW5kKQogICAgIHsKICAgICAgIGdydWJfbWVtbW92ZSAoJihidWYtPmRuKSwgJihkYXRhLT5k bm9kZV9idWYpW2lkeF0sIEROT0RFX1NJWkUpOwogICAgICAgYnVmLT5lbmRpYW4gPSBkYXRh LT5kbm9kZV9lbmRpYW47Ci0gICAgICBpZiAodHlwZSAmJiBidWYtPmRuLmRuX3R5cGUgIT0g dHlwZSkgCi0JcmV0dXJuIGdydWJfZXJyb3IoR1JVQl9FUlJfQkFEX0ZTLCAiaW5jb3JyZWN0 IGRub2RlIHR5cGUiKTsgCisgICAgICBpZiAodHlwZSAmJiBidWYtPmRuLmRuX3R5cGUgIT0g dHlwZSkKKwlyZXR1cm4gZ3J1Yl9lcnJvcihHUlVCX0VSUl9CQURfRlMsICJpbmNvcnJlY3Qg ZG5vZGUgdHlwZSIpOwogICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiAgICAgfQogCi0g IGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZCwgYmxraWQ9JWxseFxuIiwgbWRu LT5lbmRpYW4sIAorICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZW5kaWFuID0gJWQsIGJsa2lk PSVsbHhcbiIsIG1kbi0+ZW5kaWFuLAogCQkodW5zaWduZWQgbG9uZyBsb25nKSBibGtpZCk7 CiAgIGVyciA9IGRtdV9yZWFkIChtZG4sIGJsa2lkLCAmZG5idWYsICZlbmRpYW4sIGRhdGEp OwogICBpZiAoZXJyKQpAQCAtMjcwMyw4ICsyNzAzLDggQEAgZG5vZGVfZ2V0IChkbm9kZV9l bmRfdCAqIG1kbiwgZ3J1Yl91aW50NjRfdCBvYmpudW0sIGdydWJfdWludDhfdCB0eXBlLAog CiAgIGdydWJfbWVtbW92ZSAoJihidWYtPmRuKSwgKGRub2RlX3BoeXNfdCAqKSBkbmJ1ZiAr IGlkeCwgRE5PREVfU0laRSk7CiAgIGJ1Zi0+ZW5kaWFuID0gZW5kaWFuOwotICBpZiAodHlw ZSAmJiBidWYtPmRuLmRuX3R5cGUgIT0gdHlwZSkgCi0gICAgcmV0dXJuIGdydWJfZXJyb3Io R1JVQl9FUlJfQkFEX0ZTLCAiaW5jb3JyZWN0IGRub2RlIHR5cGUiKTsgCisgIGlmICh0eXBl ICYmIGJ1Zi0+ZG4uZG5fdHlwZSAhPSB0eXBlKQorICAgIHJldHVybiBncnViX2Vycm9yKEdS VUJfRVJSX0JBRF9GUywgImluY29ycmVjdCBkbm9kZSB0eXBlIik7CiAKICAgcmV0dXJuIEdS VUJfRVJSX05PTkU7CiB9CkBAIC0yNzI4LDcgKzI3MjgsNyBAQCBkbm9kZV9nZXRfcGF0aCAo c3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLCBjb25zdCBjaGFyICpwYXRoX2luLCBkbm9kZV9l bmRfdCAqZG4sCiAgIHN0cnVjdCBkbm9kZV9jaGFpbgogICB7CiAgICAgc3RydWN0IGRub2Rl X2NoYWluICpuZXh0OwotICAgIGRub2RlX2VuZF90IGRuOyAKKyAgICBkbm9kZV9lbmRfdCBk bjsKICAgfTsKICAgc3RydWN0IGRub2RlX2NoYWluICpkbm9kZV9wYXRoID0gMCwgKmRuX25l dywgKnJvb3Q7CiAKQEAgLTI3MzgsNyArMjczOCw3IEBAIGRub2RlX2dldF9wYXRoIChzdHJ1 Y3Qgc3Vidm9sdW1lICpzdWJ2b2wsIGNvbnN0IGNoYXIgKnBhdGhfaW4sIGRub2RlX2VuZF90 ICpkbiwKICAgZG5fbmV3LT5uZXh0ID0gMDsKICAgZG5vZGVfcGF0aCA9IHJvb3QgPSBkbl9u ZXc7CiAKLSAgZXJyID0gZG5vZGVfZ2V0ICgmc3Vidm9sLT5tZG4sIE1BU1RFUl9OT0RFX09C SiwgRE1VX09UX01BU1RFUl9OT0RFLCAKKyAgZXJyID0gZG5vZGVfZ2V0ICgmc3Vidm9sLT5t ZG4sIE1BU1RFUl9OT0RFX09CSiwgRE1VX09UX01BU1RFUl9OT0RFLAogCQkgICAmKGRub2Rl X3BhdGgtPmRuKSwgZGF0YSk7CiAgIGlmIChlcnIpCiAgICAgewpAQCAtMjc4OSw3ICsyNzg5 LDcgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwgY29uc3Qg Y2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogICAgICAgZ3J1Yl9mcmVlIChkbl9u ZXcpOwogICAgICAgcmV0dXJuIGdydWJfZXJybm87CiAgICAgfQotICAKKwogICB3aGlsZSAo MSkKICAgICB7CiAgICAgICAvKiBza2lwIGxlYWRpbmcgc2xhc2hlcyAqLwpAQCAtMjgxNSw3 ICsyODE1LDcgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwg Y29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogCSAgICB9CiAJICBlbHNl CiAJICAgIHsKLQkgICAgICBlcnIgPSBncnViX2Vycm9yIChHUlVCX0VSUl9GSUxFX05PVF9G T1VORCwgCisJICAgICAgZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9V TkQsCiAJCQkJImNhbid0IHJlc29sdmUgLi4iKTsKIAkgICAgICBicmVhazsKIAkgICAgfQpA QCAtMjg2NSw3ICsyODY1LDcgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUg KnN1YnZvbCwgY29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogCSAgICB7 CiAJICAgICAgZ3J1Yl9zaXplX3QgYmxvY2s7CiAJICAgICAgZ3J1Yl9zaXplX3QgYmxrc3o7 Ci0JICAgICAgYmxrc3ogPSAoZ3J1Yl96ZnNfdG9fY3B1MTYgKGRub2RlX3BhdGgtPmRuLmRu LmRuX2RhdGFibGtzenNlYywgCisJICAgICAgYmxrc3ogPSAoZ3J1Yl96ZnNfdG9fY3B1MTYg KGRub2RlX3BhdGgtPmRuLmRuLmRuX2RhdGFibGtzenNlYywKIAkJCQkJICBkbm9kZV9wYXRo LT5kbi5lbmRpYW4pCiAJCSAgICAgICA8PCBTUEFfTUlOQkxPQ0tTSElGVCk7CiAKQEAgLTI4 OTUsNyArMjg5NSw3IEBAIGRub2RlX2dldF9wYXRoIChzdHJ1Y3Qgc3Vidm9sdW1lICpzdWJ2 b2wsIGNvbnN0IGNoYXIgKnBhdGhfaW4sIGRub2RlX2VuZF90ICpkbiwKIAkJICBncnViX2Zy ZWUgKHQpOwogCQl9CiAJICAgICAgZnJlZV9zeW12YWwgPSAxOwotCSAgICB9CSAgICAKKwkg ICAgfQogCSAgcGF0aCA9IHBhdGhfYnVmID0gZ3J1Yl9tYWxsb2MgKHN5bV9zeiArIGdydWJf c3RybGVuIChvbGRwYXRoKSArIDEpOwogCSAgaWYgKCFwYXRoX2J1ZikKIAkgICAgewpAQCAt MjkwOCw5ICsyOTA4LDkgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUgKnN1 YnZvbCwgY29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogCSAgaWYgKGZy ZWVfc3ltdmFsKQogCSAgICBncnViX2ZyZWUgKHN5bV92YWx1ZSk7CiAJICBwYXRoIFtzeW1f c3pdID0gMDsKLQkgIGdydWJfbWVtY3B5IChwYXRoICsgZ3J1Yl9zdHJsZW4gKHBhdGgpLCBv bGRwYXRoLCAKKwkgIGdydWJfbWVtY3B5IChwYXRoICsgZ3J1Yl9zdHJsZW4gKHBhdGgpLCBv bGRwYXRoLAogCQkgICAgICAgZ3J1Yl9zdHJsZW4gKG9sZHBhdGgpICsgMSk7Ci0JICAKKwog CSAgZ3J1Yl9mcmVlIChvbGRwYXRoYnVmKTsKIAkgIGlmIChwYXRoWzBdICE9ICcvJykKIAkg ICAgewpAQCAtMjkyOSw3ICsyOTI5LDcgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2 b2x1bWUgKnN1YnZvbCwgY29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAog CXsKIAkgIHZvaWQgKnNhaGRycDsKIAkgIGludCBoZHJzaXplOwotCSAgCisKIAkgIGlmIChk bm9kZV9wYXRoLT5kbi5kbi5kbl9ib251c2xlbiAhPSAwKQogCSAgICB7CiAJICAgICAgc2Fo ZHJwID0gRE5fQk9OVVMgKCZkbm9kZV9wYXRoLT5kbi5kbik7CkBAIC0yOTM3LDcgKzI5Mzcs NyBAQCBkbm9kZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLCBjb25zdCBj aGFyICpwYXRoX2luLCBkbm9kZV9lbmRfdCAqZG4sCiAJICBlbHNlIGlmIChkbm9kZV9wYXRo LT5kbi5kbi5kbl9mbGFncyAmIEROT0RFX0ZMQUdfU1BJTExfQkxLUFRSKQogCSAgICB7CiAJ ICAgICAgYmxrcHRyX3QgKmJwID0gJmRub2RlX3BhdGgtPmRuLmRuLmRuX3NwaWxsOwotCSAg ICAgIAorCiAJICAgICAgZXJyID0gemlvX3JlYWQgKGJwLCBkbm9kZV9wYXRoLT5kbi5lbmRp YW4sICZzYWhkcnAsIE5VTEwsIGRhdGEpOwogCSAgICAgIGlmIChlcnIpCiAJCXJldHVybiBl cnI7CkBAIC0yOTU1LDcgKzI5NTUsNyBAQCBkbm9kZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZv bHVtZSAqc3Vidm9sLCBjb25zdCBjaGFyICpwYXRoX2luLCBkbm9kZV9lbmRfdCAqZG4sCiAJ CQkJICAgZG5vZGVfcGF0aC0+ZG4uZW5kaWFuKSA+PiAxMikgJiAweGYpID09IDB4YSkKIAkg ICAgewogCSAgICAgIGNoYXIgKnN5bV92YWx1ZSA9IChjaGFyICopIHNhaGRycCArIGhkcnNp emUgKyBTQV9TWU1MSU5LX09GRlNFVDsKLQkgICAgICBncnViX3NpemVfdCBzeW1fc3ogPSAK KwkgICAgICBncnViX3NpemVfdCBzeW1fc3ogPQogCQlncnViX3pmc190b19jcHU2NCAoZ3J1 Yl9nZXRfdW5hbGlnbmVkNjQgKChjaGFyICopIHNhaGRycAogCQkJCQkJCSArIGhkcnNpemUK IAkJCQkJCQkgKyBTQV9TSVpFX09GRlNFVCksCkBAIC0yOTY5LDkgKzI5NjksOSBAQCBkbm9k ZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLCBjb25zdCBjaGFyICpwYXRo X2luLCBkbm9kZV9lbmRfdCAqZG4sCiAJCX0KIAkgICAgICBncnViX21lbWNweSAocGF0aCwg c3ltX3ZhbHVlLCBzeW1fc3opOwogCSAgICAgIHBhdGggW3N5bV9zel0gPSAwOwotCSAgICAg IGdydWJfbWVtY3B5IChwYXRoICsgZ3J1Yl9zdHJsZW4gKHBhdGgpLCBvbGRwYXRoLCAKKwkg ICAgICBncnViX21lbWNweSAocGF0aCArIGdydWJfc3RybGVuIChwYXRoKSwgb2xkcGF0aCwK IAkJCSAgIGdydWJfc3RybGVuIChvbGRwYXRoKSArIDEpOwotCSAgICAgIAorCiAJICAgICAg Z3J1Yl9mcmVlIChvbGRwYXRoYnVmKTsKIAkgICAgICBpZiAocGF0aFswXSAhPSAnLycpCiAJ CXsKQEAgLTMwNzIsNyArMzA3Miw3IEBAIGdldF9maWxlc3lzdGVtX2Rub2RlIChkbm9kZV9l bmRfdCAqIG1vc21kbiwgY2hhciAqZnNuYW1lLAogCiAgIGdydWJfZHByaW50ZiAoInpmcyIs ICJlbmRpYW4gPSAlZFxuIiwgbW9zbWRuLT5lbmRpYW4pOwogCi0gIGVyciA9IGRub2RlX2dl dCAobW9zbWRuLCBETVVfUE9PTF9ESVJFQ1RPUllfT0JKRUNULCAKKyAgZXJyID0gZG5vZGVf Z2V0IChtb3NtZG4sIERNVV9QT09MX0RJUkVDVE9SWV9PQkpFQ1QsCiAJCSAgIERNVV9PVF9P QkpFQ1RfRElSRUNUT1JZLCBtZG4sIGRhdGEpOwogICBpZiAoZXJyKQogICAgIHJldHVybiBl cnI7CkBAIC0zMDk1LDcgKzMwOTUsNyBAQCBnZXRfZmlsZXN5c3RlbV9kbm9kZSAoZG5vZGVf ZW5kX3QgKiBtb3NtZG4sIGNoYXIgKmZzbmFtZSwKICAgICB7CiAgICAgICBncnViX3VpbnQ2 NF90IGNoaWxkb2JqOwogICAgICAgY2hhciAqY25hbWUsIGNoOwotIAorCiAgICAgICB3aGls ZSAoKmZzbmFtZSA9PSAnLycpCiAJZnNuYW1lKys7CiAKQEAgLTMyNTUsNyArMzI1NSw3IEBA IGRub2RlX2dldF9mdWxscGF0aCAoY29uc3QgY2hhciAqZnVsbHBhdGgsIHN0cnVjdCBzdWJ2 b2x1bWUgKnN1YnZvbCwKIAlmaWxlbmFtZSA9IHB0cl9zbGFzaDsKICAgICAgIGVsc2UKIAlm aWxlbmFtZSA9ICIvIjsKLSAgICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJmc25hbWUgPSAn JXMnIHNuYXBuYW1lPSclcycgZmlsZW5hbWUgPSAnJXMnXG4iLCAKKyAgICAgIGdydWJfZHBy aW50ZiAoInpmcyIsICJmc25hbWUgPSAnJXMnIHNuYXBuYW1lPSclcycgZmlsZW5hbWUgPSAn JXMnXG4iLAogCQkgICAgZnNuYW1lLCBzbmFwbmFtZSwgZmlsZW5hbWUpOwogICAgIH0KICAg Z3J1Yl9kcHJpbnRmICgiemZzIiwgImFsaXZlXG4iKTsKQEAgLTMzNDEsNyArMzM0MSw3IEBA IGRub2RlX2dldF9mdWxscGF0aCAoY29uc3QgY2hhciAqZnVsbHBhdGgsIHN0cnVjdCBzdWJ2 b2x1bWUgKnN1YnZvbCwKIAogICAgICAgc25hcG9iaiA9IGdydWJfemZzX3RvX2NwdTY0ICgo KGRzbF9kYXRhc2V0X3BoeXNfdCAqKSBETl9CT05VUyAoJnN1YnZvbC0+bWRuLmRuKSktPmRz X3NuYXBuYW1lc196YXBvYmosIHN1YnZvbC0+bWRuLmVuZGlhbik7CiAKLSAgICAgIGVyciA9 IGRub2RlX2dldCAoJihkYXRhLT5tb3MpLCBzbmFwb2JqLCAKKyAgICAgIGVyciA9IGRub2Rl X2dldCAoJihkYXRhLT5tb3MpLCBzbmFwb2JqLAogCQkgICAgICAgRE1VX09UX0RTTF9EU19T TkFQX01BUCwgJnN1YnZvbC0+bWRuLCBkYXRhKTsKICAgICAgIGlmICghZXJyKQogCWVyciA9 IHphcF9sb29rdXAgKCZzdWJ2b2wtPm1kbiwgc25hcG5hbWUsICZoZWFkb2JqLCBkYXRhLCAw KTsKQEAgLTMzNTksMTMgKzMzNTksMTMgQEAgZG5vZGVfZ2V0X2Z1bGxwYXRoIChjb25zdCBj aGFyICpmdWxscGF0aCwgc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLAogICBzdWJ2b2wtPm9i aiA9IGhlYWRvYmo7CiAKICAgbWFrZV9tZG4gKCZzdWJ2b2wtPm1kbiwgZGF0YSk7Ci0gIAor CiAgIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZFxuIiwgc3Vidm9sLT5tZG4u ZW5kaWFuKTsKIAogICBpZiAoKmlzZnMpCiAgICAgewogICAgICAgZ3J1Yl9mcmVlIChmc25h bWUpOwotICAgICAgZ3J1Yl9mcmVlIChzbmFwbmFtZSk7ICAgICAgCisgICAgICBncnViX2Zy ZWUgKHNuYXBuYW1lKTsKICAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOwogICAgIH0KICAg ZXJyID0gZG5vZGVfZ2V0X3BhdGggKHN1YnZvbCwgZmlsZW5hbWUsIGRuLCBkYXRhKTsKQEAg LTMzODUsOSArMzM4NSw5IEBAIG52bGlzdF9maW5kX3ZhbHVlIChjb25zdCBjaGFyICpudmxp c3RfaW4sIGNvbnN0IGNoYXIgKm5hbWUsCiAgIGNoYXIgKm52cF9uYW1lOwogCiAgIC8qIFZl cmlmeSBpZiB0aGUgMXN0IGFuZCAybmQgYnl0ZSBpbiB0aGUgbnZsaXN0IGFyZSB2YWxpZC4g Ki8KLSAgLyogTk9URTogaW5kZXBlbmRlbnRseSBvZiB3aGF0IGVuZGlhbm5lc3MgaGVhZGVy IGFubm91bmNlcyBhbGwgCisgIC8qIE5PVEU6IGluZGVwZW5kZW50bHkgb2Ygd2hhdCBlbmRp YW5uZXNzIGhlYWRlciBhbm5vdW5jZXMgYWxsCiAgICAgIHN1YnNlcXVlbnQgdmFsdWVzIGFy ZSBiaWctZW5kaWFuLiAgKi8KLSAgaWYgKG52bGlzdFswXSAhPSBOVl9FTkNPREVfWERSIHx8 IChudmxpc3RbMV0gIT0gTlZfTElUVExFX0VORElBTiAKKyAgaWYgKG52bGlzdFswXSAhPSBO Vl9FTkNPREVfWERSIHx8IChudmxpc3RbMV0gIT0gTlZfTElUVExFX0VORElBTgogCQkJCSAg ICAgJiYgbnZsaXN0WzFdICE9IE5WX0JJR19FTkRJQU4pKQogICAgIHsKICAgICAgIGdydWJf ZHByaW50ZiAoInpmcyIsICJpbmNvcnJlY3QgbnZsaXN0IGhlYWRlclxuIik7CkBAIC0zNTA0 LDEzICszNTA0LDEzIEBAIGdldF9udmxpc3Rfc2l6ZSAoY29uc3QgY2hhciAqYmVnLCBjb25z dCBjaGFyICpsaW1pdCkKIHsKICAgY29uc3QgY2hhciAqcHRyOwogICBncnViX3VpbnQzMl90 IGVuY29kZV9zaXplOwotICAKKwogICBwdHIgPSBiZWcgKyA4OwogCiAgIHdoaWxlIChwdHIg PCBsaW1pdAogCSAmJiAoZW5jb2RlX3NpemUgPSBncnViX2JlX3RvX2NwdTMyIChncnViX2dl dF91bmFsaWduZWQzMiAocHRyKSkpKQogICAgIHB0ciArPSBlbmNvZGVfc2l6ZTsJLyogZ290 byB0aGUgbmV4dCBudnBhaXIgKi8KLSAgcHRyICs9IDg7ICAgICAgCisgIHB0ciArPSA4Owog ICByZXR1cm4gKHB0ciA+IGxpbWl0KSA/IC0xIDogKHB0ciAtIGJlZyk7CiB9CiAKQEAgLTM2 NDYsOCArMzY0Niw4IEBAIHpmc19tb3VudCAoZ3J1Yl9kZXZpY2VfdCBkZXYpCiAgICAgfQog CiAgIHViID0gJihkYXRhLT5jdXJyZW50X3ViZXJibG9jayk7Ci0gIHViX2VuZGlhbiA9IChn cnViX3pmc190b19jcHU2NCAodWItPnViX21hZ2ljLCAKLQkJCQkgIEdSVUJfWkZTX0xJVFRM RV9FTkRJQU4pID09IFVCRVJCTE9DS19NQUdJQyAKKyAgdWJfZW5kaWFuID0gKGdydWJfemZz X3RvX2NwdTY0ICh1Yi0+dWJfbWFnaWMsCisJCQkJICBHUlVCX1pGU19MSVRUTEVfRU5ESUFO KSA9PSBVQkVSQkxPQ0tfTUFHSUMKIAkgICAgICAgPyBHUlVCX1pGU19MSVRUTEVfRU5ESUFO IDogR1JVQl9aRlNfQklHX0VORElBTik7CiAKICAgZXJyID0gemlvX3JlYWQgKCZ1Yi0+dWJf cm9vdGJwLCB1Yl9lbmRpYW4sCkBAIC0zNzAwLDcgKzM3MDAsNyBAQCBncnViX3pmc19mZXRj aF9udmxpc3QgKGdydWJfZGV2aWNlX3QgZGV2LCBjaGFyICoqbnZsaXN0KQogICByZXR1cm4g ZXJyOwogfQogCi1zdGF0aWMgZ3J1Yl9lcnJfdCAKK3N0YXRpYyBncnViX2Vycl90CiB6ZnNf bGFiZWwgKGdydWJfZGV2aWNlX3QgZGV2aWNlLCBjaGFyICoqbGFiZWwpCiB7CiAgIGNoYXIg Km52bGlzdDsKQEAgLTM3MTIsNyArMzcxMiw3IEBAIHpmc19sYWJlbCAoZ3J1Yl9kZXZpY2Vf dCBkZXZpY2UsIGNoYXIgKipsYWJlbCkKICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKIAogICBl cnIgPSB6ZnNfZmV0Y2hfbnZsaXN0IChkYXRhLT5kZXZpY2Vfb3JpZ2luYWwsICZudmxpc3Qp OwotICBpZiAoZXJyKSAgICAgIAorICBpZiAoZXJyKQogICAgIHsKICAgICAgIHpmc191bm1v dW50IChkYXRhKTsKICAgICAgIHJldHVybiBlcnI7CkBAIC0zNzI0LDcgKzM3MjQsNyBAQCB6 ZnNfbGFiZWwgKGdydWJfZGV2aWNlX3QgZGV2aWNlLCBjaGFyICoqbGFiZWwpCiAgIHJldHVy biBncnViX2Vycm5vOwogfQogCi1zdGF0aWMgZ3J1Yl9lcnJfdCAKK3N0YXRpYyBncnViX2Vy cl90CiB6ZnNfdXVpZCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXIgKip1dWlkKQogewog ICBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YTsKQEAgLTM3NDIsNyArMzc0Miw3IEBAIHpm c191dWlkIChncnViX2RldmljZV90IGRldmljZSwgY2hhciAqKnV1aWQpCiAgIHJldHVybiBH UlVCX0VSUl9OT05FOwogfQogCi1zdGF0aWMgZ3J1Yl9lcnJfdCAKK3N0YXRpYyBncnViX2Vy cl90CiB6ZnNfbXRpbWUgKGdydWJfZGV2aWNlX3QgZGV2aWNlLCBncnViX2ludDMyX3QgKm10 KQogewogICBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YTsKQEAgLTM3NTYsOCArMzc1Niw4 IEBAIHpmc19tdGltZSAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGdydWJfaW50MzJfdCAqbXQp CiAgICAgcmV0dXJuIGdydWJfZXJybm87CiAKICAgdWIgPSAmKGRhdGEtPmN1cnJlbnRfdWJl cmJsb2NrKTsKLSAgdWJfZW5kaWFuID0gKGdydWJfemZzX3RvX2NwdTY0ICh1Yi0+dWJfbWFn aWMsIAotCQkJCSAgR1JVQl9aRlNfTElUVExFX0VORElBTikgPT0gVUJFUkJMT0NLX01BR0lD IAorICB1Yl9lbmRpYW4gPSAoZ3J1Yl96ZnNfdG9fY3B1NjQgKHViLT51Yl9tYWdpYywKKwkJ CQkgIEdSVUJfWkZTX0xJVFRMRV9FTkRJQU4pID09IFVCRVJCTE9DS19NQUdJQwogCSAgICAg ICA/IEdSVUJfWkZTX0xJVFRMRV9FTkRJQU4gOiBHUlVCX1pGU19CSUdfRU5ESUFOKTsKIAog ICAqbXQgPSBncnViX3pmc190b19jcHU2NCAodWItPnViX3RpbWVzdGFtcCwgdWJfZW5kaWFu KTsKQEAgLTM3OTUsNyArMzc5NSw3IEBAIGdydWJfemZzX29wZW4gKHN0cnVjdCBncnViX2Zp bGUgKmZpbGUsIGNvbnN0IGNoYXIgKmZzZmlsZW5hbWUpCiAgICAgfQogCiAgIC8qIFdlIGZv dW5kIHRoZSBkbm9kZSBmb3IgdGhpcyBmaWxlLiBWZXJpZnkgaWYgaXQgaXMgYSBwbGFpbiBm aWxlLiAqLwotICBpZiAoZGF0YS0+ZG5vZGUuZG4uZG5fdHlwZSAhPSBETVVfT1RfUExBSU5f RklMRV9DT05URU5UUykgCisgIGlmIChkYXRhLT5kbm9kZS5kbi5kbl90eXBlICE9IERNVV9P VF9QTEFJTl9GSUxFX0NPTlRFTlRTKQogICAgIHsKICAgICAgIHpmc191bm1vdW50IChkYXRh KTsKICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRV9UWVBFLCBO Xygibm90IGEgcmVndWxhciBmaWxlIikpOwpAQCAtMzg3MCw3ICszODcwLDcgQEAgZ3J1Yl96 ZnNfcmVhZCAoZ3J1Yl9maWxlX3QgZmlsZSwgY2hhciAqYnVmLCBncnViX3NpemVfdCBsZW4p CiAgICAgICByZXR1cm4gbGVuOwogICAgIH0KIAotICBibGtzeiA9IGdydWJfemZzX3RvX2Nw dTE2IChkYXRhLT5kbm9kZS5kbi5kbl9kYXRhYmxrc3pzZWMsIAorICBibGtzeiA9IGdydWJf emZzX3RvX2NwdTE2IChkYXRhLT5kbm9kZS5kbi5kbl9kYXRhYmxrc3pzZWMsCiAJCQkgICAg IGRhdGEtPmRub2RlLmVuZGlhbikgPDwgU1BBX01JTkJMT0NLU0hJRlQ7CiAKICAgaWYgKGJs a3N6ID09IDApCkBAIC0zOTU3LDUzICszOTU3LDUzIEBAIGdydWJfemZzX2dldG1kbm9iaiAo Z3J1Yl9kZXZpY2VfdCBkZXYsIGNvbnN0IGNoYXIgKmZzZmlsZW5hbWUsCiAKIHN0YXRpYyBn cnViX2Vycl90CiBmaWxsX2ZzX2luZm8gKHN0cnVjdCBncnViX2Rpcmhvb2tfaW5mbyAqaW5m bywKLQkgICAgICBkbm9kZV9lbmRfdCBtZG4sIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRh KQorCSAgICAgIGRub2RlX2VuZF90ICptZG4sIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRh KQogewogICBncnViX2Vycl90IGVycjsKICAgZG5vZGVfZW5kX3QgZG47CiAgIGdydWJfdWlu dDY0X3Qgb2JqbnVtOwogICBncnViX3VpbnQ2NF90IGhlYWRvYmo7Ci0gIAorCiAgIGdydWJf bWVtc2V0IChpbmZvLCAwLCBzaXplb2YgKCppbmZvKSk7Ci0gICAgCisKICAgaW5mby0+ZGly ID0gMTsKLSAgCi0gIGlmIChtZG4uZG4uZG5fdHlwZSA9PSBETVVfT1RfRFNMX0RJUikKKwor ICBpZiAobWRuLT5kbi5kbl90eXBlID09IERNVV9PVF9EU0xfRElSKQogICAgIHsKLSAgICAg IGhlYWRvYmogPSBncnViX3pmc190b19jcHU2NCAoKChkc2xfZGlyX3BoeXNfdCAqKSBETl9C T05VUyAoJm1kbi5kbikpLT5kZF9oZWFkX2RhdGFzZXRfb2JqLCBtZG4uZW5kaWFuKTsKKyAg ICAgIGhlYWRvYmogPSBncnViX3pmc190b19jcHU2NCAoKChkc2xfZGlyX3BoeXNfdCAqKSBE Tl9CT05VUyAoJm1kbi0+ZG4pKS0+ZGRfaGVhZF9kYXRhc2V0X29iaiwgbWRuLT5lbmRpYW4p OwogCi0gICAgICBlcnIgPSBkbm9kZV9nZXQgKCYoZGF0YS0+bW9zKSwgaGVhZG9iaiwgMCwg Jm1kbiwgZGF0YSk7CisgICAgICBlcnIgPSBkbm9kZV9nZXQgKCYoZGF0YS0+bW9zKSwgaGVh ZG9iaiwgMCwgbWRuLCBkYXRhKTsKICAgICAgIGlmIChlcnIpCiAJewogCSAgZ3J1Yl9kcHJp bnRmICgiemZzIiwgImZhaWxlZCBoZXJlXG4iKTsKIAkgIHJldHVybiBlcnI7CiAJfQogICAg IH0KLSAgZXJyID0gbWFrZV9tZG4gKCZtZG4sIGRhdGEpOworICBlcnIgPSBtYWtlX21kbiAo bWRuLCBkYXRhKTsKICAgaWYgKGVycikKICAgICByZXR1cm4gZXJyOwotICBlcnIgPSBkbm9k ZV9nZXQgKCZtZG4sIE1BU1RFUl9OT0RFX09CSiwgRE1VX09UX01BU1RFUl9OT0RFLCAKKyAg ZXJyID0gZG5vZGVfZ2V0IChtZG4sIE1BU1RFUl9OT0RFX09CSiwgRE1VX09UX01BU1RFUl9O T0RFLAogCQkgICAmZG4sIGRhdGEpOwogICBpZiAoZXJyKQogICAgIHsKICAgICAgIGdydWJf ZHByaW50ZiAoInpmcyIsICJmYWlsZWQgaGVyZVxuIik7CiAgICAgICByZXR1cm4gZXJyOwog ICAgIH0KLSAgCisKICAgZXJyID0gemFwX2xvb2t1cCAoJmRuLCBaRlNfUk9PVF9PQkosICZv YmpudW0sIGRhdGEsIDApOwogICBpZiAoZXJyKQogICAgIHsKICAgICAgIGdydWJfZHByaW50 ZiAoInpmcyIsICJmYWlsZWQgaGVyZVxuIik7CiAgICAgICByZXR1cm4gZXJyOwogICAgIH0K LSAgCi0gIGVyciA9IGRub2RlX2dldCAoJm1kbiwgb2JqbnVtLCAwLCAmZG4sIGRhdGEpOwor CisgIGVyciA9IGRub2RlX2dldCAobWRuLCBvYmpudW0sIDAsICZkbiwgZGF0YSk7CiAgIGlm IChlcnIpCiAgICAgewogICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgImZhaWxlZCBoZXJl XG4iKTsKICAgICAgIHJldHVybiBlcnI7CiAgICAgfQotICAKKwogICBpZiAoZG4uZG4uZG5f Ym9udXN0eXBlID09IERNVV9PVF9TQSkKICAgICB7CiAgICAgICB2b2lkICpzYWhkcnA7CkBA IC00MDg5LDE1ICs0MDg5LDE1IEBAIGl0ZXJhdGVfemFwIChjb25zdCBjaGFyICpuYW1lLCBn cnViX3VpbnQ2NF90IHZhbCwgc3RydWN0IGdydWJfemZzX2Rpcl9jdHggKmN0eCkKICAgICAg IGluZm8ubXRpbWUgPSBncnViX3pmc190b19jcHU2NCAoZ3J1Yl9nZXRfdW5hbGlnbmVkNjQg KChjaGFyICopIHNhaGRycCArIGhkcnNpemUgKyBTQV9NVElNRV9PRkZTRVQpLCBkbi5lbmRp YW4pOwogICAgICAgaW5mby5jYXNlX2luc2Vuc2l0aXZlID0gY3R4LT5kYXRhLT5zdWJ2b2wu Y2FzZV9pbnNlbnNpdGl2ZTsKICAgICB9Ci0gIAorCiAgIGlmIChkbi5kbi5kbl9ib251c3R5 cGUgPT0gRE1VX09UX1pOT0RFKQotICAgIHsJCisgICAgewogICAgICAgaW5mby5tdGltZXNl dCA9IDE7CiAgICAgICBpbmZvLm10aW1lID0gZ3J1Yl96ZnNfdG9fY3B1NjQgKCgoem5vZGVf cGh5c190ICopIEROX0JPTlVTICgmZG4uZG4pKS0+enBfbXRpbWVbMF0sCiAJCQkJICAgICAg ZG4uZW5kaWFuKTsKICAgICB9CiAgIGluZm8uZGlyID0gKGRuLmRuLmRuX3R5cGUgPT0gRE1V X09UX0RJUkVDVE9SWV9DT05URU5UUyk7Ci0gIGdydWJfZHByaW50ZiAoInpmcyIsICJ0eXBl PSVkLCBuYW1lPSVzXG4iLCAKKyAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInR5cGU9JWQsIG5h bWU9JXNcbiIsCiAJCShpbnQpZG4uZG4uZG5fdHlwZSwgKGNoYXIgKiluYW1lKTsKICAgcmV0 dXJuIGN0eC0+aG9vayAobmFtZSwgJmluZm8sIGN0eC0+aG9va19kYXRhKTsKIH0KQEAgLTQx MjAsNyArNDEyMCw3IEBAIGl0ZXJhdGVfemFwX2ZzIChjb25zdCBjaGFyICpuYW1lLCBncnVi X3VpbnQ2NF90IHZhbCwKICAgaWYgKG1kbi5kbi5kbl90eXBlICE9IERNVV9PVF9EU0xfRElS KQogICAgIHJldHVybiAwOwogCi0gIGVyciA9IGZpbGxfZnNfaW5mbyAoJmluZm8sIG1kbiwg Y3R4LT5kYXRhKTsKKyAgZXJyID0gZmlsbF9mc19pbmZvICgmaW5mbywgJm1kbiwgY3R4LT5k YXRhKTsKICAgaWYgKGVycikKICAgICB7CiAgICAgICBncnViX2Vycm5vID0gMDsKQEAgLTQx NTEsNyArNDE1MSw3IEBAIGl0ZXJhdGVfemFwX3NuYXAgKGNvbnN0IGNoYXIgKm5hbWUsIGdy dWJfdWludDY0X3QgdmFsLAogICBpZiAobWRuLmRuLmRuX3R5cGUgIT0gRE1VX09UX0RTTF9E QVRBU0VUKQogICAgIHJldHVybiAwOwogCi0gIGVyciA9IGZpbGxfZnNfaW5mbyAoJmluZm8s IG1kbiwgY3R4LT5kYXRhKTsKKyAgZXJyID0gZmlsbF9mc19pbmZvICgmaW5mbywgJm1kbiwg Y3R4LT5kYXRhKTsKICAgaWYgKGVycikKICAgICB7CiAgICAgICBncnViX2Vycm5vID0gMDsK QEAgLTQxOTEsMTIgKzQxOTEsMTIgQEAgZ3J1Yl96ZnNfZGlyIChncnViX2RldmljZV90IGRl dmljZSwgY29uc3QgY2hhciAqcGF0aCwKIAogICBpZiAoaXNmcykKICAgICB7Ci0gICAgICBn cnViX3VpbnQ2NF90IGNoaWxkb2JqLCBoZWFkb2JqOyAKKyAgICAgIGdydWJfdWludDY0X3Qg Y2hpbGRvYmosIGhlYWRvYmo7CiAgICAgICBncnViX3VpbnQ2NF90IHNuYXBvYmo7CiAgICAg ICBkbm9kZV9lbmRfdCBkbjsKICAgICAgIHN0cnVjdCBncnViX2Rpcmhvb2tfaW5mbyBpbmZv OwogCi0gICAgICBlcnIgPSBmaWxsX2ZzX2luZm8gKCZpbmZvLCBkYXRhLT5kbm9kZSwgZGF0 YSk7CisgICAgICBlcnIgPSBmaWxsX2ZzX2luZm8gKCZpbmZvLCAmZGF0YS0+ZG5vZGUsIGRh dGEpOwogICAgICAgaWYgKGVycikKIAl7CiAJICB6ZnNfdW5tb3VudCAoZGF0YSk7CkBAIC00 MjE5LDcgKzQyMTksNyBAQCBncnViX3pmc19kaXIgKGdydWJfZGV2aWNlX3QgZGV2aWNlLCBj b25zdCBjaGFyICpwYXRoLAogCX0KIAogICAgICAgemFwX2l0ZXJhdGVfdTY0ICgmZG4sIGl0 ZXJhdGVfemFwX2ZzLCBkYXRhLCAmY3R4KTsKLSAgICAgIAorCiAgICAgICBlcnIgPSBkbm9k ZV9nZXQgKCYoZGF0YS0+bW9zKSwgaGVhZG9iaiwgRE1VX09UX0RTTF9EQVRBU0VULCAmZG4s IGRhdGEpOwogICAgICAgaWYgKGVycikKIAl7CkBAIC00MjYxLDggKzQyNjEsOCBAQCBjaGVj a19mZWF0dXJlIChjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IHZhbCwKICAgICBy ZXR1cm4gMDsKICAgaWYgKG5hbWVbMF0gPT0gMCkKICAgICByZXR1cm4gMDsKLSAgZm9yIChp ID0gMDsgc3BhX2ZlYXR1cmVfbmFtZXNbaV0gIT0gTlVMTDsgaSsrKSAKLSAgICBpZiAoZ3J1 Yl9zdHJjbXAgKG5hbWUsIHNwYV9mZWF0dXJlX25hbWVzW2ldKSA9PSAwKSAKKyAgZm9yIChp ID0gMDsgc3BhX2ZlYXR1cmVfbmFtZXNbaV0gIT0gTlVMTDsgaSsrKQorICAgIGlmIChncnVi X3N0cmNtcCAobmFtZSwgc3BhX2ZlYXR1cmVfbmFtZXNbaV0pID09IDApCiAgICAgICByZXR1 cm4gMDsKICAgcmV0dXJuIDE7CiB9CkBAIC00Mjc1LDcgKzQyNzUsNyBAQCBjaGVja19mZWF0 dXJlIChjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IHZhbCwKICAqCTA6IFN1Y2Nl c3MuCiAgKgllcnJudW06IEZhaWx1cmUuCiAgKi8KLQkgICAgCSAgIAorCiBzdGF0aWMgZ3J1 Yl9lcnJfdAogY2hlY2tfbW9zX2ZlYXR1cmVzKGRub2RlX3BoeXNfdCAqbW9zbWRuX3BoeXMs Z3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLHN0cnVjdCBncnViX3pmc19kYXRhKiBkYXRhICkK IHsKQEAgLTQzMDAsNyArNDMwMCw3IEBAIGNoZWNrX21vc19mZWF0dXJlcyhkbm9kZV9waHlz X3QgKm1vc21kbl9waHlzLGdydWJfemZzX2VuZGlhbl90IGVuZGlhbixzdHJ1Y3QgZ3J1CiAg IGVycm51bSA9IHphcF9sb29rdXAoJmRuLCBETVVfUE9PTF9GRUFUVVJFU19GT1JfUkVBRCwg Jm9iam51bSwgZGF0YSwwKTsKICAgaWYgKGVycm51bSAhPSAwKQogICAgIHJldHVybiBlcnJu dW07Ci0gIAorCiAgIGVycm51bSA9IGRub2RlX2dldCgmbW9zbWRuLCBvYmpudW0sIERNVV9P VE5fWkFQX01FVEFEQVRBLCAmZG4sIGRhdGEpOwogICBpZiAoZXJybnVtICE9IDApCiAgICAg cmV0dXJuIGVycm51bTsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9pby9nemlvLmMgYi9ncnVi LWNvcmUvaW8vZ3ppby5jCmluZGV4IDBmMmVhNmIuLjIzMjQwOGUgMTAwNjQ0Ci0tLSBhL2dy dWItY29yZS9pby9nemlvLmMKKysrIGIvZ3J1Yi1jb3JlL2lvL2d6aW8uYwpAQCAtNTYyLDcg KzU2Miw3IEBAIGh1ZnRfYnVpbGQgKHVuc2lnbmVkICpiLAkvKiBjb2RlIGxlbmd0aHMgaW4g Yml0cyAoYWxsIGFzc3VtZWQgPD0gQk1BWCkgKi8KIAkJICByLmUgPSAodWNoKSAoMTYgKyBq KTsJCS8qIGJpdHMgaW4gdGhpcyB0YWJsZSAqLwogCQkgIHIudi50ID0gcTsJLyogcG9pbnRl ciB0byB0aGlzIHRhYmxlICovCiAJCSAgaiA9IGkgPj4gKHcgLSBsKTsJLyogKGdldCBhcm91 bmQgVHVyYm8gQyBidWcpICovCi0JCSAgdVtoIC0gMV1bal0gPSByOwkvKiBjb25uZWN0IHRv IGxhc3QgdGFibGUgKi8KKwkJICBncnViX21lbWNweSAoJnVbaCAtIDFdW2pdLCAmciwgc2l6 ZW9mIChyKSk7CS8qIGNvbm5lY3QgdG8gbGFzdCB0YWJsZSAqLwogCQl9CiAJICAgIH0KIApA QCAtNTg1LDcgKzU4NSw3IEBAIGh1ZnRfYnVpbGQgKHVuc2lnbmVkICpiLAkvKiBjb2RlIGxl bmd0aHMgaW4gYml0cyAoYWxsIGFzc3VtZWQgPD0gQk1BWCkgKi8KIAkgIC8qIGZpbGwgY29k ZS1saWtlIGVudHJpZXMgd2l0aCByICovCiAJICBmID0gMSA8PCAoayAtIHcpOwogCSAgZm9y IChqID0gaSA+PiB3OyBqIDwgejsgaiArPSBmKQotCSAgICBxW2pdID0gcjsKKwkgICAgZ3J1 Yl9tZW1jcHkgKCZxW2pdLCAmciwgc2l6ZW9mIChyKSk7CiAKIAkgIC8qIGJhY2t3YXJkcyBp bmNyZW1lbnQgdGhlIGstYml0IGNvZGUgaSAqLwogCSAgZm9yIChqID0gMSA8PCAoayAtIDEp OyBpICYgajsgaiA+Pj0gMSkKQEAgLTExNzgsNyArMTE3OCw3IEBAIHN0YXRpYyBpbnQKIHRl c3RfemxpYl9oZWFkZXIgKGdydWJfZ3ppb190IGd6aW8pCiB7CiAgIGdydWJfdWludDhfdCBj bWYsIGZsZzsKLSAgCisKICAgY21mID0gZ2V0X2J5dGUgKGd6aW8pOwogICBmbGcgPSBnZXRf Ynl0ZSAoZ3ppbyk7CiAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIGdydWJfZGVmbGF0ZV9kZWNv bXByZXNzIChjaGFyICppbmJ1ZiwgZ3J1Yl9zaXplX3QgaW5zaXplLCBncnViX29mZl90IG9m ZiwKICAgcmV0dXJuIHJldDsKIH0KIAotDAorCiAKIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl9mcyBn cnViX2d6aW9fZnMgPQogICB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvbWlzYy5oIGIv aW5jbHVkZS9ncnViL21pc2MuaAppbmRleCAyYTlmODdjLi5mZGNlNTkyIDEwMDY0NAotLS0g YS9pbmNsdWRlL2dydWIvbWlzYy5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9taXNjLmgKQEAgLTMx NCw3ICszMTQsNyBAQCBleHRlcm4gdm9pZCAoKkVYUE9SVF9WQVIgKGdydWJfeHB1dHMpKSAo Y29uc3QgY2hhciAqc3RyKTsKIHN0YXRpYyBpbmxpbmUgaW50CiBncnViX3B1dHMgKGNvbnN0 IGNoYXIgKnMpCiB7Ci0gIGNvbnN0IGNoYXIgbmxbMl0gPSAiXG4iOworICBjb25zdCBjaGFy ICpubCA9ICJcbiI7CiAgIGdydWJfeHB1dHMgKHMpOwogICBncnViX3hwdXRzIChubCk7CiAK LS0gCjEuOS41Lm1zeXNnaXQuMQoK --------------060303070606030001090407--