From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 09/24] xsplice: Implement payload loading Date: Sun, 10 Apr 2016 17:14:41 -0400 Message-ID: <1460322896-1115-10-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-0008BK-BL 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 RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgbG9hZGluZyB4c3BsaWNlIHBheWxvYWRzLiBUaGlzIGlzIHNvbWV3aGF0IHNpbWls YXIgdG8KdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUgbG9hZGVyLCBpbXBsZW1lbnRpbmcgdGhlIGZv bGxvd2luZyBzdGVwczoKLSBWZXJpZnkgdGhlIGVsZiBmaWxlLgotIFBhcnNlIHRoZSBlbGYgZmls ZS4KLSBBbGxvY2F0ZSBhIHJlZ2lvbiBvZiBtZW1vcnkgbWFwcGVkIHdpdGhpbiBhIGZyZWUgYXJl YSBvZgogIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJUX0VORF0uCi0gQ29weSBhbGxvY2F0ZWQgc2Vj dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4gU3BsaXQgdGhlbSBpbiB0aHJlZQogIHJlZ2lvbnMg LSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhLiBNVVNUIGhhdmUgYXQgbGVhc3QgLnRleHQuCi0g UmVzb2x2ZSBzZWN0aW9uIHN5bWJvbHMuIEFsbCBvdGhlciBzeW1ib2xzIG11c3QgYmUgYWJzb2x1 dGUgYWRkcmVzc2VzLgogIChOb3RlIHRoYXQgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlLHN5bWJvbHM6 IEltcGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uCiAgIG9uIGFkZHJlc3MiIGltcGxlbWVu dHMgdGhhdCkKLSBQZXJmb3JtIHJlbG9jYXRpb25zLgotIFNlY3VyZSB0aGUgdGhlIHJlZ2lvbnMg KC50ZXh0LC5kYXRhLC5yb2RhdGEpIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgoKV2UgY2FwaXRh bGl6ZSBvbiB0aGUgdm1hbGxvYyBjYWxsYmFjayBBUEkgKHNlZSBwYXRjaCB0aXRsZWQ6CiJybS94 ODYvdm1hcDogQWRkIHZtYWxsb2NfeGVuLCB2ZnJlZV94ZW4gYW5kIHZtX2luaXRfdHlwZSIpIHRv IGFsbG9jYXRlCmEgcmVnaW9uIG9mIG1lbW9yeSB3aXRoaW4gdGhlIFt4ZW5fdmlydF9lbmQsIFhF Tl9WSVJUX0VORF0gZm9yIHRoZSBjb2RlLgoKV2UgYWxzbyB1c2UgdGhlICJ4ODYvbW06IEludHJv ZHVjZSBtb2RpZnlfeGVuX21hcHBpbmdzKCkiCnRvIGNoYW5nZSB0aGUgdmlydHVhbCBhZGRyZXNz IHBhZ2UtdGFibGUgcGVybWlzc2lvbnMuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8 cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVs aWVuLmdyYWxsQGFybS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5z dGFiZWxsaW5pQGNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0u Y29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j b20+Cgp2MjogLSBDaGFuZ2UgdGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlv dXQvc2l6ZS4KICAgIC0gQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4K ICAgIC0gTW92ZSBlbGZfcmVzb2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxl LgogICAgLSBQcmludCB0aGUgcGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVy Lgp2MzoKICAgIC0gTWFrZSBpdCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91 dCB1c2luZyB0aGUgcmV0dXJuXyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KICAg IC0gQWRkIHRoZSBfcmV0dXJuIG1hY3JvIGJhY2sgLSBidXQgb25seSB1c2UgaXQgZHVyaW5nIGRl YnVnIGJ1aWxkcy4KICAgIC0gUmVtb3ZlIHRoZSBtYWNybywgcHJlZml4IGFyY2hfIG9uIGFyY2gg c3BlY2lmaWMgY2FsbHMuCnY0OgogICAgLSBNb3ZlIGFsbG9jX3BheWxvYWQgdG8gYXJjaCBzcGVj aWZpYyBmaWxlLgogICAgLSBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90LCB1c2UgY29uc3QK ICAgIC0gQWRkIGNvcHlyaWdodHMKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFT U0VSVC4gQ2hhbmdlIHdoaWxlIHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJv ciBsb29wCiAgIC0gVXNlIHZtYWxsb2MvdmZyZWUgY2IgQVBJcwogICAtIFNlY3VyZSAudGV4dCBw YWdlcyB0byBiZSBSWCBpbnN0ZWFkIG9mIFJXWC4KdjU6CiAgLSBGaXggYWxsb2NhdGlvbiBvZiB2 aXJ0dWFsIGFkZHJlc3NlcyBvbmx5IGFsbG93aW5nIG9uZSBwYWdlIHRvIGJlIGFsbG9jYXRlZC4K ICAtIENyZWF0ZSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhIHJlZ2lvbnMgd2l0aCBkaWZmZXJl bnQgcGVybWlzc2lvbnMuCiAgLSBNYWtlIHRoZSBmaW5kX3NwYWNlX3Qgbm90IGEgdHlwZWRlZiB0 byBwb2ludGVyIHRvIGEgZnVuY3Rpb24uCiAgLSBBbGxvY2F0ZSBtZW1vcnkgaW4gaGVyZS4KdjY6 IERyb3AgcGFyZW50aGVzZXMgb24gdHlwZWRlZnMuCiAgLSBzL2FuIHhTcGxpY2UvYSB4U3BsaWNl LwogIC0gUmViYXNlIG9uICJ2bWFwOiBBZGQgdm1hbGxvY19jYiIKICAtIFJlYmFzZSBvbiAidm1h cDogQWRkIHZtYWxsb2NfdHlwZSBhbmQgdm1faW5pdF90eXBlIgogIC0gcy91aW50OF90L3ZvaWQv IG9uIGxvYWRfYWRkcgogIC0gU2V0IHhzcGxpY2VfZWxmIG9uIHN0YWNrIHdpdGhvdXQgdXNpbmcg bWVtc2V0Lgp2NzoKICAtIENoYW5nZWQgdGhlIGNoZWNrIG9uIGRlbHRhID0gZWxmLT5oZHItPmVf c2hvZmYgKyBlbGYtPmhkci0+ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKICAgIFRo ZSBzZWN0aW9ucyBjYW4gYmUgcmlnaHQgYXQgdGhlIGJhY2sgb2YgdGhlIGZpbGUgKGRpZmZlcmVu dCBsaW5rZXIhKSwgc28gdGhlIGZhaWxpbmcgY29uZGl0aW9uYWwKICAgIGZvciAnaWYgKGRlbHRh ID49IGVsZi0+bGVuKScgaXMgaW5jb3JyZWN0IGFuZCBzaG91bGQgaGF2ZSBiZWVuICc+Jy4KICAt IENoYW5nZWQgZHByaW50ayhYRU5MT0dfREVCVUcgdG8gWEVOTE9HX0VSUiwgdGhlbiBiYWNrIHRv IERFQlVHLiBDb252ZXJ0ZWQKICAgIHNvbWUgb2YgdGhlIHByaW50ayB0byBkcHJpbnRrLgogIC0g UmViYXNlIG9uICIgYXJtL3g4Ni92bWFwOiBBZGQgdm1hbGxvY194ZW4sIHZmcmVlX3hlbiBhbmQg dm1faW5pdF90eXBlIgogIC0gQ2hhbmdlZCBzb21lIG9mIHRoZSBwcmludGsgWEVOTE9HX0VSUiB0 byBYRU5MT0dfREVCVUcKICAtIENoZWNrIHRoZSBpZHggaW4gdGhlIHJlbG9jYXRpb24gdG8gbWFr ZSBzdXJlIGl0IGlzIHdpdGhpbiBib3VuZHMgYW5kCiAgICBpbXBsZW1lbnRlZC4KICAtIFVzZSAi eDg2L21tOiBJbnRyb2R1Y2UgbW9kaWZ5X3hlbl9tYXBwaW5ncygpIgogIC0gSW50cm9kdWNlIFBS SXhFbGZBZGRyCiAgLSBDaGVjayBmb3Igb3ZlcmZsb3cgaW4gUl9YODZfNjRfUEMzMgogIC0gUmV0 dXJuIC1FT1BOT1RTVVBQIGlmIHdlIGRvbid0IHN1cHBvcnQgdHlwZXMgaW4gRUxGNjRfUl9UWVBF Ci0tLQotLS0KIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9hcmNo L2FybS94c3BsaWNlLmMgICAgICAgIHwgIDU0ICsrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9NYWtl ZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMgICAgICAgIHwgMTg4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2Uu YyAgICAgICAgICB8IDIyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KIHhlbi9jb21tb24veHNwbGljZV9lbGYuYyAgICAgIHwgMTI0ICsrKysrKysrKysrKysrKysr KysrKystCiB4ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oICB8ICAgNCArCiB4ZW4vaW5jbHVk ZS94ZW4veHNwbGljZS5oICAgICB8ICAyOSArKysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNl X2VsZi5oIHwgICA5ICstCiA5IGZpbGVzIGNoYW5nZWQsIDYzMSBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS94c3BsaWNlLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYveHNwbGljZS5jCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDAzMjhiNTAu LmVhZTVjYjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJj aC9hcm0vTWFrZWZpbGUKQEAgLTQwLDYgKzQwLDcgQEAgb2JqLXkgKz0gZGV2aWNlLm8KIG9iai15 ICs9IGRlY29kZS5vCiBvYmoteSArPSBwcm9jZXNzb3Iubwogb2JqLXkgKz0gc21jLm8KK29iai0k KENPTkZJR19YU1BMSUNFKSArPSB4c3BsaWNlLm8KIAogI29iai1iaW4teSArPSAuLi4ubwogCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0veHNwbGljZS5jIGIveGVuL2FyY2gvYXJtL3hzcGxpY2Uu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY1MjQ0Ci0tLSAvZGV2L251 bGwKKysrIGIveGVuL2FyY2gvYXJtL3hzcGxpY2UuYwpAQCAtMCwwICsxLDU0IEBACisvKgorICog IENvcHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICovCisjaW5jbHVk ZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi94c3Bs aWNlX2VsZi5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisKK2ludCBhcmNoX3hzcGxpY2Vf dmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKyAgICByZXR1cm4g LUVOT1NZUzsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30K KworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKwordm9pZCAq YXJjaF94c3BsaWNlX2FsbG9jX3BheWxvYWQodW5zaWduZWQgaW50IHBhZ2VzKQoreworICAgIHJl dHVybiBOVUxMOworfQorCitpbnQgYXJjaF94c3BsaWNlX3NlY3VyZSh2b2lkICp2YSwgdW5zaWdu ZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsK K30KKwordm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhKQoreworfQorCit2 b2lkIGFyY2hfeHNwbGljZV9pbml0KHZvaWQpCit7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJs ZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNl dDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoK KyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L01h a2VmaWxlCmluZGV4IDcyOTA2NWIuLjhhNmE3ZDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9N YWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTY0LDYgKzY0LDcgQEAgb2Jq LXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQoY3Jhc2hfZGVidWcp ICs9IGdkYnN0dWIubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2UubwogCiB4ODZf ZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmgKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4 Ni94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlNmM1Ywot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTAsMCArMSwxODgg QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAq LworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1 ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5o PgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+ CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZikKK3sKKworICAgIGNvbnN0IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhkcjsKKworICAgIGlm ICggaGRyLT5lX21hY2hpbmUgIT0gRU1fWDg2XzY0ICkKKyAgICB7CisgICAgICAgIGRwcmludGso WEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuc3VwcG9ydGVkIEVMRiBNYWNoaW5lIHR5cGUhXG4i LAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3Jt X3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBk cHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTSFRfUkVMIHJlbG9jYXRpb24gdW5zdXBw b3J0ZWRcbiIsCisgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxm ICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBjb25zdCBFbGZfUmVsQSAqcjsKKyAg ICB1bnNpZ25lZCBpbnQgc3ltbmR4LCBpOworICAgIHVpbnQ2NF90IHZhbDsKKyAgICB1aW50OF90 ICpkZXN0OworCisgICAgaWYgKCAhcmVsYS0+c2VjLT5zaF9lbnRzaXplIHx8ICFyZWxhLT5zZWMt PnNoX3NpemUgfHwKKyAgICAgICAgIHJlbGEtPnNlYy0+c2hfZW50c2l6ZSAhPSBzaXplb2YoRWxm X1JlbEEpICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIl czogU2VjdGlvbiByZWxhdGl2ZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAgICAgICAgICAg ICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IChyZWxhLT5zZWMtPnNoX3NpemUgLyByZWxhLT5zZWMtPnNoX2VudHNp emUpOyBpKysgKQorICAgIHsKKyAgICAgICAgciA9IHJlbGEtPmRhdGEgKyBpICogcmVsYS0+c2Vj LT5zaF9lbnRzaXplOworICAgICAgICBpZiAoICh1bnNpZ25lZCBsb25nKXIgPiAodW5zaWduZWQg bG9uZykoZWxmLT5oZHIgKyBlbGYtPmxlbikgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFJlbGF0aXZlIGVudHJ5ICV1IGluICVzIGlz IHBhc3QgZW5kIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpLCByZWxhLT5u YW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAg c3ltbmR4ID0gRUxGNjRfUl9TWU0oci0+cl9pbmZvKTsKKyAgICAgICAgaWYgKCBzeW1uZHggPiBl bGYtPm5zeW0gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywg WFNQTElDRSAiJXM6IFJlbGF0aXZlIHN5bWJvbCB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMgcGFz dCBlbmQhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHN5bW5keCk7CisgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGRlc3QgPSBiYXNl LT5sb2FkX2FkZHIgKyByLT5yX29mZnNldDsKKyAgICAgICAgdmFsID0gci0+cl9hZGRlbmQgKyBl bGYtPnN5bVtzeW1uZHhdLnN5bS0+c3RfdmFsdWU7CisKKyAgICAgICAgc3dpdGNoICggRUxGNjRf Ul9UWVBFKHItPnJfaW5mbykgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgUl9YODZfNjRfTk9O RToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9YODZfNjRfNjQ6CisgICAg ICAgICAgICAqKHVpbnQ2NF90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgUl9YODZfNjRfUExUMzI6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAg ICogWGVuIHVzZXMgLWZwaWMgd2hpY2ggbm9ybWFsbHkgdXNlcyBQTFQgcmVsb2NhdGlvbnMKKyAg ICAgICAgICAgICAqIGV4Y2VwdCB0aGF0IGl0IHNldHMgdmlzaWJpbGl0eSB0byBoaWRkZW4gd2hp Y2ggbWVhbnMKKyAgICAgICAgICAgICAqIHRoYXQgdGhleSBhcmUgbm90IHVzZWQuICBIb3dldmVy LCB3aGVuIGdjYyBjYW5ub3QKKyAgICAgICAgICAgICAqIGlubGluZSBtZW1jcHkgaXQgZW1pdHMg bWVtY3B5IHdpdGggZGVmYXVsdCB2aXNpYmlsaXR5CisgICAgICAgICAgICAgKiB3aGljaCB0aGVu IGNyZWF0ZXMgYSBQTFQgcmVsb2NhdGlvbi4gIEl0IGNhbiBqdXN0IGJlCisgICAgICAgICAgICAg KiB0cmVhdGVkIHRoZSBzYW1lIGFzIFJfWDg2XzY0X1BDMzIuCisgICAgICAgICAgICAgKi8KKyAg ICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLworICAgICAgICBjYXNlIFJfWDg2XzY0X1BDMzI6 CisgICAgICAgICAgICB2YWwgLT0gKHVpbnQ2NF90KWRlc3Q7CisgICAgICAgICAgICAqKHVpbnQz Ml90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGlmICggKHM2NCl2YWwgIT0gKihzMzIgKilk ZXN0ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0RFQlVH IFhTUExJQ0UgIiVzOiBPdmVyZmxvdyBpbiByZWxvY2F0aW9uICV1IGluICVzIGZvciAlcyFcbiIs CisgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaSwgcmVsYS0+bmFtZSwgYmFzZS0+ bmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcHJp bnRrKFhFTkxPR19ERUJVRyBYU1BMSUNFICIlczogVW5oYW5kbGVkIHJlbG9jYXRpb24gJWx1XG4i LAorICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgRUxGNjRfUl9UWVBFKHItPnJfaW5mbykp OworICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgICAgICB9CisgICAgfQorCisg ICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGUgZnVuY3Rpb24gcHJlcGFyZXMgYSB4U3BsaWNl IHBheWxvYWQgYnkgYWxsb2NhdGluZyBzcGFjZSB3aGljaAorICogdGhlbiBjYW4gYmUgdXNlZCBm b3IgbG9hZGluZyB0aGUgYWxsb2NhdGVkIHNlY3Rpb25zLCByZXNvbHZpbmcgc3ltYm9scywKKyAq IHBlcmZvcm1pbmcgcmVsb2NhdGlvbnMsIGV0Yy4KKyAqLwordm9pZCAqYXJjaF94c3BsaWNlX2Fs bG9jX3BheWxvYWQodW5zaWduZWQgaW50IHBhZ2VzKQoreworICAgIHVuc2lnbmVkIGludCBpOwor ICAgIHZvaWQgKnA7CisKKyAgICBBU1NFUlQocGFnZXMpOworCisgICAgcCA9IHZtYWxsb2NfeGVu KHBhZ2VzICogUEFHRV9TSVpFKTsKKyAgICBXQVJOX09OKCFwKTsKKyAgICBpZiAoIHAgKQorICAg IHsKKyAgICAgICAgLyogQnkgZGVmYXVsdCB0aGV5IGFyZSBQQUdFX0hZUEVSVklTT1IgYWthIFBB R0VfSFlQRVJWSVNPUl9SV1guKi8KKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwYWdlczsgaSsr ICkKKyAgICAgICAgICAgIGNsZWFyX3BhZ2UocCArIChpICogUEFHRV9TSVpFKSApOworICAgIH0K KyAgICByZXR1cm4gcDsKK30KKworLyoKKyAqIE9uY2UgdGhlIHJlc29sdmluZyBzeW1ib2xzLCBw ZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBldGMgaXMgY29tcGxldGUKKyAqIHdlIHNlY3VyZSB0aGUg bWVtb3J5IGJ5IHB1dHRpbmcgaW4gdGhlIHByb3BlciBwYWdlIHRhYmxlIGF0dHJpYnV0ZXMKKyAq IGZvciB0aGUgZGVzaXJlZCB0eXBlLgorICovCitpbnQgYXJjaF94c3BsaWNlX3NlY3VyZSh2b2lk ICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSkKK3sKKyAgICB1bnNp Z25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpdmE7CisgICAgaW50IGZsYWc7CisKKyAg ICBBU1NFUlQodmEpOworICAgIEFTU0VSVChwYWdlcyk7CisKKyAgICBpZiAoIHR5cGUgPT0gWFNQ TElDRV9WQV9SWCApIC8qIFBBR0VfSFlQRVJWSVNPUl9SWCAqLworICAgICAgICBmbGFnID0gX1BB R0VfUFJFU0VOVDsKKyAgICBlbHNlIGlmICggdHlwZSA9PSBYU1BMSUNFX1ZBX1JXICkgLyogUEFH RV9IWVBFUlZJU09SX1JXICovCisgICAgICAgIGZsYWcgPSBfUEFHRV9SVyB8IF9QQUdFX05YIHwg X1BBR0VfUFJFU0VOVDsKKyAgICBlbHNlIC8qIFBBR0VfSFlQRVJWSVNPUl9STyAqLworICAgICAg ICBmbGFnID0gX1BBR0VfTlggfCBfUEFHRV9QUkVTRU5UOworCisgICAgLyogVGhlIG9uZXMgd2Ug YXJlIGFsbG93ZWQgdG8gbW9kaWZ5IGFyZTogX1BBR0VfTlh8X1BBR0VfUld8X1BBR0VfUFJFU0VO VCAqLworICAgIG1vZGlmeV94ZW5fbWFwcGluZ3Moc3RhcnQsIHN0YXJ0ICsgcGFnZXMgKiBQQUdF X1NJWkUsIGZsYWcpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX2Zy ZWVfcGF5bG9hZCh2b2lkICp2YSkKK3sKKyAgICB2ZnJlZV94ZW4odmEpOworfQorCit2b2lkIGFy Y2hfeHNwbGljZV9pbml0KHZvaWQpCit7CisgICAgdm9pZCAqc3RhcnQsICplbmQ7CisKKyAgICBz dGFydCA9ICh2b2lkICopeGVuX3ZpcnRfZW5kOworICAgIGVuZCA9ICh2b2lkICopKFhFTl9WSVJU X0VORCAtIE5SX0NQVVMgKiBQQUdFX1NJWkUpOworCisgICAgQlVHX09OKGVuZCA8PSBzdGFydCk7 CisKKyAgICB2bV9pbml0X3R5cGUoVk1BUF9YRU4sIHN0YXJ0LCBlbmQpOworfQorLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9j b21tb24veHNwbGljZS5jCmluZGV4IDEyMGZkNWMuLmNiZWUyNjQgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24veHNwbGljZS5jCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBAIC0xMyw2ICsxMyw3 IEBACiAjaW5jbHVkZSA8eGVuL3NtcC5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2lu Y2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgpAQCAtMjgsNiArMjks MTMgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAg ICAgICAgICAvKiBPbmUgb2YgdGhlIFhTUExJQ0VfU1RBVEVfKi4gKi8KICAgICBpbnQzMl90IHJj OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCBvciAtWEVOX0VYWC4gKi8KICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGxpc3Q7ICAgICAgICAgICAgICAgLyogTGlua2VkIHRvICdwYXlsb2FkX2xp c3QnLiAqLworICAgIHZvaWQgKnRleHRfYWRkcjsgICAgICAgICAgICAgICAgICAgICAvKiBWaXJ0 dWFsIGFkZHJlc3Mgb2YgLnRleHQuICovCisgICAgc2l6ZV90IHRleHRfc2l6ZTsgICAgICAgICAg ICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZS4gKi8KKyAgICB2b2lkICpyd19hZGRyOyAgICAg ICAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC5kYXRhLiAqLworICAgIHNp emVfdCByd19zaXplOyAgICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUgKGlm IGFueSkuICovCisgICAgdm9pZCAqcm9fYWRkcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIFZp cnR1YWwgYWRkcmVzcyBvZiAucm9kYXRhLiAqLworICAgIHNpemVfdCByb19zaXplOyAgICAgICAg ICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUgKGlmIGFueSkuICovCisgICAgc2l6ZV90 IHBhZ2VzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRvdGFsIHBhZ2VzIGZvciBbdGV4dCxy dyxyb11fYWRkciAqLwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVdOyAgICAv KiBOYW1lIG9mIGl0LiAqLwogfTsKIApAQCAtODUsMTkgKzkzLDIxNSBAQCBzdGF0aWMgc3RydWN0 IHBheWxvYWQgKmZpbmRfcGF5bG9hZChjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBmb3Vu ZDsKIH0KIAorLyoKKyAqIEZ1bmN0aW9ucyByZWxhdGVkIHRvIFhFTl9TWVNDVExfWFNQTElDRV9V UExPQUQgKHNlZSB4c3BsaWNlX3VwbG9hZCksIGFuZAorICogZnJlZWluZyBwYXlsb2FkIChYRU5f U1lTQ1RMX1hTUExJQ0VfQUNUSU9OOlhTUExJQ0VfQUNUSU9OX1VOTE9BRCkuCisgKi8KKworc3Rh dGljIHZvaWQgZnJlZV9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQpCit7Cisg ICAgLyogU2V0IHRvIHplcm8gdW50aWwgIm1vdmVfcGF5bG9hZCIuICovCisgICAgaWYgKCAhcGF5 bG9hZC0+dGV4dF9hZGRyICkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXJjaF94c3BsaWNlX2Zy ZWVfcGF5bG9hZChwYXlsb2FkLT50ZXh0X2FkZHIpOworCisgICAgcGF5bG9hZC0+dGV4dF9hZGRy ID0gTlVMTDsKKyAgICBwYXlsb2FkLT5yb19hZGRyID0gTlVMTDsKKyAgICBwYXlsb2FkLT5yd19h ZGRyID0gTlVMTDsKKyAgICBwYXlsb2FkLT5wYWdlcyA9IDA7Cit9CisKKy8qCisqIGNhbGNfc2Vj dGlvbiBjb21wdXRlcyB0aGUgc2l6ZSAodGFraW5nIGludG8gYWNjb3VudCBzZWN0aW9uIGFsaWdu bWVudCkuCisqCisqIEl0IGFsc28gbW9kaWZpZXMgc2hfZW50c2l6ZSB3aXRoIHRoZSBvZmZzZXQg b2YgZnJvbSB0aGUgc3RhcnQgb2YKKyogdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBUaGlzIGlzIHVz ZWQgaW4gbW92ZV9wYXlsb2FkIHRvIGZpZ3VyZSBvdXQgdGhlCisqIGRlc3RpbmF0aW9uIGxvY2F0 aW9uLgorKi8KK3N0YXRpYyB2b2lkIGNhbGNfc2VjdGlvbihzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICpzZWMsIHNpemVfdCAqc2l6ZSkKK3sKKyAgICBFbGZfU2hkciAqcyA9IHNlYy0+c2VjOworICAg IHNpemVfdCBhbGlnbl9zaXplOworCisgICAgYWxpZ25fc2l6ZSA9IFJPVU5EVVAoKnNpemUsIHMt PnNoX2FkZHJhbGlnbik7CisgICAgcy0+c2hfZW50c2l6ZSA9IGFsaWduX3NpemU7CisKKyAgICAq c2l6ZSA9IHMtPnNoX3NpemUgKyBhbGlnbl9zaXplOworfQorCitzdGF0aWMgaW50IG1vdmVfcGF5 bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7 CisgICAgdWludDhfdCAqYnVmOworICAgIHVuc2lnbmVkIGludCBpOworICAgIHNpemVfdCBzaXpl ID0gMDsKKworICAgIC8qIENvbXB1dGUgdGV4dCByZWdpb25zLiAqLworICAgIGZvciAoIGkgPSAx OyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChlbGYt PnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgKFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSkgPT0KKyAg ICAgICAgICAgICAoU0hGX0FMTE9DfFNIRl9FWEVDSU5TVFIpICkKKyAgICAgICAgICAgIGNhbGNf c2VjdGlvbigmZWxmLT5zZWNbaV0sICZwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIH0KKworICAg IC8qIENvbXB1dGUgcncgZGF0YS4gKi8KKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5l X3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9m bGFncyAmIFNIRl9BTExPQykgJiYKKyAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hf ZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgorICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMt PnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAgICAgICAgICBjYWxjX3NlY3Rpb24oJmVsZi0+ c2VjW2ldLCAmcGF5bG9hZC0+cndfc2l6ZSk7CisgICAgfQorCisgICAgLyogQ29tcHV0ZSBybyBk YXRhLiAqLworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisg ICAgeworICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9D KSAmJgorICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVD SU5TVFIpICYmCisgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hG X1dSSVRFKSApCisgICAgICAgICAgICBjYWxjX3NlY3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9h ZC0+cm9fc2l6ZSk7CisgICAgfQorCisgICAgLyogRG8gbm90IGFjY2VwdCB3eC4gKi8KKyAgICBm b3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAg aWYgKCAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYmCisgICAgICAg ICAgICAgKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgorICAg ICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogTm8g V1ggc2VjdGlvbnMhXG4iLCBlbGYtPm5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIFRvdGFsIG9mIGFsbCB0aHJlZSBy ZWdpb25zIC0gUlgsIFJXLCBhbmQgUk8uIFdlIGhhdmUgdG8gaGF2ZQorICAgICAqIGtlZXAgdGhl bSBpbiBzZXBlcmF0ZSBwYWdlcyBzbyB3ZSBQQUdFX0FMSUdOIHRoZSBSWCBhbmQgUlcgdG8gaGF2 ZQorICAgICAqIHRoZW0gb24gc2VwZXJhdGUgcGFnZXMuIFRoZSBsYXN0IG9uZSB3aWxsIGJ5IGRl ZmF1bHQgZmFsbCBvbiBpdHMKKyAgICAgKiBvd24gcGFnZS4KKyAgICAgKi8KKyAgICBzaXplID0g UEFHRV9BTElHTihwYXlsb2FkLT50ZXh0X3NpemUpICsgUEFHRV9BTElHTihwYXlsb2FkLT5yd19z aXplKSArCisgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC0+cm9fc2l6ZTsKKworICAgIHNp emUgPSBQRk5fVVAoc2l6ZSk7CisgICAgYnVmID0gYXJjaF94c3BsaWNlX2FsbG9jX3BheWxvYWQo c2l6ZSk7CisgICAgaWYgKCAhYnVmICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJS IFhTUExJQ0UgIiVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYXlsb2FkIVxuIiwK KyAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAg IH0KKyAgICBwYXlsb2FkLT5wYWdlcyA9IHNpemU7CisgICAgcGF5bG9hZC0+dGV4dF9hZGRyID0g YnVmOworICAgIHBheWxvYWQtPnJ3X2FkZHIgPSBwYXlsb2FkLT50ZXh0X2FkZHIgKyBQQUdFX0FM SUdOKHBheWxvYWQtPnRleHRfc2l6ZSk7CisgICAgcGF5bG9hZC0+cm9fYWRkciA9IHBheWxvYWQt PnJ3X2FkZHIgKyBQQUdFX0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpOworCisgICAgZm9yICggaSA9 IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggZWxm LT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQyApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSApCisg ICAgICAgICAgICAgICAgIGJ1ZiA9IHBheWxvYWQtPnRleHRfYWRkcjsKKyAgICAgICAgICAgIGVs c2UgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAg ICAgICAgICAgIGJ1ZiA9IHBheWxvYWQtPnJ3X2FkZHI7CisgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICAgIGJ1ZiA9IHBheWxvYWQtPnJvX2FkZHI7CisKKyAgICAgICAgICAgIGVsZi0+ c2VjW2ldLmxvYWRfYWRkciA9IGJ1ZiArIGVsZi0+c2VjW2ldLnNlYy0+c2hfZW50c2l6ZTsKKwor ICAgICAgICAgICAgLyogRG9uJ3QgY29weSBOT0JJVFMgLSBzdWNoIGFzIEJTUy4gKi8KKyAgICAg ICAgICAgIGlmICggZWxmLT5zZWNbaV0uc2VjLT5zaF90eXBlICE9IFNIVF9OT0JJVFMgKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lbWNweShlbGYtPnNlY1tpXS5sb2FkX2FkZHIs IGVsZi0+c2VjW2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+c2VjW2ldLnNl Yy0+c2hfc2l6ZSk7CisgICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJ Q0UgIiVzOiBMb2FkZWQgJXMgYXQgMHglcFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs Zi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSwgZWxmLT5zZWNbaV0ubG9hZF9hZGRyKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IHNlY3VyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKK3sKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IHRleHRfcGFnZXMs IHJ3X3BhZ2VzLCByb19wYWdlczsKKworICAgIHRleHRfcGFnZXMgPSBQRk5fVVAocGF5bG9hZC0+ dGV4dF9zaXplKTsKKyAgICBBU1NFUlQodGV4dF9wYWdlcyk7CisKKyAgICByYyA9IGFyY2hfeHNw bGljZV9zZWN1cmUocGF5bG9hZC0+dGV4dF9hZGRyLCB0ZXh0X3BhZ2VzLCBYU1BMSUNFX1ZBX1JY KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcndfcGFnZXMgPSBQ Rk5fVVAocGF5bG9hZC0+cndfc2l6ZSk7CisgICAgaWYgKCByd19wYWdlcyApCisgICAgeworICAg ICAgICByYyA9IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5bG9hZC0+cndfYWRkciwgcndfcGFnZXMs IFhTUExJQ0VfVkFfUlcpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHJldHVybiBy YzsKKyAgICB9CisKKyAgICByb19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yb19zaXplKTsKKyAg ICBpZiAoIHJvX3BhZ2VzICkKKyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3Vy ZShwYXlsb2FkLT5yb19hZGRyLCByb19wYWdlcywgWFNQTElDRV9WQV9STyk7CisgICAgfQorCisg ICAgQVNTRVJUKHJvX3BhZ2VzICsgcndfcGFnZXMgKyB0ZXh0X3BhZ2VzID09IHBheWxvYWQtPnBh Z2VzKTsKKworICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpkYXRhKQogewogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9h ZF9sb2NrKSk7CiAgICAgbGlzdF9kZWwoJmRhdGEtPmxpc3QpOwogICAgIHBheWxvYWRfY250LS07 CiAgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAgZnJlZV9wYXlsb2FkX2RhdGEoZGF0YSk7CiAg ICAgeGZyZWUoZGF0YSk7CiB9CiAKK3N0YXRpYyBpbnQgbG9hZF9wYXlsb2FkX2RhdGEoc3RydWN0 IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikKK3sKKyAgICBzdHJ1Y3Qg eHNwbGljZV9lbGYgZWxmID0geyAubmFtZSA9IHBheWxvYWQtPm5hbWUsIC5sZW4gPSBsZW4gfTsK KyAgICBpbnQgcmMgPSAwOworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9sb2FkKCZlbGYsIHJhdyk7 CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBtb3ZlX3BheWxv YWQocGF5bG9hZCwgJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisg ICAgcmMgPSB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoJmVsZik7CisgICAgaWYgKCByYyAp CisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9j cygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHNl Y3VyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworCisgb3V0OgorICAgIGlmICggcmMgKQorICAg ICAgICBmcmVlX3BheWxvYWRfZGF0YShwYXlsb2FkKTsKKworICAgIC8qIEZyZWUgb3VyIHRlbXBv cmFyeSBkYXRhIHN0cnVjdHVyZS4gKi8KKyAgICB4c3BsaWNlX2VsZl9mcmVlKCZlbGYpOworCisg ICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxf eHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhID0g TlVMTCwgKmZvdW5kOwogICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIHZv aWQgKnJhd19kYXRhID0gTlVMTDsKICAgICBpbnQgcmM7CiAKICAgICByYyA9IHZlcmlmeV9wYXls b2FkKHVwbG9hZCwgbik7CkBAIC0xMjUsOSArMzI5LDIwIEBAIHN0YXRpYyBpbnQgeHNwbGljZV91 cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAotICAgIHJjID0gMDsKKyAgICByYyA9IC1FTk9NRU07CisgICAgcmF3X2Rh dGEgPSB2bWFsbG9jKHVwbG9hZC0+c2l6ZSk7CisgICAgaWYgKCAhcmF3X2RhdGEgKQorICAgICAg ICBnb3RvIG91dDsKKworICAgIHJjID0gLUVGQVVMVDsKKyAgICBpZiAoIF9fY29weV9mcm9tX2d1 ZXN0KHJhd19kYXRhLCB1cGxvYWQtPnBheWxvYWQsIHVwbG9hZC0+c2l6ZSkgKQorICAgICAgICBn b3RvIG91dDsKIAogICAgIG1lbWNweShkYXRhLT5uYW1lLCBuLCBzdHJsZW4obikpOworICAgIHJj ID0gbG9hZF9wYXlsb2FkX2RhdGEoZGF0YSwgcmF3X2RhdGEsIHVwbG9hZC0+c2l6ZSk7CisgICAg aWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCiAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNF X1NUQVRFX0NIRUNLRUQ7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmRhdGEtPmxpc3QpOwogCkBAIC0x MzgsNiArMzUzLDggQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxp Y2VfdXBsb2FkX3QgKnVwbG9hZCkKICBvdXQ6CiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9j ayk7CiAKKyAgICB2ZnJlZShyYXdfZGF0YSk7CisKICAgICBpZiAoIHJjICkKICAgICAgICAgeGZy ZWUoZGF0YSk7CiAKQEAgLTM3OSw4ICs1OTYsOSBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50 YWxsKHVuc2lnbmVkIGNoYXIga2V5KQogICAgIH0KIAogICAgIGxpc3RfZm9yX2VhY2hfZW50cnkg KCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKLSAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBz dGF0ZT0lcyglZClcbiIsIGRhdGEtPm5hbWUsCi0gICAgICAgICAgICAgICBzdGF0ZTJzdHIoZGF0 YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSk7CisgICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9 JXMoJWQpICVwICguZGF0YT0lcCwgLnJvZGF0YT0lcCkgdXNpbmcgJXp1IHBhZ2VzLlxuIiwKKyAg ICAgICAgICAgICAgIGRhdGEtPm5hbWUsIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0 YXRlLCBkYXRhLT50ZXh0X2FkZHIsCisgICAgICAgICAgICAgICBkYXRhLT5yd19hZGRyLCBkYXRh LT5yb19hZGRyLCBkYXRhLT5wYWdlcyk7CiAKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2Nr KTsKIH0KQEAgLTM4OCw2ICs2MDYsOCBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVu c2lnbmVkIGNoYXIga2V5KQogc3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQpCiB7 CiAgICAgcmVnaXN0ZXJfa2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4 c3BsaWNpbmcgaW5mbyIsIDEpOworCisgICAgYXJjaF94c3BsaWNlX2luaXQoKTsKICAgICByZXR1 cm4gMDsKIH0KIF9faW5pdGNhbGwoeHNwbGljZV9pbml0KTsKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24veHNwbGljZV9lbGYuYyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwppbmRleCBmZmE1Yzk1 Li43MjYyZmMyIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKKysrIGIveGVu L2NvbW1vbi94c3BsaWNlX2VsZi5jCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIGludCBlbGZf cmVzb2x2ZV9zZWN0aW9ucyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0 YSkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZWxmLT5zeW10YWIgPSAmc2VjW2ldOwot CisgICAgICAgICAgICBlbGYtPnN5bXRhYl9pZHggPSBpOwogICAgICAgICAgICAgLyoKICAgICAg ICAgICAgICAqIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmsgd291bGQgcG9pbnQgdG8gdGhlIHJp Z2h0IHNlY3Rpb24KICAgICAgICAgICAgICAqIGJ1dCB3ZSBoYWRuJ3QgZmluaXNoZWQgcGFyc2lu ZyBhbGwgdGhlIHNlY3Rpb25zLgpAQCAtMjQ5LDkgKzI0OSwxMjcgQEAgc3RhdGljIGludCBlbGZf Z2V0X3N5bShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICBy ZXR1cm4gMDsKIH0KIAoraW50IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmMgPSAwOwor CisgICAgLyoKKyAgICAgKiBUaGUgZmlyc3QgZW50cnkgb2YgYW4gRUxGIHN5bWJvbCB0YWJsZSBp cyB0aGUgInVuZGVmaW5lZCBzeW1ib2wgaW5kZXgiLgorICAgICAqIGFrYSByZXNlcnZlZCBzbyB3 ZSBza2lwIGl0LgorICAgICAqLworICAgIEFTU0VSVChlbGYtPnN5bSk7CisKKyAgICBmb3IgKCBp ID0gMTsgaSA8IGVsZi0+bnN5bTsgaSsrICkKKyAgICB7CisgICAgICAgIHVpbnQxNl90IGlkeCA9 IGVsZi0+c3ltW2ldLnN5bS0+c3Rfc2huZHg7CisKKyAgICAgICAgcmMgPSAwOworICAgICAgICBz d2l0Y2ggKCBpZHggKQorICAgICAgICB7CisgICAgICAgIGNhc2UgU0hOX0NPTU1PTjoKKyAgICAg ICAgICAgIHByaW50ayhYRU5MT0dfREVCVUcgWFNQTElDRSAiJXM6IFVuZXhwZWN0ZWQgY29tbW9u IHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtp XS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIGNhc2UgU0hOX1VOREVGOgorICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJV RyBYU1BMSUNFICIlczogVW5rbm93biBzeW1ib2w6ICVzXG4iLAorICAgICAgICAgICAgICAgICAg IGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9IC1FTk9FTlQ7 CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNITl9BQlM6CisgICAgICAgICAg ICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFic29sdXRlIHN5bWJvbDogJXMg PT4gJSMiUFJJeEVsZkFkZHIiXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVs Zi0+c3ltW2ldLm5hbWUsIGVsZi0+c3ltW2ldLnN5bS0+c3RfdmFsdWUpOworICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIFNITl9DT01NT04gYW5k IFNITl9BQlMgYXJlIGFib3ZlLiAqLworICAgICAgICAgICAgaWYgKCBpZHggPiBTSE5fTE9SRVNF UlZFICkKKyAgICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgLyog U0hOX1VOREVGICgwKSBhYm92ZS4gKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCBpZHggPiBlbGYt Pmhkci0+ZV9zaG51bSAmJiBpZHggPCBTSE5fTE9SRVNFUlZFICkKKyAgICAgICAgICAgICAgICBy YyA9IC1FSU5WQUw7CisKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogVW5rbm93biB0 eXBlPSUjIlBSSXgxNiJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGlk eCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IGlmICggIShlbGYtPnNlY1tpZHhdLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICkKKyAgICAg ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZWxmLT5zeW1baV0uc3ltLT5zdF92YWx1 ZSArPSAodW5zaWduZWQgbG9uZyllbGYtPnNlY1tpZHhdLmxvYWRfYWRkcjsKKyAgICAgICAgICAg IGlmICggZWxmLT5zeW1baV0ubmFtZSApCisgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19E RUJVRyBYU1BMSUNFICIlczogU3ltYm9sIHJlc29sdmVkOiAlcyA9PiAlIyJQUkl4RWxmQWRkciIo JXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5h bWUsCisgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+c3ltW2ldLnN5bS0+c3RfdmFsdWUsIGVs Zi0+c2VjW2lkeF0ubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJjICkKKyAgICAg ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworaW50IHhzcGxpY2Vf ZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEsICpiYXNlOworICAgIHVuc2lnbmVkIGludCBpOworICAg IGludCByYyA9IDA7CisKKyAgICAvKgorICAgICAqIFRoZSBmaXJzdCBlbnRyeSBvZiBhbiBFTEYg c3ltYm9sIHRhYmxlIGlzIHRoZSAidW5kZWZpbmVkIHN5bWJvbCBpbmRleCIuCisgICAgICogYWth IHJlc2VydmVkIHNvIHdlIHNraXAgaXQuCisgICAgICovCisgICAgQVNTRVJUKGVsZi0+c3ltKTsK KworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgewor ICAgICAgICByZWxhID0gJmVsZi0+c2VjW2ldOworCisgICAgICAgIGlmICggKHJlbGEtPnNlYy0+ c2hfdHlwZSAhPSBTSFRfUkVMQSkgJiYKKyAgICAgICAgICAgICAocmVsYS0+c2VjLT5zaF90eXBl ICE9IFNIVF9SRUwpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAvKiBJcyBp dCBhIHZhbGlkIHJlbG9jYXRpb24gc2VjdGlvbj8gKi8KKyAgICAgICAgIGlmICggcmVsYS0+c2Vj LT5zaF9pbmZvID49IGVsZi0+aGRyLT5lX3NobnVtICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor CisgICAgICAgICBiYXNlID0gJmVsZi0+c2VjW3JlbGEtPnNlYy0+c2hfaW5mb107CisKKyAgICAg ICAgIC8qIERvbid0IHJlbG9jYXRlIG5vbi1hbGxvY2F0ZWQgc2VjdGlvbnMuICovCisgICAgICAg ICBpZiAoICEoYmFzZS0+c2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgKQorICAgICAgICAgICAg Y29udGludWU7CisKKyAgICAgICAgaWYgKCByZWxhLT5zZWMtPnNoX2xpbmsgIT0gZWxmLT5zeW10 YWJfaWR4ICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhT UExJQ0UgIiVzOiBSZWxhdGl2ZSBsaW5rIG9mICVzIGlzIGluY29ycmVjdCAoJWQsIGV4cGVjdGVk PSVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCByZWxhLT5uYW1lLCByZWxh LT5zZWMtPnNoX2xpbmssIGVsZi0+c3ltdGFiX2lkeCk7CisgICAgICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmVsYS0+ c2VjLT5zaF90eXBlID09IFNIVF9SRUxBICkKKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNl X3BlcmZvcm1fcmVsYShlbGYsIGJhc2UsIHJlbGEpOworICAgICAgICBlbHNlIC8qIFNIVF9SRUwg Ki8KKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKGVsZiwgYmFzZSwg cmVsYSk7CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisK KyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9 IGVsZi0+aGRyOworICAgIGludCByYzsKIAogICAgIGlmICggc2l6ZW9mKCplbGYtPmhkcikgPiBl bGYtPmxlbiApCiAgICAgewpAQCAtMjc2LDYgKzM5NCwxMCBAQCBzdGF0aWMgaW50IHhzcGxpY2Vf aGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgICAgICByZXR1 cm4gLUVPUE5PVFNVUFA7CiAgICAgfQogCisgICAgcmMgPSBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Vs ZihlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKICAgICBpZiAoIGVs Zi0+aGRyLT5lX3Noc3RybmR4ID09IFNITl9VTkRFRiApCiAgICAgewogICAgICAgICBkcHJpbnRr KFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFNlY3Rpb24gbmFtZSBpZHggaXMgdW5kZWZpbmVk IT9cbiIsCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIveGVuL2lu Y2x1ZGUveGVuL2VsZnN0cnVjdHMuaAppbmRleCA4NWYzNWVkLi5iZTU1OTg1IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGZz dHJ1Y3RzLmgKQEAgLTQ3Miw2ICs0NzIsOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZW5kaWYKIAog I2lmIGRlZmluZWQoRUxGU0laRSkgJiYgKEVMRlNJWkUgPT0gMzIpCisjZGVmaW5lIFBSSXhFbGZB ZGRyCSIwOHgiCisKICNkZWZpbmUgRWxmX0VoZHIJRWxmMzJfRWhkcgogI2RlZmluZSBFbGZfUGhk cglFbGYzMl9QaGRyCiAjZGVmaW5lIEVsZl9TaGRyCUVsZjMyX1NoZHIKQEAgLTQ5Nyw2ICs0OTks OCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAKICNkZWZpbmUgQXV4SW5mbwkJQXV4MzJJbmZvCiAjZWxp ZiBkZWZpbmVkKEVMRlNJWkUpICYmIChFTEZTSVpFID09IDY0KQorI2RlZmluZSBQUkl4RWxmQWRk cgkibHgiCisKICNkZWZpbmUgRWxmX0VoZHIJRWxmNjRfRWhkcgogI2RlZmluZSBFbGZfUGhkcglF bGY2NF9QaGRyCiAjZGVmaW5lIEVsZl9TaGRyCUVsZjY0X1NoZHIKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IGNk ODA1YTguLjgzZTRmMzEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtNiw2ICs2LDkgQEAKICNpZm5kZWYgX19Y RU5fWFNQTElDRV9IX18KICNkZWZpbmUgX19YRU5fWFNQTElDRV9IX18KIAorc3RydWN0IHhzcGxp Y2VfZWxmOworc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zeW07 CiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCiAjaWZkZWYgQ09ORklHX1hTUExJQ0UK QEAgLTE1LDYgKzE4LDMyIEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CiAKIGludCB4 c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7CiAKKy8qIEFyY2ggaG9v a3MuICovCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2Vf ZWxmICplbGYpOworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSk7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVs YShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2VudW0gdmFf dHlwZSB7CisgICAgWFNQTElDRV9WQV9SWCwgLyogLnRleHQgKi8KKyAgICBYU1BMSUNFX1ZBX1JX LCAvKiAuZGF0YSAqLworICAgIFhTUExJQ0VfVkFfUk8sIC8qIC5yb2RhdGEgKi8KK307CisKKyNp bmNsdWRlIDx4ZW4vbW0uaD4KK3ZvaWQgKmFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2ln bmVkIGludCBwYWdlcyk7CisKKy8qCisgKiBGdW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRl IHBhZ2VzIChmcm9tIGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKQorICogd2l0aCB0aGUgcmln aHQgcGFnZSBwZXJtaXNzaW9ucy4KKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAq dmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGVzKTsKKwordm9pZCBhcmNo X3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfaW5p dCh2b2lkKTsKICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMg Ki8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oIGIveGVuL2luY2x1 ZGUveGVuL3hzcGxpY2VfZWxmLmgKaW5kZXggODlhY2I3Ny4uNjg5MmY1OSAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2VfZWxmLmgKQEAgLTE1LDYgKzE1LDggQEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rp b25fbmFtZXMuICovCiAgICAgY29uc3Qgdm9pZCAqZGF0YTsgICAgICAgICAgICAgICAgICAgIC8q IFBvaW50ZXIgdG8gdGhlIHNlY3Rpb24gKGRvbmUgYnkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWxmX3Jlc29sdmVfc2VjdGlvbnMpLiAqLworICAgIHZvaWQg KmxvYWRfYWRkcjsgICAgICAgICAgICAgICAgICAgICAvKiBBIHBvaW50ZXIgdG8gdGhlIGFsbG9j YXRlZCBkZXN0aW5hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRG9uZSBieSBsb2FkX3BheWxvYWRfZGF0YS4gKi8KIH07CiAKIHN0cnVjdCB4c3BsaWNl X2VsZl9zeW0gewpAQCAtMjksOCArMzEsMTAgQEAgc3RydWN0IHhzcGxpY2VfZWxmIHsKICAgICBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7ICAgICAgICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMs IGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07ICAg ICAgICAgLyogQXJyYXkgb2Ygc3ltYm9scyAsIGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICB1bnNp Z25lZCBpbnQgbnN5bTsKLSAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7 LyogUG9pbnRlciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAqLworICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN5bXRhYjsvKiBQb2ludGVyIHRvIC5zeW10YWIg c2VjdGlvbiAtIGFrYSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWNbc3ltdGFiX2lkeF0uICovCiAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc3RydGFiOy8qIFBvaW50ZXIgdG8gLnN0cnRhYiBzZWN0aW9uIC0gYWthIHRvIHNlY1t5XS4g Ki8KKyAgICB1bnNpZ25lZCBpbnQgc3ltdGFiX2lkeDsKIH07CiAKIGNvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKnhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmLApAQCAtMzgsNiArNDIsOSBAQCBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKgogaW50 IHhzcGxpY2VfZWxmX2xvYWQoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRh dGEpOwogdm9pZCB4c3BsaWNlX2VsZl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKIAor aW50IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7 CitpbnQgeHNwbGljZV9lbGZfcGVyZm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYp OworCiAjZW5kaWYgLyogX19YRU5fWFNQTElDRV9FTEZfSF9fICovCiAKIC8qCi0tIAoyLjUuMAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==