From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Vn0BO-0000zs-KD for mharc-grub-devel@gnu.org; Sun, 01 Dec 2013 01:07:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33754) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vn0BE-0000yp-HH for grub-devel@gnu.org; Sun, 01 Dec 2013 01:07:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vn0B3-00084r-PH for grub-devel@gnu.org; Sun, 01 Dec 2013 01:06:56 -0500 Received: from mail-ea0-x233.google.com ([2a00:1450:4013:c01::233]:40224) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vn0B3-00084n-Ag for grub-devel@gnu.org; Sun, 01 Dec 2013 01:06:45 -0500 Received: by mail-ea0-f179.google.com with SMTP id r15so8016814ead.10 for ; Sat, 30 Nov 2013 22:06:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; bh=C72zxQPtieCb1dFdZW4TEh6tpIBiR6weKZ3d+kBKpc8=; b=C3RnrNPniWpDsjK2sQ7Sfb6ydDbjBdcQEJtmSMg1W34gx5wOM1gwecNjoAQ7j41/Nr aMK1FiqEY1qXCICdRUrg+uIKRVb6Z/rF0eu0xDfvvCFDK1F06YUhaPjUctgPLYsRUQQA oFqigRay7ZmD2stcqjy89wo+fkMiqJtHKjz0GJY12917raUOrlZVVhP7H79il4vyQHpb YbQEmPxpkCmTnm1f4y3rtGilRuXPCBheSSBCy6TO4Fok56HpGhKzaKFVpTD67DVcDp2H fH1ymN93xWWTgwZhvAvGap5UA4iwjTA2RB5w3JvM2tB1k8zR9ajVPliqxpaePnVAPORb KTDw== X-Received: by 10.14.95.130 with SMTP id p2mr45372eef.47.1385878004505; Sat, 30 Nov 2013 22:06:44 -0800 (PST) Received: from [192.168.42.154] (225-225.197-178.cust.bluewin.ch. [178.197.225.225]) by mx.google.com with ESMTPSA id a51sm57640947eeh.8.2013.11.30.22.06.34 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 30 Nov 2013 22:06:43 -0800 (PST) Message-ID: <529AD1E8.8010305@gmail.com> Date: Sun, 01 Dec 2013 07:06:32 +0100 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 MIME-Version: 1.0 To: The development of GRUB 2 Subject: [PATCH, RFC, RFT] ARM relocation fixes X-Enigmail-Version: 1.5.1 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="----enig2SAKRKEHXHBRQCMNEQPGA" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4013:c01::233 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Dec 2013 06:07:05 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2SAKRKEHXHBRQCMNEQPGA Content-Type: multipart/mixed; boundary="------------020102040700060300080209" This is a multi-part message in MIME format. --------------020102040700060300080209 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Current ARM relocation doesn't handle the cases when the relocation cant be satisfied directly (like thumb call over 1M of distance or jump24 to thumb mode. Attached patch adds missing tampoline and missing relocation handling to EFI code (it didn't allow to use ARM (no-Thumb) binary with EFI). I couldn't test it on either arm-efi or ARM64 --------------020102040700060300080209 Content-Type: application/x-patch; name="arm.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="arm.diff" ZGlmZiAtLWdpdCBhL2NvbmYvTWFrZWZpbGUuY29tbW9uIGIvY29uZi9NYWtlZmlsZS5jb21t b24KaW5kZXggOGE3MWYxMy4uMTUyODQ3YyAxMDA2NDQKLS0tIGEvY29uZi9NYWtlZmlsZS5j b21tb24KKysrIGIvY29uZi9NYWtlZmlsZS5jb21tb24KQEAgLTExLDcgKzExLDcgQEAgaWYg Q09ORF9zcGFyYzY0X2llZWUxMjc1CiAgIExERkxBR1NfUExBVEZPUk0gPSAtV2wsLW1lbGY2 NF9zcGFyYyAtbW5vLXJlbGF4CiBlbmRpZgogaWYgQ09ORF9hcm0KLSAgQ0ZMQUdTX1BMQVRG T1JNICs9IC1tdGh1bWItaW50ZXJ3b3JrIC1tbG9uZy1jYWxscworICBDRkxBR1NfUExBVEZP Uk0gKz0gLW10aHVtYi1pbnRlcndvcmsKICAgQ0NBU0ZMQUdTX1BMQVRGT1JNID0gLW10aHVt Yi1pbnRlcndvcmsKICAgTERGTEFHU19QTEFURk9STSA9IC1XbCwtLXdyYXA9X19jbGVhcl9j YWNoZQogZW5kaWYKZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2FybS9kbC5jIGIvZ3J1 Yi1jb3JlL2tlcm4vYXJtL2RsLmMKaW5kZXggNDU2M2E1Mi4uNjAzYmZhNCAxMDA2NDQKLS0t IGEvZ3J1Yi1jb3JlL2tlcm4vYXJtL2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtL2Rs LmMKQEAgLTI1LDExICsyNSw5MCBAQAogI2luY2x1ZGUgPGdydWIvaTE4bi5oPgogI2luY2x1 ZGUgPGdydWIvYXJtL3JlbG9jLmg+CiAKK3N0cnVjdCB0cmFtcG9saW5lX2FybQoreworI2Rl ZmluZSBBUk1fTE9BRF9JUCAweGU1OWZjMDAwCisjZGVmaW5lIEFSTV9CWCAweGUxMmZmZjFj CisjZGVmaW5lIEFSTV9NT1ZfUEMgMHhlMWEwZjAwYworICBncnViX3VpbnQzMl90IGxvYWRf aXA7ICAvKiBsZHIgaXAsIFtwY10gKi8KKyAgZ3J1Yl91aW50MzJfdCBieDsgLyogYnggaXAg b3IgbW92IHBjLCBpcCovCisgIGdydWJfdWludDMyX3QgYWRkcjsKK307CisKK3N0YXRpYyBn cnViX3VpbnQxNl90IHRodW1iX3RlbXBsYXRlWzhdID0KKyAgeworICAgIDB4NDY4YywgLyog bW92CWlwLCByMSAqLworICAgIDB4NDkwMywgLyogbGRyCXIxLCBbcGMsICMxMl0JOyAoMTAg PC50ZXh0KzB4MTA+KSAqLworICAgIC8qIEV4Y2hhbmdlIFIxIGFuZCBJUCBpbiBsaW1pdGVk IFRodW1iIGluc3RydWN0aW9uIHNldC4KKyAgICAgICBJUCBnZXRzIG5lZ2F0ZWQgYnV0IHdl IGNvbXBlbnNhdGUgaXQgYnkgQyBjb2RlLiAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBSMSAgIElQICovCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogLUEgICBSMSAqLworICAgIDB4NDQ2MSwgLyogYWRkCXIxLCBpcCAq LyAgICAvKiBSMS1BIFIxICovCisgICAgMHg0MjQ5LCAvKiBuZWdzCXIxLCByMSAqLyAgICAv KiBBLVIxIFIxICovCisgICAgMHg0NDhjLCAvKiBhZGQJaXAsIHIxICovICAgIC8qIEEtUjEg QSAgKi8KKyAgICAweDQyNDksIC8qIG5lZ3MJcjEsIHIxICovICAgIC8qIFIxLUEgQSAgKi8K KyAgICAweDQ0NjEsIC8qIGFkZAlyMSwgaXAgKi8gICAgLyogUjEgICBBICAqLworICAgIDB4 NDc2MCAgLyogYngJaXAgKi8KKyAgfTsKKworc3RydWN0IHRyYW1wb2xpbmVfdGh1bWIKK3sK KyAgZ3J1Yl91aW50MTZfdCB0ZW1wbGF0ZVs4XTsKKyAgZ3J1Yl91aW50MzJfdCBuZWdfYWRk cjsKK307CisKKworZ3J1Yl9lcnJfdAorZ3J1Yl9hcmNoX2RsX2dldF90cmFtcF9nb3Rfc2l6 ZSAoY29uc3Qgdm9pZCAqZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAorCQkJCSBncnViX3Np emVfdCAqZ290KQoreworICBjb25zdCBFbGZfRWhkciAqZSA9IGVoZHI7CisgIGNvbnN0IEVs Zl9TaGRyICpzOworICB1bnNpZ25lZCBpOworCisgICp0cmFtcCA9IDA7CisgICpnb3QgPSAw OworCisgIGZvciAoaSA9IDAsIHMgPSAoY29uc3QgRWxmX1NoZHIgKikgKChncnViX2FkZHJf dCkgZSArIGUtPmVfc2hvZmYpOworICAgICAgIGkgPCBlLT5lX3NobnVtOworICAgICAgIGkr KywgcyA9IChjb25zdCBFbGZfU2hkciAqKSAoKGdydWJfYWRkcl90KSBzICsgZS0+ZV9zaGVu dHNpemUpKQorICAgIGlmIChzLT5zaF90eXBlID09IFNIVF9SRUwpCisgICAgICB7CisJY29u c3QgRWxmX1JlbCAqcmVsLCAqbWF4OworCisJZm9yIChyZWwgPSAoY29uc3QgRWxmX1JlbCAq KSAoKGdydWJfYWRkcl90KSBlICsgcy0+c2hfb2Zmc2V0KSwKKwkgICAgICAgbWF4ID0gcmVs ICsgcy0+c2hfc2l6ZSAvIHMtPnNoX2VudHNpemU7CisJICAgICByZWwgPCBtYXg7CisJICAg ICByZWwrKykKKwkgIHN3aXRjaCAoRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pKQorCSAgICB7 CisJICAgIGNhc2UgUl9BUk1fQ0FMTDoKKwkgICAgY2FzZSBSX0FSTV9KVU1QMjQ6CisJICAg ICAgeworCQkqdHJhbXAgKz0gc2l6ZW9mIChzdHJ1Y3QgdHJhbXBvbGluZV9hcm0pOworCQli cmVhazsKKwkgICAgICB9CisJICAgIGNhc2UgUl9BUk1fVEhNX0NBTEw6CisJICAgIGNhc2Ug Ul9BUk1fVEhNX0pVTVAyNDoKKwkgICAgY2FzZSBSX0FSTV9USE1fSlVNUDE5OgorCSAgICAg IHsKKwkJKnRyYW1wICs9IHNpemVvZiAoc3RydWN0IHRyYW1wb2xpbmVfdGh1bWIpOworCQli cmVhazsKKwkgICAgICB9CisJICAgIH0KKyAgICAgIH0KKworICBncnViX2RwcmludGYgKCJk bCIsICJ0cmFtcG9saW5lIHNpemUgJXhcbiIsICp0cmFtcCk7CisKKyAgcmV0dXJuIEdSVUJf RVJSX05PTkU7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAgKiBSdW50aW1lIGR5bmFtaWMgbGlua2VyIHdpdGggaGVscGVyIGZ1 bmN0aW9ucy4gKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotZG9fcmVsb2NhdGlvbnMgKEVsZl9TaGRy ICogcmVsaGRyLCBFbGZfRWhkciAqIGUsIGdydWJfZGxfdCBtb2QpCitkb19yZWxvY2F0aW9u cyAoRWxmX1NoZHIgKiByZWxoZHIsIEVsZl9FaGRyICogZSwgZ3J1Yl9kbF90IG1vZCwKKwkJ Z3J1Yl91aW50MzJfdCAqKnRwdHIpCiB7CiAgIGdydWJfZGxfc2VnbWVudF90IHNlZzsKICAg RWxmX1JlbCAqcmVsOwpAQCAtNzYsMTYgKzE1NSw1OCBAQCBkb19yZWxvY2F0aW9ucyAoRWxm X1NoZHIgKiByZWxoZHIsIEVsZl9FaGRyICogZSwgZ3J1Yl9kbF90IG1vZCkKIAljYXNlIFJf QVJNX0NBTEw6CiAJY2FzZSBSX0FSTV9KVU1QMjQ6CiAJICB7Ci0JICAgIHJldHZhbCA9IGdy dWJfYXJtX3JlbG9jX2p1bXAyNCAodGFyZ2V0LCBzeW1fYWRkcik7Ci0JICAgIGlmIChyZXR2 YWwgIT0gR1JVQl9FUlJfTk9ORSkKLQkgICAgICByZXR1cm4gcmV0dmFsOworCSAgICBncnVi X2ludDMyX3Qgb2Zmc2V0OworCisJICAgIHN5bV9hZGRyICs9IGdydWJfYXJtX2p1bXAyNF9n ZXRfb2Zmc2V0ICh0YXJnZXQpOworCSAgICBvZmZzZXQgPSBzeW1fYWRkciAtIChncnViX3Vp bnQzMl90KSB0YXJnZXQ7CisKKwkgICAgaWYgKChzeW1fYWRkciAmIDEpIHx8ICFncnViX2Fy bV9qdW1wMjRfY2hlY2tfb2Zmc2V0IChvZmZzZXQpKQorCSAgICAgIHsKKwkJc3RydWN0IHRy YW1wb2xpbmVfYXJtICp0cCA9IChzdHJ1Y3QgdHJhbXBvbGluZV9hcm0gKikgKnRwdHI7CisJ CSp0cHRyICs9IHNpemVvZiAoc3RydWN0IHRyYW1wb2xpbmVfYXJtKSAvIHNpemVvZiAoKip0 cHRyKTsKKwkJdHAtPmxvYWRfaXAgPSBBUk1fTE9BRF9JUDsKKwkJdHAtPmJ4ID0gKHN5bV9h ZGRyICYgMSkgPyBBUk1fQlggOiBBUk1fTU9WX1BDOworCQl0cC0+YWRkciA9IHN5bV9hZGRy ICsgODsKKwkJb2Zmc2V0ID0gKGdydWJfdWludDhfdCAqKSB0cCAtIChncnViX3VpbnQ4X3Qg KikgdGFyZ2V0IC0gODsKKwkgICAgICB9CisJICAgIGlmICghZ3J1Yl9hcm1fanVtcDI0X2No ZWNrX29mZnNldCAob2Zmc2V0KSkKKwkgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX01PRFVMRSwKKwkJCQkgInRyYW1wb2xpbmUgb3V0IG9mIHJhbmdlIik7CisJICAg IGdydWJfYXJtX2p1bXAyNF9zZXRfb2Zmc2V0ICh0YXJnZXQsIG9mZnNldCk7CiAJICB9CiAJ ICBicmVhazsKIAljYXNlIFJfQVJNX1RITV9DQUxMOgogCWNhc2UgUl9BUk1fVEhNX0pVTVAy NDoKIAkgIHsKIAkgICAgLyogVGh1bWIgaW5zdHJ1Y3Rpb25zIGNhbiBiZSAxNi1iaXQgYWxp Z25lZCAqLwotCSAgICByZXR2YWwgPSBncnViX2FybV9yZWxvY190aG1fY2FsbCAoKGdydWJf dWludDE2X3QgKikgdGFyZ2V0LCBzeW1fYWRkcik7CisJICAgIGdydWJfaW50MzJfdCBvZmZz ZXQ7CisKKwkgICAgc3ltX2FkZHIgKz0gZ3J1Yl9hcm1fdGhtX2NhbGxfZ2V0X29mZnNldCAo KGdydWJfdWludDE2X3QgKikgdGFyZ2V0KTsKKworCSAgICBncnViX2RwcmludGYgKCJkbCIs ICIgICAgc3ltX2FkZHIgPSAweCUwOHhcbiIsIHN5bV9hZGRyKTsKKworCSAgICBvZmZzZXQg PSBzeW1fYWRkciAtIChncnViX3VpbnQzMl90KSB0YXJnZXQ7CisKKwkgICAgZ3J1Yl9kcHJp bnRmKCJkbCIsICIgQkwqOiB0YXJnZXQ9JXAsIHN5bV9hZGRyPTB4JTA4eCwgb2Zmc2V0PSVk XG4iLAorCQkJIHRhcmdldCwgc3ltX2FkZHIsIG9mZnNldCk7CisKKwkgICAgaWYgKCEoc3lt X2FkZHIgJiAxKSB8fCAob2Zmc2V0IDwgLTB4MjAwMDAwIHx8IG9mZnNldCA+PSAweDIwMDAw MCkpCisJICAgICAgeworCQlzdHJ1Y3QgdHJhbXBvbGluZV90aHVtYiAqdHAgPSAoc3RydWN0 IHRyYW1wb2xpbmVfdGh1bWIgKikgKnRwdHI7CisJCSp0cHRyICs9IHNpemVvZiAoc3RydWN0 IHRyYW1wb2xpbmVfdGh1bWIpIC8gc2l6ZW9mICgqKnRwdHIpOworCQlncnViX21lbWNweSAo dHAtPnRlbXBsYXRlLCB0aHVtYl90ZW1wbGF0ZSwgc2l6ZW9mICh0cC0+dGVtcGxhdGUpKTsK KwkJdHAtPm5lZ19hZGRyID0gLXN5bV9hZGRyIC0gNDsKKwkJb2Zmc2V0ID0gKChncnViX3Vp bnQ4X3QgKikgdHAgLSAoZ3J1Yl91aW50OF90ICopIHRhcmdldCAtIDQpIHwgMTsKKwkgICAg ICB9CisKKwkgICAgaWYgKG9mZnNldCA8IC0weDIwMDAwMCB8fCBvZmZzZXQgPj0gMHgyMDAw MDApCisJICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCisJ CQkJICJ0cmFtcG9saW5lIG91dCBvZiByYW5nZSIpOworCisJICAgIGdydWJfZHByaW50ZiAo ImRsIiwgIiAgICByZWxhdGl2ZSBkZXN0aW5hdGlvbiA9ICVwXG4iLAorCQkJICAoY2hhciAq KSB0YXJnZXQgKyBvZmZzZXQpOworCisJICAgIHJldHZhbCA9IGdydWJfYXJtX3RobV9jYWxs X3NldF9vZmZzZXQgKChncnViX3VpbnQxNl90ICopIHRhcmdldCwgb2Zmc2V0KTsKIAkgICAg aWYgKHJldHZhbCAhPSBHUlVCX0VSUl9OT05FKQogCSAgICAgIHJldHVybiByZXR2YWw7CiAJ ICB9CkBAIC05OCw5ICsyMTksMzEgQEAgZG9fcmVsb2NhdGlvbnMgKEVsZl9TaGRyICogcmVs aGRyLCBFbGZfRWhkciAqIGUsIGdydWJfZGxfdCBtb2QpCiAJY2FzZSBSX0FSTV9USE1fSlVN UDE5OgogCSAgewogCSAgICAvKiBUaHVtYiBpbnN0cnVjdGlvbnMgY2FuIGJlIDE2LWJpdCBh bGlnbmVkICovCi0JICAgIHJldHZhbCA9IGdydWJfYXJtX3JlbG9jX3RobV9qdW1wMTkgKChn cnViX3VpbnQxNl90ICopIHRhcmdldCwgc3ltX2FkZHIpOwotCSAgICBpZiAocmV0dmFsICE9 IEdSVUJfRVJSX05PTkUpCi0JICAgICAgcmV0dXJuIHJldHZhbDsKKwkgICAgZ3J1Yl9pbnQz Ml90IG9mZnNldDsKKworCSAgICBpZiAoIShzeW1fYWRkciAmIDEpKQorCSAgICAgIHJldHVy biBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLAorCQkJCSBOXygiUmVsb2NhdGlv biB0YXJnZXRpbmcgd3JvbmcgZXhlY3V0aW9uIHN0YXRlIikpOworCisJICAgIHN5bV9hZGRy ICs9IGdydWJfYXJtX3RobV9qdW1wMTlfZ2V0X29mZnNldCAoKGdydWJfdWludDE2X3QgKikg dGFyZ2V0KTsKKworCSAgICBvZmZzZXQgPSBzeW1fYWRkciAtIChncnViX3VpbnQzMl90KSB0 YXJnZXQ7CisKKwkgICAgaWYgKCFncnViX2FybV90aG1fanVtcDE5X2NoZWNrX29mZnNldCAo b2Zmc2V0KQorCQl8fCAhKHN5bV9hZGRyICYgMSkpCisJICAgICAgeworCQlzdHJ1Y3QgdHJh bXBvbGluZV90aHVtYiAqdHAgPSAoc3RydWN0IHRyYW1wb2xpbmVfdGh1bWIgKikgKnRwdHI7 CisJCSp0cHRyICs9IHNpemVvZiAoc3RydWN0IHRyYW1wb2xpbmVfdGh1bWIpIC8gc2l6ZW9m ICgqKnRwdHIpOworCQlncnViX21lbWNweSAodHAtPnRlbXBsYXRlLCB0aHVtYl90ZW1wbGF0 ZSwgc2l6ZW9mICh0cC0+dGVtcGxhdGUpKTsKKwkJdHAtPm5lZ19hZGRyID0gLXN5bV9hZGRy IC0gNDsKKwkJb2Zmc2V0ID0gKChncnViX3VpbnQ4X3QgKikgdHAgLSAoZ3J1Yl91aW50OF90 ICopIHRhcmdldCAtIDQpIHwgMTsKKwkgICAgICB9CisKKwkgICAgaWYgKCFncnViX2FybV90 aG1fanVtcDE5X2NoZWNrX29mZnNldCAob2Zmc2V0KSkKKwkgICAgICByZXR1cm4gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKKwkJCQkgInRyYW1wb2xpbmUgb3V0IG9mIHJh bmdlIik7CisKKwkgICAgZ3J1Yl9hcm1fdGhtX2p1bXAxOV9zZXRfb2Zmc2V0ICgoZ3J1Yl91 aW50MTZfdCAqKSB0YXJnZXQsIG9mZnNldCk7CiAJICB9CiAJICBicmVhazsKIAlkZWZhdWx0 OgpAQCAtMTYxLDYgKzMwNCw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChn cnViX2RsX3QgbW9kLCB2b2lkICplaGRyKQogICBFbGZfRWhkciAqZSA9IGVoZHI7CiAgIEVs Zl9TaGRyICpzOwogICB1bnNpZ25lZCBpOworICBncnViX3VpbnQzMl90ICp0cHRyID0gbW9k LT50cmFtcDsKIAogICBpZiAoIWhhc19zeW10YWIgKGUpKQogICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCBOXygibm8gc3ltYm9sIHRhYmxlIikpOwpAQCAt MTY5LDM1ICszMTMsMTQgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJf ZGxfdCBtb2QsIHZvaWQgKmVoZHIpCiAjZGVmaW5lIE5FWFRfU0hEUih4LCB5KSAoKEVsZl9T aGRyICopICgoZ3J1Yl9hZGRyX3QpKHkpICsgKHgpLT5lX3NoZW50c2l6ZSkpCiAKICAgZm9y IChpID0gMCwgcyA9IEZJUlNUX1NIRFIgKGUpOyBpIDwgZS0+ZV9zaG51bTsgaSsrLCBzID0g TkVYVF9TSERSIChlLCBzKSkKLSAgICB7Ci0gICAgICBncnViX2Vycl90IHJldDsKLQotICAg ICAgc3dpdGNoIChzLT5zaF90eXBlKQotCXsKLQljYXNlIFNIVF9SRUw6Ci0JICB7Ci0JICAg IC8qIFJlbG9jYXRpb25zLCBubyBhZGRlbmRzICovCi0JICAgIHJldCA9IGRvX3JlbG9jYXRp b25zIChzLCBlLCBtb2QpOwotCSAgICBpZiAocmV0ICE9IEdSVUJfRVJSX05PTkUpCi0JICAg ICAgcmV0dXJuIHJldDsKLQkgIH0KLQkgIGJyZWFrOwotCWNhc2UgU0hUX05VTEw6Ci0JY2Fz ZSBTSFRfUFJPR0JJVFM6Ci0JY2FzZSBTSFRfU1lNVEFCOgotCWNhc2UgU0hUX1NUUlRBQjoK LQljYXNlIFNIVF9OT0JJVFM6Ci0JY2FzZSBTSFRfQVJNX0FUVFJJQlVURVM6Ci0JICBicmVh azsKLQljYXNlIFNIVF9SRUxBOgotCWRlZmF1bHQ6Ci0JICB7Ci0JICAgIGdydWJfZHByaW50 ZiAoImRsIiwgInVuaGFuZGxlZCBzZWN0aW9uX3R5cGU6ICVkICgweCUwOHgpXG4iLAotCQkJ IHMtPnNoX3R5cGUsIHMtPnNoX3R5cGUpOwotCSAgICByZXR1cm4gR1JVQl9FUlJfTk9UX0lN UExFTUVOVEVEX1lFVDsKLQkgIH07Ci0JfQotICAgIH0KKyAgICBpZiAocy0+c2hfdHlwZSA9 PSBTSFRfUkVMKQorICAgICAgeworCWdydWJfZXJyX3QgcmV0OworCS8qIFJlbG9jYXRpb25z LCBubyBhZGRlbmRzICovCisJcmV0ID0gZG9fcmVsb2NhdGlvbnMgKHMsIGUsIG1vZCwgJnRw dHIpOworCWlmIChyZXQgIT0gR1JVQl9FUlJfTk9ORSkKKwkgIHJldHVybiByZXQ7CisgICAg ICB9CiAKICN1bmRlZiBGSVJTVF9TSERSCiAjdW5kZWYgTkVYVF9TSERSCmRpZmYgLS1naXQg YS9ncnViLWNvcmUva2Vybi9hcm0vZGxfaGVscGVyLmMgYi9ncnViLWNvcmUva2Vybi9hcm0v ZGxfaGVscGVyLmMKaW5kZXggNjhhOWUzYi4uNTcyMTkzOSAxMDA2NDQKLS0tIGEvZ3J1Yi1j b3JlL2tlcm4vYXJtL2RsX2hlbHBlci5jCisrKyBiL2dydWItY29yZS9rZXJuL2FybS9kbF9o ZWxwZXIuYwpAQCAtMzgsOCArMzgsNiBAQCBncnViX2FybV9yZWxvY19hYnMzMiAoRWxmMzJf V29yZCAqdGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQogICB0bXAgPSBncnViX2xlX3Rv X2NwdTMyICgqdGFyZ2V0KTsKICAgdG1wICs9IHN5bV9hZGRyOwogICAqdGFyZ2V0ID0gZ3J1 Yl9jcHVfdG9fbGUzMiAodG1wKTsKLSAgZ3J1Yl9kcHJpbnRmICgiZGwiLCAiICAlczogIHJl bG9jX2FiczMyIDB4JTA4eCA9PiAweCUwOHgiLCBfX0ZVTkNUSU9OX18sCi0JCSh1bnNpZ25l ZCBpbnQpIHN5bV9hZGRyLCAodW5zaWduZWQgaW50KSB0bXApOwogCiAgIHJldHVybiBHUlVC X0VSUl9OT05FOwogfQpAQCAtNTEsMzcgKzQ5LDE2IEBAIGdydWJfYXJtX3JlbG9jX2FiczMy IChFbGYzMl9Xb3JkICp0YXJnZXQsIEVsZjMyX0FkZHIgc3ltX2FkZHIpCiAgKiBsaXR0bGUt ZW5kaWFuLCByZXF1aXJpbmcgc29tZSBhZGRpdGlvbmFsIGZpZGRsaW5nLiAgICAgICAgICAg ICAgICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIAotLyoKLSAqIFJfQVJNX1RITV9DQUxML1RITV9K VU1QMjQKLSAqCi0gKiBSZWxvY2F0ZSBUaHVtYiAoVDMyKSBpbnN0cnVjdGlvbiBzZXQgcmVs YXRpdmUgYnJhbmNoZXM6Ci0gKiAgIEIuVywgQkwgYW5kIEJMWAotICovCi1ncnViX2Vycl90 Ci1ncnViX2FybV9yZWxvY190aG1fY2FsbCAoZ3J1Yl91aW50MTZfdCAqdGFyZ2V0LCBFbGYz Ml9BZGRyIHN5bV9hZGRyKQorZ3J1Yl9pbnQzMl90CitncnViX2FybV90aG1fY2FsbF9nZXRf b2Zmc2V0IChncnViX3VpbnQxNl90ICp0YXJnZXQpCiB7Ci0gIGdydWJfaW50MzJfdCBvZmZz ZXQsIG9mZnNldF9sb3csIG9mZnNldF9oaWdoOwotICBncnViX3VpbnQzMl90IHNpZ24sIGox LCBqMiwgaXNfYmx4OwotICBncnViX3VpbnQzMl90IGluc3dvcmQsIGluc21hc2s7CisgIGdy dWJfdWludDMyX3Qgc2lnbiwgajEsIGoyOworICBncnViX3VpbnQzMl90IGluc3dvcmQ7Cisg IGdydWJfaW50MzJfdCBvZmZzZXQ7CiAKICAgLyogRXh0cmFjdCBpbnN0cnVjdGlvbiB3b3Jk IGluIGFsaWdubWVudC1zYWZlIG1hbm5lciAqLwogICBpbnN3b3JkID0gKGdydWJfbGVfdG9f Y3B1MTYgKCp0YXJnZXQpIDw8IDE2KQogICAgIHwgKGdydWJfbGVfdG9fY3B1MTYoKih0YXJn ZXQgKyAxKSkpOwotICBpbnNtYXNrID0gMHhmODAwZDAwMDsKLQotICAvKiBCLlcvQkwgb3Ig QkxYPyBBZmZlY3RzIHJhbmdlIGFuZCBleHBlY3RlZCB0YXJnZXQgc3RhdGUgKi8KLSAgaWYg KCgoaW5zd29yZCA+PiAxMikgJiAweGQpID09IDB4YykKLSAgICBpc19ibHggPSAxOwotICBl bHNlCi0gICAgaXNfYmx4ID0gMDsKLQotICAvKiBJZiBCTFgsIHRhcmdldCBzeW1ib2wgbXVz dCBiZSBBUk0gKHRhcmdldCBhZGRyZXNzIExTQiA9PSAwKSAqLwotICBpZiAoaXNfYmx4ICYm IChzeW1fYWRkciAmIDEpKQotICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURf TU9EVUxFLAotCQkgICAgICAgTl8oIlJlbG9jYXRpb24gdGFyZ2V0aW5nIHdyb25nIGV4ZWN1 dGlvbiBzdGF0ZSIpKTsKLQotICBvZmZzZXRfbG93ID0gLTE2Nzc3MjE2OwotICBvZmZzZXRf aGlnaCA9IGlzX2JseCA/IDE2Nzc3MjEyIDogMTY3NzcyMTQ7CiAKICAgLyogRXh0cmFjdCBi aXRmaWVsZHMgZnJvbSBpbnN0cnVjdGlvbiB3b3JkcyAqLwogICBzaWduID0gKGluc3dvcmQg Pj4gMjYpICYgMTsKQEAgLTk1LDIyICs3MiwzMiBAQCBncnViX2FybV9yZWxvY190aG1fY2Fs bCAoZ3J1Yl91aW50MTZfdCAqdGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQogICBpZiAo b2Zmc2V0ICYgKDEgPDwgMjQpKQogICAgIG9mZnNldCAtPSAoMSA8PCAyNSk7CiAKLSAgZ3J1 Yl9kcHJpbnRmICgiZGwiLCAiICAgIHN5bV9hZGRyID0gMHglMDh4Iiwgc3ltX2FkZHIpOwor ICByZXR1cm4gb2Zmc2V0OworfQogCi0gIG9mZnNldCArPSBzeW1fYWRkcjsKLSNpZm5kZWYg R1JVQl9VVElMCi0gIG9mZnNldCAtPSAoZ3J1Yl91aW50MzJfdCkgdGFyZ2V0OwotI2VuZGlm CitncnViX2Vycl90CitncnViX2FybV90aG1fY2FsbF9zZXRfb2Zmc2V0IChncnViX3VpbnQx Nl90ICp0YXJnZXQsIGdydWJfaW50MzJfdCBvZmZzZXQpCit7CisgIGdydWJfdWludDMyX3Qg c2lnbiwgajEsIGoyOworICBjb25zdCBncnViX3VpbnQzMl90IGluc21hc2sgPSAweGY4MDBk MDAwOworICBncnViX3VpbnQzMl90IGluc3dvcmQ7CisgIGludCBpc19ibHg7CiAKLSAgZ3J1 Yl9kcHJpbnRmKCJkbCIsICIgJXM6IHRhcmdldD0lcCwgc3ltX2FkZHI9MHglMDh4LCBvZmZz ZXQ9JWRcbiIsCi0JICAgICAgaXNfYmx4ID8gIkJMWCIgOiAiQkwiLCB0YXJnZXQsIHN5bV9h ZGRyLCBvZmZzZXQpOworICAvKiBFeHRyYWN0IGluc3RydWN0aW9uIHdvcmQgaW4gYWxpZ25t ZW50LXNhZmUgbWFubmVyICovCisgIGluc3dvcmQgPSAoZ3J1Yl9sZV90b19jcHUxNiAoKnRh cmdldCkgPDwgMTYpCisgICAgfCAoZ3J1Yl9sZV90b19jcHUxNigqKHRhcmdldCArIDEpKSk7 CisKKyAgaWYgKCgoaW5zd29yZCA+PiAxMikgJiAweGQpID09IDB4YykKKyAgICBpc19ibHgg PSAxOworICBlbHNlCisgICAgaXNfYmx4ID0gMDsKIAotICBpZiAoKG9mZnNldCA8IG9mZnNl dF9sb3cpIHx8IChvZmZzZXQgPiBvZmZzZXRfaGlnaCkpCi0gICAgcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCSAgICAgICBOXygiVEhNX0NBTEwgUmVsb2Nh dGlvbiBvdXQgb2YgcmFuZ2UuIikpOworICBpZiAoIWlzX2JseCAmJiAhKG9mZnNldCAmIDEp KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAiYmwvYi53 IHRhcmdldHR0aW5nIEFSTSIpOwogCi0gIGdydWJfZHByaW50ZiAoImRsIiwgIiAgICByZWxh dGl2ZSBkZXN0aW5hdGlvbiA9ICVwIiwKLQkJKGNoYXIgKikgdGFyZ2V0ICsgb2Zmc2V0KTsK KyAgLyogVHJhbnNmb3JtIGJseCBpbnRvIGJsIGlmIG5lY2Vzc2FycnkuICAqLworICBpZiAo aXNfYmx4ICYmIChvZmZzZXQgJiAxKSkKKyAgICBpbnN3b3JkIHw9ICgxIDw8IDEyKTsKIAog ICAvKiBSZWFzc2VtYmxlIGluc3RydWN0aW9uIHdvcmQgKi8KICAgc2lnbiA9IChvZmZzZXQg Pj4gMjQpICYgMTsKQEAgLTEzMCwyMSArMTE3LDE1IEBAIGdydWJfYXJtX3JlbG9jX3RobV9j YWxsIChncnViX3VpbnQxNl90ICp0YXJnZXQsIEVsZjMyX0FkZHIgc3ltX2FkZHIpCiAgIHJl dHVybiBHUlVCX0VSUl9OT05FOwogfQogCi0vKgotICogUl9BUk1fVEhNX0pVTVAxOQotICoK LSAqIFJlbG9jYXRlIGNvbmRpdGlvbmFsIFRodW1iIChUMzIpIEI8Yz4uVwotICovCi1ncnVi X2Vycl90Ci1ncnViX2FybV9yZWxvY190aG1fanVtcDE5IChncnViX3VpbnQxNl90ICp0YXJn ZXQsIEVsZjMyX0FkZHIgc3ltX2FkZHIpCitncnViX2ludDMyX3QKK2dydWJfYXJtX3RobV9q dW1wMTlfZ2V0X29mZnNldCAoZ3J1Yl91aW50MTZfdCAqdGFyZ2V0KQogewogICBncnViX2lu dDMyX3Qgb2Zmc2V0OwotICBncnViX3VpbnQzMl90IGluc3dvcmQsIGluc21hc2s7CisgIGdy dWJfdWludDMyX3QgaW5zd29yZDsKIAogICAvKiBFeHRyYWN0IGluc3RydWN0aW9uIHdvcmQg aW4gYWxpZ25tZW50LXNhZmUgbWFubmVyICovCi0gIGluc3dvcmQgPSBncnViX2xlX3RvX2Nw dTE2ICgoKnRhcmdldCkpIDw8IDE2Ci0gICAgfCBncnViX2xlX3RvX2NwdTE2ICgqKHRhcmdl dCArIDEpKTsKLSAgaW5zbWFzayA9IDB4ZmJjMGQwMDA7CisgIGluc3dvcmQgPSAoZ3J1Yl9s ZV90b19jcHUxNiAoKnRhcmdldCkgPDwgMTYpCisgICAgfCAoZ3J1Yl9sZV90b19jcHUxNigq KHRhcmdldCArIDEpKSk7CiAKICAgLyogRXh0cmFjdCBhbmQgc2lnbiBleHRlbmQgb2Zmc2V0 ICovCiAgIG9mZnNldCA9ICgoaW5zd29yZCA+PiAyNikgJiAxKSA8PCAxOQpAQCAtMTU2LDE4 ICsxMzcsMjIgQEAgZ3J1Yl9hcm1fcmVsb2NfdGhtX2p1bXAxOSAoZ3J1Yl91aW50MTZfdCAq dGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQogICBpZiAob2Zmc2V0ICYgKDEgPDwgMjAp KQogICAgIG9mZnNldCAtPSAoMSA8PCAyMSk7CiAKLSAgLyogQWRqdXN0IGFuZCByZS10cnVu Y2F0ZSBvZmZzZXQgKi8KLSAgb2Zmc2V0ICs9IHN5bV9hZGRyOwotI2lmbmRlZiBHUlVCX1VU SUwKLSAgb2Zmc2V0IC09IChncnViX3VpbnQzMl90KSB0YXJnZXQ7Ci0jZW5kaWYKLSAgaWYg KChvZmZzZXQgPiAxMDQ4NTc0KSB8fCAob2Zmc2V0IDwgLTEwNDg1NzYpKQotICAgIHJldHVy biBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLAotCQkgICAgICAgTl8oIlRITV9K VU1QMTkgUmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UuIikpOworICByZXR1cm4gb2Zmc2V0Owor fQorCit2b2lkCitncnViX2FybV90aG1fanVtcDE5X3NldF9vZmZzZXQgKGdydWJfdWludDE2 X3QgKnRhcmdldCwgZ3J1Yl9pbnQzMl90IG9mZnNldCkKK3sKKyAgZ3J1Yl91aW50MzJfdCBp bnN3b3JkOworICBjb25zdCBncnViX3VpbnQzMl90IGluc21hc2sgPSAweGZiYzBkMDAwOwog CiAgIG9mZnNldCA+Pj0gMTsKICAgb2Zmc2V0ICY9IDB4ZmZmZmY7CiAKKyAgLyogRXh0cmFj dCBpbnN0cnVjdGlvbiB3b3JkIGluIGFsaWdubWVudC1zYWZlIG1hbm5lciAqLworICBpbnN3 b3JkID0gZ3J1Yl9sZV90b19jcHUxNiAoKCp0YXJnZXQpKSA8PCAxNgorICAgIHwgZ3J1Yl9s ZV90b19jcHUxNiAoKih0YXJnZXQgKyAxKSk7CisKICAgLyogUmVhc3NlbWJsZSBpbnN0cnVj dGlvbiB3b3JkIGFuZCB3cml0ZSBiYWNrICovCiAgIGluc3dvcmQgJj0gaW5zbWFzazsKICAg aW5zd29yZCB8PSAoKG9mZnNldCA+PiAxOSkgJiAxKSA8PCAyNgpAQCAtMTc3LDkgKzE2Miwx NSBAQCBncnViX2FybV9yZWxvY190aG1fanVtcDE5IChncnViX3VpbnQxNl90ICp0YXJnZXQs IEVsZjMyX0FkZHIgc3ltX2FkZHIpCiAgICAgfCAob2Zmc2V0ICYgMHg3ZmYpOwogICAqdGFy Z2V0ID0gZ3J1Yl9jcHVfdG9fbGUxNiAoaW5zd29yZCA+PiAxNik7CiAgICoodGFyZ2V0ICsg MSkgPSBncnViX2NwdV90b19sZTE2IChpbnN3b3JkICYgMHhmZmZmKTsKLSAgcmV0dXJuIEdS VUJfRVJSX05PTkU7CiB9CiAKK2ludAorZ3J1Yl9hcm1fdGhtX2p1bXAxOV9jaGVja19vZmZz ZXQgKGdydWJfaW50MzJfdCBvZmZzZXQpCit7CisgIGlmICgob2Zmc2V0ID4gMTA0ODU3NCkg fHwgKG9mZnNldCA8IC0xMDQ4NTc2KSkKKyAgICByZXR1cm4gMDsKKyAgcmV0dXJuIDE7Cit9 CiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCkBAIC0xODgsMzUgKzE3OSwzOCBAQCBncnViX2FybV9yZWxvY190aG1f anVtcDE5IChncnViX3VpbnQxNl90ICp0YXJnZXQsIEVsZjMyX0FkZHIgc3ltX2FkZHIpCiAg KiBBUk0gaW5zdHJ1Y3Rpb25zIGFyZSAzMi1iaXQgaW4gc2l6ZSBhbmQgMzItYml0IGFsaWdu ZWQuICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAotLyoKLSAqIFJfQVJNX0pVTVAyNAotICoKLSAqIFJlbG9jYXRl IEFSTSAoQTMyKSBCCi0gKi8KLWdydWJfZXJyX3QKLWdydWJfYXJtX3JlbG9jX2p1bXAyNCAo Z3J1Yl91aW50MzJfdCAqdGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQorZ3J1Yl9pbnQz Ml90CitncnViX2FybV9qdW1wMjRfZ2V0X29mZnNldCAoZ3J1Yl91aW50MzJfdCAqdGFyZ2V0 KQogewotICBncnViX3VpbnQzMl90IGluc3dvcmQ7CiAgIGdydWJfaW50MzJfdCBvZmZzZXQ7 Ci0KLSAgaWYgKHN5bV9hZGRyICYgMSkKLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX01PRFVMRSwKLQkJICAgICAgIE5fKCJSZWxvY2F0aW9uIHRhcmdldGluZyB3cm9u ZyBleGVjdXRpb24gc3RhdGUiKSk7CisgIGdydWJfdWludDMyX3QgaW5zd29yZDsKIAogICBp bnN3b3JkID0gZ3J1Yl9sZV90b19jcHUzMiAoKnRhcmdldCk7CiAKICAgb2Zmc2V0ID0gKGlu c3dvcmQgJiAweDAwZmZmZmZmKSA8PCAyOwogICBpZiAob2Zmc2V0ICYgMHgwMjAwMDAwMCkK ICAgICBvZmZzZXQgLT0gMHgwNDAwMDAwMDsKLSAgb2Zmc2V0ICs9IHN5bV9hZGRyOwotI2lm bmRlZiBHUlVCX1VUSUwKLSAgb2Zmc2V0IC09IChncnViX3VpbnQzMl90KSB0YXJnZXQ7Ci0j ZW5kaWYKKyAgcmV0dXJuIG9mZnNldDsKK30KKworaW50CitncnViX2FybV9qdW1wMjRfY2hl Y2tfb2Zmc2V0IChncnViX2ludDMyX3Qgb2Zmc2V0KQoreworICBpZiAob2Zmc2V0ID49IDB4 MDIwMDAwMDAgfHwgb2Zmc2V0IDwgLTB4MDIwMDAwMDApCisgICAgcmV0dXJuIDA7CisgIHJl dHVybiAxOworfQorCit2b2lkCitncnViX2FybV9qdW1wMjRfc2V0X29mZnNldCAoZ3J1Yl91 aW50MzJfdCAqdGFyZ2V0LAorCQkJICAgIGdydWJfaW50MzJfdCBvZmZzZXQpCit7CisgIGdy dWJfdWludDMyX3QgaW5zd29yZDsKKworICBpbnN3b3JkID0gZ3J1Yl9sZV90b19jcHUzMiAo KnRhcmdldCk7CiAKICAgaW5zd29yZCAmPSAweGZmMDAwMDAwOwogICBpbnN3b3JkIHw9IChv ZmZzZXQgPj4gMikgJiAweDAwZmZmZmZmOwogCiAgICp0YXJnZXQgPSBncnViX2NwdV90b19s ZTMyIChpbnN3b3JkKTsKLQotICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KZGlmZiAtLWdp dCBhL2dydWItY29yZS9rZXJuL2FybTY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi9hcm02NC9k bC5jCmluZGV4IGFmZDBkZTIuLmE0OGEyY2UgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJu L2FybTY0L2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGwuYwpAQCAtMjUsNiAr MjUsMTUgQEAKICNpbmNsdWRlIDxncnViL2kxOG4uaD4KICNpbmNsdWRlIDxncnViL2NwdS9y ZWxvYy5oPgogCitzdHJ1Y3QgdHJhbXBvbGluZQoreworI2RlZmluZSBMRFIgMHg1ODAwMDA1 MAorI2RlZmluZSBCUiAweGQ2MWYwMjAwCisgIGdydWJfdWludDMyX3QgbGRyOyAvKiBsZHIJ eDE2LCA4ICovCisgIGdydWJfdWludDMyX3QgYnI7IC8qIGJyIHgxNiAqLworICBncnViX3Vp bnQ2NF90IGFkZHI7Cit9OworCiAvKgogICogQ2hlY2sgaWYgRUhEUiBpcyBhIHZhbGlkIEVM RiBoZWFkZXIuCiAgKi8KQEAgLTQyLDE5ICs1MSw1NCBAQCBncnViX2FyY2hfZGxfY2hlY2tf aGVhZGVyICh2b2lkICplaGRyKQogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KIAorZ3J1 Yl9lcnJfdAorZ3J1Yl9hcmNoX2RsX2dldF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAq ZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAorCQkJCSBncnViX3NpemVfdCAqZ290KQorewor ICBjb25zdCBFbGZfRWhkciAqZSA9IGVoZHI7CisgIGNvbnN0IEVsZl9TaGRyICpzOworICB1 bnNpZ25lZCBpOworCisgICp0cmFtcCA9IDA7CisgICpnb3QgPSAwOworCisgIGZvciAoaSA9 IDAsIHMgPSAoY29uc3QgRWxmX1NoZHIgKikgKChncnViX2FkZHJfdCkgZSArIGUtPmVfc2hv ZmYpOworICAgICAgIGkgPCBlLT5lX3NobnVtOworICAgICAgIGkrKywgcyA9IChjb25zdCBF bGZfU2hkciAqKSAoKGdydWJfYWRkcl90KSBzICsgZS0+ZV9zaGVudHNpemUpKQorICAgIGlm IChzLT5zaF90eXBlID09IFNIVF9SRUwgfHwgcy0+c2hfdHlwZSA9PSBTSFRfUkVMQSkKKyAg ICAgIHsKKwljb25zdCBFbGZfUmVsICpyZWwsICptYXg7CisKKwlmb3IgKHJlbCA9IChjb25z dCBFbGZfUmVsICopICgoZ3J1Yl9hZGRyX3QpIGUgKyBzLT5zaF9vZmZzZXQpLAorCSAgICAg ICBtYXggPSByZWwgKyBzLT5zaF9zaXplIC8gcy0+c2hfZW50c2l6ZTsKKwkgICAgIHJlbCA8 IG1heDsKKwkgICAgIHJlbCA9IChjb25zdCBFbGZfUmVsICopICgoZ3J1Yl91aW50OF90ICop IHJlbCArIHMtPnNoX2VudHNpemUpKQorCSAgc3dpdGNoIChFTEZfUl9UWVBFIChyZWwtPnJf aW5mbykpCisJICAgIHsKKwkgICAgY2FzZSBSX0FBUkNINjRfQ0FMTDI2OgorCSAgICBjYXNl IFJfQUFSQ0g2NF9KVU1QMjY6CisJICAgICAgeworCQkqdHJhbXAgKz0gc2l6ZW9mIChzdHJ1 Y3QgdHJhbXBvbGluZSk7CisJCWJyZWFrOworCSAgICAgIH0KKwkgICAgfQorICAgICAgfQor CisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCiAvKgogICogVW5pZmllZCBmdW5jdGlv biBmb3IgYm90aCBSRUwgYW5kIFJFTEEgCiAgKi8KIHN0YXRpYyBncnViX2Vycl90Ci1kb19y ZWxYIChFbGZfU2hkciAqIHJlbGhkciwgRWxmX0VoZHIgKiBlLCBncnViX2RsX3QgbW9kKQor ZG9fcmVsWCAoRWxmX1NoZHIgKiByZWxoZHIsIEVsZl9FaGRyICogZSwgZ3J1Yl9kbF90IG1v ZCwKKwkgc3RydWN0IHRyYW1wb2xpbmUgKip0cHRyKQogewogICBncnViX2Vycl90IHJldHZh bDsKICAgZ3J1Yl9kbF9zZWdtZW50X3Qgc2VnbWVudDsKICAgRWxmX1JlbCAqcmVsOwotICBF bGZfUmVsYSAqcmVsYTsKICAgRWxmX1N5bSAqc3ltYm9sOwogICBpbnQgaSwgZW50bnVtOwot ICB1bnNpZ25lZCBsb25nIGxvbmcgIGVudHNpemU7CiAKICAgLyogRmluZCB0aGUgdGFyZ2V0 IHNlZ21lbnQgZm9yIHRoaXMgcmVsb2NhdGlvbiBzZWN0aW9uLiAqLwogICBmb3IgKHNlZ21l bnQgPSBtb2QtPnNlZ21lbnQgOyBzZWdtZW50ICE9IDAgOyBzZWdtZW50ID0gc2VnbWVudC0+ bmV4dCkKQEAgLTY0LDEzICsxMDgsOCBAQCBkb19yZWxYIChFbGZfU2hkciAqIHJlbGhkciwg RWxmX0VoZHIgKiBlLCBncnViX2RsX3QgbW9kKQogICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9FT0YsIE5fKCJyZWxvY2F0aW9uIHNlZ21lbnQgbm90IGZvdW5kIikpOwogCiAg IHJlbCA9IChFbGZfUmVsICopICgoZ3J1Yl9hZGRyX3QpIGUgKyByZWxoZHItPnNoX29mZnNl dCk7Ci0gIHJlbGEgPSAoRWxmX1JlbGEgKikgcmVsOwotICBpZiAocmVsaGRyLT5zaF90eXBl ID09IFNIVF9SRUxBKQotICAgIGVudHNpemUgPSBzaXplb2YgKEVsZl9SZWxhKTsKLSAgZWxz ZQotICAgIGVudHNpemUgPSBzaXplb2YgKEVsZl9SZWwpOwogCi0gIGVudG51bSA9IHJlbGhk ci0+c2hfc2l6ZSAvIGVudHNpemU7CisgIGVudG51bSA9IHJlbGhkci0+c2hfc2l6ZSAvIHJl bGhkci0+c2hfZW50c2l6ZTsKICAgcmV0dmFsID0gR1JVQl9FUlJfTk9ORTsKIAogICBncnVi X2RwcmludGYoImRsIiwgIlByb2Nlc3NpbmcgJWQgcmVsb2NhdGlvbiBlbnRyaWVzLlxuIiwg ZW50bnVtKTsKQEAgLTkwLDcgKzEyOSw3IEBAIGRvX3JlbFggKEVsZl9TaGRyICogcmVsaGRy LCBFbGZfRWhkciAqIGUsIGdydWJfZGxfdCBtb2QpCiAKICAgICAgIHN5bV9hZGRyID0gc3lt Ym9sW3N5bWlkeF0uc3RfdmFsdWU7CiAgICAgICBpZiAocmVsaGRyLT5zaF90eXBlID09IFNI VF9SRUxBKQotCXN5bV9hZGRyICs9IHJlbGEtPnJfYWRkZW5kOworCXN5bV9hZGRyICs9ICgo RWxmX1JlbGEgKikgcmVsKS0+cl9hZGRlbmQ7CiAKICAgICAgIHBsYWNlID0gKHZvaWQgKikg KChncnViX2FkZHJfdCkgc2VnbWVudC0+YWRkciArIHJlbC0+cl9vZmZzZXQpOwogCkBAIC0x MDgsNyArMTQ3LDI1IEBAIGRvX3JlbFggKEVsZl9TaGRyICogcmVsaGRyLCBFbGZfRWhkciAq IGUsIGdydWJfZGxfdCBtb2QpCiAJICBicmVhazsKIAljYXNlIFJfQUFSQ0g2NF9DQUxMMjY6 CiAJY2FzZSBSX0FBUkNINjRfSlVNUDI2OgotCSAgcmV0dmFsID0gZ3J1Yl9hcm02NF9yZWxv Y194eHh4MjYgKHBsYWNlLCBzeW1fYWRkcik7CisJICB7CisJICAgIGdydWJfaW50NjRfdCBv ZmZzZXQgPSBzeW1fYWRkciAtIChncnViX3VpbnQ2NF90KSBwbGFjZTsKKworCSAgICBpZiAo IWdydWJfYXJtXzY0X2NoZWNrX3h4eHgyNl9vZmZzZXQgKG9mZnNldCkpCisJICAgICAgewor CQlzdHJ1Y3QgdHJhbXBvbGluZSAqdHAgPSAqdHB0cjsKKwkJKnRwdHIgPSB0cCArIDE7CisJ CXRwLT5sZHIgPSBMRFI7CisJCXRwLT5iciA9IEJSOworCQl0cC0+YWRkciA9IHN5bV9hZGRy OworCQlvZmZzZXQgPSAoZ3J1Yl91aW50OF90ICopIHRwIC0gKGdydWJfdWludDhfdCAqKSBw bGFjZTsKKwkgICAgICB9CisKKwkgICAgaWYgKCFncnViX2FybV82NF9jaGVja194eHh4MjZf b2Zmc2V0IChvZmZzZXQpKQorCQlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01P RFVMRSwKKwkJCQkgICBOXygiVHJhbXBvbGluZSBvdXQgb2YgcmFuZ2UiKSk7CisKKwkgICAg Z3J1Yl9hcm02NF9zZXRfeHh4eDI2X29mZnNldCAocGxhY2UsIG9mZnNldCk7CisJICB9CiAJ ICBicmVhazsKIAlkZWZhdWx0OgogCSAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX05P VF9JTVBMRU1FTlRFRF9ZRVQsCkBAIC0xMTksOCArMTc2LDcgQEAgZG9fcmVsWCAoRWxmX1No ZHIgKiByZWxoZHIsIEVsZl9FaGRyICogZSwgZ3J1Yl9kbF90IG1vZCkKICAgICAgIGlmIChy ZXR2YWwgIT0gR1JVQl9FUlJfTk9ORSkKIAlicmVhazsKIAotICAgICAgcmVsID0gKEVsZl9S ZWwgKikgKChncnViX2FkZHJfdCkgcmVsICsgZW50c2l6ZSk7Ci0gICAgICByZWxhKys7Cisg ICAgICByZWwgPSAoRWxmX1JlbCAqKSAoKGdydWJfYWRkcl90KSByZWwgKyByZWxoZHItPnNo X2VudHNpemUpOwogICAgIH0KIAogICByZXR1cm4gcmV0dmFsOwpAQCAtMTU1LDYgKzIxMSw3 IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lk ICplaGRyKQogICBFbGZfRWhkciAqZSA9IGVoZHI7CiAgIEVsZl9TaGRyICpzOwogICB1bnNp Z25lZCBpOworICBzdHJ1Y3QgdHJhbXBvbGluZSAqdHB0ciA9IG1vZC0+dHJhbXA7CiAKICAg aWYgKCFoYXNfc3ltdGFiIChlKSkKICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX01PRFVMRSwgTl8oIm5vIHN5bWJvbCB0YWJsZSIpKTsKQEAgLTE2MywzNCArMjIwLDE0 IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lk ICplaGRyKQogI2RlZmluZSBORVhUX1NIRFIoeCwgeSkgKChFbGZfU2hkciAqKSAoKGdydWJf YWRkcl90KSh5KSArICh4KS0+ZV9zaGVudHNpemUpKQogCiAgIGZvciAoaSA9IDAsIHMgPSBG SVJTVF9TSERSIChlKTsgaSA8IGUtPmVfc2hudW07IGkrKywgcyA9IE5FWFRfU0hEUiAoZSwg cykpCi0gICAgewotICAgICAgZ3J1Yl9lcnJfdCByZXQ7Ci0KLSAgICAgIHN3aXRjaCAocy0+ c2hfdHlwZSkKLQl7Ci0JY2FzZSBTSFRfUkVMOgotCWNhc2UgU0hUX1JFTEE6Ci0JICB7Ci0J ICAgIHJldCA9IGRvX3JlbFggKHMsIGUsIG1vZCk7Ci0JICAgIGlmIChyZXQgIT0gR1JVQl9F UlJfTk9ORSkKLQkgICAgICByZXR1cm4gcmV0OwotCSAgfQotCSAgYnJlYWs7Ci0JY2FzZSBT SFRfQVJNX0FUVFJJQlVURVM6Ci0JY2FzZSBTSFRfTk9CSVRTOgotCWNhc2UgU0hUX05VTEw6 Ci0JY2FzZSBTSFRfUFJPR0JJVFM6Ci0JY2FzZSBTSFRfU1lNVEFCOgotCWNhc2UgU0hUX1NU UlRBQjoKLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICB7Ci0JICAgIGdydWJfZHByaW50ZiAo ImRsIiwgInVuaGFuZGxlZCBzZWN0aW9uX3R5cGU6ICVkICgweCUwOHgpXG4iLAotCQkJICBz LT5zaF90eXBlLCBzLT5zaF90eXBlKTsKLQkgICAgcmV0dXJuIEdSVUJfRVJSX05PVF9JTVBM RU1FTlRFRF9ZRVQ7Ci0JICB9OwotCX0KLSAgICB9CisgICAgaWYgKHMtPnNoX3R5cGUgPT0g U0hUX1JFTAorCXx8IHMtPnNoX3R5cGUgPT0gU0hUX1JFTEEpCisgICAgICB7CisJZ3J1Yl9l cnJfdCByZXQ7CisJcmV0ID0gZG9fcmVsWCAocywgZSwgbW9kLCAmdHB0cik7CisJaWYgKHJl dCAhPSBHUlVCX0VSUl9OT05FKQorCSAgcmV0dXJuIHJldDsKKyAgICAgIH0KIAogI3VuZGVm IEZJUlNUX1NIRFIKICN1bmRlZiBORVhUX1NIRFIKZGlmZiAtLWdpdCBhL2dydWItY29yZS9r ZXJuL2FybTY0L2RsX2hlbHBlci5jIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGxfaGVscGVy LmMKaW5kZXggNmY5OTA4Ny4uZDIxM2FiOSAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4v YXJtNjQvZGxfaGVscGVyLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGxfaGVscGVy LmMKQEAgLTI1LDQ2ICsyNSwzMSBAQAogI2luY2x1ZGUgPGdydWIvaTE4bi5oPgogI2luY2x1 ZGUgPGdydWIvYXJtNjQvcmVsb2MuaD4KIAotc3RhdGljIGdydWJfc3NpemVfdAotc2lnbl9j b21wcmVzc19vZmZzZXQgKGdydWJfc3NpemVfdCBvZmZzZXQsIGludCBiaXRwb3MpCi17Ci0g IHJldHVybiBvZmZzZXQgJiAoKDFMTCA8PCAoYml0cG9zICsgMSkpIC0gMSk7Ci19Ci0KIC8q CiAgKiBncnViX2FybTY0X3JlbG9jX3h4eHgyNigpOgogICoKICAqIEpVTVAyNi9DQUxMMjYg cmVsb2NhdGlvbnMgZm9yIEIgYW5kIEJMIGluc3RydWN0aW9ucy4KICAqLwogCi1ncnViX2Vy cl90Ci1ncnViX2FybTY0X3JlbG9jX3h4eHgyNiAoZ3J1Yl91aW50MzJfdCAqcGxhY2UsIEVs ZjY0X0FkZHIgYWRqdXN0KQoraW50CitncnViX2FybV82NF9jaGVja194eHh4MjZfb2Zmc2V0 IChncnViX2ludDY0X3Qgb2Zmc2V0KQogewotICBncnViX3VpbnQzMl90IGluc3dvcmQsIGlu c21hc2s7Ci0gIGdydWJfc3NpemVfdCBvZmZzZXQ7CiAgIGNvbnN0IGdydWJfc3NpemVfdCBv ZmZzZXRfbG93ID0gLSgxIDw8IDI3KSwgb2Zmc2V0X2hpZ2ggPSAoMSA8PCAyNykgLSAxOwog Ci0gIGluc3dvcmQgPSBncnViX2xlX3RvX2NwdTMyICgqcGxhY2UpOwotICBpbnNtYXNrID0g MHhmYzAwMDAwMDsKLQotICBvZmZzZXQgPSBhZGp1c3Q7Ci0jaWZuZGVmIEdSVUJfVVRJTAot ICBvZmZzZXQgLT0gKGdydWJfYWRkcl90KSBwbGFjZTsKLSNlbmRpZgotCiAgIGlmICgob2Zm c2V0IDwgb2Zmc2V0X2xvdykgfHwgKG9mZnNldCA+IG9mZnNldF9oaWdoKSkKLSAgICB7Ci0g ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSBOXygi Q0FMTDI2IFJlbG9jYXRpb24gb3V0IG9mIHJhbmdlIikpOwotICAgIH0KKyAgICByZXR1cm4g MDsKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQKK2dydWJfYXJtNjRfc2V0X3h4eHgyNl9vZmZz ZXQgKGdydWJfdWludDMyX3QgKnBsYWNlLCBncnViX2ludDY0X3Qgb2Zmc2V0KQoreworICBj b25zdCBncnViX3VpbnQzMl90IGluc21hc2sgPSBncnViX2NwdV90b19sZTMyX2NvbXBpbGVf dGltZSAoMHhmYzAwMDAwMCk7CiAKICAgZ3J1Yl9kcHJpbnRmICgiZGwiLCAiICByZWxvY194 eHh4NjQgJXAgJWM9IDB4JWxseFxuIiwKIAkJcGxhY2UsIG9mZnNldCA+IDAgPyAnKycgOiAn LScsCiAJCW9mZnNldCA8IDAgPyAobG9uZyBsb25nKSAtKHVuc2lnbmVkIGxvbmcgbG9uZykg b2Zmc2V0IDogb2Zmc2V0KTsKIAotICBvZmZzZXQgPSBzaWduX2NvbXByZXNzX29mZnNldCAo b2Zmc2V0LCAyNykgPj4gMjsKLQotICAqcGxhY2UgPSBncnViX2NwdV90b19sZTMyICgoaW5z d29yZCAmIGluc21hc2spIHwgb2Zmc2V0KTsKLQotICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK KyAgKnBsYWNlICY9IGluc21hc2s7CisgICpwbGFjZSB8PSBncnViX2NwdV90b19sZTMyIChv ZmZzZXQgPj4gMikgJiB+aW5zbWFzazsKIH0KZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJu L2RsLmMgYi9ncnViLWNvcmUva2Vybi9kbC5jCmluZGV4IDFkNjg0MTQuLjNiNmU0Y2YgMTAw NjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZGwu YwpAQCAtMjI5LDcgKzIyOSw3IEBAIGdydWJfZGxfbG9hZF9zZWdtZW50cyAoZ3J1Yl9kbF90 IG1vZCwgY29uc3QgRWxmX0VoZHIgKmUpCiAgIHVuc2lnbmVkIGk7CiAgIEVsZl9TaGRyICpz OwogICBncnViX3NpemVfdCB0c2l6ZSA9IDAsIHRhbGlnbiA9IDE7Ci0jaWYgZGVmaW5lZCAo X19pYTY0X18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkIChfX21pcHNf XykKKyNpZiAhZGVmaW5lZCAoX19pMzg2X18pICYmICFkZWZpbmVkIChfX3g4Nl82NF9fKSAm JiAhZGVmaW5lZCAoX19zcGFyY19fKQogICBncnViX3NpemVfdCB0cmFtcDsKICAgZ3J1Yl9z aXplX3QgZ290OwogICBncnViX2Vycl90IGVycjsKQEAgLTI0NSw3ICsyNDUsNyBAQCBncnVi X2RsX2xvYWRfc2VnbWVudHMgKGdydWJfZGxfdCBtb2QsIGNvbnN0IEVsZl9FaGRyICplKQog CXRhbGlnbiA9IHMtPnNoX2FkZHJhbGlnbjsKICAgICB9CiAKLSNpZiBkZWZpbmVkIChfX2lh NjRfXykgfHwgZGVmaW5lZCAoX19wb3dlcnBjX18pIHx8IGRlZmluZWQgKF9fbWlwc19fKQor I2lmICFkZWZpbmVkIChfX2kzODZfXykgJiYgIWRlZmluZWQgKF9feDg2XzY0X18pICYmICFk ZWZpbmVkIChfX3NwYXJjX18pCiAgIGVyciA9IGdydWJfYXJjaF9kbF9nZXRfdHJhbXBfZ290 X3NpemUgKGUsICZ0cmFtcCwgJmdvdCk7CiAgIGlmIChlcnIpCiAgICAgcmV0dXJuIGVycjsK QEAgLTMxNCw3ICszMTQsNyBAQCBncnViX2RsX2xvYWRfc2VnbWVudHMgKGdydWJfZGxfdCBt b2QsIGNvbnN0IEVsZl9FaGRyICplKQogCSAgbW9kLT5zZWdtZW50ID0gc2VnOwogCX0KICAg ICB9Ci0jaWYgZGVmaW5lZCAoX19pYTY0X18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKSB8 fCBkZWZpbmVkIChfX21pcHNfXykKKyNpZiAhZGVmaW5lZCAoX19pMzg2X18pICYmICFkZWZp bmVkIChfX3g4Nl82NF9fKSAmJiAhZGVmaW5lZCAoX19zcGFyY19fKQogICBwdHIgPSAoY2hh ciAqKSBBTElHTl9VUCAoKGdydWJfYWRkcl90KSBwdHIsIEdSVUJfQVJDSF9ETF9UUkFNUF9B TElHTik7CiAgIG1vZC0+dHJhbXAgPSBwdHI7CiAgIHB0ciArPSB0cmFtcDsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvZ3J1Yi9hcm0vcmVsb2MuaCBiL2luY2x1ZGUvZ3J1Yi9hcm0vcmVsb2Mu aAppbmRleCA1MGQwNzBmLi5iOTM4MDM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvYXJt L3JlbG9jLmgKKysrIGIvaW5jbHVkZS9ncnViL2FybS9yZWxvYy5oCkBAIC0yMCw4ICsyMCwy NyBAQAogI2RlZmluZSBHUlVCX0FSTV9SRUxPQ19IIDEKIAogZ3J1Yl9lcnJfdCBncnViX2Fy bV9yZWxvY19hYnMzMiAoZ3J1Yl91aW50MzJfdCAqYWRkciwgRWxmMzJfQWRkciBzeW1fYWRk cik7Ci1ncnViX2Vycl90IGdydWJfYXJtX3JlbG9jX2p1bXAyNCAoZ3J1Yl91aW50MzJfdCAq YWRkciwgRWxmMzJfQWRkciBzeW1fYWRkcik7Ci1ncnViX2Vycl90IGdydWJfYXJtX3JlbG9j X3RobV9jYWxsIChncnViX3VpbnQxNl90ICphZGRyLCBFbGYzMl9BZGRyIHN5bV9hZGRyKTsK LWdydWJfZXJyX3QgZ3J1Yl9hcm1fcmVsb2NfdGhtX2p1bXAxOSAoZ3J1Yl91aW50MTZfdCAq YWRkciwgRWxmMzJfQWRkciBzeW1fYWRkcik7CisKK2ludAorZ3J1Yl9hcm1fdGhtX2NhbGxf Y2hlY2tfb2Zmc2V0IChncnViX2ludDMyX3Qgb2Zmc2V0LCBpbnQgaXNfdGh1bWIpOworZ3J1 Yl9pbnQzMl90CitncnViX2FybV90aG1fY2FsbF9nZXRfb2Zmc2V0IChncnViX3VpbnQxNl90 ICp0YXJnZXQpOworZ3J1Yl9lcnJfdAorZ3J1Yl9hcm1fdGhtX2NhbGxfc2V0X29mZnNldCAo Z3J1Yl91aW50MTZfdCAqdGFyZ2V0LCBncnViX2ludDMyX3Qgb2Zmc2V0KTsKKworZ3J1Yl9p bnQzMl90CitncnViX2FybV90aG1fanVtcDE5X2dldF9vZmZzZXQgKGdydWJfdWludDE2X3Qg KnRhcmdldCk7Cit2b2lkCitncnViX2FybV90aG1fanVtcDE5X3NldF9vZmZzZXQgKGdydWJf dWludDE2X3QgKnRhcmdldCwgZ3J1Yl9pbnQzMl90IG9mZnNldCk7CitpbnQKK2dydWJfYXJt X3RobV9qdW1wMTlfY2hlY2tfb2Zmc2V0IChncnViX2ludDMyX3Qgb2Zmc2V0KTsKKworZ3J1 Yl9pbnQzMl90CitncnViX2FybV9qdW1wMjRfZ2V0X29mZnNldCAoZ3J1Yl91aW50MzJfdCAq dGFyZ2V0KTsKK2ludAorZ3J1Yl9hcm1fanVtcDI0X2NoZWNrX29mZnNldCAoZ3J1Yl9pbnQz Ml90IG9mZnNldCk7Cit2b2lkCitncnViX2FybV9qdW1wMjRfc2V0X29mZnNldCAoZ3J1Yl91 aW50MzJfdCAqdGFyZ2V0LAorCQkJICAgIGdydWJfaW50MzJfdCBvZmZzZXQpOwogCiAjZW5k aWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9hcm02NC9yZWxvYy5oIGIvaW5jbHVkZS9n cnViL2FybTY0L3JlbG9jLmgKaW5kZXggNjA2ZDcxYy4uNGFlZDNkNyAxMDA2NDQKLS0tIGEv aW5jbHVkZS9ncnViL2FybTY0L3JlbG9jLmgKKysrIGIvaW5jbHVkZS9ncnViL2FybTY0L3Jl bG9jLmgKQEAgLTE5LDYgKzE5LDggQEAKICNpZm5kZWYgR1JVQl9BUk02NF9SRUxPQ19ICiAj ZGVmaW5lIEdSVUJfQVJNNjRfUkVMT0NfSCAxCiAKLWdydWJfZXJyX3QgZ3J1Yl9hcm02NF9y ZWxvY194eHh4MjYgKGdydWJfdWludDMyX3QgKnRhcmdldCwgRWxmNjRfQWRkciBzeW1fYWRk cik7CitpbnQgZ3J1Yl9hcm1fNjRfY2hlY2tfeHh4eDI2X29mZnNldCAoZ3J1Yl9pbnQ2NF90 IG9mZnNldCk7Cit2b2lkCitncnViX2FybTY0X3NldF94eHh4MjZfb2Zmc2V0IChncnViX3Vp bnQzMl90ICpwbGFjZSwgZ3J1Yl9pbnQ2NF90IG9mZnNldCk7CiAKICNlbmRpZgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9ncnViL2RsLmggYi9pbmNsdWRlL2dydWIvZGwuaAppbmRleCBkMWQy MGQ5Li4yNjNlODM5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvZGwuaAorKysgYi9pbmNs dWRlL2dydWIvZGwuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0cnVjdCBncnViX2RsCiAgIEVs Zl9TeW0gKnN5bXRhYjsKICAgdm9pZCAoKmluaXQpIChzdHJ1Y3QgZ3J1Yl9kbCAqbW9kKTsK ICAgdm9pZCAoKmZpbmkpICh2b2lkKTsKLSNpZiBkZWZpbmVkIChfX2lhNjRfXykgfHwgZGVm aW5lZCAoX19wb3dlcnBjX18pIHx8IGRlZmluZWQgKF9fbWlwc19fKQorI2lmICFkZWZpbmVk IChfX2kzODZfXykgJiYgIWRlZmluZWQgKF9feDg2XzY0X18pICYmICFkZWZpbmVkIChfX3Nw YXJjX18pCiAgIHZvaWQgKmdvdDsKICAgdm9pZCAqdHJhbXA7CiAjZW5kaWYKQEAgLTI1Niwx MSArMjU2LDE2IEBAIGdydWJfYXJjaF9kbF9nZXRfdHJhbXBfZ290X3NpemUgKGNvbnN0IHZv aWQgKmVoZHIsIGdydWJfc2l6ZV90ICp0cmFtcCwKIAkJCQkgZ3J1Yl9zaXplX3QgKmdvdCk7 CiAjZW5kaWYKIAotI2lmIGRlZmluZWQgKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkIChfX21p cHNfXykKKyNpZiBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZCAoX19taXBzX18p IHx8IGRlZmluZWQgKF9fYXJtX18pCiAjZGVmaW5lIEdSVUJfQVJDSF9ETF9UUkFNUF9BTElH TiA0CiAjZGVmaW5lIEdSVUJfQVJDSF9ETF9HT1RfQUxJR04gNAogI2VuZGlmCiAKKyNpZiBk ZWZpbmVkIChfX2FhcmNoNjRfXykKKyNkZWZpbmUgR1JVQl9BUkNIX0RMX1RSQU1QX0FMSUdO IDgKKyNkZWZpbmUgR1JVQl9BUkNIX0RMX0dPVF9BTElHTiA4CisjZW5kaWYKKwogI2VuZGlm CiAKICNlbmRpZiAvKiAhIEdSVUJfRExfSCAqLwpkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1r aW1hZ2V4eC5jIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCmluZGV4IDUyNDBmZTIuLmUyZTU5 OGUgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYworKysgYi91dGlsL2dydWIt bWtpbWFnZXh4LmMKQEAgLTczMSwxMyArNzMxLDEzIEBAIFNVRkZJWCAocmVsb2NhdGVfYWRk cmVzc2VzKSAoRWxmX0VoZHIgKmUsIEVsZl9TaGRyICpzZWN0aW9ucywKIAkJICAgY2FzZSBS X0FBUkNINjRfSlVNUDI2OgogCQkgICBjYXNlIFJfQUFSQ0g2NF9DQUxMMjY6CiAJCSAgICAg ewotCQkgICAgICAgZ3J1Yl9lcnJfdCBlcnI7CiAJCSAgICAgICBzeW1fYWRkciAtPSBvZmZz ZXQ7CiAJCSAgICAgICBzeW1fYWRkciAtPSBTVUZGSVggKGVudHJ5X3BvaW50KTsKLQkJICAg ICAgIGVyciA9IGdydWJfYXJtNjRfcmVsb2NfeHh4eDI2KChncnViX3VpbnQzMl90ICopdGFy Z2V0LAorCQkgICAgICAgaWYgKCFncnViX2FybV82NF9jaGVja194eHh4MjZfb2Zmc2V0IChz eW1fYWRkcikpCisJCQkgZ3J1Yl91dGlsX2Vycm9yICgiJXMiLCBfKCJDQUxMMjYgUmVsb2Nh dGlvbiBvdXQgb2YgcmFuZ2UiKSk7CisKKwkJICAgICAgIGdydWJfYXJtNjRfc2V0X3h4eHgy Nl9vZmZzZXQoKGdydWJfdWludDMyX3QgKil0YXJnZXQsCiAJCQkJCQkgICAgIHN5bV9hZGRy KTsKLQkJICAgICAgIGlmIChlcnIpCi0JCQkgZ3J1Yl91dGlsX2Vycm9yICgiJXMiLCBncnVi X2Vycm1zZyk7CiAJCSAgICAgfQogCQkgICAgIGJyZWFrOwogCQkgICBkZWZhdWx0OgpAQCAt NzY0LDYgKzc2NCwxMSBAQCBTVUZGSVggKHJlbG9jYXRlX2FkZHJlc3NlcykgKEVsZl9FaGRy ICplLCBFbGZfU2hkciAqc2VjdGlvbnMsCiAJCSAgICAgICAqdGFyZ2V0ID0gZ3J1Yl9ob3N0 X3RvX3RhcmdldDMyIChncnViX3RhcmdldF90b19ob3N0MzIgKCp0YXJnZXQpICsgc3ltX2Fk ZHIpOwogCQkgICAgIH0KIAkJICAgICBicmVhazsKKwkJICAgICAvKiBIYXBwZW5zIHdoZW4g Y29tcGlsZWQgd2l0aCAtbWFyY2g9YXJtdjQuCisJCQlTaW5jZSBjdXJyZW50bHkgd2UgbmVl ZCBhdCBsZWFzdCBhcm12NSwga2VlcCBieCBhcy1pcy4KKwkJICAgICAqLworCQkgICBjYXNl IFJfQVJNX1Y0Qlg6CisJCSAgICAgYnJlYWs7CiAJCSAgIGNhc2UgUl9BUk1fVEhNX0NBTEw6 CiAJCSAgIGNhc2UgUl9BUk1fVEhNX0pVTVAyNDoKIAkJICAgICB7CkBAIC03OTAsNiArNzk1 LDIwIEBAIFNVRkZJWCAocmVsb2NhdGVfYWRkcmVzc2VzKSAoRWxmX0VoZHIgKmUsIEVsZl9T aGRyICpzZWN0aW9ucywKIAkJCSBncnViX3V0aWxfZXJyb3IgKCIlcyIsIGdydWJfZXJybXNn KTsKIAkJICAgICB9CiAJCSAgICAgYnJlYWs7CisKKwkJICAgY2FzZSBSX0FSTV9DQUxMOgor CQkgICBjYXNlIFJfQVJNX0pVTVAyNDoKKwkJICAgICB7CisJCSAgICAgICBncnViX2Vycl90 IGVycjsKKwkJICAgICAgIGdydWJfdXRpbF9pbmZvICgiICBKVU1QMjQ6XHR0YXJnZXQ9MHgl MDhseFx0b2Zmc2V0PSgweCUwOHgpIiwJKHVuc2lnbmVkIGxvbmcpIHRhcmdldCwgc3ltX2Fk ZHIpOworCQkgICAgICAgc3ltX2FkZHIgLT0gb2Zmc2V0OworCQkgICAgICAgZXJyID0gZ3J1 Yl9hcm1fcmVsb2NfanVtcDI0ICh0YXJnZXQsCisJCQkJCQkgICAgc3ltX2FkZHIpOworCQkg ICAgICAgaWYgKGVycikKKwkJCSBncnViX3V0aWxfZXJyb3IgKCIlcyIsIGdydWJfZXJybXNn KTsKKwkJICAgICB9CisJCSAgICAgYnJlYWs7CisKIAkJICAgZGVmYXVsdDoKIAkJICAgICBn cnViX3V0aWxfZXJyb3IgKF8oInJlbG9jYXRpb24gMHgleCBpcyBub3QgaW1wbGVtZW50ZWQg eWV0ISIpLCBFTEZfUl9UWVBFIChpbmZvKSk7CiAJCSAgICAgYnJlYWs7CkBAIC0xMDU0LDEx ICsxMDczLDEzIEBAIFNVRkZJWCAobWFrZV9yZWxvY19zZWN0aW9uKSAoRWxmX0VoZHIgKmUs IHZvaWQgKipvdXQsCiAJICAgICAgY2FzZSBFTV9BUk06CiAJCXN3aXRjaCAoRUxGX1JfVFlQ RSAoaW5mbykpCiAJCSAgeworCQkgIGNhc2UgUl9BUk1fVjRCWDoKIAkJICAgIC8qIFJlbGF0 aXZlIHJlbG9jYXRpb25zIGRvIG5vdCByZXF1aXJlIGZpeHVwIGVudHJpZXMuICovCiAJCSAg Y2FzZSBSX0FSTV9KVU1QMjQ6CiAJCSAgY2FzZSBSX0FSTV9USE1fQ0FMTDoKIAkJICBjYXNl IFJfQVJNX1RITV9KVU1QMTk6CiAJCSAgY2FzZSBSX0FSTV9USE1fSlVNUDI0OgorCQkgIGNh c2UgUl9BUk1fQ0FMTDoKIAkJICAgIHsKIAkJICAgICAgRWxmX0FkZHIgYWRkcjsKIApkaWZm IC0tZ2l0IGEvdXRpbC9ta2ltYWdlLmMgYi91dGlsL21raW1hZ2UuYwppbmRleCA5YjQ4Mjcx Li40MWI1MWRmIDEwMDY0NAotLS0gYS91dGlsL21raW1hZ2UuYworKysgYi91dGlsL21raW1h Z2UuYwpAQCAtODMxLDYgKzgzMSw5NCBAQCBzdHJ1Y3QgZml4dXBfYmxvY2tfbGlzdAogICBz dHJ1Y3QgZ3J1Yl9wZTMyX2ZpeHVwX2Jsb2NrIGI7CiB9OwogCisvKgorICogUl9BUk1fVEhN X0NBTEwvVEhNX0pVTVAyNAorICoKKyAqIFJlbG9jYXRlIFRodW1iIChUMzIpIGluc3RydWN0 aW9uIHNldCByZWxhdGl2ZSBicmFuY2hlczoKKyAqICAgQi5XLCBCTCBhbmQgQkxYCisgKi8K K3N0YXRpYyBncnViX2Vycl90CitncnViX2FybV9yZWxvY190aG1fY2FsbCAoZ3J1Yl91aW50 MTZfdCAqdGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQoreworICBncnViX2ludDMyX3Qg b2Zmc2V0OworCisgIG9mZnNldCA9IGdydWJfYXJtX3RobV9jYWxsX2dldF9vZmZzZXQgKHRh cmdldCk7CisKKyAgZ3J1Yl9kcHJpbnRmICgiZGwiLCAiICAgIHN5bV9hZGRyID0gMHglMDh4 Iiwgc3ltX2FkZHIpOworCisgIG9mZnNldCArPSBzeW1fYWRkcjsKKworICBncnViX2Rwcmlu dGYoImRsIiwgIiBCTCo6IHRhcmdldD0lcCwgc3ltX2FkZHI9MHglMDh4LCBvZmZzZXQ9JWRc biIsCisJICAgICAgIHRhcmdldCwgc3ltX2FkZHIsIG9mZnNldCk7CisKKyAgLyogS2VlcCB0 cmFkaXRpb25hbCAocHJlLVRodW1iMikgbGltaXRzIG9uIGJseC4gSW4gYW55IGNhc2UgaWYg dGhlIGtlcm5lbAorICAgICBpcyBiaWdnZXIgdGhhbiAyTSAgKGN1cnJlbnRseSB1bmRlciAx NTBLKSB0aGVuIHdlIHByb2JhYmx5IGhhdmUgYSBwcm9ibGVtCisgICAgIHNvbWV3aGVyZSBl bHNlLiAgKi8KKyAgaWYgKG9mZnNldCA8IC0weDIwMDAwMCB8fCBvZmZzZXQgPj0gMHgyMDAw MDApCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCisJCSAg ICAgICBOXygiVEhNX0NBTEwgUmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UuIikpOworCisgIGdy dWJfZHByaW50ZiAoImRsIiwgIiAgICByZWxhdGl2ZSBkZXN0aW5hdGlvbiA9ICVwIiwKKwkJ KGNoYXIgKikgdGFyZ2V0ICsgb2Zmc2V0KTsKKworICByZXR1cm4gZ3J1Yl9hcm1fdGhtX2Nh bGxfc2V0X29mZnNldCAodGFyZ2V0LCBvZmZzZXQpOworfQorCisvKgorICogUl9BUk1fVEhN X0pVTVAxOQorICoKKyAqIFJlbG9jYXRlIGNvbmRpdGlvbmFsIFRodW1iIChUMzIpIEI8Yz4u VworICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9hcm1fcmVsb2NfdGhtX2p1bXAxOSAo Z3J1Yl91aW50MTZfdCAqdGFyZ2V0LCBFbGYzMl9BZGRyIHN5bV9hZGRyKQoreworICBncnVi X2ludDMyX3Qgb2Zmc2V0OworCisgIGlmICghKHN5bV9hZGRyICYgMSkpCisgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCisJCSAgICAgICBOXygiUmVsb2Nh dGlvbiB0YXJnZXRpbmcgd3JvbmcgZXhlY3V0aW9uIHN0YXRlIikpOworCisgIG9mZnNldCA9 IGdydWJfYXJtX3RobV9qdW1wMTlfZ2V0X29mZnNldCAodGFyZ2V0KTsKKworICAvKiBBZGp1 c3QgYW5kIHJlLXRydW5jYXRlIG9mZnNldCAqLworICBvZmZzZXQgKz0gc3ltX2FkZHI7CisK KyAgaWYgKCFncnViX2FybV90aG1fanVtcDE5X2NoZWNrX29mZnNldCAob2Zmc2V0KSkKKyAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKKwkJICAgICAgIE5f KCJUSE1fSlVNUDE5IFJlbG9jYXRpb24gb3V0IG9mIHJhbmdlLiIpKTsKKworICBncnViX2Fy bV90aG1fanVtcDE5X3NldF9vZmZzZXQgKHRhcmdldCwgb2Zmc2V0KTsKKworICByZXR1cm4g R1JVQl9FUlJfTk9ORTsKK30KKworLyoKKyAqIFJfQVJNX0pVTVAyNAorICoKKyAqIFJlbG9j YXRlIEFSTSAoQTMyKSBCCisgKi8KK3N0YXRpYyBncnViX2Vycl90CitncnViX2FybV9yZWxv Y19qdW1wMjQgKGdydWJfdWludDMyX3QgKnRhcmdldCwgRWxmMzJfQWRkciBzeW1fYWRkcikK K3sKKyAgZ3J1Yl9pbnQzMl90IG9mZnNldDsKKworICBpZiAoc3ltX2FkZHIgJiAxKQorICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLAorCQkgICAgICAgTl8o IlJlbG9jYXRpb24gdGFyZ2V0aW5nIHdyb25nIGV4ZWN1dGlvbiBzdGF0ZSIpKTsKKworICBv ZmZzZXQgPSBncnViX2FybV9qdW1wMjRfZ2V0X29mZnNldCAodGFyZ2V0KTsKKyAgb2Zmc2V0 ICs9IHN5bV9hZGRyOworCisgIGlmICghZ3J1Yl9hcm1fanVtcDI0X2NoZWNrX29mZnNldCAo b2Zmc2V0KSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwK KwkJICAgICAgIE5fKCJKVU1QMjQgUmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UuIikpOworCisK KyAgZ3J1Yl9hcm1fanVtcDI0X3NldF9vZmZzZXQgKHRhcmdldCwgb2Zmc2V0KTsKKworICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v cmVkICItV2Nhc3QtYWxpZ24iCiAKICNkZWZpbmUgTUtJTUFHRV9FTEYzMiAxCg== --------------020102040700060300080209-- ------enig2SAKRKEHXHBRQCMNEQPGA Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iF4EAREKAAYFAlKa0egACgkQmBXlbbo5nOuyfwEAkPfhLx6CNfkp7JnOnzmeuwkm OQQKw5G13FuTx4Ikn0EA/izfBMTIXIuN249anVfECPczr4BITRuOFe1dlG7xO+fy =eX9V -----END PGP SIGNATURE----- ------enig2SAKRKEHXHBRQCMNEQPGA--