From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 07/34] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables Date: Tue, 15 Mar 2016 13:56:29 -0400 Message-ID: <1458064616-23101-8-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGk-0001JQ-KT for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:34 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org bG9va3VwLgoKRHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgaHlwZXJ2aXNvciB3ZSBoYXZlIHR3byBy ZWdpb25zIG9mCmV4ZWN1dGFibGUgY29kZSAtIHN0ZXh0IC0+IF9ldGV4dCwgYW5kIF9zaW5pdHRl eHQgLT4gX2Vpbml0ZXh0LgoKVGhlIGxhdGVyIGlzIG5vdCBuZWVkZWQgYWZ0ZXIgYm9vdHVwLgoK V2UgYWxzbyBoYXZlIHZhcmlvdXMgYnVpbHQtaW4gbWFjcm9zIGFuZCBmdW5jdGlvbnMgdG8gc2Vh cmNoCmluIGJldHdlZW4gdGhvc2UgdHdvIHN3YXRocyBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9m IHRoZSBzeXN0ZW0uCgpUaGF0IGlzIGVpdGhlciBmb3IgYnVnX2ZyYW1lcywgZXhjZXB0aW9ucyAo eDg2KSBvciBzeW1ib2wKbmFtZXMgZm9yIHRoZSBpbnN0cnVjdGlvbi4KCldpdGggeFNwbGljZSBp biB0aGUgcGljdHVyZSAtIHdlIG5lZWQgYSBtZWNoYW5zaW0gZm9yIG5ldyBwYXlsb2Fkcwp0byBz ZWFyY2hlZCBhcyB3ZWxsIGZvciBhbGwgb2YgdGhpcy4KCk9yaWdpbmFsbHkgd2UgaGFkIGV4dHJh ICdpZiAoeHNwbGljZSkuLi4nIGJ1dCB0aGF0IGdldHMKYSBiaXQgdGlyaW5nIGFuZCBkb2VzIG5v dCBob29rIHVwIG5pY2VseS4KClRoaXMgJ3N0cnVjdCB2aXJ0dWFsX3JlZ2lvbicgYW5kIHZpcnR1 YWxfcmVnaW9uX2xpc3QgcHJvdmlkZSBhCm1lY2hhbmlzbSB0byBzZWFyY2ggZm9yIHRoZSBidWdf ZnJhbWVzLGV4Y2VwdGlvbiB0YWJsZSwKYW5kIHN5bWJvbCBuYW1lcyBlbnRyaWVzIHdpdGhvdXQg aGF2aW5nIHZhcmlvdXMgY2FsbHMgaW4Kb3RoZXIgc3ViLWNvbXBvbmVudHMgaW4gdGhlIHN5c3Rl bS4KCkNvZGUgd2hpY2ggd2lzaGVzIHRvIHBhcnRpY2lwYXRlIGluIGJ1Z19mcmFtZXMgYW5kIGV4 Y2VwdGlvbiB0YWJsZQplbnRyaWVzIHNlYXJjaCBoYXMgdG8gb25seSB1c2UgdHdvIHB1YmxpYyBB UElzOgogLSByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbgogLSB1bnJlZ2lzdGVyX3ZpcnR1YWxfcmVn aW9uCgp0byBsZXQgdGhlIGNvcmUgY29kZSBrbm93LiBGdXJ0aGVybW9yZSB0aGVyZSBhcmUgYWxz byBvdmVycmlkZXMKdmlhIHRoZSAuc2tpcCBmdW5jdGlvbi4gVGhlcmUgYXJlIHRocmVlIHBvc3Np YmxlIGZsYWdzIHRoYXQKY2FuIGJlIHBhc3NlZCBpbiAtIGRlcGVuZGluZyBvbiB3aGF0IGtpbmQg b2Ygc2VhcmNoIGlzIGJlaW5nCmRvbmUuIEEgcmV0dXJuIG9mIDEgbWVhbnMgc2tpcCB0aGlzIHJl Z2lvbi4gSWYgdGhlIC5za2lwIGlzCk5VTEwgdGhlIHJlZ2lvbiB3aWxsIGJlIGNvbnNpZGVyZWQu CgpUaGUgLT5sb29rdXBfc3ltYm9sIHdpbGwgb25seSBiZSB1c2VkIGlmIC0+c2tpcCByZXR1cm5z IDEKZm9yIENIRUNLSU5HX1NZTUJPTFMgKGFuZCBvZiBjb3Vyc2UgaWYgaXQgcG9pbnRzIHRvCmEg ZnVuY3Rpb24pLiBPdGhlcndpc2UgdGhlIGRlZmF1bHQgaW50ZXJuYWwgc3ltYm9sIGxvb2t1cApt ZWNoYW5pc20gaXMgdXNlZC4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZh bm8uc3RhYmVsbGluaUBjaXRyaXguY29tPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxA YXJtLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgotLS0KLS0tCiB4ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgICAgICB8ICA0NSAr KysrKysrKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9leHRhYmxlLmMgICAgICAgICAgIHwgIDE2ICsr KysrLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgfCAgIDMgKy0KIHhlbi9hcmNo L3g4Ni90cmFwcy5jICAgICAgICAgICAgIHwgIDQ2ICsrKysrKysrKy0tLS0tLQogeGVuL2NvbW1v bi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi9idWdfZXhfc3ltYm9s cy5jICAgICAgfCAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4 ZW4vY29tbW9uL3N5bWJvbHMuYyAgICAgICAgICAgICB8ICAyOSArKysrKysrKystCiB4ZW4vaW5j bHVkZS94ZW4vYnVnX2V4X3N5bWJvbHMuaCB8ICA3NCArKysrKysrKysrKysrKysrKysrKysrKysK IHhlbi9pbmNsdWRlL3hlbi9rZXJuZWwuaCAgICAgICAgIHwgICAyICsKIHhlbi9pbmNsdWRlL3hl bi9zeW1ib2xzLmggICAgICAgIHwgICA5ICsrKwogMTAgZmlsZXMgY2hhbmdlZCwgMzA3IGluc2Vy dGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24v YnVnX2V4X3N5bWJvbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9idWdf ZXhfc3ltYm9scy5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJj aC9hcm0vdHJhcHMuYwppbmRleCAzMWQyMTE1Li5iNjJjOTFmIDEwMDY0NAotLS0gYS94ZW4vYXJj aC9hcm0vdHJhcHMuYworKysgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwpAQCAtMTYsNiArMTYsNyBA QAogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqLwog CisjaW5jbHVkZSA8eGVuL2J1Z19leF9zeW1ib2xzLmg+CiAjaW5jbHVkZSA8eGVuL2NvbmZpZy5o PgogI2luY2x1ZGUgPHhlbi9zdGRib29sLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KQEAgLTEw MSw2ICsxMDIsOCBAQCBpbnRlZ2VyX3BhcmFtKCJkZWJ1Z19zdGFja19saW5lcyIsIGRlYnVnX3N0 YWNrX2xpbmVzKTsKIAogdm9pZCBpbml0X3RyYXBzKHZvaWQpCiB7CisgICAgc2V0dXBfdmlydHVh bF9yZWdpb25zKCk7CisKICAgICAvKiBTZXR1cCBIeXAgdmVjdG9yIGJhc2UgKi8KICAgICBXUklU RV9TWVNSRUcoKHZhZGRyX3QpaHlwX3RyYXBzX3ZlY3RvciwgVkJBUl9FTDIpOwogCkBAIC0xMDc3 LDI3ICsxMDgwLDM5IEBAIHZvaWQgZG9fdW5leHBlY3RlZF90cmFwKGNvbnN0IGNoYXIgKm1zZywg c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAKIGludCBkb19idWdfZnJhbWUoc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MsIHZhZGRyX3QgcGMpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGJ1Z19m cmFtZSAqYnVnOworICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZyA9IE5VTEw7CiAgICAg Y29uc3QgY2hhciAqcHJlZml4ID0gIiIsICpmaWxlbmFtZSwgKnByZWRpY2F0ZTsKICAgICB1bnNp Z25lZCBsb25nIGZpeHVwOwotICAgIGludCBpZCwgbGluZW5vOwotICAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgYnVnX2ZyYW1lICpjb25zdCBzdG9wX2ZyYW1lc1tdID0gewotICAgICAgICBfX3N0b3Bf YnVnX2ZyYW1lc18wLAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18xLAotICAgICAgICBfX3N0 b3BfYnVnX2ZyYW1lc18yLAotICAgICAgICBOVUxMCi0gICAgfTsKKyAgICBpbnQgaWQgPSAtMSwg bGluZW5vOworICAgIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOwogCi0gICAgZm9yICgg YnVnID0gX19zdGFydF9idWdfZnJhbWVzLCBpZCA9IDA7IHN0b3BfZnJhbWVzW2lkXTsgKytidWcg KQorICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIHJlZ2lvbiwgJnZpcnR1YWxfcmVnaW9uX2xpc3Qs IGxpc3QgKQogICAgIHsKLSAgICAgICAgd2hpbGUgKCB1bmxpa2VseShidWcgPT0gc3RvcF9mcmFt ZXNbaWRdKSApCi0gICAgICAgICAgICArK2lkOworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKIAot ICAgICAgICBpZiAoICgodmFkZHJfdClidWdfbG9jKGJ1ZykpID09IHBjICkKLSAgICAgICAgICAg IGJyZWFrOwotICAgIH0KKyAgICAgICAgaWYgKCByZWdpb24tPnNraXAgJiYgcmVnaW9uLT5za2lw KENIRUNLSU5HX0JVR19GUkFNRSwgcmVnaW9uLT5wcml2KSApCisgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICBpZiAoIHBjIDwgcmVnaW9uLT5zdGFydCB8fCBwYyA+IHJlZ2lvbi0+ZW5k ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgaWYgKCAhc3RvcF9mcmFtZXNbaWRdICkK KyAgICAgICAgZm9yICggaWQgPSAwOyBpZCA8IEJVR0ZSQU1FX05SOyBpZCsrICkKKyAgICAgICAg eworICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYiA9IE5VTEw7CisKKyAgICAg ICAgICAgIGZvciAoIGkgPSAwLCBiID0gcmVnaW9uLT5mcmFtZVtpZF0uYnVnczsKKyAgICAgICAg ICAgICAgICAgIGkgPCByZWdpb24tPmZyYW1lW2lkXS5uX2J1Z3M7IGIrKywgaSsrICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoICgodmFkZHJfdClidWdfbG9jKGIpKSA9PSBw YyApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBidWcgPSBiOworICAg ICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyBmb3VuZDoKKyAgICBpZiAoICFidWcgKQogICAgICAg ICByZXR1cm4gLUVOT0VOVDsKIAogICAgIC8qIFdBUk4sIEJVRyBvciBBU1NFUlQ6IGRlY29kZSB0 aGUgZmlsZW5hbWUgcG9pbnRlciBhbmQgbGluZSBudW1iZXIuICovCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvZXh0YWJsZS5jIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwppbmRleCA4OWI1YmNi Li42ZTA4M2E4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9leHRhYmxlLmMKQEAgLTEsNiArMSw4IEBACiAKKyNpbmNsdWRlIDx4ZW4vYnVnX2V4 X3N5bWJvbHMuaD4KICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQu aD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgogI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgogI2luY2x1 ZGUgPHhlbi9zb3J0Lmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CkBAIC04MCw4ICs4Miwx OCBAQCBzZWFyY2hfb25lX3RhYmxlKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkg KmZpcnN0LAogdW5zaWduZWQgbG9uZwogc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBs b25nIGFkZHIpCiB7Ci0gICAgcmV0dXJuIHNlYXJjaF9vbmVfdGFibGUoCi0gICAgICAgIF9fc3Rh cnRfX19leF90YWJsZSwgX19zdG9wX19fZXhfdGFibGUtMSwgYWRkcik7CisgICAgc3RydWN0IHZp cnR1YWxfcmVnaW9uICpyZWdpb247CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KCByZWdpb24s ICZ2aXJ0dWFsX3JlZ2lvbl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggcmVnaW9u LT5za2lwICYmIHJlZ2lvbi0+c2tpcChDSEVDS0lOR19FWENFUFRJT04sIHJlZ2lvbi0+cHJpdikg KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCAoYWRkciA+PSByZWdpb24t PnN0YXJ0KSAmJiAoYWRkciA8IHJlZ2lvbi0+ZW5kKSApCisgICAgICAgICAgICByZXR1cm4gc2Vh cmNoX29uZV90YWJsZShyZWdpb24tPmV4LCByZWdpb24tPmV4X2VuZC0xLCBhZGRyKTsKKyAgICB9 CisKKyAgICByZXR1cm4gMDsKIH0KIAogdW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwppbmRleCBhOGJmMmM5Li4xMTVl NmZkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAuYworKysgYi94ZW4vYXJjaC94ODYv c2V0dXAuYwpAQCAtMSwzICsxLDQgQEAKKyNpbmNsdWRlIDx4ZW4vYnVnX2V4X3N5bWJvbHMuaD4K ICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRl IDx4ZW4vbGliLmg+CkBAIC02MTQsOCArNjE1LDggQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19z dGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICBsb2FkX3N5c3RlbV90YWJsZXMoKTsK IAogICAgIHNtcF9wcmVwYXJlX2Jvb3RfY3B1KCk7Ci0gICAgc29ydF9leGNlcHRpb25fdGFibGVz KCk7CiAKKyAgICBzZXR1cF92aXJ0dWFsX3JlZ2lvbnMoKTsKICAgICAvKiBGdWxsIGV4Y2VwdGlv biBzdXBwb3J0IGZyb20gaGVyZSBvbiBpbi4gKi8KIAogICAgIGxvYWRlciA9IChtYmktPmZsYWdz ICYgTUJJX0xPQURFUk5BTUUpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhcHMuYyBiL3hl bi9hcmNoL3g4Ni90cmFwcy5jCmluZGV4IDU2NGExMDcuLmVlYWRhOTcgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jCkBAIC0yNCw2ICsy NCw3IEBACiAgKiBHYXJldGggSHVnaGVzIDxnYXJldGhAdmFsaW51eC5jb20+LCBNYXkgMjAwMAog ICovCiAKKyNpbmNsdWRlIDx4ZW4vYnVnX2V4X3N5bWJvbHMuaD4KICNpbmNsdWRlIDx4ZW4vY29u ZmlnLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KQEAg LTExMzIsMTggKzExMzMsMTIgQEAgc3RhdGljIGludCBlbXVsYXRlX2ZvcmNlZF9pbnZhbGlkX29w KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogCiB2b2lkIGRvX2ludmFsaWRfb3Aoc3RydWN0 IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVn OworICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZyA9IE5VTEw7CiAgICAgdTggYnVnX2lu c25bMl07CiAgICAgY29uc3QgY2hhciAqcHJlZml4ID0gIiIsICpmaWxlbmFtZSwgKnByZWRpY2F0 ZSwgKmVpcCA9IChjaGFyICopcmVncy0+ZWlwOwogICAgIHVuc2lnbmVkIGxvbmcgZml4dXA7Ci0g ICAgaW50IGlkLCBsaW5lbm87Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmNv bnN0IHN0b3BfZnJhbWVzW10gPSB7Ci0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCi0gICAg ICAgIF9fc3RvcF9idWdfZnJhbWVzXzEsCi0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIsCi0g ICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzMsCi0gICAgICAgIE5VTEwKLSAgICB9OworICAgIGlu dCBpZCA9IC0xLCBsaW5lbm87CisgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CiAK ICAgICBERUJVR0dFUl90cmFwX2VudHJ5KFRSQVBfaW52YWxpZF9vcCwgcmVncyk7CiAKQEAgLTEx NjAsMTYgKzExNTUsMzUgQEAgdm9pZCBkb19pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQogICAgICAgICAgbWVtY21wKGJ1Z19pbnNuLCAiXHhmXHhiIiwgc2l6ZW9mKGJ1Z19p bnNuKSkgKQogICAgICAgICBnb3RvIGRpZTsKIAotICAgIGZvciAoIGJ1ZyA9IF9fc3RhcnRfYnVn X2ZyYW1lcywgaWQgPSAwOyBzdG9wX2ZyYW1lc1tpZF07ICsrYnVnICkKKyAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5KCByZWdpb24sICZ2aXJ0dWFsX3JlZ2lvbl9saXN0LCBsaXN0ICkKICAgICB7Ci0g ICAgICAgIHdoaWxlICggdW5saWtlbHkoYnVnID09IHN0b3BfZnJhbWVzW2lkXSkgKQotICAgICAg ICAgICAgKytpZDsKLSAgICAgICAgaWYgKCBidWdfbG9jKGJ1ZykgPT0gZWlwICkKLSAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgICAgICBpZiAoIHJlZ2lv bi0+c2tpcCAmJiByZWdpb24tPnNraXAoQ0hFQ0tJTkdfQlVHX0ZSQU1FLCByZWdpb24tPnByaXYp ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggcmVncy0+ZWlwIDwgcmVn aW9uLT5zdGFydCB8fCByZWdzLT5laXAgPiByZWdpb24tPmVuZCApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICBmb3IgKCBpZCA9IDA7IGlkIDwgQlVHRlJBTUVfTlI7IGlkKysgKQor ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpiID0gTlVMTDsK KworICAgICAgICAgICAgZm9yICggaSA9IDAsIGIgPSByZWdpb24tPmZyYW1lW2lkXS5idWdzOwor ICAgICAgICAgICAgICAgICAgaSA8IHJlZ2lvbi0+ZnJhbWVbaWRdLm5fYnVnczsgYisrLCBpKysg KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggYnVnX2xvYyhiKSA9PSBlaXAg KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnVnID0gYjsKKyAgICAg ICAgICAgICAgICAgICAgZ290byBmb3VuZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCAhc3RvcF9mcmFtZXNbaWRdICkKLSAgICAg ICAgZ290byBkaWU7CiAKKyBmb3VuZDoKKyAgICBpZiAoICFidWcgKQorICAgICAgICBnb3RvIGRp ZTsKICAgICBlaXAgKz0gc2l6ZW9mKGJ1Z19pbnNuKTsKICAgICBpZiAoIGlkID09IEJVR0ZSQU1F X3J1bl9mbiApCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9j b21tb24vTWFrZWZpbGUKaW5kZXggODI2MjVhNS4uNzZkN2IwNyAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAog b2JqLXkgKz0gYml0bWFwLm8KK29iai15ICs9IGJ1Z19leF9zeW1ib2xzLm8KIG9iai0kKENPTkZJ R19DT1JFX1BBUktJTkcpICs9IGNvcmVfcGFya2luZy5vCiBvYmoteSArPSBjcHUubwogb2JqLXkg Kz0gY3B1cG9vbC5vCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2J1Z19leF9zeW1ib2xzLmMgYi94 ZW4vY29tbW9uL2J1Z19leF9zeW1ib2xzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNzdiYjcyYgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vYnVnX2V4X3N5bWJv bHMuYwpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUg YW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisj aW5jbHVkZSA8eGVuL2J1Z19leF9zeW1ib2xzLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor I2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUg PHhlbi9zcGlubG9jay5oPgorCitleHRlcm4gY2hhciBfX3N0ZXh0W107CisKK3N0cnVjdCB2aXJ0 dWFsX3JlZ2lvbiBrZXJuZWxfdGV4dCA9IHsKKyAgICAubGlzdCA9IExJU1RfSEVBRF9JTklUKGtl cm5lbF90ZXh0Lmxpc3QpLAorICAgIC5zdGFydCA9ICh1bnNpZ25lZCBsb25nKV9zdGV4dCwKKyAg ICAuZW5kID0gKHVuc2lnbmVkIGxvbmcpX2V0ZXh0LAorI2lmZGVmIENPTkZJR19YODYKKyAgICAu ZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqKV9fc3RhcnRfX19leF90YWJsZSwK KyAgICAuZXhfZW5kID0gKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKilfX3N0b3BfX19l eF90YWJsZSwKKyNlbmRpZgorfTsKKworLyoKKyAqIFRoZSBrZXJuZWxfaW5pdHRleHQgc2hvdWxk IG9ubHkgYmUgdXNlZCB3aGVuIHN5c3RlbV9zdGF0ZQorICogaXMgYm9vdGluZy4gT3RoZXJ3aXNl IGFsbCBhY2Nlc3NlcyBzaG91bGQgYmUgaWdub3JlZC4KKyAqLworc3RhdGljIGJvb2xfdCBpZ25v cmVfaWZfYWN0aXZlKHVuc2lnbmVkIGludCBmbGFnLCB1bnNpZ25lZCBsb25nIHByaXYpCit7Cisg ICAgcmV0dXJuIChzeXN0ZW1fc3RhdGUgPj0gU1lTX1NUQVRFX2FjdGl2ZSk7Cit9CisKKy8qCisg KiBCZWNvbWVzIGlycmVsZXZhbnQgd2hlbiBfX2luaXQgc2VjdGlvbnMgYXJlIGNsZWFyZWQuCisg Ki8KK3N0cnVjdCB2aXJ0dWFsX3JlZ2lvbiBrZXJuZWxfaW5pdHRleHQgID0geworICAgIC5saXN0 ID0gTElTVF9IRUFEX0lOSVQoa2VybmVsX2luaXR0ZXh0Lmxpc3QpLAorICAgIC5za2lwID0gaWdu b3JlX2lmX2FjdGl2ZSwKKyAgICAuc3RhcnQgPSAodW5zaWduZWQgbG9uZylfc2luaXR0ZXh0LAor ICAgIC5lbmQgPSAodW5zaWduZWQgbG9uZylfZWluaXR0ZXh0LAorI2lmZGVmIENPTkZJR19YODYK KyAgICAvKiBFdmVuIGlmIHRoZXkgYXJlIF9faW5pdCB0aGVpciBleGNlcHRpb24gZW50cnkgc3Rp bGwgZ2V0cyBzdHVjayBoZXJlLiAqLworICAgIC5leCA9IChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxl X2VudHJ5ICopX19zdGFydF9fX2V4X3RhYmxlLAorICAgIC5leF9lbmQgPSAoc3RydWN0IGV4Y2Vw dGlvbl90YWJsZV9lbnRyeSAqKV9fc3RvcF9fX2V4X3RhYmxlLAorI2VuZGlmCit9OworCisvKgor ICogTm8gbG9ja2luZy4gQWRkaXRpb25zIGFyZSBkb25lIGVpdGhlciBhdCBzdGFydHVwICh3aGVu IHRoZXJlIGlzIG9ubHkKKyAqIG9uZSBDUFUpIG9yIHdoZW4gYWxsIENQVXMgYXJlIHJ1bm5pbmcg d2l0aG91dCBJUlFzLgorICoKKyAqIERlbGV0aW9ucyBhcmUgYmlnIHRyaWNreS4gV2UgTVVTVCBt YWtlIHN1cmUgYWxsIGJ1dCBvbmUgQ1BVCisgKiBhcmUgcnVubmluZyBjcHVfcmVsYXgoKS4KKyAq CisgKi8KK0xJU1RfSEVBRCh2aXJ0dWFsX3JlZ2lvbl9saXN0KTsKKworaW50IHJlZ2lzdGVyX3Zp cnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcikKK3sKKyAgICBBU1NFUlQoIWxv Y2FsX2lycV9pc19lbmFibGVkKCkpOworCisgICAgbGlzdF9hZGRfdGFpbCgmci0+bGlzdCwgJnZp cnR1YWxfcmVnaW9uX2xpc3QpOworICAgIHJldHVybiAwOworfQorCit2b2lkIHVucmVnaXN0ZXJf dmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKQoreworICAgIEFTU0VSVCgh bG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7CisKKyAgICBsaXN0X2RlbF9pbml0KCZyLT5saXN0KTsK K30KKwordm9pZCBfX2luaXQgc2V0dXBfdmlydHVhbF9yZWdpb25zKHZvaWQpCit7CisgICAgc3Np emVfdCBzejsKKyAgICB1bnNpZ25lZCBpbnQgaSwgaWR4OworICAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYnVnX2ZyYW1lICpjb25zdCBzdG9wX2ZyYW1lc1tdID0geworICAgICAgICBfX3N0YXJ0X2J1 Z19mcmFtZXMsCisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCisgICAgICAgIF9fc3RvcF9i dWdfZnJhbWVzXzEsCisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIsCisjaWZkZWYgQ09ORklH X1g4NgorICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18zLAorI2VuZGlmCisgICAgICAgIE5VTEwK KyAgICB9OworCisjaWZkZWYgQ09ORklHX1g4NgorICAgIHNvcnRfZXhjZXB0aW9uX3RhYmxlcygp OworI2VuZGlmCisKKyAgICAvKiBOLkIuIGlkeCAhPSBpICovCisgICAgZm9yICggaWR4ID0gMCwg aSA9IDE7IHN0b3BfZnJhbWVzW2ldOyBpKyssIGlkeCsrICkKKyAgICB7CisgICAgICAgIHN0cnVj dCBidWdfZnJhbWUgKnM7CisKKyAgICAgICAgcyA9IChzdHJ1Y3QgYnVnX2ZyYW1lICopc3RvcF9m cmFtZXNbaS0xXTsKKyAgICAgICAgc3ogPSBzdG9wX2ZyYW1lc1tpXSAtIHM7CisKKyAgICAgICAg a2VybmVsX3RleHQuZnJhbWVbaWR4XS5uX2J1Z3MgPSBzejsKKyAgICAgICAga2VybmVsX3RleHQu ZnJhbWVbaWR4XS5idWdzID0gczsKKworICAgICAgICBrZXJuZWxfaW5pdHRleHQuZnJhbWVbaWR4 XS5uX2J1Z3MgPSBzejsKKyAgICAgICAga2VybmVsX2luaXR0ZXh0LmZyYW1lW2lkeF0uYnVncyA9 IHM7CisgICAgfQorCisgICAgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oJmtlcm5lbF90ZXh0KTsK KyAgICByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbigma2VybmVsX2luaXR0ZXh0KTsKK30KKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK KyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3N5bWJvbHMuYyBi L3hlbi9jb21tb24vc3ltYm9scy5jCmluZGV4IGE1OWM1OWQuLjJjYzQxNmUgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vc3ltYm9scy5jCisrKyBiL3hlbi9jb21tb24vc3ltYm9scy5jCkBAIC0xMCw2 ICsxMCw3IEBACiAgKiAgICAgIGNvbXByZXNzaW9uIChzZWUgdG9vbHMvc3ltYm9scy5jIGZvciBh IG1vcmUgY29tcGxldGUgZGVzY3JpcHRpb24pCiAgKi8KIAorI2luY2x1ZGUgPHhlbi9idWdfZXhf c3ltYm9scy5oPgogI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KICNpbmNsdWRlIDx4ZW4vc3ltYm9s cy5oPgogI2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KQEAgLTk1LDEwICs5NiwyOCBAQCBzdGF0aWMg dW5zaWduZWQgaW50IGdldF9zeW1ib2xfb2Zmc2V0KHVuc2lnbmVkIGxvbmcgcG9zKQogICAgIHJl dHVybiBuYW1lIC0gc3ltYm9sc19uYW1lczsKIH0KIAorYm9vbF90IF9faXNfYWN0aXZlX2tlcm5l bF90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkciwgc3ltYm9sc19sb29rdXBfdCAqY2IpCit7CisgICAg c3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 KCByZWdpb24sICZ2aXJ0dWFsX3JlZ2lvbl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlm ICggcmVnaW9uLT5za2lwICYmIHJlZ2lvbi0+c2tpcChDSEVDS0lOR19TWU1CT0wsIHJlZ2lvbi0+ cHJpdikgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCBhZGRyID49IHJl Z2lvbi0+c3RhcnQgJiYgYWRkciA8IHJlZ2lvbi0+ZW5kICkKKyAgICAgICAgeworICAgICAgICAg ICAgaWYgKCBjYiAmJiByZWdpb24tPnN5bWJvbHNfbG9va3VwICkKKyAgICAgICAgICAgICAgICAq Y2IgPSByZWdpb24tPnN5bWJvbHNfbG9va3VwOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2xfdCBpc19hY3RpdmVfa2VybmVs X3RleHQodW5zaWduZWQgbG9uZyBhZGRyKQogewotICAgIHJldHVybiAoaXNfa2VybmVsX3RleHQo YWRkcikgfHwKLSAgICAgICAgICAgIChzeXN0ZW1fc3RhdGUgPCBTWVNfU1RBVEVfYWN0aXZlICYm IGlzX2tlcm5lbF9pbml0dGV4dChhZGRyKSkpOworICAgIHJldHVybiBfX2lzX2FjdGl2ZV9rZXJu ZWxfdGV4dChhZGRyLCBOVUxMKTsKIH0KIAogY29uc3QgY2hhciAqc3ltYm9sc19sb29rdXAodW5z aWduZWQgbG9uZyBhZGRyLApAQCAtMTA4LDEzICsxMjcsMTcgQEAgY29uc3QgY2hhciAqc3ltYm9s c19sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLAogewogICAgIHVuc2lnbmVkIGxvbmcgaSwgbG93 LCBoaWdoLCBtaWQ7CiAgICAgdW5zaWduZWQgbG9uZyBzeW1ib2xfZW5kID0gMDsKKyAgICBzeW1i b2xzX2xvb2t1cF90IHN5bWJvbF9sb29rdXAgPSBOVUxMOwogCiAgICAgbmFtZWJ1ZltLU1lNX05B TUVfTEVOXSA9IDA7CiAgICAgbmFtZWJ1ZlswXSA9IDA7CiAKLSAgICBpZiAoIWlzX2FjdGl2ZV9r ZXJuZWxfdGV4dChhZGRyKSkKKyAgICBpZiAoIV9faXNfYWN0aXZlX2tlcm5lbF90ZXh0KGFkZHIs ICZzeW1ib2xfbG9va3VwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoc3ltYm9s X2xvb2t1cCkKKyAgICAgICAgcmV0dXJuIChzeW1ib2xfbG9va3VwKShhZGRyLCBzeW1ib2xzaXpl LCBvZmZzZXQsIG5hbWVidWYpOworCiAgICAgICAgIC8qIGRvIGEgYmluYXJ5IHNlYXJjaCBvbiB0 aGUgc29ydGVkIHN5bWJvbHNfYWRkcmVzc2VzIGFycmF5ICovCiAgICAgbG93ID0gMDsKICAgICBo aWdoID0gc3ltYm9sc19udW1fc3ltczsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9idWdf ZXhfc3ltYm9scy5oIGIveGVuL2luY2x1ZGUveGVuL2J1Z19leF9zeW1ib2xzLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzNDAxYgotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9pbmNsdWRlL3hlbi9idWdfZXhfc3ltYm9scy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2lmbmRlZiBfX0JVR19FWF9TWU1CT0xfTElTVF9fCisj ZGVmaW5lIF9fQlVHX0VYX1NZTUJPTF9MSVNUX18KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4K KyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgorI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CisKKyNpZmRl ZiBDT05GSUdfWDg2CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNlbmRpZgorI2luY2x1ZGUg PGFzbS9idWcuaD4KKworc3RydWN0IHZpcnR1YWxfcmVnaW9uCit7CisgICAgc3RydWN0IGxpc3Rf aGVhZCBsaXN0OworCisjZGVmaW5lIENIRUNLSU5HX1NZTUJPTCAgICAgICAgICgxPDwxKQorI2Rl ZmluZSBDSEVDS0lOR19CVUdfRlJBTUUgICAgICAoMTw8MikKKyNkZWZpbmUgQ0hFQ0tJTkdfRVhD RVBUSU9OICAgICAgKDE8PDMpCisgICAgLyoKKyAgICAgKiBXaGV0aGVyIHRvIHNraXAgdGhpcyBy ZWdpb24gZm9yIHBhcnRpY3VsYXIgc2VhcmNoZXMuIFRoZSBmbGFnCisgICAgICogY2FuIGJlIENI RUNLSU5HX1tTWU1CT0x8QlVHX0ZSQU1FU3xFWENFUFRJT05dLgorICAgICAqCisgICAgICogSWYg dGhlIGZ1bmN0aW9uIHJldHVybnMgMSB0aGlzIHJlZ2lvbiB3aWxsIGJlIHNraXBwZWQuCisgICAg ICovCisgICAgYm9vbF90ICgqc2tpcCkodW5zaWduZWQgaW50IGZsYWcsIHVuc2lnbmVkIGxvbmcg cHJpdik7CisKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0OyAgICAgICAgLyogVmlydHVhbCBhZGRy ZXNzIHN0YXJ0LiAqLworICAgIHVuc2lnbmVkIGxvbmcgZW5kOyAgICAgICAgICAvKiBWaXJ0dWFs IGFkZHJlc3Mgc3RhcnQuICovCisKKyAgICAvKgorICAgICAqIElmIC0+c2tpcCByZXR1cm5zIGZh bHNlIGZvciBDSEVDS0lOR19TWU1CT0wgd2Ugd2lsbCB1c2UKKyAgICAgKiAnc3ltYm9sc19sb29r dXAnIGNhbGxiYWNrIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZQorICAgICAqIGFkZHIgYmV0 d2VlbiBzdGFydCBhbmQgZW5kLiBJZiB0aGlzIGlzIE5VTEwgdGhlCisgICAgICogZGVmYXVsdCBs b29rdXAgbWVjaGFuaXNtIGlzIHVzZWQgKHRoZSBza2lwIHZhbHVlIGlzCisgICAgICogaWdub3Jl ZCkuCisgICAgICovCisgICAgc3ltYm9sc19sb29rdXBfdCBzeW1ib2xzX2xvb2t1cDsKKworICAg IHN0cnVjdCB7CisgICAgICAgIHN0cnVjdCBidWdfZnJhbWUgKmJ1Z3M7IC8qIFRoZSBwb2ludGVy IHRvIGFycmF5IG9mIGJ1ZyBmcmFtZXMuICovCisgICAgICAgIHNzaXplX3Qgbl9idWdzOyAgICAg ICAgIC8qIFRoZSBudW1iZXIgb2YgdGhlbS4gKi8KKyAgICB9IGZyYW1lW0JVR0ZSQU1FX05SXTsK KworI2lmZGVmIENPTkZJR19YODYKKyAgICBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpl eDsKKyAgICBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF9lbmQ7CisjZW5kaWYKKwor ICAgIHVuc2lnbmVkIGxvbmcgcHJpdjsgICAgICAgICAvKiBUbyBiZSB1c2VkIGJ5IGFib3ZlIGZ1 bmNpb250cyBpZiBuZWVkIHRvLiAqLworfTsKKworZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgdmly dHVhbF9yZWdpb25fbGlzdDsKKworZXh0ZXJuIHZvaWQgc2V0dXBfdmlydHVhbF9yZWdpb25zKHZv aWQpOworZXh0ZXJuIGludCByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9y ZWdpb24gKnIpOworZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3Qg dmlydHVhbF9yZWdpb24gKnIpOworCisjZW5kaWYgLyogX19CVUdfRVhfU1lNQk9MX0xJU1RfXyAq LworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9rZXJuZWwuaCBiL3hlbi9pbmNsdWRlL3hlbi9rZXJuZWwuaAppbmRleCA1NDhiNjRkLi44Y2Y3 YWY3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4va2VybmVsLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL2tlcm5lbC5oCkBAIC02NSwxMiArNjUsMTQgQEAKIAkxOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogfSkKIAorCiBleHRlcm4gY2hhciBfc3RhcnRbXSwgX2Vu ZFtdLCBzdGFydFtdOwogI2RlZmluZSBpc19rZXJuZWwocCkgKHsgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgIGNoYXIgKl9fcCA9IChjaGFyICopKHVuc2lnbmVkIGxvbmcpKHApOyAgICAg XAogICAgIChfX3AgPj0gX3N0YXJ0KSAmJiAoX19wIDwgX2VuZCk7ICAgICAgICAgICAgXAogfSkK IAorLyogRm9yIHN5bWJvbHNfbG9va3VwIHVzYWdlLiAqLwogZXh0ZXJuIGNoYXIgX3N0ZXh0W10s IF9ldGV4dFtdOwogI2RlZmluZSBpc19rZXJuZWxfdGV4dChwKSAoeyAgICAgICAgICAgICAgICAg ICAgXAogICAgIGNoYXIgKl9fcCA9IChjaGFyICopKHVuc2lnbmVkIGxvbmcpKHApOyAgICAgXApk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCBiL3hlbi9pbmNsdWRlL3hlbi9z eW1ib2xzLmgKaW5kZXggMWZhMDUzNy4uZmU5ZWQ4ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv eGVuL3N5bWJvbHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCkBAIC01LDYgKzUs MTUgQEAKIAogI2RlZmluZSBLU1lNX05BTUVfTEVOIDEyNwogCisvKgorICogVHlwZWRlZiBmb3Ig dGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0IHN5bWJvbHNfbG9va3VwCisgKiBjYW4gY2FsbCBp ZiB2aXJ0dWFsX3JlZ2lvbl9saXN0IGhhcyBhbiBjYWxsYmFjayBmb3IgaXQuCisgKi8KK3R5cGVk ZWYgY29uc3QgY2hhciAqKCpzeW1ib2xzX2xvb2t1cF90KSh1bnNpZ25lZCBsb25nIGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqc3lt Ym9sc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nICpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqbmFtZWJ1Zik7CisKIC8qIExvb2t1cCBhbiBhZGRyZXNzLiAqLwogY29uc3QgY2hhciAq c3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyAqc3ltYm9sc2l6ZSwKLS0gCjIuNS4wCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK