From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 07/27] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables lookup. Date: Mon, 25 Apr 2016 11:34:54 -0400 Message-ID: <1461598514-5440-8-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1auiYV-0004C7-2O for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:11 +0000 In-Reply-To: <1461598514-5440-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: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Julien Grall , Stefano Stabellini , Keir Fraser , 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 LS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4 ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENv b3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY0OiBOZXcgcGF0Y2guCnY1OgogLSBS ZW5hbWUgdG8gdmlydHVhbF9yZWdpb24uCiAtIERpdGNoIHRoZSAnc2tpcCcgZnVuY3Rpb24uCiAt IFJlbW92ZSB0aGUgX3N0ZXh0LgogLSBVc2UgUkNVIGxpc3RzLgogLSBBZGQgYSBzZWFyY2ggZnVu Y3Rpb24uCiAtIFJlbW92ZSBleHRlcm4sIGFkZCByY3VfcmVhZF9sb2NrLiByZW1vdmUgX18gZnJv bSBuYW1lLgp2Njogcy9zZWFyY2hfZm9yX3RleHQvZmluZF90ZXh0X3JlZ2lvbi8uCiAtIERyb3Ag dGhlIHVhY2Nlc3MuaCBuZWVkLiBNYWtlIHNldHVwX3ZpcnR1YWxfcmVnaW9ucyBhY2NlcHQgdHdv IHBhcmFtZXRlcnMuCiAgIFJlbW92ZSAjaWZkZWYuCiAtIENvbnN0aWZ5IHN0cnVjdCBleGNlcHRp b25fdGFibGVfZW50cnkuCiAtIFJlbW92ZSBzb21lIG5ld2xpbmVzLgogLSBDaGFuZ2UgaGVhZGVy IGZpbGUgZ3VhcmQgI2RlZmluZSB0byBwcm9wZXIgbmFtZS4Kdjk6CiAtIFByb3BlciAjZGVmaW5l ICh3YXMgbWlzc2luZyBfSCkKIC0gcy9iaWcvYml0LwogLSBDaGFuZ2UgJ3N0YXJ0JyBhbmQgJ2Vu ZCcgdG8gdm9pZCogdG8gbm90IGRvIGNhc3RpbmcgaW4geFNwbGljZSBjb2RlLgogLSBNYWtlICdz dGFydCcgYW5kICdlbmQnIGJlIGNvbnN0IHZvaWQgKi4KLS0tCiB4ZW4vYXJjaC9hcm0vc2V0dXAu YyAgICAgICAgICAgICB8ICAgNCArKwogeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAgICAgICAgICAg fCAgMzkgKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9leHRhYmxlLmMgICAgICAgICAgIHwgIDEy ICsrKy0KIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAgICAgICAgICAgIHwgICA2ICsrCiB4ZW4vYXJj aC94ODYvdHJhcHMuYyAgICAgICAgICAgICB8ICA0MCArKysrKystLS0tLQogeGVuL2NvbW1vbi9N YWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi9zeW1ib2xzLmMgICAgICAg ICAgICAgfCAgMTEgKystCiB4ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMgICAgICB8IDE0OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9z eW1ib2xzLmggICAgICAgIHwgICA5ICsrKwogeGVuL2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9u LmggfCAgNDcgKysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjgwIGluc2VydGlvbnMo KyksIDM3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vdmlydHVh bF9yZWdpb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi92aXJ0dWFsX3Jl Z2lvbi5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3NldHVwLmMgYi94ZW4vYXJjaC9hcm0v c2V0dXAuYwppbmRleCA2ZDIwNWE5Li4wOWZmMWVhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0v c2V0dXAuYworKysgYi94ZW4vYXJjaC9hcm0vc2V0dXAuYwpAQCAtMzQsNiArMzQsNyBAQAogI2lu Y2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+CiAjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUg PHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4 ZW4vdm1hcC5oPgogI2luY2x1ZGUgPHhlbi9saWJmZHQvbGliZmR0Lmg+CiAjaW5jbHVkZSA8eGVu L2FjcGkuaD4KQEAgLTg2MCw2ICs4NjEsOSBAQCB2b2lkIF9faW5pdCBzdGFydF94ZW4odW5zaWdu ZWQgbG9uZyBib290X3BoeXNfb2Zmc2V0LAogCiAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRF X2FjdGl2ZTsKIAorICAgIC8qIE11c3QgYmUgZG9uZSBwYXN0IHNldHRpbmcgc3lzdGVtX3N0YXRl LiAqLworICAgIHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbigpOworCiAgICAgZG9tYWlu X3VucGF1c2VfYnlfc3lzdGVtY29udHJvbGxlcihkb20wKTsKIAogICAgIC8qIFN3aXRjaCBvbiB0 byB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHN0YWNrIGZvciB0aGUgaWRsZSB2Y3B1CmRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCmluZGV4 IDlhYmZjM2MuLmQ5ZmZjYzMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS90cmFwcy5jCisrKyBi L3hlbi9hcmNoL2FybS90cmFwcy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8eGVuL3Nv ZnRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4vcGVy ZmMuaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMv c2NoZWQuaD4KICNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8YXNtL2RlYnVnZ2Vy Lmg+CkBAIC0xMDEsNiArMTAyLDggQEAgaW50ZWdlcl9wYXJhbSgiZGVidWdfc3RhY2tfbGluZXMi LCBkZWJ1Z19zdGFja19saW5lcyk7CiAKIHZvaWQgaW5pdF90cmFwcyh2b2lkKQogeworICAgIHNl dHVwX3ZpcnR1YWxfcmVnaW9ucyhOVUxMLCBOVUxMKTsKKwogICAgIC8qIFNldHVwIEh5cCB2ZWN0 b3IgYmFzZSAqLwogICAgIFdSSVRFX1NZU1JFRygodmFkZHJfdCloeXBfdHJhcHNfdmVjdG9yLCBW QkFSX0VMMik7CiAKQEAgLTExMTYsMjcgKzExMTksMzMgQEAgdm9pZCBkb191bmV4cGVjdGVkX3Ry YXAoY29uc3QgY2hhciAqbXNnLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogaW50IGRv X2J1Z19mcmFtZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdmFkZHJfdCBwYykKIHsKLSAg ICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWc7CisgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFt ZSAqYnVnID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpwcmVmaXggPSAiIiwgKmZpbGVuYW1lLCAq cHJlZGljYXRlOwogICAgIHVuc2lnbmVkIGxvbmcgZml4dXA7Ci0gICAgaW50IGlkLCBsaW5lbm87 Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmNvbnN0IHN0b3BfZnJhbWVzW10g PSB7Ci0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCi0gICAgICAgIF9fc3RvcF9idWdfZnJh bWVzXzEsCi0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIsCi0gICAgICAgIE5VTEwKLSAgICB9 OworICAgIGludCBpZCA9IC0xLCBsaW5lbm87CisgICAgY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVn aW9uICpyZWdpb247CiAKLSAgICBmb3IgKCBidWcgPSBfX3N0YXJ0X2J1Z19mcmFtZXMsIGlkID0g MDsgc3RvcF9mcmFtZXNbaWRdOyArK2J1ZyApCisgICAgcmVnaW9uID0gZmluZF90ZXh0X3JlZ2lv bihwYyk7CisgICAgaWYgKCByZWdpb24gKQogICAgIHsKLSAgICAgICAgd2hpbGUgKCB1bmxpa2Vs eShidWcgPT0gc3RvcF9mcmFtZXNbaWRdKSApCi0gICAgICAgICAgICArK2lkOworICAgICAgICBm b3IgKCBpZCA9IDA7IGlkIDwgQlVHRlJBTUVfTlI7IGlkKysgKQorICAgICAgICB7CisgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpiOworICAgICAgICAgICAgdW5zaWduZWQgaW50 IGk7CiAKLSAgICAgICAgaWYgKCAoKHZhZGRyX3QpYnVnX2xvYyhidWcpKSA9PSBwYyApCi0gICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZvciAoIGkgPSAwLCBiID0gcmVnaW9uLT5mcmFt ZVtpZF0uYnVnczsKKyAgICAgICAgICAgICAgICAgIGkgPCByZWdpb24tPmZyYW1lW2lkXS5uX2J1 Z3M7IGIrKywgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoICgodmFk ZHJfdClidWdfbG9jKGIpKSA9PSBwYyApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICBidWcgPSBiOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLQotICAgIGlmICgg IXN0b3BfZnJhbWVzW2lkXSApCisgZm91bmQ6CisgICAgaWYgKCAhYnVnICkKICAgICAgICAgcmV0 dXJuIC1FTk9FTlQ7CiAKICAgICAvKiBXQVJOLCBCVUcgb3IgQVNTRVJUOiBkZWNvZGUgdGhlIGZp bGVuYW1lIHBvaW50ZXIgYW5kIGxpbmUgbnVtYmVyLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2V4dGFibGUuYyBiL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMKaW5kZXggODliNWJjYi4uMmEw NmNjYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2V4dGFibGUuYworKysgYi94ZW4vYXJjaC94 ODYvZXh0YWJsZS5jCkBAIC0xLDEwICsxLDEyIEBACiAKLSNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+ CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgogI2luY2x1ZGUg PHhlbi9wZXJmYy5oPgorI2luY2x1ZGUgPHhlbi9yY3VwZGF0ZS5oPgogI2luY2x1ZGUgPHhlbi9z b3J0Lmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu aD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KIAogI2RlZmluZSBFWF9GSUVMRChw dHIsIGZpZWxkKSAoKHVuc2lnbmVkIGxvbmcpJihwdHIpLT5maWVsZCArIChwdHIpLT5maWVsZCkK IApAQCAtODAsOCArODIsMTIgQEAgc2VhcmNoX29uZV90YWJsZShjb25zdCBzdHJ1Y3QgZXhjZXB0 aW9uX3RhYmxlX2VudHJ5ICpmaXJzdCwKIHVuc2lnbmVkIGxvbmcKIHNlYXJjaF9leGNlcHRpb25f dGFibGUodW5zaWduZWQgbG9uZyBhZGRyKQogewotICAgIHJldHVybiBzZWFyY2hfb25lX3RhYmxl KAotICAgICAgICBfX3N0YXJ0X19fZXhfdGFibGUsIF9fc3RvcF9fX2V4X3RhYmxlLTEsIGFkZHIp OworICAgIGNvbnN0IHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uID0gZmluZF90ZXh0X3Jl Z2lvbihhZGRyKTsKKworICAgIGlmICggcmVnaW9uICYmIHJlZ2lvbi0+ZXggKQorICAgICAgICBy ZXR1cm4gc2VhcmNoX29uZV90YWJsZShyZWdpb24tPmV4LCByZWdpb24tPmV4X2VuZCAtIDEsIGFk ZHIpOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHVuc2lnbmVkIGxvbmcKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggMzY5NmMzMS4u MjJkYzE0OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysrIGIveGVuL2FyY2gv eDg2L3NldHVwLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx4ZW4vcGZuLmg+CiAjaW5j bHVkZSA8eGVuL25vZGVtYXNrLmg+CiAjaW5jbHVkZSA8eGVuL3RtZW1feGVuLmg+CisjaW5jbHVk ZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8eGVuL3dhdGNoZG9nLmg+CiAjaW5j bHVkZSA8cHVibGljL3ZlcnNpb24uaD4KICNpbmNsdWRlIDxjb21wYXQvcGxhdGZvcm0uaD4KQEAg LTUxNSw2ICs1MTYsOSBAQCBzdGF0aWMgdm9pZCBub2lubGluZSBpbml0X2RvbmUodm9pZCkKIAog ICAgIHN5c3RlbV9zdGF0ZSA9IFNZU19TVEFURV9hY3RpdmU7CiAKKyAgICAvKiBNVVNUIGJlIGRv bmUgcHJpb3IgdG8gcmVtb3ZpbmcgLmluaXQgZGF0YS4gKi8KKyAgICB1bnJlZ2lzdGVyX2luaXRf dmlydHVhbF9yZWdpb24oKTsKKwogICAgIGRvbWFpbl91bnBhdXNlX2J5X3N5c3RlbWNvbnRyb2xs ZXIoaGFyZHdhcmVfZG9tYWluKTsKIAogICAgIC8qIFplcm8gdGhlIC5pbml0IGNvZGUgYW5kIGRh dGEuICovCkBAIC02MTcsNiArNjIxLDggQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94 ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICBzbXBfcHJlcGFyZV9ib290X2NwdSgpOwogICAg IHNvcnRfZXhjZXB0aW9uX3RhYmxlcygpOwogCisgICAgc2V0dXBfdmlydHVhbF9yZWdpb25zKF9f c3RhcnRfX19leF90YWJsZSwgX19zdG9wX19fZXhfdGFibGUpOworCiAgICAgLyogRnVsbCBleGNl cHRpb24gc3VwcG9ydCBmcm9tIGhlcmUgb24gaW4uICovCiAKICAgICBsb2FkZXIgPSAobWJpLT5m bGFncyAmIE1CSV9MT0FERVJOQU1FKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMg Yi94ZW4vYXJjaC94ODYvdHJhcHMuYwppbmRleCBjNmM5MjI3Li5mNzNmN2YzIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNDgs NiArNDgsNyBAQAogI2luY2x1ZGUgPHhlbi9rZXhlYy5oPgogI2luY2x1ZGUgPHhlbi90cmFjZS5o PgogI2luY2x1ZGUgPHhlbi9wYWdpbmcuaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24u aD4KICNpbmNsdWRlIDx4ZW4vd2F0Y2hkb2cuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAj aW5jbHVkZSA8YXNtL2lvLmg+CkBAIC0xMjI5LDE4ICsxMjMwLDEyIEBAIHN0YXRpYyBpbnQgZW11 bGF0ZV9mb3JjZWRfaW52YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogdm9p ZCBkb19pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewotICAgIGNvbnN0 IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZzsKKyAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWcg PSBOVUxMOwogICAgIHU4IGJ1Z19pbnNuWzJdOwogICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICIi LCAqZmlsZW5hbWUsICpwcmVkaWNhdGUsICplaXAgPSAoY2hhciAqKXJlZ3MtPmVpcDsKICAgICB1 bnNpZ25lZCBsb25nIGZpeHVwOwotICAgIGludCBpZCwgbGluZW5vOwotICAgIHN0YXRpYyBjb25z dCBzdHJ1Y3QgYnVnX2ZyYW1lICpjb25zdCBzdG9wX2ZyYW1lc1tdID0gewotICAgICAgICBfX3N0 b3BfYnVnX2ZyYW1lc18wLAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18xLAotICAgICAgICBf X3N0b3BfYnVnX2ZyYW1lc18yLAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18zLAotICAgICAg ICBOVUxMCi0gICAgfTsKKyAgICBpbnQgaWQgPSAtMSwgbGluZW5vOworICAgIGNvbnN0IHN0cnVj dCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOwogCiAgICAgREVCVUdHRVJfdHJhcF9lbnRyeShUUkFQ X2ludmFsaWRfb3AsIHJlZ3MpOwogCkBAIC0xMjU3LDE2ICsxMjUyLDI5IEBAIHZvaWQgZG9faW52 YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgIG1lbWNtcChidWdf aW5zbiwgIlx4Zlx4YiIsIHNpemVvZihidWdfaW5zbikpICkKICAgICAgICAgZ290byBkaWU7CiAK LSAgICBmb3IgKCBidWcgPSBfX3N0YXJ0X2J1Z19mcmFtZXMsIGlkID0gMDsgc3RvcF9mcmFtZXNb aWRdOyArK2J1ZyApCisgICAgcmVnaW9uID0gZmluZF90ZXh0X3JlZ2lvbihyZWdzLT5laXApOwor ICAgIGlmICggcmVnaW9uICkKICAgICB7Ci0gICAgICAgIHdoaWxlICggdW5saWtlbHkoYnVnID09 IHN0b3BfZnJhbWVzW2lkXSkgKQotICAgICAgICAgICAgKytpZDsKLSAgICAgICAgaWYgKCBidWdf bG9jKGJ1ZykgPT0gZWlwICkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBmb3IgKCBpZCA9 IDA7IGlkIDwgQlVHRlJBTUVfTlI7IGlkKysgKQorICAgICAgICB7CisgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgYnVnX2ZyYW1lICpiOworICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisKKyAg ICAgICAgICAgIGZvciAoIGkgPSAwLCBiID0gcmVnaW9uLT5mcmFtZVtpZF0uYnVnczsKKyAgICAg ICAgICAgICAgICAgIGkgPCByZWdpb24tPmZyYW1lW2lkXS5uX2J1Z3M7IGIrKywgaSsrICkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIGJ1Z19sb2MoYikgPT0gZWlwICkKKyAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZyA9IGI7CisgICAgICAgICAg ICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICB9CiAgICAgfQotICAgIGlmICggIXN0b3BfZnJhbWVzW2lkXSApCi0gICAgICAgIGdv dG8gZGllOwogCisgZm91bmQ6CisgICAgaWYgKCAhYnVnICkKKyAgICAgICAgZ290byBkaWU7CiAg ICAgZWlwICs9IHNpemVvZihidWdfaW5zbik7CiAgICAgaWYgKCBpZCA9PSBCVUdGUkFNRV9ydW5f Zm4gKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFrZWZpbGUgYi94ZW4vY29tbW9u L01ha2VmaWxlCmluZGV4IDkxMGFjNjkuLjFlNGJjNzAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v TWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAtNTEsNiArNTEsNyBAQCBvYmot eSArPSB0aW1lLm8KIG9iai15ICs9IHRpbWVyLm8KIG9iai15ICs9IHRyYWNlLm8KIG9iai15ICs9 IHZlcnNpb24ubworb2JqLXkgKz0gdmlydHVhbF9yZWdpb24ubwogb2JqLXkgKz0gdm1fZXZlbnQu bwogb2JqLXkgKz0gdm1hcC5vCiBvYmoteSArPSB2c3ByaW50Zi5vCmRpZmYgLS1naXQgYS94ZW4v Y29tbW9uL3N5bWJvbHMuYyBiL3hlbi9jb21tb24vc3ltYm9scy5jCmluZGV4IGE1OWM1OWQuLmIx OGRkY2QxIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3N5bWJvbHMuYworKysgYi94ZW4vY29tbW9u L3N5bWJvbHMuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNs dWRlIDx4ZW4vc3RyaW5nLmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8 eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL3BsYXRmb3JtLmg+CiAjaW5j bHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogCkBAIC05Nyw4ICs5OCw3IEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgZ2V0X3N5bWJvbF9vZmZzZXQodW5zaWduZWQgbG9uZyBwb3MpCiAKIGJvb2xfdCBp c19hY3RpdmVfa2VybmVsX3RleHQodW5zaWduZWQgbG9uZyBhZGRyKQogewotICAgIHJldHVybiAo aXNfa2VybmVsX3RleHQoYWRkcikgfHwKLSAgICAgICAgICAgIChzeXN0ZW1fc3RhdGUgPCBTWVNf U1RBVEVfYWN0aXZlICYmIGlzX2tlcm5lbF9pbml0dGV4dChhZGRyKSkpOworICAgIHJldHVybiAh IWZpbmRfdGV4dF9yZWdpb24oYWRkcik7CiB9CiAKIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3Vw KHVuc2lnbmVkIGxvbmcgYWRkciwKQEAgLTEwOCwxMyArMTA4LDE4IEBAIGNvbnN0IGNoYXIgKnN5 bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkciwKIHsKICAgICB1bnNpZ25lZCBsb25nIGks IGxvdywgaGlnaCwgbWlkOwogICAgIHVuc2lnbmVkIGxvbmcgc3ltYm9sX2VuZCA9IDA7CisgICAg Y29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CiAKICAgICBuYW1lYnVmW0tTWU1f TkFNRV9MRU5dID0gMDsKICAgICBuYW1lYnVmWzBdID0gMDsKIAotICAgIGlmICghaXNfYWN0aXZl X2tlcm5lbF90ZXh0KGFkZHIpKQorICAgIHJlZ2lvbiA9IGZpbmRfdGV4dF9yZWdpb24oYWRkcik7 CisgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHJlZ2lv bi0+c3ltYm9sc19sb29rdXApCisgICAgICAgIHJldHVybiByZWdpb24tPnN5bWJvbHNfbG9va3Vw KGFkZHIsIHN5bWJvbHNpemUsIG9mZnNldCwgbmFtZWJ1Zik7CisKICAgICAgICAgLyogZG8gYSBi aW5hcnkgc2VhcmNoIG9uIHRoZSBzb3J0ZWQgc3ltYm9sc19hZGRyZXNzZXMgYXJyYXkgKi8KICAg ICBsb3cgPSAwOwogICAgIGhpZ2ggPSBzeW1ib2xzX251bV9zeW1zOwpkaWZmIC0tZ2l0IGEveGVu L2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jIGIveGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NWI3NWQKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMKQEAgLTAsMCArMSwxNDggQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVk ZSA8eGVuL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi9yY3VwZGF0ZS5oPgorI2luY2x1ZGUgPHhl bi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgorCitzdGF0aWMg c3RydWN0IHZpcnR1YWxfcmVnaW9uIGNvcmUgPSB7CisgICAgLmxpc3QgPSBMSVNUX0hFQURfSU5J VChjb3JlLmxpc3QpLAorICAgIC5zdGFydCA9IF9zdGV4dCwKKyAgICAuZW5kID0gX2V0ZXh0LAor fTsKKworLyogQmVjb21lcyBpcnJlbGV2YW50IHdoZW4gX19pbml0IHNlY3Rpb25zIGFyZSBjbGVh cmVkLiAqLworc3RhdGljIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiBjb3JlX2luaXQgX19pbml0ZGF0 YSA9IHsKKyAgICAubGlzdCA9IExJU1RfSEVBRF9JTklUKGNvcmVfaW5pdC5saXN0KSwKKyAgICAu c3RhcnQgPSBfc2luaXR0ZXh0LAorICAgIC5lbmQgPSBfZWluaXR0ZXh0LAorfTsKKworLyoKKyAq IFJDVSBsb2NraW5nLiBBZGRpdGlvbnMgYXJlIGRvbmUgZWl0aGVyIGF0IHN0YXJ0dXAgKHdoZW4g dGhlcmUgaXMgb25seQorICogb25lIENQVSkgb3Igd2hlbiBhbGwgQ1BVcyBhcmUgcnVubmluZyB3 aXRob3V0IElSUXMuCisgKgorICogRGVsZXRpb25zIGFyZSBiaXQgdHJpY2t5LiBXZSBkbyBpdCB3 aGVuIHhTcGxpY2luZyAoYWxsIENQVXMgcnVubmluZworICogd2l0aG91dCBJUlFzKSBvciBkdXJp bmcgYm9vdHVwICh3aGVuIGNsZWFyaW5nIHRoZSBpbml0KS4KKyAqCisgKiBIZW5jZSB3ZSB1c2Ug bGlzdF9kZWxfcmN1ICh3aGljaCBzcG9ydHMgYW4gbWVtb3J5IGZlbmNlKSBhbmQgYSBzcGlubG9j aworICogb24gZGVsZXRpb24uCisgKgorICogQWxsIHJlYWRlcnMgb2YgdmlydHVhbF9yZWdpb25f bGlzdCBNVVNUIHVzZSBsaXN0IGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1LgorICoKKyAqLworc3Rh dGljIExJU1RfSEVBRCh2aXJ0dWFsX3JlZ2lvbl9saXN0KTsKK3N0YXRpYyBERUZJTkVfU1BJTkxP Q0sodmlydHVhbF9yZWdpb25fbG9jayk7CitzdGF0aWMgREVGSU5FX1JDVV9SRUFEX0xPQ0socmN1 X3ZpcnR1YWxfcmVnaW9uX2xvY2spOworCitjb25zdCBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKmZp bmRfdGV4dF9yZWdpb24odW5zaWduZWQgbG9uZyBhZGRyKQoreworICAgIGNvbnN0IHN0cnVjdCB2 aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOworCisgICAgcmN1X3JlYWRfbG9jaygmcmN1X3ZpcnR1YWxf cmVnaW9uX2xvY2spOworICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KCByZWdpb24sICZ2aXJ0 dWFsX3JlZ2lvbl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggKHZvaWQgKilhZGRy ID49IHJlZ2lvbi0+c3RhcnQgJiYgKHZvaWQgKilhZGRyIDwgcmVnaW9uLT5lbmQgKQorICAgICAg ICB7CisgICAgICAgICAgICByY3VfcmVhZF91bmxvY2soJnJjdV92aXJ0dWFsX3JlZ2lvbl9sb2Nr KTsKKyAgICAgICAgICAgIHJldHVybiByZWdpb247CisgICAgICAgIH0KKyAgICB9CisgICAgcmN1 X3JlYWRfdW5sb2NrKCZyY3VfdmlydHVhbF9yZWdpb25fbG9jayk7CisKKyAgICByZXR1cm4gTlVM TDsKK30KKwordm9pZCByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdp b24gKnIpCit7CisgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKKworICAgIGxp c3RfYWRkX3RhaWxfcmN1KCZyLT5saXN0LCAmdmlydHVhbF9yZWdpb25fbGlzdCk7Cit9CisKK3N0 YXRpYyB2b2lkIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIp Cit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ2 aXJ0dWFsX3JlZ2lvbl9sb2NrLCBmbGFncyk7CisgICAgbGlzdF9kZWxfcmN1KCZyLT5saXN0KTsK KyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aXJ0dWFsX3JlZ2lvbl9sb2NrLCBmbGFncyk7 CisgICAgLyoKKyAgICAgKiBXZSBkbyBub3QgbmVlZCB0byBpbnZva2UgY2FsbF9yY3UuCisgICAg ICoKKyAgICAgKiBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IG9uIHRoZSBkZWxldGlvbiB3 ZSBoYXZlIG1hZGUgc3VyZQorICAgICAqIHRvIHVzZSBzcGlubG9ja3MgKHRvIGd1YXJkIGFnYWlu c3Qgc29tZWJvZHkgZWxzZSBjYWxsaW5nCisgICAgICogdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lv bikgYW5kIGxpc3RfZGVsZXRpb24gc3BpY2VkIHdpdGgKKyAgICAgKiBtZW1vcnkgYmFycmllci4K KyAgICAgKgorICAgICAqIFRoYXQgcHJvdGVjdHMgdXMgZnJvbSBjb3JydXB0aW5nIHRoZSBsaXN0 IGFzIHRoZSByZWFkZXJzIGFsbAorICAgICAqIHVzZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSB3 aGljaCBpcyBzYWZlIGFnYWluc3QgY29uY3VycmVudAorICAgICAqIGRlbGV0aW9ucy4KKyAgICAg Ki8KK30KKwordm9pZCB1bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0dWFsX3Jl Z2lvbiAqcikKK3sKKyAgICAvKiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgZnJvbSB4U3BsaWNlIC0g d2hpY2ggaGFzIElSUXMgZGlzYWJsZWQuICovCisgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5h YmxlZCgpKTsKKworICAgIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbihyKTsKK30KKwordm9pZCBfX2lu aXQgdW5yZWdpc3Rlcl9pbml0X3ZpcnR1YWxfcmVnaW9uKHZvaWQpCit7CisgICAgQlVHX09OKHN5 c3RlbV9zdGF0ZSAhPSBTWVNfU1RBVEVfYWN0aXZlKTsKKworICAgIHJlbW92ZV92aXJ0dWFsX3Jl Z2lvbigmY29yZV9pbml0KTsKK30KKwordm9pZCBfX2luaXQgc2V0dXBfdmlydHVhbF9yZWdpb25z KGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKnN0YXJ0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkg KmVuZCkKK3sKKyAgICBzaXplX3Qgc3o7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc3RhdGlj IGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmNvbnN0IF9faW5pdGNvbnN0cmVsIGJ1Z19mcmFtZXNb XSA9IHsKKyAgICAgICAgX19zdGFydF9idWdfZnJhbWVzLAorICAgICAgICBfX3N0b3BfYnVnX2Zy YW1lc18wLAorICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18xLAorICAgICAgICBfX3N0b3BfYnVn X2ZyYW1lc18yLAorI2lmZGVmIENPTkZJR19YODYKKyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNf MywKKyNlbmRpZgorICAgICAgICBOVUxMCisgICAgfTsKKworICAgIGZvciAoIGkgPSAxOyBidWdf ZnJhbWVzW2ldOyBpKysgKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAq czsKKworICAgICAgICBzID0gYnVnX2ZyYW1lc1tpIC0gMV07CisgICAgICAgIHN6ID0gYnVnX2Zy YW1lc1tpXSAtIHM7CisKKyAgICAgICAgY29yZS5mcmFtZVtpIC0gMV0ubl9idWdzID0gc3o7Cisg ICAgICAgIGNvcmUuZnJhbWVbaSAtIDFdLmJ1Z3MgPSBzOworCisgICAgICAgIGNvcmVfaW5pdC5m cmFtZVtpIC0gMV0ubl9idWdzID0gc3o7CisgICAgICAgIGNvcmVfaW5pdC5mcmFtZVtpIC0gMV0u YnVncyA9IHM7CisgICAgfQorCisgICAgY29yZV9pbml0LmV4ID0gY29yZS5leCA9IHN0YXJ0Owor ICAgIGNvcmVfaW5pdC5leF9lbmQgPSBjb3JlLmV4X2VuZCA9IGVuZDsKKworICAgIHJlZ2lzdGVy X3ZpcnR1YWxfcmVnaW9uKCZjb3JlX2luaXQpOworICAgIHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9u KCZjb3JlKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94ZW4vc3ltYm9scy5oIGIveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAppbmRleCAx ZmEwNTM3Li5mNThlNjExIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCisr KyBiL3hlbi9pbmNsdWRlL3hlbi9zeW1ib2xzLmgKQEAgLTUsNiArNSwxNSBAQAogCiAjZGVmaW5l IEtTWU1fTkFNRV9MRU4gMTI3CiAKKy8qCisgKiBUeXBlZGVmIGZvciB0aGUgY2FsbGJhY2sgZnVu Y3Rpb25zIHRoYXQgc3ltYm9sc19sb29rdXAKKyAqIGNhbiBjYWxsIGlmIHZpcnR1YWxfcmVnaW9u X2xpc3QgaGFzIGFuIGNhbGxiYWNrIGZvciBpdC4KKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICpz eW1ib2xzX2xvb2t1cF90KHVuc2lnbmVkIGxvbmcgYWRkciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzeW1ib2xzaXplLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKm9mZnNldCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lYnVmKTsKKwogLyogTG9va3Vw IGFuIGFkZHJlc3MuICovCiBjb25zdCBjaGFyICpzeW1ib2xzX2xvb2t1cCh1bnNpZ25lZCBsb25n IGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzeW1ib2xz aXplLApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmggYi94ZW4v aW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lNWU1OGVkCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZpcnR1 YWxfcmVnaW9uLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq LworCisjaWZuZGVmIF9fWEVOX1ZJUlRVQUxfUkVHSU9OX0hfXworI2RlZmluZSBfX1hFTl9WSVJU VUFMX1JFR0lPTl9IX18KKworI2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8eGVuL3N5 bWJvbHMuaD4KKworc3RydWN0IHZpcnR1YWxfcmVnaW9uCit7CisgICAgc3RydWN0IGxpc3RfaGVh ZCBsaXN0OworICAgIGNvbnN0IHZvaWQgKnN0YXJ0OyAgICAgICAgICAgICAgICAvKiBWaXJ0dWFs IGFkZHJlc3Mgc3RhcnQuICovCisgICAgY29uc3Qgdm9pZCAqZW5kOyAgICAgICAgICAgICAgICAg IC8qIFZpcnR1YWwgYWRkcmVzcyBlbmQuICovCisKKyAgICAvKiBJZiB0aGlzIGlzIE5VTEwgdGhl IGRlZmF1bHQgbG9va3VwIG1lY2hhbmlzbSBpcyB1c2VkLiAqLworICAgIHN5bWJvbHNfbG9va3Vw X3QgKnN5bWJvbHNfbG9va3VwOworCisgICAgc3RydWN0IHsKKyAgICAgICAgY29uc3Qgc3RydWN0 IGJ1Z19mcmFtZSAqYnVnczsgLyogVGhlIHBvaW50ZXIgdG8gYXJyYXkgb2YgYnVnIGZyYW1lcy4g Ki8KKyAgICAgICAgc2l6ZV90IG5fYnVnczsgICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aGVt LiAqLworICAgIH0gZnJhbWVbQlVHRlJBTUVfTlJdOworCisgICAgY29uc3Qgc3RydWN0IGV4Y2Vw dGlvbl90YWJsZV9lbnRyeSAqZXg7CisgICAgY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9l bnRyeSAqZXhfZW5kOworfTsKKworY29uc3Qgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpmaW5kX3Rl eHRfcmVnaW9uKHVuc2lnbmVkIGxvbmcgYWRkcik7Cit2b2lkIHNldHVwX3ZpcnR1YWxfcmVnaW9u cyhjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzdGFydCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmVuZCk7 Cit2b2lkIHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbih2b2lkKTsKK3ZvaWQgcmVnaXN0 ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKTsKK3ZvaWQgdW5yZWdp c3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIpOworCisjZW5kaWYg LyogX19YRU5fVklSVFVBTF9SRUdJT05fSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq LwotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=