From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 16/34] xsplice: Implement payload loading Date: Tue, 15 Mar 2016 13:56:38 -0400 Message-ID: <1458064616-23101-17-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGk-0001Ir-BE for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:34 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgbG9hZGluZyB4c3BsaWNlIHBheWxvYWRzLiBUaGlzIGlzIHNvbWV3aGF0IHNpbWls YXIgdG8KdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUgbG9hZGVyLCBpbXBsZW1lbnRpbmcgdGhlIGZv bGxvd2luZyBzdGVwczoKLSBWZXJpZnkgdGhlIGVsZiBmaWxlLgotIFBhcnNlIHRoZSBlbGYgZmls ZS4KLSBBbGxvY2F0ZSBhIHJlZ2lvbiBvZiBtZW1vcnkgbWFwcGVkIHdpdGhpbiBhIGZyZWUgYXJl YSBvZgogIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJUX0VORF0uCi0gQ29weSBhbGxvY2F0ZWQgc2Vj dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4KLSBSZXNvbHZlIHNlY3Rpb24gc3ltYm9scy4gQWxs IG90aGVyIHN5bWJvbHMgbXVzdCBiZSBhYnNvbHV0ZSBhZGRyZXNzZXMuCiAgKE5vdGUgdGhhdCBw YXRjaCB0aXRsZWQgInhzcGxpY2Usc3ltYm9sczogSW1wbGVtZW50IHN5bWJvbCBuYW1lIHJlc29s dXRpb24KICAgb24gYWRkcmVzcyIgaW1wbGVtZW50cyB0aGF0KQotIFBlcmZvcm0gcmVsb2NhdGlv bnMuCgpXZSBjYXBpdGFsaXplIG9uIHRoZSB2bWFsbG9jIGNhbGxiYWNrIEFQSSB0byBhbGxvY2F0 ZSBhIHJlZ2lvbgpvZiBtZW1vcnkgd2l0aGluIHRoZSBbeGVuX3ZpcnRfZW5kLCBYRU5fVklSVF9F TkRdIGZvciB0aGUgY29kZS4KVGhlIC5kYXRhLCAucm9kYXRhIGFuZCBzbyBvbiB3aWxsIGJlIChu b3QgaW1wbGVtZW50ZWQgaW4gdGhpcwpwYXRjaCkgcG9wdWxhdGVkIGluIHZtYWxsb2MgYXJlYS4K ClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29t PgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNs ZS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGNp dHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2Vp ciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2MjogLSBD aGFuZ2UgdGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlvdXQvc2l6ZS4KICAg IC0gQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4KICAgIC0gTW92ZSBl bGZfcmVzb2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxlLgogICAgLSBQcmlu dCB0aGUgcGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVyLgp2MzoKICAgIC0g TWFrZSBpdCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91dCB1c2luZyB0aGUg cmV0dXJuXyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KdjQ6CiAgICAtIEFkZCB0 aGUgX3JldHVybiBtYWNybyBiYWNrIC0gYnV0IG9ubHkgdXNlIGl0IGR1cmluZyBkZWJ1ZyBidWls ZHMuCnY1OgogICAgLSBSZW1vdmUgdGhlIG1hY3JvLCBwcmVmaXggYXJjaF8gb24gYXJjaCBzcGVj aWZpYyBjYWxscy4KICAgIC0gTW92ZSBhbGxvY19wYXlsb2FkIHRvIGFyY2ggc3BlY2lmaWMgZmls ZS4KICAgIC0gVXNlIHZvaWQqIGluc3RlYWQgb2YgdWludDhfdCwgdXNlIGNvbnN0CnY2OgogICAg LSBBZGQgY29weXJpZ2h0cwp2NzoKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFT U0VSVC4gQ2hhbmdlIHdoaWxlIHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJv ciBsb29wCnY4OgogICAtIFVzZSB2bWFsbG9jL3ZmcmVlIGNiIEFQSXMKICAgLSBTZWN1cmUgLnRl eHQgcGFnZXMgdG8gYmUgUlggaW5zdGVhZCBvZiBSV1guCi0tLQotLS0KIHhlbi9hcmNoL2FybS9N YWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0veHNwbGljZS5jICAgICAg ICAgICAgfCAgNTYgKysrKysrKysrCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAgICAgICAgICAg fCAgIDEgKwogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgIHwgICA3ICsrCiB4ZW4v YXJjaC94ODYveHNwbGljZS5jICAgICAgICAgICAgfCAyNTYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24veHNwbGljZS5jICAgICAgICAgICAgICB8IDE4 NiArKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9jb21tb24veHNwbGljZV9lbGYuYyAg ICAgICAgICB8ICA4NSArKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9w YWdlLmggfCAgIDIgKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCAgICAgICAgIHwgIDQ0ICsr KysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oICAgICB8ICAgNSArCiAxMCBmaWxl cyBjaGFuZ2VkLCA2NDEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC9hcm0veHNwbGljZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2Fy Y2gveDg2L3hzcGxpY2UuYwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZSBiL3hl bi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCAwMzI4YjUwLi5lYWU1Y2IzIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCkBAIC00MCw2 ICs0MCw3IEBAIG9iai15ICs9IGRldmljZS5vCiBvYmoteSArPSBkZWNvZGUubwogb2JqLXkgKz0g cHJvY2Vzc29yLm8KIG9iai15ICs9IHNtYy5vCitvYmotJChDT05GSUdfWFNQTElDRSkgKz0geHNw bGljZS5vCiAKICNvYmotYmluLXkgKz0gLi4uLm8KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L3hzcGxpY2UuYyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjIwMzY1YwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS94 c3BsaWNlLmMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0 cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRl IDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4 ZW4veHNwbGljZS5oPgorCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmICplbGYsIHZvaWQgKmRhdGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9 CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoc3RydWN0IHhzcGxpY2VfZWxmICplbGYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9z ZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK2ludCBhcmNo X3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9z ZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK3ZvaWQgKmFyY2hfeHNwbGlj ZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCAqKm1mbikKK3sKKyAgICByZXR1 cm4gTlVMTDsKK30KKworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEsIHVuc2lnbmVk IGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBtZm5fdCAqbWZuKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkIGFyY2hf eHNwbGljZV9yZWdpc3Rlcl9maW5kX3NwYWNlKGZpbmRfc3BhY2VfdCBjYikKK3sKK30KKwordm9p ZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMs IGVudW0gdmFfdHlwZSB0eXBlKQoreworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQpp bmRleCAxYmNiMDhiLi5kZmNlYmU4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUK KysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC02Myw2ICs2Myw3IEBAIG9iai15ICs9IHZt X2V2ZW50Lm8KIG9iai15ICs9IHhzdGF0ZS5vCiAKIG9iai0kKGNyYXNoX2RlYnVnKSArPSBnZGJz dHViLm8KK29iai0kKENPTkZJR19YU1BMSUNFKSArPSB4c3BsaWNlLm8KIAogeDg2X2VtdWxhdGUu bzogeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCiAK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMK aW5kZXggMTE1ZTZmZC4uMjdhNDY3NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMK KysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTEwMCw2ICsxMDAsOSBAQCB1bnNpZ25lZCBs b25nIF9fcmVhZF9tb3N0bHkgeGVuX3BoeXNfc3RhcnQ7CiAKIHVuc2lnbmVkIGxvbmcgX19yZWFk X21vc3RseSB4ZW5fdmlydF9lbmQ7CiAKK3Vuc2lnbmVkIGxvbmcgX19yZWFkX21vc3RseSBhdmFp bF92aXJ0X3N0YXJ0OwordW5zaWduZWQgbG9uZyBfX3JlYWRfbW9zdGx5IGF2YWlsX3ZpcnRfZW5k OworCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgdHNzX3N0cnVjdCwgaW5pdF90c3MpOwogCiBjaGFy IF9fc2VjdGlvbigiLmJzcy5zdGFja19hbGlnbmVkIikgY3B1MF9zdGFja1tTVEFDS19TSVpFXTsK QEAgLTEyMDYsNiArMTIwOSwxMCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1 bnNpZ25lZCBsb25nIG1iaV9wKQogICAgICAgICAgICAgICAgICAgIH4oKDFVTCA8PCBMMl9QQUdF VEFCTEVfU0hJRlQpIC0gMSk7CiAgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoeGVuX3ZpcnRfZW5k LCBYRU5fVklSVF9TVEFSVCArIEJPT1RTVFJBUF9NQVBfQkFTRSk7CiAKKyAgICBhdmFpbF92aXJ0 X3N0YXJ0ID0geGVuX3ZpcnRfZW5kOworICAgIGF2YWlsX3ZpcnRfZW5kID0gWEVOX1ZJUlRfRU5E IC0gTlJfQ1BVUyAqIFBBR0VfU0laRTsKKyAgICBCVUdfT04oYXZhaWxfdmlydF9lbmQgPD0gYXZh aWxfdmlydF9zdGFydCk7CisKICAgICBucl9wYWdlcyA9IDA7CiAgICAgZm9yICggaSA9IDA7IGkg PCBlODIwLm5yX21hcDsgaSsrICkKICAgICAgICAgaWYgKCBlODIwLm1hcFtpXS50eXBlID09IEU4 MjBfUkFNICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMgYi94ZW4vYXJjaC94 ODYveHNwbGljZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YTM2NDUK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYveHNwbGljZS5jCkBAIC0wLDAgKzEsMjU2 IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisg Ki8KKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNs dWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vcGZuLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAu aD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5o PgorCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxm ICplbGYsIHZvaWQgKmRhdGEpCit7CisKKyAgICBFbGZfRWhkciAqaGRyID0gZGF0YTsKKworICAg IGlmICggIUlTX0VMRigqaGRyKSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAi JXMlczogTm90IGFuIEVMRiBwYXlsb2FkIVxuIiwgWFNQTElDRSwgZWxmLT5uYW1lKTsKKyAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmICggZWxmLT5sZW4gPCAoc2l6ZW9mICpo ZHIpIHx8CisgICAgICAgICAhSVNfRUxGKCpoZHIpIHx8CisgICAgICAgICBoZHItPmVfaWRlbnRb RUlfQ0xBU1NdICE9IEVMRkNMQVNTNjQgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9EQVRB XSAhPSBFTEZEQVRBMkxTQiB8fAorICAgICAgICAgaGRyLT5lX2lkZW50W0VJX09TQUJJXSAhPSBF TEZPU0FCSV9TWVNWIHx8CisgICAgICAgICBoZHItPmVfbWFjaGluZSAhPSBFTV9YODZfNjQgfHwK KyAgICAgICAgIGhkci0+ZV90eXBlICE9IEVUX1JFTCB8fAorICAgICAgICAgaGRyLT5lX3BobnVt ICE9IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIiVzJXM6IEludmFsaWQg RUxGIHBheWxvYWQhXG4iLCBYU1BMSUNFLCBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVP UE5PVFNVUFA7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBhcmNoX3hzcGxpY2Vf cGVyZm9ybV9yZWwoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7 CisgICAgZHByaW50ayhYRU5MT0dfRVJSLCAiJXMlczogU0hSX1JFTCByZWxvY2F0aW9uIHVuc3Vw cG9ydGVkXG4iLAorICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lKTsKKyAgICByZXR1cm4g LUVOT1NZUzsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxp Y2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBFbGZfUmVsQSAqcjsKKyAg ICB1bnNpZ25lZCBpbnQgc3ltbmR4LCBpOworICAgIHVpbnQ2NF90IHZhbDsKKyAgICB1aW50OF90 ICpkZXN0OworCisgICAgaWYgKCAhcmVsYS0+c2VjLT5zaF9lbnRzaXplIHx8ICFyZWxhLT5zZWMt PnNoX3NpemUgfHwKKyAgICAgICAgIHJlbGEtPnNlYy0+c2hfZW50c2l6ZSAhPSBzaXplb2YoRWxm X1JlbEEpICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogU2Vj dGlvbiByZWxhdGl2ZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAgICAgICAgICAgICAgICBY U1BMSUNFLCBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAg Zm9yICggaSA9IDA7IGkgPCAocmVsYS0+c2VjLT5zaF9zaXplIC8gcmVsYS0+c2VjLT5zaF9lbnRz aXplKTsgaSsrICkKKyAgICB7CisgICAgICAgIHIgPSAoRWxmX1JlbEEgKikocmVsYS0+ZGF0YSAr IGkgKiByZWxhLT5zZWMtPnNoX2VudHNpemUpOworICAgICAgICBpZiAoICh1bnNpZ25lZCBsb25n KXIgPiAodW5zaWduZWQgbG9uZykoZWxmLT5oZHIgKyBlbGYtPmxlbikgKQorICAgICAgICB7Cisg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFJlbGF0aXZlIHNlY3Rpb24g JXUgIGlzIHBhc3QgZW5kIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5u YW1lLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAg IHN5bW5keCA9IEVMRjY0X1JfU1lNKHItPnJfaW5mbyk7CisgICAgICAgIGlmICggc3ltbmR4ID4g ZWxmLT5uc3ltICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcs ICIlcyVzOiBSZWxhdGl2ZSBzeW1ib2wgd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlzIHBhc3QgZW5k IVxuIiwKKyAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lLCBzeW1uZHgpOwor ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZGVzdCA9IGJh c2UtPmxvYWRfYWRkciArIHItPnJfb2Zmc2V0OworICAgICAgICB2YWwgPSByLT5yX2FkZGVuZCAr IGVsZi0+c3ltW3N5bW5keF0uc3ltLT5zdF92YWx1ZTsKKworICAgICAgICBzd2l0Y2ggKCBFTEY2 NF9SX1RZUEUoci0+cl9pbmZvKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgUl9YODZf NjRfTk9ORToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUl9YODZf NjRfNjQ6CisgICAgICAgICAgICAgICAgKih1aW50NjRfdCAqKWRlc3QgPSB2YWw7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFJfWDg2XzY0X1BMVDMyOgorICAgICAg ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogWGVuIHVzZXMgLWZwaWMgd2hpY2ggbm9y bWFsbHkgdXNlcyBQTFQgcmVsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgKiBleGNlcHQgdGhh dCBpdCBzZXRzIHZpc2liaWxpdHkgdG8gaGlkZGVuIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAg ICAgICogdGhhdCB0aGV5IGFyZSBub3QgdXNlZC4gIEhvd2V2ZXIsIHdoZW4gZ2NjIGNhbm5vdAor ICAgICAgICAgICAgICAgICAqIGlubGluZSBtZW1jcHkgaXQgZW1pdHMgbWVtY3B5IHdpdGggZGVm YXVsdCB2aXNpYmlsaXR5CisgICAgICAgICAgICAgICAgICogd2hpY2ggdGhlbiBjcmVhdGVzIGEg UExUIHJlbG9jYXRpb24uICBJdCBjYW4ganVzdCBiZQorICAgICAgICAgICAgICAgICAqIHRyZWF0 ZWQgdGhlIHNhbWUgYXMgUl9YODZfNjRfUEMzMi4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8KKyAgICAgICAgICAgIGNhc2UgUl9YODZfNjRf UEMzMjoKKyAgICAgICAgICAgICAgICAqKHVpbnQzMl90ICopZGVzdCA9IHZhbCAtICh1aW50NjRf dClkZXN0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg ICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXMlczogVW5oYW5kbGVkIHJlbG9jYXRp b24gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIEVM RjY0X1JfVFlQRShyLT5yX2luZm8pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgZmluZF9zcGFj ZV90IGZpbmRfc3BhY2VfZm5jID0gTlVMTDsKKwordm9pZCBhcmNoX3hzcGxpY2VfcmVnaXN0ZXJf ZmluZF9zcGFjZShmaW5kX3NwYWNlX3QgY2IpCit7CisgICAgQVNTRVJUKCFmaW5kX3NwYWNlX2Zu Yyk7CisKKyAgICBmaW5kX3NwYWNlX2ZuYyA9IGNiOworfQorCitzdGF0aWMgdm9pZCogeHNwbGlj ZV9tYXBfcngoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IHBhZ2VzKQoreworICAgIHVu c2lnbmVkIGxvbmcgY3VyOworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKworICAgIHN0 YXJ0ID0gKHVuc2lnbmVkIGxvbmcpYXZhaWxfdmlydF9zdGFydDsKKyAgICBlbmQgPSBzdGFydCAr IHBhZ2VzICogUEFHRV9TSVpFOworCisgICAgQVNTRVJUKGZpbmRfc3BhY2VfZm5jKTsKKworICAg IGlmICggKGZpbmRfc3BhY2VfZm5jKShwYWdlcywgJnN0YXJ0LCAmZW5kKSApCisgICAgICAgIHJl dHVybiBOVUxMOworCisgICAgaWYgKCBlbmQgPj0gYXZhaWxfdmlydF9lbmQgKQorICAgICAgICBy ZXR1cm4gTlVMTDsKKworICAgIGZvciAoIGN1ciA9IHN0YXJ0OyBwYWdlcy0tOyArK21mbiwgY3Vy ICs9IFBBR0VfU0laRSApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBXZSB3b3VsZCBs aWtlIHRvIHRvIFJYLCBidXQgd2UgbmVlZCB0byBjb3B5IGRhdGEgaW4gaXQgZmlyc3QuCisgICAg ICAgICAqIFNlZSBhcmNoX3hzcGxpY2Vfc2VjdXJlIGZvciBob3cgd2UgbG9ja2Rvd24uCisgICAg ICAgICAqLworICAgICAgICBpZiAoIG1hcF9wYWdlc190b194ZW4oc3RhcnQsIG1mbl94KCptZm4p LCAxLCBQQUdFX0hZUEVSVklTT1JfUldYKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgg Y3VyICE9IHN0YXJ0ICkKKyAgICAgICAgICAgICAgICBkZXN0cm95X3hlbl9tYXBwaW5ncyhzdGFy dCwgY3VyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAg IHJldHVybiAodm9pZCopc3RhcnQ7Cit9CisKKy8qCisgKiBUaGUgZnVuY3Rpb24gcHJlcGFyZXMg YW4geFNwbGljZSBwYXlsb2FkIGJ5IGFsbG9jYXRpbmcgc3BhY2Ugd2hpY2gKKyAqIHRoZW4gY2Fu IGJlIHVzZWQgZm9yIGxvYWRpbmcgdGhlIGFsbG9jYXRlZCBzZWN0aW9ucywgcmVzb2x2aW5nIHN5 bWJvbHMsCisgKiBwZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBldGMuCisgKi8KK3ZvaWQgKmFyY2hf eHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCAqKm1mbikKK3sKKyAg ICB2bWFwX2NiX3QgY2IgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBpOworICAgIHZvaWQgKnA7 CisKKyAgICBBU1NFUlQocGFnZXMpOyAvKiBXaGljaCBpcyBpbiBieXRlcy4gKi8KKyAgICBBU1NF UlQobWZuICYmICEqbWZuKTsKKworICAgIC8qCisgICAgICogSW5pdGlhbGx5IHRoZSBwYWdlcyBh bGxvY2F0ZWQgbXVzdCBoYXZlIFcgb3RoZXJ3aXNlIHdlIGNhbid0CisgICAgICogcHV0IGFueXRo aW5nIGluIHRoZW0uCisgICAgICovCisgICAgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlggKQor ICAgICAgICBjYiA9IHhzcGxpY2VfbWFwX3J4OworICAgIGVsc2UKKyAgICAgICAgY2IgPSB2bWFw OworCisgICAgKm1mbiA9IE5VTEw7CisgICAgLyoKKyAgICAgKiBXZSBsZXQgdGhlIHZtYWxsb2Mg YWxsb2NhdGUgdGhlIHBhZ2VzIHdlIG5lZWQsIGFuZCB1c2UKKyAgICAgKiBvdXIgY2FsbGJhY2su CisgICAgICovCisgICAgcCA9IHZtYWxsb2NfY2IocGFnZXMgKiBQQUdFX1NJWkUsIGNiLCBtZm4p OworICAgIFdBUk5fT04oIXApOworICAgIGlmICggIXAgKQorICAgICAgICByZXR1cm4gTlVMTDsK KyAgICBmb3IgKCBpID0gMDsgaSA8IHBhZ2VzOyBpKysgKQorICAgICAgICBjbGVhcl9wYWdlKHAg KyAoaSAqIFBBR0VfU0laRSkgKTsKKworICAgIC8qIE5vdGUgdGhhdCB3ZSBkbyBub3QgZnJlZSBt Zm4uIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHRoYXQuICovCisgICAgcmV0dXJuIHA7 Cit9CisKK3N0YXRpYyB2b2lkIGFyY2hfeHNwbGljZV92ZnJlZV9jYih2b2lkICp2YSwgdW5zaWdu ZWQgaW50IHBhZ2VzKQoreworICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25n KXZhOworCisgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRkciArIHBhZ2VzICogUEFH RV9TSVpFKTsKK30KKworLyoKKyAqIE9uY2UgdGhlIHJlc29sdmluZyBzeW1ib2xzLCBwZXJmb3Jt aW5nIHJlbG9jYXRpb25zLCBldGMgaXMgY29tcGxldGUKKyAqIHdlIHNlY3VyZSB0aGUgbWVtb3J5 IGJ5IHB1dHRpbmcgaW4gdGhlIHByb3BlciBwYWdlIHRhYmxlIGF0dHJpYnV0ZXMKKyAqIGZvciB0 aGUgZGVzaXJlZCB0eXBlLgorICoKKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAq dmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUsCisgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBtZm5fdCAqbWZuKQoreworICAgIHVuc2lnbmVkIGxvbmcgY3VyOwor ICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQgPSAodW5zaWduZWQgbG9uZyl2YTsKKworICAgIEFTU0VS VCh2YSk7CisgICAgQVNTRVJUKHBhZ2VzKTsKKworICAgIGlmICggdHlwZSAhPSBYU1BMSUNFX1ZB X1JYICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKgorICAgICAqIFdlIGNvdWxkIHdhbGsg dGhlIHBhZ2V0YWJsZSBhbmQgZG8gdGhlIHBhZ2V0YWJsZSBtYW5pcHVsYXRpb25zCisgICAgICog KHN0cmlwIHRoZSBfUEFHRV9SVyksIHdoaWNoIHdvdWxkIG1lYW4gYWxzbyBub3QgbmVlZGluZyB0 aGUgbWZuCisgICAgICogYXJyYXksIGJ1dCB0aGVyZSBhcmUgbm8gZ2VuZXJpYyBjb2RlIGZvciB0 aGlzIHlldCAoVE9ETykuCisgICAgICoKKyAgICAgKiBGb3IgcmlnaHQgbm93IHRlYXIgZG93biB0 aGUgcGFnZXRhYmxlcyBhbmQgcmVjcmVhdGUgdGhlbS4KKyAgICAgKi8KKyAgICBhcmNoX3hzcGxp Y2VfdmZyZWVfY2IodmEsIHBhZ2VzKTsKKworICAgIGZvciAoIGN1ciA9IHN0YXJ0OyBwYWdlcy0t OyArK21mbiwgY3VyICs9IFBBR0VfU0laRSApCisgICAgeworICAgICAgICBpZiAoIG1hcF9wYWdl c190b194ZW4oc3RhcnQsIG1mbl94KCptZm4pLCAxLCBQQUdFX0hZUEVSVklTT1JfUlgpICkKKyAg ICAgICAgeworICAgICAgICAgICAgaWYgKCBjdXIgIT0gc3RhcnQgKQorICAgICAgICAgICAgICAg IGRlc3Ryb3lfeGVuX21hcHBpbmdzKHN0YXJ0LCBjdXIpOworICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgYXJjaF94 c3BsaWNlX2ZyZWVfcGF5bG9hZCh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZh X3R5cGUgdHlwZSkKK3sKKyAgICBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SWCApCisgICAgICAg IHZmcmVlX2NiKHZhLCBwYWdlcywgYXJjaF94c3BsaWNlX3ZmcmVlX2NiKTsKKyAgICBlbHNlCisg ICAgICAgIHZmcmVlKHZhKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCmluZGV4IGJh MmQzNzYuLjViYmI1YmIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZS5jCisrKyBiL3hl bi9jb21tb24veHNwbGljZS5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8eGVuL3NtcC5o PgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5j bHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAogI2lu Y2x1ZGUgPGFzbS9ldmVudC5oPgpAQCAtMjcsNiArMjgsOSBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAg ICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIE9uZSBvZiB0aGUgWFNQ TElDRV9TVEFURV8qLiAqLwogICAgIGludDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiAwIG9yIC1YRU5fRVhYLiAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgICAgICAg ICAgICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICovCisgICAgdm9pZCAqcGF5bG9h ZF9hZGRyZXNzOyAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBtYXBwZWQuICovCisg ICAgc2l6ZV90IHBheWxvYWRfcGFnZXM7ICAgICAgICAgICAgICAgIC8qIE5yIG9mIHRoZSBwYWdl cy4gKi8KKyAgICBtZm5fdCAqbWZuOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXJyYXkg b2YgTUZOcyBvZiB0aGUgcGFnZXMuICovCiAgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVf U0laRSArIDFdOy8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBAIC05Miw2ICs5NiwxMzYgQEAgc3Rh dGljIGludCBmaW5kX3BheWxvYWQoY29uc3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lLCBzdHJ1 Y3QgcGF5bG9hZCAqKmYpCiB9CiAKIC8qCisgKiBGdW5jdGlvbnMgcmVsYXRlZCB0byBYRU5fU1lT Q1RMX1hTUExJQ0VfVVBMT0FEIChzZWUgeHNwbGljZV91cGxvYWQpLCBhbmQKKyAqIGZyZWVpbmcg cGF5bG9hZCAoWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTjpYU1BMSUNFX0FDVElPTl9VTkxPQUQp LgorICovCisKK3N0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpw YXlsb2FkKQoreworICAgIC8qIFNldCB0byB6ZXJvIHVudGlsICJtb3ZlX3BheWxvYWQiLiAqLwor ICAgIGlmICggIXBheWxvYWQtPnBheWxvYWRfYWRkcmVzcyApCisgICAgICAgIHJldHVybjsKKwor ICAgIHhmcmVlKHBheWxvYWQtPm1mbik7CisgICAgcGF5bG9hZC0+bWZuID0gTlVMTDsKKyAgICBh cmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHBheWxvYWQtPnBheWxvYWRfYWRkcmVzcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQtPnBheWxvYWRfcGFnZXMsIFhTUExJQ0Vf VkFfUlgpOworCisgICAgcGF5bG9hZC0+cGF5bG9hZF9hZGRyZXNzID0gTlVMTDsKKyAgICBwYXls b2FkLT5wYXlsb2FkX3BhZ2VzID0gMDsKK30KKworc3RhdGljIHZvaWQgY2FsY19zZWN0aW9uKHN0 cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYywgc2l6ZV90ICpzaXplKQoreworICAgIHNpemVfdCBh bGlnbl9zaXplID0gUk9VTkRVUCgqc2l6ZSwgc2VjLT5zZWMtPnNoX2FkZHJhbGlnbik7CisgICAg c2VjLT5zZWMtPnNoX2VudHNpemUgPSBhbGlnbl9zaXplOworICAgICpzaXplID0gc2VjLT5zZWMt PnNoX3NpemUgKyBhbGlnbl9zaXplOworfQorCitzdGF0aWMgaW50IGZpbmRfaG9sZShzc2l6ZV90 IHBhZ2VzLCB1bnNpZ25lZCBsb25nICpob2xlX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgKmhvbGVfZW5kKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhLCAq ZGF0YTI7CisKKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworICAgIGxp c3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAgICB7Cisg ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhMiwgJnBheWxvYWRfbGlzdCwgbGlzdCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKworICAg ICAgICAgICAgc3RhcnQgPSAodW5zaWduZWQgbG9uZylkYXRhMi0+cGF5bG9hZF9hZGRyZXNzOwor ICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBkYXRhMi0+cGF5bG9hZF9wYWdlcyAqIFBBR0VfU0la RTsKKyAgICAgICAgICAgIGlmICggKmhvbGVfZW5kID4gc3RhcnQgJiYgKmhvbGVfc3RhcnQgPCBl bmQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpob2xlX3N0YXJ0ID0gZW5kOwor ICAgICAgICAgICAgICAgICpob2xlX2VuZCA9IGVuZCArIHBhZ2VzICogUEFHRV9TSVpFOworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm ICggJmRhdGEyLT5saXN0ID09ICZwYXlsb2FkX2xpc3QgKQorICAgICAgICAgICAgYnJlYWs7Cisg ICAgfQorICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKworICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5 bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdWludDhfdCAqYnVmOworICAg IHVuc2lnbmVkIGludCBpOworICAgIHNpemVfdCBzaXplID0gMDsKKworICAgIC8qIENvbXB1dGUg dGV4dCByZWdpb25zLiAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgZWxmLT5oZHItPmVfc2hudW07 IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYg KFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSkgPT0KKyAgICAgICAgICAgICAoU0hGX0FMTE9DfFNI Rl9FWEVDSU5TVFIpICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZz aXplKTsKKyAgICB9CisKKyAgICAvKiBDb21wdXRlIHJ3IGRhdGEuICovCisgICAgZm9yICggaSA9 IDA7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggKGVs Zi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYmCisgICAgICAgICAgICAgIShl bGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAg ICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAg Y2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnNpemUpOworICAgIH0KKworICAgIC8qIENvbXB1 dGUgcm8gZGF0YS4gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBp KysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9BTExPQykgJiYKKyAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBT SEZfRVhFQ0lOU1RSKSAmJgorICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFn cyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwg JnNpemUpOworICAgIH0KKworICAgIHNpemUgPSBQRk5fVVAoc2l6ZSk7CisgICAgYnVmID0gYXJj aF94c3BsaWNlX2FsbG9jX3BheWxvYWQoc2l6ZSwgWFNQTElDRV9WQV9SWCwgJnBheWxvYWQtPm1m bik7CisgICAgaWYgKCAhYnVmICkgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXMlczog Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICAg ICBYU1BMSUNFLCBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9Cisg ICAgcGF5bG9hZC0+cGF5bG9hZF9hZGRyZXNzID0gYnVmOworICAgIHBheWxvYWQtPnBheWxvYWRf cGFnZXMgPSBzaXplOworCisgICAgZm9yICggaSA9IDA7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsg aSsrICkKKyAgICB7CisgICAgICAgIGlmICggZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9BTExPQyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVsZi0+c2VjW2ldLmxvYWRfYWRkciA9 IGJ1ZiArIGVsZi0+c2VjW2ldLnNlYy0+c2hfZW50c2l6ZTsKKworICAgICAgICAgICAgLyogRG9u J3QgY29weSBOT0JJVFMgLSBzdWNoIGFzIEJTUy4gKi8KKyAgICAgICAgICAgIGlmICggZWxmLT5z ZWNbaV0uc2VjLT5zaF90eXBlICE9IFNIVF9OT0JJVFMgKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIG1lbWNweShlbGYtPnNlY1tpXS5sb2FkX2FkZHIsIGVsZi0+c2VjW2ldLmRhdGEs CisgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+c2VjW2ldLnNlYy0+c2hfc2l6ZSk7CisgICAg ICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBMb2FkZWQgJXMgYXQgMHgl cFxuIiwgWFNQTElDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5z ZWNbaV0ubmFtZSwgZWxmLT5zZWNbaV0ubG9hZF9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZWN1cmVfcGF5bG9h ZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7Cisg ICAgaW50IHJjOworCisgICAgQVNTRVJUKHBheWxvYWQtPm1mbik7CisKKyAgICByYyA9IGFyY2hf eHNwbGljZV9zZWN1cmUocGF5bG9hZC0+cGF5bG9hZF9hZGRyZXNzLCBwYXlsb2FkLT5wYXlsb2Fk X3BhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFX1ZBX1JYLCBwYXls b2FkLT5tZm4pOworICAgIHhmcmVlKHBheWxvYWQtPm1mbik7CisgICAgcGF5bG9hZC0+bWZuID0g TlVMTDsKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCiAgKiBXZSBNVVNUIGJlIGhvbGRpbmcgdGhl IHBheWxvYWRfbG9jayBzcGlubG9jay4KICAqLwogc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpkYXRhKQpAQCAtMTAwLDkgKzIzNCw1MSBAQCBzdGF0aWMgdm9pZCBmcmVl X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCiAgICAgbGlzdF9kZWwoJmRhdGEtPmxpc3Qp OwogICAgIHBheWxvYWRfY250LS07CiAgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAgZnJlZV9w YXlsb2FkX2RhdGEoZGF0YSk7CiAgICAgeGZyZWUoZGF0YSk7CiB9CiAKK3N0YXRpYyBpbnQgbG9h ZF9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc3NpemVf dCBsZW4pCit7CisgICAgc3RydWN0IHhzcGxpY2VfZWxmIGVsZjsKKyAgICBpbnQgcmMgPSAwOwor CisgICAgbWVtc2V0KCZlbGYsIDAsIHNpemVvZihlbGYpKTsKKyAgICBlbGYubmFtZSA9IHBheWxv YWQtPm5hbWU7CisgICAgZWxmLmxlbiA9IGxlbjsKKworICAgIHJjID0gYXJjaF94c3BsaWNlX3Zl cmlmeV9lbGYoJmVsZiwgcmF3KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOwor CisgICAgcmMgPSB4c3BsaWNlX2VsZl9sb2FkKCZlbGYsIHJhdyk7CisgICAgaWYgKCByYyApCisg ICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBtb3ZlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7 CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2Vs Zl9yZXNvbHZlX3N5bWJvbHMoJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0 OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcygmZWxmKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxv YWQsICZlbGYpOworCisgb3V0OgorICAgIGlmICggcmMgKQorICAgICAgICBmcmVlX3BheWxvYWRf ZGF0YShwYXlsb2FkKTsKKworICAgIC8qIEZyZWUgb3VyIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVy ZS4gKi8KKyAgICB4c3BsaWNlX2VsZl9mcmVlKCZlbGYpOworCisgICAgcmV0dXJuIHJjOworfQor CiBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAq dXBsb2FkKQogewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhID0gTlVMTDsKQEAgLTEzNyw2ICsz MTMsMTAgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBs b2FkX3QgKnVwbG9hZCkKICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdChyYXdfZGF0YSwgdXBsb2Fk LT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkKICAgICAgICAgZ290byBvdXQ7CiAKKyAgICByYyA9 IGxvYWRfcGF5bG9hZF9kYXRhKGRhdGEsIHJhd19kYXRhLCB1cGxvYWQtPnNpemUpOworICAgIGlm ICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKwogICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9T VEFURV9DSEVDS0VEOwogICAgIGRhdGEtPnJjID0gMDsKICAgICBJTklUX0xJU1RfSEVBRCgmZGF0 YS0+bGlzdCk7CkBAIC0zNjUsOCArNTQ1LDkgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFs bCh1bnNpZ25lZCBjaGFyIGtleSkKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xv Y2spOwogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxp c3QgKQotICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKVxuIiwgZGF0YS0+bmFt ZSwKLSAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlKTsK KyAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkgJXAgdXNpbmcgJXp1IHBhZ2Vz LlxuIiwgZGF0YS0+bmFtZSwKKyAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSks IGRhdGEtPnN0YXRlLCBkYXRhLT5wYXlsb2FkX2FkZHJlc3MsCisgICAgICAgICAgICAgICBkYXRh LT5wYXlsb2FkX3BhZ2VzKTsKIAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9s b2NrKTsKIH0KQEAgLTM3NCw2ICs1NTUsNyBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxs KHVuc2lnbmVkIGNoYXIga2V5KQogc3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQp CiB7CiAgICAgcmVnaXN0ZXJfa2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmlu dCB4c3BsaWNpbmcgaW5mbyIsIDEpOworICAgIGFyY2hfeHNwbGljZV9yZWdpc3Rlcl9maW5kX3Nw YWNlKCZmaW5kX2hvbGUpOwogICAgIHJldHVybiAwOwogfQogX19pbml0Y2FsbCh4c3BsaWNlX2lu aXQpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIveGVuL2NvbW1vbi94 c3BsaWNlX2VsZi5jCmluZGV4IGFlODczNjEuLjYxMjg3MjYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21t b24veHNwbGljZV9lbGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKQEAgLTIwNiw2 ICsyMDYsOTEgQEAgc3RhdGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICByZXR1cm4gMDsKIH0KIAoraW50IHhzcGxpY2VfZWxm X3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgIC8qCisgICAgICogVGhlIGZpcnN0IGVudHJ5IG9mIGFuIEVMRiBzeW1i b2wgdGFibGUgaXMgdGhlICJ1bmRlZmluZWQgc3ltYm9sIGluZGV4Ii4KKyAgICAgKiBha2EgcmVz ZXJ2ZWQgc28gd2Ugc2tpcCBpdC4KKyAgICAgKi8KKyAgICBBU1NFUlQoIGVsZi0+c3ltICk7Cisg ICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCisgICAgeworICAgICAgICBzd2l0 Y2ggKCBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4ICkKKyAgICAgICAgeworICAgICAgICAgICAg Y2FzZSBTSE5fQ09NTU9OOgorICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICIlcyVz OiBVbmV4cGVjdGVkIGNvbW1vbiBzeW1ib2w6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAg ICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz ZSBTSE5fVU5ERUY6CisgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIiVzJXM6IFVu a25vd24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxm LT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VO VDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0hOX0FCUzoKKyAg ICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IEFic29sdXRlIHN5bWJv bDogJXMgPT4gMHglIlBSSXg2NCJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwg ZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGVsZi0+ c3ltW2ldLnN5bS0+c3RfdmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoIGVsZi0+c2VjW2VsZi0+c3ltW2ldLnN5 bS0+c3Rfc2huZHhdLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5zeW1baV0uc3ltLT5zdF92YWx1ZSArPQorICAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZWxmLT5zZWNbZWxmLT5zeW1baV0u c3ltLT5zdF9zaG5keF0ubG9hZF9hZGRyOworICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZi0+ c3ltW2ldLm5hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJV RyAiJXMlczogU3ltYm9sIHJlc29sdmVkOiAlcyA9PiAweCUiUFJJeDY0IlxuIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5zeW1baV0uc3ltLT5zdF92 YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu IDA7Cit9CisKK2ludCB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZikKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhLCAqYmFzZTsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAgICAvKgorICAgICAqIFRoZSBmaXJz dCBlbnRyeSBvZiBhbiBFTEYgc3ltYm9sIHRhYmxlIGlzIHRoZSAidW5kZWZpbmVkIHN5bWJvbCBp bmRleCIuCisgICAgICogYWthIHJlc2VydmVkIHNvIHdlIHNraXAgaXQuCisgICAgICovCisgICAg QVNTRVJUKCBlbGYtPnN5bSApOworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hu dW07IGkrKyApCisgICAgeworICAgICAgICByZWxhID0gJmVsZi0+c2VjW2ldOworCisgICAgICAg IGlmICggKHJlbGEtPnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMQSApICYmCisgICAgICAgICAgICAg KHJlbGEtPnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMICkgKQorICAgICAgICAgICAgY29udGludWU7 CisKKyAgICAgICAgIC8qIElzIGl0IGEgdmFsaWQgcmVsb2NhdGlvbiBzZWN0aW9uPyAqLworICAg ICAgICAgaWYgKCByZWxhLT5zZWMtPnNoX2luZm8gPj0gZWxmLT5oZHItPmVfc2hudW0gKQorICAg ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgIGJhc2UgPSAmZWxmLT5zZWNbcmVsYS0+c2Vj LT5zaF9pbmZvXTsKKworICAgICAgICAgLyogRG9uJ3QgcmVsb2NhdGUgbm9uLWFsbG9jYXRlZCBz ZWN0aW9ucy4gKi8KKyAgICAgICAgIGlmICggIShiYXNlLT5zZWMtPnNoX2ZsYWdzICYgU0hGX0FM TE9DKSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIGVsZi0+c2VjW2ld LnNlYy0+c2hfdHlwZSA9PSBTSFRfUkVMQSApCisgICAgICAgICAgICByYyA9IGFyY2hfeHNwbGlj ZV9wZXJmb3JtX3JlbGEoZWxmLCBiYXNlLCByZWxhKTsKKyAgICAgICAgZWxzZSAvKiBTSFRfUkVM ICovCisgICAgICAgICAgICByYyA9IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChlbGYsIGJhc2Us IHJlbGEpOworCisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAg IH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVyX2NoZWNr KGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogewogICAgIGlmICggc2l6ZW9mKCplbGYt PmhkcikgPj0gZWxmLT5sZW4gKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZf NjQvcGFnZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oCmluZGV4IDg2YWJi OTQuLmE4NTRlMDUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2Uu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmgKQEAgLTM4LDYgKzM4LDgg QEAKICNpbmNsdWRlIDx4ZW4vcGR4Lmg+CiAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHhlbl92aXJ0 X2VuZDsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGF2YWlsX3ZpcnRfc3RhcnQ7CitleHRlcm4gdW5z aWduZWQgbG9uZyBhdmFpbF92aXJ0X2VuZDsKIAogI2RlZmluZSBzcGFnZV90b19wZHgoc3BnKSAo KChzcGcpIC0gc3BhZ2VfdGFibGUpPDwoU1VQRVJQQUdFX1NISUZULVBBR0VfU0hJRlQpKQogI2Rl ZmluZSBwZHhfdG9fc3BhZ2UocGR4KSAoc3BhZ2VfdGFibGUgKyAoKHBkeCk+PihTVVBFUlBBR0Vf U0hJRlQtUEFHRV9TSElGVCkpKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2Uu aCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggY2Q4MDVhOC4uMzQzZTU5ZiAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4v eHNwbGljZS5oCkBAIC02LDYgKzYsOSBAQAogI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hfXwogI2Rl ZmluZSBfX1hFTl9YU1BMSUNFX0hfXwogCitzdHJ1Y3QgeHNwbGljZV9lbGY7CitzdHJ1Y3QgeHNw bGljZV9lbGZfc2VjOworc3RydWN0IHhzcGxpY2VfZWxmX3N5bTsKIHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2Vfb3A7CiAKICNpZmRlZiBDT05GSUdfWFNQTElDRQpAQCAtMTUsNiArMTgsNDcgQEAg c3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKIAorLyogQXJjaCBob29rcy4gKi8KK2ludCBhcmNoX3hz cGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgdm9pZCAqZGF0 YSk7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNw bGljZV9lbGZfc2VjICpyZWxhKTsKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpOworZW51bSB2YV90eXBlIHsK KyAgICBYU1BMSUNFX1ZBX1JYLCAvKiAudGV4dCAqLworICAgIFhTUExJQ0VfVkFfUlcsIC8qIEV2 ZXJ5dGhpbmcgZWxzZS4gKi8KK307CisKKyNpbmNsdWRlIDx4ZW4vbW0uaD4KK3ZvaWQgKmFyY2hf eHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlLCBt Zm5fdCAqKm1mbik7CisKKy8qCisgKiBGdW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRlIHBh Z2VzIChmcm9tIGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKQorICogd2l0aCB0aGUgcmlnaHQg cGFnZSBwZXJtaXNzaW9ucy4KKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEs IHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBtZm5fdCAqbWZuKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXls b2FkKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSk7CisKKy8qCisg KiBDYWxsYmFjayB0byBmaW5kIGF2YWlsYWJsZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgaW4gd2hp Y2ggdGhlCisgKiBwYXlsb2FkIGNvdWxkIGJlIHB1dCBpbi4KKyAqCisgKiBUaGUgYXJndW1lbnRz IGFyZToKKyAqICAtIFRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIGluIGJ5dGVzLgorICogIC0gVGhl IHN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyB0byBzZWFyY2guIFRvIGJlIHVwZGF0ZWQgYnkKKyAq ICAgIGNhbGxiYWNrIGlmIHNwYWNlIGZvdW5kLgorICogIC0gVGhlIGVuZGluZyB2aXJ0dWFsIGFk ZHJlc3MgdG8gc2VhcmNoLiBUbyBiZSB1cGRhdGVkIGJ5CisgKiAgICBjYWxsYmFjayBpZiBzcGFj ZSBmb3VuZC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8gaWYgc2VhcmNoIHdhcyBk b25lLiAtRVhYIHZhbHVlcworICogaWYgZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQuCisgKi8KK3R5 cGVkZWYgaW50ICgqZmluZF9zcGFjZV90KShzc2l6ZV90LCB1bnNpZ25lZCBsb25nICosIHVuc2ln bmVkIGxvbmcgKik7Cit2b2lkIGFyY2hfeHNwbGljZV9yZWdpc3Rlcl9maW5kX3NwYWNlKGZpbmRf c3BhY2VfdCBjYik7CiAjZWxzZQogCiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+IC8qIEZvciAtRU5P U1lTICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaCBiL3hlbi9p bmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCmluZGV4IGUyZGVhMTguLmY2ZmZjYmUgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi94 c3BsaWNlX2VsZi5oCkBAIC0xNSw2ICsxNSw4IEBAIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9u X25hbWVzLiAqLwogICAgIGNvbnN0IHZvaWQgKmRhdGE7ICAgICAgICAgICAgICAvKiBQb2ludGVy IHRvIHRoZSBzZWN0aW9uIChkb25lIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25zKS4gKi8KKyAgICB1aW50OF90ICpsb2FkX2FkZHI7 ICAgICAgICAgICAgLyogQSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgZGVzdGluYXRpb24uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbmUgYnkgbG9hZF9wYXlsb2Fk X2RhdGEuICovCiB9OwogCiBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltIHsKQEAgLTM4LDYgKzQwLDkg QEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmICplbGYsCiBpbnQgeHNwbGljZV9lbGZfbG9hZChzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZiwgdm9pZCAqZGF0YSk7CiB2b2lkIHhzcGxpY2VfZWxmX2ZyZWUoc3RydWN0 IHhzcGxpY2VfZWxmICplbGYpOwogCitpbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKK2ludCB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcyhz dHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CisKICNlbmRpZiAvKiBfX1hFTl9YU1BMSUNFX0VMRl9I X18gKi8KIAogLyoKLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK