From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 03/28] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables lookup. Date: Thu, 24 Mar 2016 16:00:15 -0400 Message-ID: <1458849640-22588-4-git-send-email-konrad.wilk@oracle.com> References: <1458849640-22588-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ajBRV-0007La-5G for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 20:01:17 +0000 In-Reply-To: <1458849640-22588-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 RHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgaHlwZXJ2aXNvciB3ZSBoYXZlIHR3byByZWdpb25zIG9m CmV4ZWN1dGFibGUgY29kZSAtIHN0ZXh0IC0+IF9ldGV4dCwgYW5kIF9zaW5pdHRleHQgLT4gX2Vp bml0ZXh0LgoKVGhlIGxhdGVyIGlzIG5vdCBuZWVkZWQgYWZ0ZXIgYm9vdHVwLgoKV2UgYWxzbyBo YXZlIHZhcmlvdXMgYnVpbHQtaW4gbWFjcm9zIGFuZCBmdW5jdGlvbnMgdG8gc2VhcmNoCmluIGJl dHdlZW4gdGhvc2UgdHdvIHN3YXRocyBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSBzeXN0 ZW0uCgpUaGF0IGlzIGVpdGhlciBmb3IgYnVnX2ZyYW1lcywgZXhjZXB0aW9ucyAoeDg2KSBvciBz eW1ib2wKbmFtZXMgZm9yIHRoZSBpbnN0cnVjdGlvbi4KCldpdGggeFNwbGljZSBpbiB0aGUgcGlj dHVyZSAtIHdlIG5lZWQgYSBtZWNoYW5zaW0gZm9yIG5ldyBwYXlsb2Fkcwp0byBzZWFyY2hlZCBh cyB3ZWxsIGZvciBhbGwgb2YgdGhpcy4KCk9yaWdpbmFsbHkgd2UgaGFkIGV4dHJhICdpZiAoeHNw bGljZSkuLi4nIGJ1dCB0aGF0IGdldHMKYSBiaXQgdGlyaW5nIGFuZCBkb2VzIG5vdCBob29rIHVw IG5pY2VseS4KClRoaXMgJ3N0cnVjdCB2aXJ0dWFsX3JlZ2lvbicgYW5kIHZpcnR1YWxfcmVnaW9u X2xpc3QgcHJvdmlkZSBhCm1lY2hhbmlzbSB0byBzZWFyY2ggZm9yIHRoZSBidWdfZnJhbWVzLCBl eGNlcHRpb24gdGFibGUsCmFuZCBzeW1ib2wgbmFtZXMgZW50cmllcyB3aXRob3V0IGhhdmluZyB2 YXJpb3VzIGNhbGxzIGluCm90aGVyIHN1Yi1jb21wb25lbnRzIGluIHRoZSBzeXN0ZW0uCgpDb2Rl IHdoaWNoIHdpc2hlcyB0byBwYXJ0aWNpcGF0ZSBpbiBidWdfZnJhbWVzIGFuZCBleGNlcHRpb24g dGFibGUKZW50cmllcyBzZWFyY2ggaGFzIHRvIG9ubHkgdXNlIHR3byBwdWJsaWMgQVBJczoKIC0g cmVnaXN0ZXJfdmlydHVhbF9yZWdpb24KIC0gdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbgoKdG8g bGV0IHRoZSBjb3JlIGNvZGUga25vdy4KCklmIHRoZSAtPmxvb2t1cF9zeW1ib2wgaXMgbm90IHRo ZW4gdGhlIGRlZmF1bHQgaW50ZXJuYWwgc3ltYm9sIGxvb2t1cAptZWNoYW5pc20gaXMgdXNlZC4K ClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K U2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUu Y29tPgoKLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBjaXRy aXguY29tPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtlaXIg RnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKdjQ6IE5ldyBw YXRjaC4KdjU6CiAtIFJlbmFtZSB0byB2aXJ0dWFsX3JlZ2lvbi4KIC0gRGl0Y2ggdGhlICdza2lw JyBmdW5jdGlvbi4KIC0gUmVtb3ZlIHRoZSBfc3RleHQuCiAtIFVzZSBSQ1UgbGlzdHMuCiAtIEFk ZCBhIHNlYXJjaCBmdW5jdGlvbi4KIC0gUmVtb3ZlIGV4dGVybiwgYWRkIHJjdV9yZWFkX2xvY2su IHJlbW92ZSBfXyBmcm9tIG5hbWUuCi0tLQotLS0KIHhlbi9hcmNoL2FybS9zZXR1cC5jICAgICAg ICAgICAgIHwgICA0ICsKIHhlbi9hcmNoL2FybS90cmFwcy5jICAgICAgICAgICAgIHwgIDM5ICsr KysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9leHRhYmxlLmMgICAgICAgICAgIHwgIDEyICsrLQogeGVu L2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgfCAgIDYgKysKIHhlbi9hcmNoL3g4Ni90cmFw cy5jICAgICAgICAgICAgIHwgIDQwICsrKysrKy0tLS0KIHhlbi9jb21tb24vTWFrZWZpbGUgICAg ICAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vc3ltYm9scy5jICAgICAgICAgICAgIHwgIDEx ICsrLQogeGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jICAgICAgfCAxNjAgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oICAg ICAgICB8ICAgOSArKysKIHhlbi9pbmNsdWRlL3hlbi92aXJ0dWFsX3JlZ2lvbi5oIHwgIDQ4ICsr KysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjkzIGluc2VydGlvbnMoKyksIDM3IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vdmlydHVhbF9yZWdpb24uYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi92aXJ0dWFsX3JlZ2lvbi5oCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3NldHVwLmMgYi94ZW4vYXJjaC9hcm0vc2V0dXAuYwppbmRl eCA2ZDIwNWE5Li4wOWZmMWVhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vc2V0dXAuYworKysg Yi94ZW4vYXJjaC9hcm0vc2V0dXAuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHhlbi9r ZXloYW5kbGVyLmg+CiAjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi9wZm4uaD4K KyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgog I2luY2x1ZGUgPHhlbi9saWJmZHQvbGliZmR0Lmg+CiAjaW5jbHVkZSA8eGVuL2FjcGkuaD4KQEAg LTg2MCw2ICs4NjEsOSBAQCB2b2lkIF9faW5pdCBzdGFydF94ZW4odW5zaWduZWQgbG9uZyBib290 X3BoeXNfb2Zmc2V0LAogCiAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsKIAor ICAgIC8qIE11c3QgYmUgZG9uZSBwYXN0IHNldHRpbmcgc3lzdGVtX3N0YXRlLiAqLworICAgIHVu cmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbigpOworCiAgICAgZG9tYWluX3VucGF1c2VfYnlf c3lzdGVtY29udHJvbGxlcihkb20wKTsKIAogICAgIC8qIFN3aXRjaCBvbiB0byB0aGUgZHluYW1p Y2FsbHkgYWxsb2NhdGVkIHN0YWNrIGZvciB0aGUgaWRsZSB2Y3B1CmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCmluZGV4IDMxZDIxMTUuLjIw OTdmNjkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS90cmFwcy5jCisrKyBiL3hlbi9hcmNoL2Fy bS90cmFwcy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNp bmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKyNpbmNs dWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvc2NoZWQuaD4KICNp bmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8YXNtL2RlYnVnZ2VyLmg+CkBAIC0xMDEs NiArMTAyLDggQEAgaW50ZWdlcl9wYXJhbSgiZGVidWdfc3RhY2tfbGluZXMiLCBkZWJ1Z19zdGFj a19saW5lcyk7CiAKIHZvaWQgaW5pdF90cmFwcyh2b2lkKQogeworICAgIHNldHVwX3ZpcnR1YWxf cmVnaW9ucygpOworCiAgICAgLyogU2V0dXAgSHlwIHZlY3RvciBiYXNlICovCiAgICAgV1JJVEVf U1lTUkVHKCh2YWRkcl90KWh5cF90cmFwc192ZWN0b3IsIFZCQVJfRUwyKTsKIApAQCAtMTA3Nywy NyArMTA4MCwzMyBAQCB2b2lkIGRvX3VuZXhwZWN0ZWRfdHJhcChjb25zdCBjaGFyICptc2csIHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogCiBpbnQgZG9fYnVnX2ZyYW1lKHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzLCB2YWRkcl90IHBjKQogewotICAgIGNvbnN0IHN0cnVjdCBidWdfZnJh bWUgKmJ1ZzsKKyAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWcgPSBOVUxMOwogICAgIGNv bnN0IGNoYXIgKnByZWZpeCA9ICIiLCAqZmlsZW5hbWUsICpwcmVkaWNhdGU7CiAgICAgdW5zaWdu ZWQgbG9uZyBmaXh1cDsKLSAgICBpbnQgaWQsIGxpbmVubzsKLSAgICBzdGF0aWMgY29uc3Qgc3Ry dWN0IGJ1Z19mcmFtZSAqY29uc3Qgc3RvcF9mcmFtZXNbXSA9IHsKLSAgICAgICAgX19zdG9wX2J1 Z19mcmFtZXNfMCwKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMSwKLSAgICAgICAgX19zdG9w X2J1Z19mcmFtZXNfMiwKLSAgICAgICAgTlVMTAotICAgIH07CisgICAgaW50IGlkID0gLTEsIGxp bmVubzsKKyAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKIAotICAgIGZvciAoIGJ1 ZyA9IF9fc3RhcnRfYnVnX2ZyYW1lcywgaWQgPSAwOyBzdG9wX2ZyYW1lc1tpZF07ICsrYnVnICkK KyAgICByZWdpb24gPSBzZWFyY2hfZm9yX3RleHQocGMpOworICAgIGlmICggcmVnaW9uICkKICAg ICB7Ci0gICAgICAgIHdoaWxlICggdW5saWtlbHkoYnVnID09IHN0b3BfZnJhbWVzW2lkXSkgKQot ICAgICAgICAgICAgKytpZDsKKyAgICAgICAgZm9yICggaWQgPSAwOyBpZCA8IEJVR0ZSQU1FX05S OyBpZCsrICkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAq YjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwogCi0gICAgICAgIGlmICggKCh2YWRkcl90 KWJ1Z19sb2MoYnVnKSkgPT0gcGMgKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBm b3IgKCBpID0gMCwgYiA9IHJlZ2lvbi0+ZnJhbWVbaWRdLmJ1Z3M7CisgICAgICAgICAgICAgICAg ICBpIDwgcmVnaW9uLT5mcmFtZVtpZF0ubl9idWdzOyBiKyssIGkrKyApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaWYgKCAoKHZhZGRyX3QpYnVnX2xvYyhiKSkgPT0gcGMgKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnVnID0gYjsKKyAgICAgICAgICAg ICAgICAgICAgZ290byBmb3VuZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoICFzdG9wX2ZyYW1lc1tpZF0gKQorIGZvdW5kOgor ICAgIGlmICggIWJ1ZyApCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwogCiAgICAgLyogV0FSTiwg QlVHIG9yIEFTU0VSVDogZGVjb2RlIHRoZSBmaWxlbmFtZSBwb2ludGVyIGFuZCBsaW5lIG51bWJl ci4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMgYi94ZW4vYXJjaC94ODYv ZXh0YWJsZS5jCmluZGV4IDg5YjViY2IuLmM2YzM2N2EgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9leHRhYmxlLmMKKysrIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwpAQCAtMSwxMCArMSwxMiBA QAogCi0jaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgogI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5j bHVkZSA8eGVuL2xpc3QuaD4KICNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKyNpbmNsdWRlIDx4ZW4v cmN1cGRhdGUuaD4KICNpbmNsdWRlIDx4ZW4vc29ydC5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9j ay5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVn aW9uLmg+CiAKICNkZWZpbmUgRVhfRklFTEQocHRyLCBmaWVsZCkgKCh1bnNpZ25lZCBsb25nKSYo cHRyKS0+ZmllbGQgKyAocHRyKS0+ZmllbGQpCiAKQEAgLTgwLDggKzgyLDEyIEBAIHNlYXJjaF9v bmVfdGFibGUoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZmlyc3QsCiB1bnNp Z25lZCBsb25nCiBzZWFyY2hfZXhjZXB0aW9uX3RhYmxlKHVuc2lnbmVkIGxvbmcgYWRkcikKIHsK LSAgICByZXR1cm4gc2VhcmNoX29uZV90YWJsZSgKLSAgICAgICAgX19zdGFydF9fX2V4X3RhYmxl LCBfX3N0b3BfX19leF90YWJsZS0xLCBhZGRyKTsKKyAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24g KnJlZ2lvbiA9IHNlYXJjaF9mb3JfdGV4dChhZGRyKTsKKworICAgIGlmICggcmVnaW9uICYmIHJl Z2lvbi0+ZXggKQorICAgICAgICByZXR1cm4gc2VhcmNoX29uZV90YWJsZShyZWdpb24tPmV4LCBy ZWdpb24tPmV4X2VuZC0xLCBhZGRyKTsKKworICAgIHJldHVybiAwOwogfQogCiB1bnNpZ25lZCBs b25nCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCmluZGV4IGVlNjVmNTUuLmM4YTVhZGIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk ZSA8eGVuL3Bmbi5oPgogI2luY2x1ZGUgPHhlbi9ub2RlbWFzay5oPgogI2luY2x1ZGUgPHhlbi90 bWVtX3hlbi5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogI2luY2x1ZGUgPHhl bi93YXRjaGRvZy5oPgogI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+CiAjaW5jbHVkZSA8Y29t cGF0L3BsYXRmb3JtLmg+CkBAIC01MTQsNiArNTE1LDkgQEAgc3RhdGljIHZvaWQgbm9pbmxpbmUg aW5pdF9kb25lKHZvaWQpCiAKICAgICBzeXN0ZW1fc3RhdGUgPSBTWVNfU1RBVEVfYWN0aXZlOwog CisgICAgLyogTVVTVCBiZSBkb25lIHByaW9yIHRvIHJlbW92aW5nIC5pbml0IGRhdGEuICovCisg ICAgdW5yZWdpc3Rlcl9pbml0X3ZpcnR1YWxfcmVnaW9uKCk7CisKICAgICBkb21haW5fdW5wYXVz ZV9ieV9zeXN0ZW1jb250cm9sbGVyKGhhcmR3YXJlX2RvbWFpbik7CiAKICAgICAvKiBaZXJvIHRo ZSAuaW5pdCBjb2RlIGFuZCBkYXRhLiAqLwpAQCAtNjE2LDYgKzYyMCw4IEBAIHZvaWQgX19pbml0 IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgc21wX3ByZXBh cmVfYm9vdF9jcHUoKTsKICAgICBzb3J0X2V4Y2VwdGlvbl90YWJsZXMoKTsKIAorICAgIHNldHVw X3ZpcnR1YWxfcmVnaW9ucygpOworCiAgICAgLyogRnVsbCBleGNlcHRpb24gc3VwcG9ydCBmcm9t IGhlcmUgb24gaW4uICovCiAKICAgICBsb2FkZXIgPSAobWJpLT5mbGFncyAmIE1CSV9MT0FERVJO QU1FKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJh cHMuYwppbmRleCA2ZmJiMWNmLi42YzczMTk4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJh cHMuYworKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1 ZGUgPHhlbi9rZXhlYy5oPgogI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogI2luY2x1ZGUgPHhlbi9w YWdpbmcuaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4v d2F0Y2hkb2cuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+ CkBAIC0xMTMyLDE4ICsxMTMzLDEyIEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9mb3JjZWRfaW52YWxp ZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogdm9pZCBkb19pbnZhbGlkX29wKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewotICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUg KmJ1ZzsKKyAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWcgPSBOVUxMOwogICAgIHU4IGJ1 Z19pbnNuWzJdOwogICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICIiLCAqZmlsZW5hbWUsICpwcmVk aWNhdGUsICplaXAgPSAoY2hhciAqKXJlZ3MtPmVpcDsKICAgICB1bnNpZ25lZCBsb25nIGZpeHVw OwotICAgIGludCBpZCwgbGluZW5vOwotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1l ICpjb25zdCBzdG9wX2ZyYW1lc1tdID0gewotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18wLAot ICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18xLAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18y LAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18zLAotICAgICAgICBOVUxMCi0gICAgfTsKKyAg ICBpbnQgaWQgPSAtMSwgbGluZW5vOworICAgIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9u OwogCiAgICAgREVCVUdHRVJfdHJhcF9lbnRyeShUUkFQX2ludmFsaWRfb3AsIHJlZ3MpOwogCkBA IC0xMTYwLDE2ICsxMTU1LDI5IEBAIHZvaWQgZG9faW52YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKICAgICAgICAgIG1lbWNtcChidWdfaW5zbiwgIlx4Zlx4YiIsIHNpemVvZihi dWdfaW5zbikpICkKICAgICAgICAgZ290byBkaWU7CiAKLSAgICBmb3IgKCBidWcgPSBfX3N0YXJ0 X2J1Z19mcmFtZXMsIGlkID0gMDsgc3RvcF9mcmFtZXNbaWRdOyArK2J1ZyApCisgICAgcmVnaW9u ID0gc2VhcmNoX2Zvcl90ZXh0KHJlZ3MtPmVpcCk7CisgICAgaWYgKCByZWdpb24gKQogICAgIHsK LSAgICAgICAgd2hpbGUgKCB1bmxpa2VseShidWcgPT0gc3RvcF9mcmFtZXNbaWRdKSApCi0gICAg ICAgICAgICArK2lkOwotICAgICAgICBpZiAoIGJ1Z19sb2MoYnVnKSA9PSBlaXAgKQotICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIGZvciAoIGlkID0gMDsgaWQgPCBCVUdGUkFNRV9OUjsgaWQr KyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmI7Cisg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgICAgICAgICAgZm9yICggaSA9IDAsIGIg PSByZWdpb24tPmZyYW1lW2lkXS5idWdzOworICAgICAgICAgICAgICAgICAgaSA8IHJlZ2lvbi0+ ZnJhbWVbaWRdLm5fYnVnczsgYisrLCBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIGlmICggYnVnX2xvYyhiKSA9PSBlaXAgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgYnVnID0gYjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZDsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYg KCAhc3RvcF9mcmFtZXNbaWRdICkKLSAgICAgICAgZ290byBkaWU7CiAKKyBmb3VuZDoKKyAgICBp ZiAoICFidWcgKQorICAgICAgICBnb3RvIGRpZTsKICAgICBlaXAgKz0gc2l6ZW9mKGJ1Z19pbnNu KTsKICAgICBpZiAoIGlkID09IEJVR0ZSQU1FX3J1bl9mbiApCiAgICAgewpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5kZXggNzdkZTI3ZS4u ZTQzZWM0OSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9u L01ha2VmaWxlCkBAIC01MSw2ICs1MSw3IEBAIG9iai15ICs9IHRpbWUubwogb2JqLXkgKz0gdGlt ZXIubwogb2JqLXkgKz0gdHJhY2Uubwogb2JqLXkgKz0gdmVyc2lvbi5vCitvYmoteSArPSB2aXJ0 dWFsX3JlZ2lvbi5vCiBvYmoteSArPSB2bV9ldmVudC5vCiBvYmoteSArPSB2bWFwLm8KIG9iai15 ICs9IHZzcHJpbnRmLm8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc3ltYm9scy5jIGIveGVuL2Nv bW1vbi9zeW1ib2xzLmMKaW5kZXggYTU5YzU5ZC4uOTJmYjBlZSAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9zeW1ib2xzLmMKKysrIGIveGVuL2NvbW1vbi9zeW1ib2xzLmMKQEAgLTE3LDYgKzE3LDcg QEAKICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL3N0cmluZy5oPgogI2luY2x1 ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogI2lu Y2x1ZGUgPHB1YmxpYy9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4K IApAQCAtOTcsOCArOTgsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zeW1ib2xfb2Zmc2V0 KHVuc2lnbmVkIGxvbmcgcG9zKQogCiBib29sX3QgaXNfYWN0aXZlX2tlcm5lbF90ZXh0KHVuc2ln bmVkIGxvbmcgYWRkcikKIHsKLSAgICByZXR1cm4gKGlzX2tlcm5lbF90ZXh0KGFkZHIpIHx8Ci0g ICAgICAgICAgICAoc3lzdGVtX3N0YXRlIDwgU1lTX1NUQVRFX2FjdGl2ZSAmJiBpc19rZXJuZWxf aW5pdHRleHQoYWRkcikpKTsKKyAgICByZXR1cm4gISFzZWFyY2hfZm9yX3RleHQoYWRkcik7CiB9 CiAKIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkciwKQEAgLTEw OCwxMyArMTA4LDE4IEBAIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcg YWRkciwKIHsKICAgICB1bnNpZ25lZCBsb25nIGksIGxvdywgaGlnaCwgbWlkOwogICAgIHVuc2ln bmVkIGxvbmcgc3ltYm9sX2VuZCA9IDA7CisgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdp b247CiAKICAgICBuYW1lYnVmW0tTWU1fTkFNRV9MRU5dID0gMDsKICAgICBuYW1lYnVmWzBdID0g MDsKIAotICAgIGlmICghaXNfYWN0aXZlX2tlcm5lbF90ZXh0KGFkZHIpKQorICAgIHJlZ2lvbiA9 IHNlYXJjaF9mb3JfdGV4dChhZGRyKTsKKyAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJu IE5VTEw7CiAKKyAgICBpZiAocmVnaW9uLT5zeW1ib2xzX2xvb2t1cCkKKyAgICAgICAgcmV0dXJu IHJlZ2lvbi0+c3ltYm9sc19sb29rdXAoYWRkciwgc3ltYm9sc2l6ZSwgb2Zmc2V0LCBuYW1lYnVm KTsKKwogICAgICAgICAvKiBkbyBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIHNvcnRlZCBzeW1ib2xz X2FkZHJlc3NlcyBhcnJheSAqLwogICAgIGxvdyA9IDA7CiAgICAgaGlnaCA9IHN5bWJvbHNfbnVt X3N5bXM7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMgYi94ZW4vY29t bW9uL3ZpcnR1YWxfcmVnaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YTU2MGZlMAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vdmlydHVhbF9yZWdpb24uYwpA QCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29y IGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaW5jbHVk ZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8eGVuL3Jj dXBkYXRlLmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1 YWxfcmVnaW9uLmg+CisKKyNpZmRlZiBDT05GSUdfWDg2CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu aD4KKyNlbmRpZgorCitzdGF0aWMgc3RydWN0IHZpcnR1YWxfcmVnaW9uIGNvcmUgPSB7CisgICAg Lmxpc3QgPSBMSVNUX0hFQURfSU5JVChjb3JlLmxpc3QpLAorICAgIC5zdGFydCA9ICh1bnNpZ25l ZCBsb25nKV9zdGV4dCwKKyAgICAuZW5kID0gKHVuc2lnbmVkIGxvbmcpX2V0ZXh0LAorI2lmZGVm IENPTkZJR19YODYKKyAgICAuZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqKV9f c3RhcnRfX19leF90YWJsZSwKKyAgICAuZXhfZW5kID0gKHN0cnVjdCBleGNlcHRpb25fdGFibGVf ZW50cnkgKilfX3N0b3BfX19leF90YWJsZSwKKyNlbmRpZgorfTsKKworLyogQmVjb21lcyBpcnJl bGV2YW50IHdoZW4gX19pbml0IHNlY3Rpb25zIGFyZSBjbGVhcmVkLiAqLworc3RhdGljIHN0cnVj dCB2aXJ0dWFsX3JlZ2lvbiBjb3JlX2luaXQgX19pbml0ZGF0YSA9IHsKKyAgICAubGlzdCA9IExJ U1RfSEVBRF9JTklUKGNvcmVfaW5pdC5saXN0KSwKKyAgICAuc3RhcnQgPSAodW5zaWduZWQgbG9u Zylfc2luaXR0ZXh0LAorICAgIC5lbmQgPSAodW5zaWduZWQgbG9uZylfZWluaXR0ZXh0LAorI2lm ZGVmIENPTkZJR19YODYKKyAgICAvKiBFdmVuIGlmIHRoZXkgYXJlIF9faW5pdCB0aGVpciBleGNl cHRpb24gZW50cnkgc3RpbGwgZ2V0cyBzdHVjayBoZXJlLiAqLworICAgIC5leCA9IChzdHJ1Y3Qg ZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICopX19zdGFydF9fX2V4X3RhYmxlLAorICAgIC5leF9lbmQg PSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqKV9fc3RvcF9fX2V4X3RhYmxlLAorI2Vu ZGlmCit9OworCisvKgorICogUkNVIGxvY2tpbmcuIEFkZGl0aW9ucyBhcmUgZG9uZSBlaXRoZXIg YXQgc3RhcnR1cCAod2hlbiB0aGVyZSBpcyBvbmx5CisgKiBvbmUgQ1BVKSBvciB3aGVuIGFsbCBD UFVzIGFyZSBydW5uaW5nIHdpdGhvdXQgSVJRcy4KKyAqCisgKiBEZWxldGlvbnMgYXJlIGJpZyB0 cmlja3kuIFdlIGRvIGl0IHdoZW4geFNwbGljaW5nIChhbGwgQ1BVcyBydW5uaW5nCisgKiB3aXRo b3V0IElSUXMpIG9yIGR1cmluZyBib290dXAgKHdoZW4gY2xlYXJpbmcgdGhlIGluaXQpLgorICoK KyAqIEhlbmNlIHdlIHVzZSBsaXN0X2RlbF9yY3UgKHdoaWNoIHNwb3J0cyBhbiBtZW1vcnkgZmVu Y2UpIGFuZCBhIHNwaW5sb2NrCisgKiBvbiBkZWxldGlvbi4KKyAqCisgKiBBbGwgcmVhZGVycyBv ZiB2aXJ0dWFsX3JlZ2lvbl9saXN0IE1VU1QgdXNlIGxpc3QgbGlzdF9mb3JfZWFjaF9lbnRyeV9y Y3UuCisgKgorICovCitzdGF0aWMgTElTVF9IRUFEKHZpcnR1YWxfcmVnaW9uX2xpc3QpOworc3Rh dGljIERFRklORV9TUElOTE9DSyh2aXJ0dWFsX3JlZ2lvbl9sb2NrKTsKK3N0YXRpYyBERUZJTkVf UkNVX1JFQURfTE9DSyhyY3VfdmlydHVhbF9yZWdpb25fbG9jayk7CisKK3N0cnVjdCB2aXJ0dWFs X3JlZ2lvbiogc2VhcmNoX2Zvcl90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKyAgICBzdHJ1 Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKKworICAgIHJjdV9yZWFkX2xvY2soJnJjdV92aXJ0 dWFsX3JlZ2lvbl9sb2NrKTsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KCByZWdpb24s ICZ2aXJ0dWFsX3JlZ2lvbl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggYWRkciA+ PSByZWdpb24tPnN0YXJ0ICYmIGFkZHIgPCByZWdpb24tPmVuZCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHJjdV9yZWFkX3VubG9jaygmcmN1X3ZpcnR1YWxfcmVnaW9uX2xvY2spOworICAgICAg ICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjdV9yZWFkX3Vu bG9jaygmcmN1X3ZpcnR1YWxfcmVnaW9uX2xvY2spOworICAgIHJldHVybiBOVUxMOworfQorCitp bnQgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKQorewor ICAgIEFTU0VSVCghbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7CisKKyAgICBsaXN0X2FkZF90YWls X3JjdSgmci0+bGlzdCwgJnZpcnR1YWxfcmVnaW9uX2xpc3QpOworCisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdp b24gKnIpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIHNwaW5fbG9ja19pcnFz YXZlKCZ2aXJ0dWFsX3JlZ2lvbl9sb2NrLCBmbGFncyk7CisgICAgbGlzdF9kZWxfcmN1KCZyLT5s aXN0KTsKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aXJ0dWFsX3JlZ2lvbl9sb2NrLCBm bGFncyk7CisgICAgLyoKKyAgICAgKiBXZSBkbyBub3QgbmVlZCB0byBpbnZva2UgY2FsbF9yY3Uu CisgICAgICoKKyAgICAgKiBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IG9uIHRoZSBkZWxl dGlvbiB3ZSBoYXZlIG1hZGUgc3VyZQorICAgICAqIHRvIHVzZSBzcGlubG9ja3MgKHRvIGd1YXJk IGFnYWluc3Qgc29tZWJvZHkgZWxzZSBjYWxsaW5nCisgICAgICogdW5yZWdpc3Rlcl92aXJ0dWFs X3JlZ2lvbikgYW5kIGxpc3RfZGVsZXRpb24gc3BpY2VkIHdpdGgKKyAgICAgKiBtZW1vcnkgYmFy cmllci4KKyAgICAgKgorICAgICAqIFRoYXQgcHJvdGVjdHMgdXMgZnJvbSBjb3JydXB0aW5nIHRo ZSBsaXN0IGFzIHRoZSByZWFkZXJzIGFsbAorICAgICAqIHVzZSBsaXN0X2Zvcl9lYWNoX2VudHJ5 X3JjdSB3aGljaCBpcyBzYWZlIGFnYWluc3QgY29uY3VycmVudAorICAgICAqIGRlbGV0aW9ucy4K KyAgICAgKi8KK30KKwordm9pZCB1bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0 dWFsX3JlZ2lvbiAqcikKK3sKKyAgICAvKiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgZnJvbSB4U3Bs aWNlIC0gd2hpY2ggaGFzIElSUXMgZGlzYWJsZWQuICovCisgICAgQVNTRVJUKCFsb2NhbF9pcnFf aXNfZW5hYmxlZCgpKTsKKworICAgIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbihyKTsKK30KKwordm9p ZCB1bnJlZ2lzdGVyX2luaXRfdmlydHVhbF9yZWdpb24odm9pZCkKK3sKKyAgICBCVUdfT04oc3lz dGVtX3N0YXRlICE9IFNZU19TVEFURV9hY3RpdmUpOworCisgICAgcmVtb3ZlX3ZpcnR1YWxfcmVn aW9uKCZjb3JlX2luaXQpOworfQorCit2b2lkIF9faW5pdCBzZXR1cF92aXJ0dWFsX3JlZ2lvbnMo dm9pZCkKK3sKKyAgICBzc2l6ZV90IHN6OworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpjb25zdCBfX2luaXRjb25zdHJlbCBidWdfZnJhbWVz W10gPSB7CisgICAgICAgIF9fc3RhcnRfYnVnX2ZyYW1lcywKKyAgICAgICAgX19zdG9wX2J1Z19m cmFtZXNfMCwKKyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMSwKKyAgICAgICAgX19zdG9wX2J1 Z19mcmFtZXNfMiwKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVz XzMsCisjZW5kaWYKKyAgICAgICAgTlVMTAorICAgIH07CisKKyAgICBmb3IgKCBpID0gMTsgYnVn X2ZyYW1lc1tpXTsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUg KnM7CisKKyAgICAgICAgcyA9IGJ1Z19mcmFtZXNbaSAtIDFdOworICAgICAgICBzeiA9IGJ1Z19m cmFtZXNbaV0gLSBzOworCisgICAgICAgIGNvcmUuZnJhbWVbaSAtIDFdLm5fYnVncyA9IHN6Owor ICAgICAgICBjb3JlLmZyYW1lW2kgLSAxXS5idWdzID0gczsKKworICAgICAgICBjb3JlX2luaXQu ZnJhbWVbaSAtIDFdLm5fYnVncyA9IHN6OworICAgICAgICBjb3JlX2luaXQuZnJhbWVbaSAtIDFd LmJ1Z3MgPSBzOworICAgIH0KKworICAgIHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKCZjb3JlX2lu aXQpOworICAgIHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKCZjb3JlKTsKK30KKworLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oIGIv eGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAppbmRleCAxZmEwNTM3Li5mNThlNjExIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zeW1i b2xzLmgKQEAgLTUsNiArNSwxNSBAQAogCiAjZGVmaW5lIEtTWU1fTkFNRV9MRU4gMTI3CiAKKy8q CisgKiBUeXBlZGVmIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHRoYXQgc3ltYm9sc19sb29r dXAKKyAqIGNhbiBjYWxsIGlmIHZpcnR1YWxfcmVnaW9uX2xpc3QgaGFzIGFuIGNhbGxiYWNrIGZv ciBpdC4KKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICpzeW1ib2xzX2xvb2t1cF90KHVuc2lnbmVk IGxvbmcgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nICpzeW1ib2xzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgKm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICpuYW1lYnVmKTsKKwogLyogTG9va3VwIGFuIGFkZHJlc3MuICovCiBjb25zdCBj aGFyICpzeW1ib2xzX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzeW1ib2xzaXplLApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmggYi94ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdp b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWQ1ZWI0Ci0tLSAvZGV2 L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmgKQEAgLTAsMCArMSw0 OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlh dGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaWZuZGVmIF9fWEVOX1ZJUlRV QUxfUkVHSU9OX0xJU1RfXworI2RlZmluZSBfX1hFTl9WSVJUVUFMX1JFR0lPTl9MSVNUX18KKwor I2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4KKworc3RydWN0 IHZpcnR1YWxfcmVnaW9uCit7CisgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworICAgIHVuc2ln bmVkIGxvbmcgc3RhcnQ7ICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgc3RhcnQuICovCisgICAg dW5zaWduZWQgbG9uZyBlbmQ7ICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBzdGFydC4gKi8K KworICAgIC8qCisgICAgICogSWYgdGhpcyBpcyBOVUxMIHRoZSBkZWZhdWx0IGxvb2t1cCBtZWNo YW5pc20gaXMgdXNlZC4KKyAgICAgKi8KKyAgICBzeW1ib2xzX2xvb2t1cF90ICpzeW1ib2xzX2xv b2t1cDsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1 Z3M7IC8qIFRoZSBwb2ludGVyIHRvIGFycmF5IG9mIGJ1ZyBmcmFtZXMuICovCisgICAgICAgIHNz aXplX3Qgbl9idWdzOyAgICAgICAgIC8qIFRoZSBudW1iZXIgb2YgdGhlbS4gKi8KKyAgICB9IGZy YW1lW0JVR0ZSQU1FX05SXTsKKworICAgIHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4 OworICAgIHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4X2VuZDsKK307CisKK3N0cnVj dCB2aXJ0dWFsX3JlZ2lvbiAqc2VhcmNoX2Zvcl90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkcik7Cit2 b2lkIHNldHVwX3ZpcnR1YWxfcmVnaW9ucyh2b2lkKTsKK3ZvaWQgdW5yZWdpc3Rlcl9pbml0X3Zp cnR1YWxfcmVnaW9uKHZvaWQpOworaW50IHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVjdCB2 aXJ0dWFsX3JlZ2lvbiAqcik7Cit2b2lkIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0 IHZpcnR1YWxfcmVnaW9uICpyKTsKKworI2VuZGlmIC8qIF9fWEVOX1ZJUlRVQUxfUkVHSU9OX0xJ U1RfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxl LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICog aW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuNS4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK