From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 05/24] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables lookup. Date: Sun, 10 Apr 2016 17:14:37 -0400 Message-ID: <1460322896-1115-6-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-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 1apMhX-0008B3-8v for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:23 +0000 In-Reply-To: <1460322896-1115-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, konrad@kernel.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgaHlwZXJ2aXNvciB3ZSBoYXZlIHR3byByZWdpb25zIG9m CmV4ZWN1dGFibGUgY29kZSAtIHN0ZXh0IC0+IF9ldGV4dCwgYW5kIF9zaW5pdHRleHQgLT4gX2Vp bml0ZXh0LgoKVGhlIGxhdGVyIGlzIG5vdCBuZWVkZWQgYWZ0ZXIgYm9vdHVwLgoKV2UgYWxzbyBo YXZlIHZhcmlvdXMgYnVpbHQtaW4gbWFjcm9zIGFuZCBmdW5jdGlvbnMgdG8gc2VhcmNoCmluIGJl dHdlZW4gdGhvc2UgdHdvIHN3YXRocyBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSBzeXN0 ZW0uCgpUaGF0IGlzIGVpdGhlciBmb3IgYnVnX2ZyYW1lcywgZXhjZXB0aW9ucyAoeDg2KSBvciBz eW1ib2wKbmFtZXMgZm9yIHRoZSBpbnN0cnVjdGlvbi4KCldpdGggeFNwbGljZSBpbiB0aGUgcGlj dHVyZSAtIHdlIG5lZWQgYSBtZWNoYW5pc20gZm9yIG5ldyBwYXlsb2Fkcwp0byBzZWFyY2hlZCBh cyB3ZWxsIGZvciBhbGwgb2YgdGhpcy4KCk9yaWdpbmFsbHkgd2UgaGFkIGV4dHJhICdpZiAoeHNw bGljZSkuLi4nIGJ1dCB0aGF0IGdldHMKYSBiaXQgdGlyaW5nIGFuZCBkb2VzIG5vdCBob29rIHVw IG5pY2VseS4KClRoaXMgJ3N0cnVjdCB2aXJ0dWFsX3JlZ2lvbicgYW5kIHZpcnR1YWxfcmVnaW9u X2xpc3QgcHJvdmlkZSBhCm1lY2hhbmlzbSB0byBzZWFyY2ggZm9yIHRoZSBidWdfZnJhbWVzLCBl eGNlcHRpb24gdGFibGUsCmFuZCBzeW1ib2wgbmFtZXMgZW50cmllcyB3aXRob3V0IGhhdmluZyB2 YXJpb3VzIGNhbGxzIGluCm90aGVyIHN1Yi1jb21wb25lbnRzIGluIHRoZSBzeXN0ZW0uCgpDb2Rl IHdoaWNoIHdpc2hlcyB0byBwYXJ0aWNpcGF0ZSBpbiBidWdfZnJhbWVzIGFuZCBleGNlcHRpb24g dGFibGUKZW50cmllcyBzZWFyY2ggaGFzIHRvIG9ubHkgdXNlIHR3byBwdWJsaWMgQVBJczoKIC0g cmVnaXN0ZXJfdmlydHVhbF9yZWdpb24KIC0gdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbgoKdG8g bGV0IHRoZSBjb3JlIGNvZGUga25vdy4KCklmIHRoZSAtPmxvb2t1cF9zeW1ib2wgaXMgbm90IHRo ZW4gdGhlIGRlZmF1bHQgaW50ZXJuYWwgc3ltYm9sIGxvb2t1cAptZWNoYW5pc20gaXMgdXNlZC4K ClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K U2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUu Y29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv bT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+IFtBUk1dCgot LS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGNpdHJpeC5jb20+ CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFzZXIg PGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2NDogTmV3IHBhdGNoLgp2 NToKIC0gUmVuYW1lIHRvIHZpcnR1YWxfcmVnaW9uLgogLSBEaXRjaCB0aGUgJ3NraXAnIGZ1bmN0 aW9uLgogLSBSZW1vdmUgdGhlIF9zdGV4dC4KIC0gVXNlIFJDVSBsaXN0cy4KIC0gQWRkIGEgc2Vh cmNoIGZ1bmN0aW9uLgogLSBSZW1vdmUgZXh0ZXJuLCBhZGQgcmN1X3JlYWRfbG9jay4gcmVtb3Zl IF9fIGZyb20gbmFtZS4KdjY6IHMvc2VhcmNoX2Zvcl90ZXh0L2ZpbmRfdGV4dF9yZWdpb24vLgog LSBEcm9wIHRoZSB1YWNjZXNzLmggbmVlZC4gTWFrZSBzZXR1cF92aXJ0dWFsX3JlZ2lvbnMgYWNj ZXB0IHR3byBwYXJhbWV0ZXJzLgogICBSZW1vdmUgI2lmZGVmLgogLSBDb25zdGlmeSBzdHJ1Y3Qg ZXhjZXB0aW9uX3RhYmxlX2VudHJ5LgogLSBSZW1vdmUgc29tZSBuZXdsaW5lcy4KIC0gQ2hhbmdl IGhlYWRlciBmaWxlIGd1YXJkICNkZWZpbmUgdG8gcHJvcGVyIG5hbWUuCi0tLQotLS0KIHhlbi9h cmNoL2FybS9zZXR1cC5jICAgICAgICAgICAgIHwgICA0ICsrCiB4ZW4vYXJjaC9hcm0vdHJhcHMu YyAgICAgICAgICAgICB8ICAzOSArKysrKysrLS0tLQogeGVuL2FyY2gveDg2L2V4dGFibGUuYyAg ICAgICAgICAgfCAgMTIgKysrLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgfCAg IDYgKysKIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgIHwgIDQwICsrKysrKy0tLS0t CiB4ZW4vY29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL3N5 bWJvbHMuYyAgICAgICAgICAgICB8ICAxMSArKy0KIHhlbi9jb21tb24vdmlydHVhbF9yZWdpb24u YyAgICAgIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2luY2x1ZGUveGVuL3N5bWJvbHMuaCAgICAgICAgfCAgIDkgKysrCiB4ZW4vaW5jbHVkZS94ZW4v dmlydHVhbF9yZWdpb24uaCB8ICA0NyArKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAy ODAgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVu L2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUv eGVuL3ZpcnR1YWxfcmVnaW9uLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBi L3hlbi9hcmNoL2FybS9zZXR1cC5jCmluZGV4IDZkMjA1YTkuLjA5ZmYxZWEgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL2FybS9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCkBAIC0zNCw2 ICszNCw3IEBACiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4KICNpbmNsdWRlIDx4ZW4vY3B1 Lmg+CiAjaW5jbHVkZSA8eGVuL3Bmbi5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5o PgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CiAjaW5jbHVkZSA8eGVuL2xpYmZkdC9saWJmZHQuaD4K ICNpbmNsdWRlIDx4ZW4vYWNwaS5oPgpAQCAtODYwLDYgKzg2MSw5IEBAIHZvaWQgX19pbml0IHN0 YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19vZmZzZXQsCiAKICAgICBzeXN0ZW1fc3Rh dGUgPSBTWVNfU1RBVEVfYWN0aXZlOwogCisgICAgLyogTXVzdCBiZSBkb25lIHBhc3Qgc2V0dGlu ZyBzeXN0ZW1fc3RhdGUuICovCisgICAgdW5yZWdpc3Rlcl9pbml0X3ZpcnR1YWxfcmVnaW9uKCk7 CisKICAgICBkb21haW5fdW5wYXVzZV9ieV9zeXN0ZW1jb250cm9sbGVyKGRvbTApOwogCiAgICAg LyogU3dpdGNoIG9uIHRvIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc3RhY2sgZm9yIHRoZSBp ZGxlIHZjcHUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90cmFwcy5jIGIveGVuL2FyY2gvYXJt L3RyYXBzLmMKaW5kZXggMTUxNmFiZC4uNGM0MjNkZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt L3RyYXBzLmMKKysrIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNp bmNsdWRlIDx4ZW4vc29mdGlycS5oPgogI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgogI2lu Y2x1ZGUgPHhlbi9wZXJmYy5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogI2lu Y2x1ZGUgPHB1YmxpYy9zY2hlZC5oPgogI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KICNpbmNsdWRl IDxhc20vZGVidWdnZXIuaD4KQEAgLTEwMSw2ICsxMDIsOCBAQCBpbnRlZ2VyX3BhcmFtKCJkZWJ1 Z19zdGFja19saW5lcyIsIGRlYnVnX3N0YWNrX2xpbmVzKTsKIAogdm9pZCBpbml0X3RyYXBzKHZv aWQpCiB7CisgICAgc2V0dXBfdmlydHVhbF9yZWdpb25zKE5VTEwsIE5VTEwpOworCiAgICAgLyog U2V0dXAgSHlwIHZlY3RvciBiYXNlICovCiAgICAgV1JJVEVfU1lTUkVHKCh2YWRkcl90KWh5cF90 cmFwc192ZWN0b3IsIFZCQVJfRUwyKTsKIApAQCAtMTExNiwyNyArMTExOSwzMyBAQCB2b2lkIGRv X3VuZXhwZWN0ZWRfdHJhcChjb25zdCBjaGFyICptc2csIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQogCiBpbnQgZG9fYnVnX2ZyYW1lKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCB2YWRk cl90IHBjKQogewotICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZzsKKyAgICBjb25zdCBz dHJ1Y3QgYnVnX2ZyYW1lICpidWcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICIi LCAqZmlsZW5hbWUsICpwcmVkaWNhdGU7CiAgICAgdW5zaWduZWQgbG9uZyBmaXh1cDsKLSAgICBp bnQgaWQsIGxpbmVubzsKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqY29uc3Qg c3RvcF9mcmFtZXNbXSA9IHsKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMCwKLSAgICAgICAg X19zdG9wX2J1Z19mcmFtZXNfMSwKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMiwKLSAgICAg ICAgTlVMTAotICAgIH07CisgICAgaW50IGlkID0gLTEsIGxpbmVubzsKKyAgICBjb25zdCBzdHJ1 Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKIAotICAgIGZvciAoIGJ1ZyA9IF9fc3RhcnRfYnVn X2ZyYW1lcywgaWQgPSAwOyBzdG9wX2ZyYW1lc1tpZF07ICsrYnVnICkKKyAgICByZWdpb24gPSBm aW5kX3RleHRfcmVnaW9uKHBjKTsKKyAgICBpZiAoIHJlZ2lvbiApCiAgICAgewotICAgICAgICB3 aGlsZSAoIHVubGlrZWx5KGJ1ZyA9PSBzdG9wX2ZyYW1lc1tpZF0pICkKLSAgICAgICAgICAgICsr aWQ7CisgICAgICAgIGZvciAoIGlkID0gMDsgaWQgPCBCVUdGUkFNRV9OUjsgaWQrKyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmI7CisgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgaTsKIAotICAgICAgICBpZiAoICgodmFkZHJfdClidWdfbG9jKGJ1Zykp ID09IHBjICkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZm9yICggaSA9IDAsIGIg PSByZWdpb24tPmZyYW1lW2lkXS5idWdzOworICAgICAgICAgICAgICAgICAgaSA8IHJlZ2lvbi0+ ZnJhbWVbaWRdLm5fYnVnczsgYisrLCBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIGlmICggKCh2YWRkcl90KWJ1Z19sb2MoYikpID09IHBjICkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgIGJ1ZyA9IGI7CisgICAgICAgICAgICAgICAgICAgIGdvdG8g Zm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg fQotCi0gICAgaWYgKCAhc3RvcF9mcmFtZXNbaWRdICkKKyBmb3VuZDoKKyAgICBpZiAoICFidWcg KQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAogICAgIC8qIFdBUk4sIEJVRyBvciBBU1NFUlQ6 IGRlY29kZSB0aGUgZmlsZW5hbWUgcG9pbnRlciBhbmQgbGluZSBudW1iZXIuICovCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwppbmRl eCA4OWI1YmNiLi4yYTA2Y2NhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMKQEAgLTEsMTAgKzEsMTIgQEAKIAotI2luY2x1ZGUg PHhlbi9jb25maWcuaD4KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9saXN0 Lmg+CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CisjaW5jbHVkZSA8eGVuL3JjdXBkYXRlLmg+CiAj aW5jbHVkZSA8eGVuL3NvcnQuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRl IDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogCiAjZGVm aW5lIEVYX0ZJRUxEKHB0ciwgZmllbGQpICgodW5zaWduZWQgbG9uZykmKHB0ciktPmZpZWxkICsg KHB0ciktPmZpZWxkKQogCkBAIC04MCw4ICs4MiwxMiBAQCBzZWFyY2hfb25lX3RhYmxlKGNvbnN0 IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmZpcnN0LAogdW5zaWduZWQgbG9uZwogc2Vh cmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0gICAgcmV0dXJuIHNl YXJjaF9vbmVfdGFibGUoCi0gICAgICAgIF9fc3RhcnRfX19leF90YWJsZSwgX19zdG9wX19fZXhf dGFibGUtMSwgYWRkcik7CisgICAgY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb24g PSBmaW5kX3RleHRfcmVnaW9uKGFkZHIpOworCisgICAgaWYgKCByZWdpb24gJiYgcmVnaW9uLT5l eCApCisgICAgICAgIHJldHVybiBzZWFyY2hfb25lX3RhYmxlKHJlZ2lvbi0+ZXgsIHJlZ2lvbi0+ ZXhfZW5kIC0gMSwgYWRkcik7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdW5zaWduZWQgbG9uZwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpp bmRleCAzNjk2YzMxLi4yMmRjMTQ4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAuYwor KysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHhl bi9wZm4uaD4KICNpbmNsdWRlIDx4ZW4vbm9kZW1hc2suaD4KICNpbmNsdWRlIDx4ZW4vdG1lbV94 ZW4uaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4vd2F0 Y2hkb2cuaD4KICNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgogI2luY2x1ZGUgPGNvbXBhdC9w bGF0Zm9ybS5oPgpAQCAtNTE1LDYgKzUxNiw5IEBAIHN0YXRpYyB2b2lkIG5vaW5saW5lIGluaXRf ZG9uZSh2b2lkKQogCiAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsKIAorICAg IC8qIE1VU1QgYmUgZG9uZSBwcmlvciB0byByZW1vdmluZyAuaW5pdCBkYXRhLiAqLworICAgIHVu cmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbigpOworCiAgICAgZG9tYWluX3VucGF1c2VfYnlf c3lzdGVtY29udHJvbGxlcihoYXJkd2FyZV9kb21haW4pOwogCiAgICAgLyogWmVybyB0aGUgLmlu aXQgY29kZSBhbmQgZGF0YS4gKi8KQEAgLTYxNyw2ICs2MjEsOCBAQCB2b2lkIF9faW5pdCBub3Jl dHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIHNtcF9wcmVwYXJlX2Jv b3RfY3B1KCk7CiAgICAgc29ydF9leGNlcHRpb25fdGFibGVzKCk7CiAKKyAgICBzZXR1cF92aXJ0 dWFsX3JlZ2lvbnMoX19zdGFydF9fX2V4X3RhYmxlLCBfX3N0b3BfX19leF90YWJsZSk7CisKICAg ICAvKiBGdWxsIGV4Y2VwdGlvbiBzdXBwb3J0IGZyb20gaGVyZSBvbiBpbi4gKi8KIAogICAgIGxv YWRlciA9IChtYmktPmZsYWdzICYgTUJJX0xPQURFUk5BTUUpCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvdHJhcHMuYyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jCmluZGV4IGM2YzkyMjcuLmY3M2Y3 ZjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni90 cmFwcy5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8eGVuL2tleGVjLmg+CiAjaW5jbHVk ZSA8eGVuL3RyYWNlLmg+CiAjaW5jbHVkZSA8eGVuL3BhZ2luZy5oPgorI2luY2x1ZGUgPHhlbi92 aXJ0dWFsX3JlZ2lvbi5oPgogI2luY2x1ZGUgPHhlbi93YXRjaGRvZy5oPgogI2luY2x1ZGUgPGFz bS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KQEAgLTEyMjksMTggKzEyMzAsMTIgQEAg c3RhdGljIGludCBlbXVsYXRlX2ZvcmNlZF9pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQogCiB2b2lkIGRvX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp CiB7Ci0gICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnOworICAgIGNvbnN0IHN0cnVjdCBi dWdfZnJhbWUgKmJ1ZyA9IE5VTEw7CiAgICAgdTggYnVnX2luc25bMl07CiAgICAgY29uc3QgY2hh ciAqcHJlZml4ID0gIiIsICpmaWxlbmFtZSwgKnByZWRpY2F0ZSwgKmVpcCA9IChjaGFyICopcmVn cy0+ZWlwOwogICAgIHVuc2lnbmVkIGxvbmcgZml4dXA7Ci0gICAgaW50IGlkLCBsaW5lbm87Ci0g ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmNvbnN0IHN0b3BfZnJhbWVzW10gPSB7 Ci0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCi0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVz XzEsCi0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIsCi0gICAgICAgIF9fc3RvcF9idWdfZnJh bWVzXzMsCi0gICAgICAgIE5VTEwKLSAgICB9OworICAgIGludCBpZCA9IC0xLCBsaW5lbm87Cisg ICAgY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CiAKICAgICBERUJVR0dFUl90 cmFwX2VudHJ5KFRSQVBfaW52YWxpZF9vcCwgcmVncyk7CiAKQEAgLTEyNTcsMTYgKzEyNTIsMjkg QEAgdm9pZCBkb19pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAg ICAgbWVtY21wKGJ1Z19pbnNuLCAiXHhmXHhiIiwgc2l6ZW9mKGJ1Z19pbnNuKSkgKQogICAgICAg ICBnb3RvIGRpZTsKIAotICAgIGZvciAoIGJ1ZyA9IF9fc3RhcnRfYnVnX2ZyYW1lcywgaWQgPSAw OyBzdG9wX2ZyYW1lc1tpZF07ICsrYnVnICkKKyAgICByZWdpb24gPSBmaW5kX3RleHRfcmVnaW9u KHJlZ3MtPmVpcCk7CisgICAgaWYgKCByZWdpb24gKQogICAgIHsKLSAgICAgICAgd2hpbGUgKCB1 bmxpa2VseShidWcgPT0gc3RvcF9mcmFtZXNbaWRdKSApCi0gICAgICAgICAgICArK2lkOwotICAg ICAgICBpZiAoIGJ1Z19sb2MoYnVnKSA9PSBlaXAgKQotICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGZvciAoIGlkID0gMDsgaWQgPCBCVUdGUkFNRV9OUjsgaWQrKyApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmI7CisgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgICAgICAgICAgZm9yICggaSA9IDAsIGIgPSByZWdpb24tPmZyYW1lW2lk XS5idWdzOworICAgICAgICAgICAgICAgICAgaSA8IHJlZ2lvbi0+ZnJhbWVbaWRdLm5fYnVnczsg YisrLCBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggYnVnX2xvYyhi KSA9PSBlaXAgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnVnID0g YjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZDsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCAhc3RvcF9mcmFtZXNbaWRd ICkKLSAgICAgICAgZ290byBkaWU7CiAKKyBmb3VuZDoKKyAgICBpZiAoICFidWcgKQorICAgICAg ICBnb3RvIGRpZTsKICAgICBlaXAgKz0gc2l6ZW9mKGJ1Z19pbnNuKTsKICAgICBpZiAoIGlkID09 IEJVR0ZSQU1FX3J1bl9mbiApCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmls ZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5kZXggOTEwYWM2OS4uMWU0YmM3MCAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC01MSw2 ICs1MSw3IEBAIG9iai15ICs9IHRpbWUubwogb2JqLXkgKz0gdGltZXIubwogb2JqLXkgKz0gdHJh Y2Uubwogb2JqLXkgKz0gdmVyc2lvbi5vCitvYmoteSArPSB2aXJ0dWFsX3JlZ2lvbi5vCiBvYmot eSArPSB2bV9ldmVudC5vCiBvYmoteSArPSB2bWFwLm8KIG9iai15ICs9IHZzcHJpbnRmLm8KZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vc3ltYm9scy5jIGIveGVuL2NvbW1vbi9zeW1ib2xzLmMKaW5k ZXggYTU5YzU5ZC4uYjE4ZGRjZDEgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc3ltYm9scy5jCisr KyBiL3hlbi9jb21tb24vc3ltYm9scy5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8eGVu L2xpYi5oPgogI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2su aD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvcGxh dGZvcm0uaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAKQEAgLTk3LDggKzk4LDcg QEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfc3ltYm9sX29mZnNldCh1bnNpZ25lZCBsb25nIHBv cykKIAogYm9vbF90IGlzX2FjdGl2ZV9rZXJuZWxfdGV4dCh1bnNpZ25lZCBsb25nIGFkZHIpCiB7 Ci0gICAgcmV0dXJuIChpc19rZXJuZWxfdGV4dChhZGRyKSB8fAotICAgICAgICAgICAgKHN5c3Rl bV9zdGF0ZSA8IFNZU19TVEFURV9hY3RpdmUgJiYgaXNfa2VybmVsX2luaXR0ZXh0KGFkZHIpKSk7 CisgICAgcmV0dXJuICEhZmluZF90ZXh0X3JlZ2lvbihhZGRyKTsKIH0KIAogY29uc3QgY2hhciAq c3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLApAQCAtMTA4LDEzICsxMDgsMTggQEAg Y29uc3QgY2hhciAqc3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLAogewogICAgIHVu c2lnbmVkIGxvbmcgaSwgbG93LCBoaWdoLCBtaWQ7CiAgICAgdW5zaWduZWQgbG9uZyBzeW1ib2xf ZW5kID0gMDsKKyAgICBjb25zdCBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKIAogICAg IG5hbWVidWZbS1NZTV9OQU1FX0xFTl0gPSAwOwogICAgIG5hbWVidWZbMF0gPSAwOwogCi0gICAg aWYgKCFpc19hY3RpdmVfa2VybmVsX3RleHQoYWRkcikpCisgICAgcmVnaW9uID0gZmluZF90ZXh0 X3JlZ2lvbihhZGRyKTsKKyAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAK KyAgICBpZiAocmVnaW9uLT5zeW1ib2xzX2xvb2t1cCkKKyAgICAgICAgcmV0dXJuIHJlZ2lvbi0+ c3ltYm9sc19sb29rdXAoYWRkciwgc3ltYm9sc2l6ZSwgb2Zmc2V0LCBuYW1lYnVmKTsKKwogICAg ICAgICAvKiBkbyBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIHNvcnRlZCBzeW1ib2xzX2FkZHJlc3Nl cyBhcnJheSAqLwogICAgIGxvdyA9IDA7CiAgICAgaGlnaCA9IHN5bWJvbHNfbnVtX3N5bXM7CmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMgYi94ZW4vY29tbW9uL3ZpcnR1 YWxfcmVnaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI0ODdlNgot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vdmlydHVhbF9yZWdpb24uYwpAQCAtMCwwICsx LDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZp bGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSA8eGVuL2lu aXQuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8eGVuL3JjdXBkYXRlLmg+ CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9u Lmg+CisKK3N0YXRpYyBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gY29yZSA9IHsKKyAgICAubGlzdCA9 IExJU1RfSEVBRF9JTklUKGNvcmUubGlzdCksCisgICAgLnN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp X3N0ZXh0LAorICAgIC5lbmQgPSAodW5zaWduZWQgbG9uZylfZXRleHQsCit9OworCisvKiBCZWNv bWVzIGlycmVsZXZhbnQgd2hlbiBfX2luaXQgc2VjdGlvbnMgYXJlIGNsZWFyZWQuICovCitzdGF0 aWMgc3RydWN0IHZpcnR1YWxfcmVnaW9uIGNvcmVfaW5pdCBfX2luaXRkYXRhID0geworICAgIC5s aXN0ID0gTElTVF9IRUFEX0lOSVQoY29yZV9pbml0Lmxpc3QpLAorICAgIC5zdGFydCA9ICh1bnNp Z25lZCBsb25nKV9zaW5pdHRleHQsCisgICAgLmVuZCA9ICh1bnNpZ25lZCBsb25nKV9laW5pdHRl eHQsCit9OworCisvKgorICogUkNVIGxvY2tpbmcuIEFkZGl0aW9ucyBhcmUgZG9uZSBlaXRoZXIg YXQgc3RhcnR1cCAod2hlbiB0aGVyZSBpcyBvbmx5CisgKiBvbmUgQ1BVKSBvciB3aGVuIGFsbCBD UFVzIGFyZSBydW5uaW5nIHdpdGhvdXQgSVJRcy4KKyAqCisgKiBEZWxldGlvbnMgYXJlIGJpZyB0 cmlja3kuIFdlIGRvIGl0IHdoZW4geFNwbGljaW5nIChhbGwgQ1BVcyBydW5uaW5nCisgKiB3aXRo b3V0IElSUXMpIG9yIGR1cmluZyBib290dXAgKHdoZW4gY2xlYXJpbmcgdGhlIGluaXQpLgorICoK KyAqIEhlbmNlIHdlIHVzZSBsaXN0X2RlbF9yY3UgKHdoaWNoIHNwb3J0cyBhbiBtZW1vcnkgZmVu Y2UpIGFuZCBhIHNwaW5sb2NrCisgKiBvbiBkZWxldGlvbi4KKyAqCisgKiBBbGwgcmVhZGVycyBv ZiB2aXJ0dWFsX3JlZ2lvbl9saXN0IE1VU1QgdXNlIGxpc3QgbGlzdF9mb3JfZWFjaF9lbnRyeV9y Y3UuCisgKgorICovCitzdGF0aWMgTElTVF9IRUFEKHZpcnR1YWxfcmVnaW9uX2xpc3QpOworc3Rh dGljIERFRklORV9TUElOTE9DSyh2aXJ0dWFsX3JlZ2lvbl9sb2NrKTsKK3N0YXRpYyBERUZJTkVf UkNVX1JFQURfTE9DSyhyY3VfdmlydHVhbF9yZWdpb25fbG9jayk7CisKK2NvbnN0IHN0cnVjdCB2 aXJ0dWFsX3JlZ2lvbiAqZmluZF90ZXh0X3JlZ2lvbih1bnNpZ25lZCBsb25nIGFkZHIpCit7Cisg ICAgY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CisKKyAgICByY3VfcmVhZF9s b2NrKCZyY3VfdmlydHVhbF9yZWdpb25fbG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9y Y3UoIHJlZ2lvbiwgJnZpcnR1YWxfcmVnaW9uX2xpc3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAg aWYgKCBhZGRyID49IHJlZ2lvbi0+c3RhcnQgJiYgYWRkciA8IHJlZ2lvbi0+ZW5kICkKKyAgICAg ICAgeworICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCZyY3VfdmlydHVhbF9yZWdpb25fbG9j ayk7CisgICAgICAgICAgICByZXR1cm4gcmVnaW9uOworICAgICAgICB9CisgICAgfQorICAgIHJj dV9yZWFkX3VubG9jaygmcmN1X3ZpcnR1YWxfcmVnaW9uX2xvY2spOworCisgICAgcmV0dXJuIE5V TEw7Cit9CisKK3ZvaWQgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVn aW9uICpyKQoreworICAgIEFTU0VSVCghbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7CisKKyAgICBs aXN0X2FkZF90YWlsX3JjdSgmci0+bGlzdCwgJnZpcnR1YWxfcmVnaW9uX2xpc3QpOworfQorCitz dGF0aWMgdm9pZCByZW1vdmVfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpy KQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgm dmlydHVhbF9yZWdpb25fbG9jaywgZmxhZ3MpOworICAgIGxpc3RfZGVsX3JjdSgmci0+bGlzdCk7 CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlydHVhbF9yZWdpb25fbG9jaywgZmxhZ3Mp OworICAgIC8qCisgICAgICogV2UgZG8gbm90IG5lZWQgdG8gaW52b2tlIGNhbGxfcmN1LgorICAg ICAqCisgICAgICogVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCBvbiB0aGUgZGVsZXRpb24g d2UgaGF2ZSBtYWRlIHN1cmUKKyAgICAgKiB0byB1c2Ugc3BpbmxvY2tzICh0byBndWFyZCBhZ2Fp bnN0IHNvbWVib2R5IGVsc2UgY2FsbGluZworICAgICAqIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdp b24pIGFuZCBsaXN0X2RlbGV0aW9uIHNwaWNlZCB3aXRoCisgICAgICogbWVtb3J5IGJhcnJpZXIu CisgICAgICoKKyAgICAgKiBUaGF0IHByb3RlY3RzIHVzIGZyb20gY29ycnVwdGluZyB0aGUgbGlz dCBhcyB0aGUgcmVhZGVycyBhbGwKKyAgICAgKiB1c2UgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Ug d2hpY2ggaXMgc2FmZSBhZ2FpbnN0IGNvbmN1cnJlbnQKKyAgICAgKiBkZWxldGlvbnMuCisgICAg ICovCit9CisKK3ZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9y ZWdpb24gKnIpCit7CisgICAgLyogRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20geFNwbGljZSAt IHdoaWNoIGhhcyBJUlFzIGRpc2FibGVkLiAqLworICAgIEFTU0VSVCghbG9jYWxfaXJxX2lzX2Vu YWJsZWQoKSk7CisKKyAgICByZW1vdmVfdmlydHVhbF9yZWdpb24ocik7Cit9CisKK3ZvaWQgX19p bml0IHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbih2b2lkKQoreworICAgIEJVR19PTihz eXN0ZW1fc3RhdGUgIT0gU1lTX1NUQVRFX2FjdGl2ZSk7CisKKyAgICByZW1vdmVfdmlydHVhbF9y ZWdpb24oJmNvcmVfaW5pdCk7Cit9CisKK3ZvaWQgX19pbml0IHNldHVwX3ZpcnR1YWxfcmVnaW9u cyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzdGFydCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5 ICplbmQpCit7CisgICAgc2l6ZV90IHN6OworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpjb25zdCBfX2luaXRjb25zdHJlbCBidWdfZnJhbWVz W10gPSB7CisgICAgICAgIF9fc3RhcnRfYnVnX2ZyYW1lcywKKyAgICAgICAgX19zdG9wX2J1Z19m cmFtZXNfMCwKKyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMSwKKyAgICAgICAgX19zdG9wX2J1 Z19mcmFtZXNfMiwKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVz XzMsCisjZW5kaWYKKyAgICAgICAgTlVMTAorICAgIH07CisKKyAgICBmb3IgKCBpID0gMTsgYnVn X2ZyYW1lc1tpXTsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUg KnM7CisKKyAgICAgICAgcyA9IGJ1Z19mcmFtZXNbaSAtIDFdOworICAgICAgICBzeiA9IGJ1Z19m cmFtZXNbaV0gLSBzOworCisgICAgICAgIGNvcmUuZnJhbWVbaSAtIDFdLm5fYnVncyA9IHN6Owor ICAgICAgICBjb3JlLmZyYW1lW2kgLSAxXS5idWdzID0gczsKKworICAgICAgICBjb3JlX2luaXQu ZnJhbWVbaSAtIDFdLm5fYnVncyA9IHN6OworICAgICAgICBjb3JlX2luaXQuZnJhbWVbaSAtIDFd LmJ1Z3MgPSBzOworICAgIH0KKworICAgIGNvcmVfaW5pdC5leCA9IGNvcmUuZXggPSBzdGFydDsK KyAgICBjb3JlX2luaXQuZXhfZW5kID0gY29yZS5leF9lbmQgPSBlbmQ7CisKKyAgICByZWdpc3Rl cl92aXJ0dWFsX3JlZ2lvbigmY29yZV9pbml0KTsKKyAgICByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lv bigmY29yZSk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL3N5bWJvbHMuaCBiL3hlbi9pbmNsdWRlL3hlbi9zeW1ib2xzLmgKaW5kZXgg MWZhMDUzNy4uZjU4ZTYxMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCkBAIC01LDYgKzUsMTUgQEAKIAogI2RlZmlu ZSBLU1lNX05BTUVfTEVOIDEyNwogCisvKgorICogVHlwZWRlZiBmb3IgdGhlIGNhbGxiYWNrIGZ1 bmN0aW9ucyB0aGF0IHN5bWJvbHNfbG9va3VwCisgKiBjYW4gY2FsbCBpZiB2aXJ0dWFsX3JlZ2lv bl9saXN0IGhhcyBhbiBjYWxsYmFjayBmb3IgaXQuCisgKi8KK3R5cGVkZWYgY29uc3QgY2hhciAq c3ltYm9sc19sb29rdXBfdCh1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqc3ltYm9sc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpvZmZzZXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZWJ1Zik7CisKIC8qIExvb2t1 cCBhbiBhZGRyZXNzLiAqLwogY29uc3QgY2hhciAqc3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9u ZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqc3ltYm9s c2l6ZSwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92aXJ0dWFsX3JlZ2lvbi5oIGIveGVu L2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMzE4MjZkMQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi92aXJ0 dWFsX3JlZ2lvbi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg Ki8KKworI2lmbmRlZiBfX1hFTl9WSVJUVUFMX1JFR0lPTl9fCisjZGVmaW5lIF9fWEVOX1ZJUlRV QUxfUkVHSU9OX18KKworI2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8eGVuL3N5bWJv bHMuaD4KKworc3RydWN0IHZpcnR1YWxfcmVnaW9uCit7CisgICAgc3RydWN0IGxpc3RfaGVhZCBs aXN0OworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQ7ICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mg c3RhcnQuICovCisgICAgdW5zaWduZWQgbG9uZyBlbmQ7ICAgICAgICAgIC8qIFZpcnR1YWwgYWRk cmVzcyBlbmQuICovCisKKyAgICAvKiBJZiB0aGlzIGlzIE5VTEwgdGhlIGRlZmF1bHQgbG9va3Vw IG1lY2hhbmlzbSBpcyB1c2VkLiAqLworICAgIHN5bWJvbHNfbG9va3VwX3QgKnN5bWJvbHNfbG9v a3VwOworCisgICAgc3RydWN0IHsKKyAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVn czsgLyogVGhlIHBvaW50ZXIgdG8gYXJyYXkgb2YgYnVnIGZyYW1lcy4gKi8KKyAgICAgICAgc2l6 ZV90IG5fYnVnczsgICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aGVtLiAqLworICAgIH0gZnJh bWVbQlVHRlJBTUVfTlJdOworCisgICAgY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRy eSAqZXg7CisgICAgY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXhfZW5kOwor fTsKKworY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpmaW5kX3RleHRfcmVnaW9uKHVuc2ln bmVkIGxvbmcgYWRkcik7Cit2b2lkIHNldHVwX3ZpcnR1YWxfcmVnaW9ucyhjb25zdCBzdHJ1Y3Qg ZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmVuZCk7Cit2b2lkIHVucmVnaXN0 ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbih2b2lkKTsKK3ZvaWQgcmVnaXN0ZXJfdmlydHVhbF9yZWdp b24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKTsKK3ZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3Jl Z2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIpOworCisjZW5kaWYgLyogX19YRU5fVklSVFVB TF9SRUdJT05fXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuNS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK