From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v6 09/24] xsplice: Implement payload loading Date: Wed, 6 Apr 2016 23:49:28 -0400 Message-ID: <1460000983-28170-10-git-send-email-konrad.wilk@oracle.com> References: <1460000983-28170-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 1ao0xn-0005lV-QP for xen-devel@lists.xenproject.org; Thu, 07 Apr 2016 03:50:36 +0000 In-Reply-To: <1460000983-28170-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, ross.lagerwall@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com, andrew.cooper3@citrix.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 dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4gU3BsaXQgdGhlbSBpbiB0aHJlZQogIHJlZ2lvbnMg LSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhLiBNVVNUIGhhdmUgYXQgbGVhc3QgLnRleHQuCi0g UmVzb2x2ZSBzZWN0aW9uIHN5bWJvbHMuIEFsbCBvdGhlciBzeW1ib2xzIG11c3QgYmUgYWJzb2x1 dGUgYWRkcmVzc2VzLgogIChOb3RlIHRoYXQgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlLHN5bWJvbHM6 IEltcGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uCiAgIG9uIGFkZHJlc3MiIGltcGxlbWVu dHMgdGhhdCkKLSBQZXJmb3JtIHJlbG9jYXRpb25zLgotIFNlY3VyZSB0aGUgdGhlIHJlZ2lvbnMg KC50ZXh0LC5kYXRhLC5yb2RhdGEpIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgoKV2UgY2FwaXRh bGl6ZSBvbiB0aGUgdm1hbGxvYyBjYWxsYmFjayBBUEkgKHNlZSBwYXRjaCB0aXRsZWQ6CiJ2bWFw OiBBZGQgdm1hbGxvY19jYiBhbmQgdmZyZWVfY2IiKSB0byBhbGxvY2F0ZSBhIHJlZ2lvbgpvZiBt ZW1vcnkgd2l0aGluIHRoZSBbeGVuX3ZpcnRfZW5kLCBYRU5fVklSVF9FTkRdIGZvciB0aGUgY29k ZS4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXgu Y29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5p QGNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzog S2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2Mjog LSBDaGFuZ2UgdGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlvdXQvc2l6ZS4K ICAgIC0gQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4KICAgIC0gTW92 ZSBlbGZfcmVzb2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxlLgogICAgLSBQ cmludCB0aGUgcGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVyLgp2MzoKICAg IC0gTWFrZSBpdCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91dCB1c2luZyB0 aGUgcmV0dXJuXyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KICAgIC0gQWRkIHRo ZSBfcmV0dXJuIG1hY3JvIGJhY2sgLSBidXQgb25seSB1c2UgaXQgZHVyaW5nIGRlYnVnIGJ1aWxk cy4KICAgIC0gUmVtb3ZlIHRoZSBtYWNybywgcHJlZml4IGFyY2hfIG9uIGFyY2ggc3BlY2lmaWMg Y2FsbHMuCnY0OgogICAgLSBNb3ZlIGFsbG9jX3BheWxvYWQgdG8gYXJjaCBzcGVjaWZpYyBmaWxl LgogICAgLSBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90LCB1c2UgY29uc3QKICAgIC0gQWRk IGNvcHlyaWdodHMKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFTU0VSVC4gQ2hh bmdlIHdoaWxlIHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJvciBsb29wCiAg IC0gVXNlIHZtYWxsb2MvdmZyZWUgY2IgQVBJcwogICAtIFNlY3VyZSAudGV4dCBwYWdlcyB0byBi ZSBSWCBpbnN0ZWFkIG9mIFJXWC4KdjU6CiAgLSBGaXggYWxsb2NhdGlvbiBvZiB2aXJ0dWFsIGFk ZHJlc3NlcyBvbmx5IGFsbG93aW5nIG9uZSBwYWdlIHRvIGJlIGFsbG9jYXRlZC4KICAtIENyZWF0 ZSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhIHJlZ2lvbnMgd2l0aCBkaWZmZXJlbnQgcGVybWlz c2lvbnMuCiAgLSBNYWtlIHRoZSBmaW5kX3NwYWNlX3Qgbm90IGEgdHlwZWRlZiB0byBwb2ludGVy IHRvIGEgZnVuY3Rpb24uCiAgLSBBbGxvY2F0ZSBtZW1vcnkgaW4gaGVyZS4KdjY6IERyb3AgcGFy ZW50aGVzZXMgb24gdHlwZWRlZnMuCiAgLSBzL2FuIHhTcGxpY2UvYSB4U3BsaWNlLwogIC0gUmVi YXNlIG9uICJ2bWFwOiBBZGQgdm1hbGxvY19jYiIKICAtIFJlYmFzZSBvbiAidm1hcDogQWRkIHZt YWxsb2NfdHlwZSBhbmQgdm1faW5pdF90eXBlIgogIC0gcy91aW50OF90L3ZvaWQvIG9uIGxvYWRf YWRkcgogIC0gU2V0IHhzcGxpY2VfZWxmIG9uIHN0YWNrIHdpdGhvdXQgdXNpbmcgbWVtc2V0Lgot LS0KLS0tCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9h cm0veHNwbGljZS5jICAgICAgICB8ICA1NSArKysrKysrKysrCiB4ZW4vYXJjaC94ODYvTWFrZWZp bGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYveHNwbGljZS5jICAgICAgICB8IDE5OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMg ICAgICAgICAgfCAyMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgICAgICB8IDExOCArKysrKysrKysrKysrKysrKysr KysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggICAgIHwgIDMwICsrKysrKwogeGVuL2luY2x1 ZGUveGVuL3hzcGxpY2VfZWxmLmggfCAgIDUgKwogOCBmaWxlcyBjaGFuZ2VkLCA2NDQgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0v eHNwbGljZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3hzcGxpY2UuYwoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpp bmRleCAwMzI4YjUwLi5lYWU1Y2IzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUK KysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCkBAIC00MCw2ICs0MCw3IEBAIG9iai15ICs9IGRl dmljZS5vCiBvYmoteSArPSBkZWNvZGUubwogb2JqLXkgKz0gcHJvY2Vzc29yLm8KIG9iai15ICs9 IHNtYy5vCitvYmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAKICNvYmotYmluLXkg Kz0gLi4uLm8KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3hzcGxpY2UuYyBiL3hlbi9hcmNo L2FybS94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwNzQx NQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKQEAgLTAsMCArMSw1 NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4K KyAqLworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNs dWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitpbnQg YXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7 CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwo c3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJu IC1FTk9TWVM7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7 Cit9CisKK3ZvaWQgKmFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBwYWdl cywgbWZuX3QgKiptZm4pCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludCBhcmNoX3hzcGxp Y2Vfc2VjdXJlKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSB0eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWZuX3QgKm1mbikKK3sKKyAgICByZXR1 cm4gLUVOT1NZUzsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZh KQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9pbml0KHZvaWQpCit7Cit9CisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVu L2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDcyOTA2NWIuLjhhNmE3ZDUgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTY0LDYg KzY0LDcgQEAgb2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQo Y3Jhc2hfZGVidWcpICs9IGdkYnN0dWIubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxp Y2UubwogCiB4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmgKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBi L3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uY2FkZjFmMQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAg LTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMg UiZEIEx0ZC4KKyAqLworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xp Yi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRl IDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgorI2luY2x1ZGUgPHhl bi94c3BsaWNlLmg+CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZikKK3sKKworICAgIGNvbnN0IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhk cjsKKworICAgIGlmICggaGRyLT5lX21hY2hpbmUgIT0gRU1fWDg2XzY0ICkKKyAgICB7CisgICAg ICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiBJbnZhbGlkIEVMRiBwYXlsb2FkIVxu IiwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgIH0KKworICAg IHJldHVybiAwOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFNIVF9SRUwgcmVsb2NhdGlvbiB1bnN1cHBvcnRlZFxuIiwKKyAgICAg ICAgICAgIGVsZi0+bmFtZSk7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK2ludCBhcmNoX3hz cGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMg KnJlbGEpCit7CisgICAgY29uc3QgRWxmX1JlbEEgKnI7CisgICAgdW5zaWduZWQgaW50IHN5bW5k eCwgaTsKKyAgICB1aW50NjRfdCB2YWw7CisgICAgdWludDhfdCAqZGVzdDsKKworICAgIGlmICgg IXJlbGEtPnNlYy0+c2hfZW50c2l6ZSB8fCAhcmVsYS0+c2VjLT5zaF9zaXplIHx8CisgICAgICAg ICByZWxhLT5zZWMtPnNoX2VudHNpemUgIT0gc2l6ZW9mKEVsZl9SZWxBKSApCisgICAgeworICAg ICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFNlY3Rpb24gcmVsYXRpdmUg aGVhZGVyIGlzIGNvcnJ1cHRlZCFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCAocmVs YS0+c2VjLT5zaF9zaXplIC8gcmVsYS0+c2VjLT5zaF9lbnRzaXplKTsgaSsrICkKKyAgICB7Cisg ICAgICAgIHIgPSByZWxhLT5kYXRhICsgaSAqIHJlbGEtPnNlYy0+c2hfZW50c2l6ZTsKKyAgICAg ICAgaWYgKCAodW5zaWduZWQgbG9uZylyID4gKHVuc2lnbmVkIGxvbmcpKGVsZi0+aGRyICsgZWxm LT5sZW4pICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhT UExJQ0UgIiVzOiBSZWxhdGl2ZSBlbnRyeSAldSBpbiAlcyBpcyBwYXN0IGVuZCFcbiIsCisgICAg ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaSwgcmVsYS0+bmFtZSk7CisgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHN5bW5keCA9IEVMRjY0X1JfU1lN KHItPnJfaW5mbyk7CisgICAgICAgIGlmICggc3ltbmR4ID4gZWxmLT5uc3ltICkKKyAgICAgICAg eworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiBSZWxhdGl2 ZSBzeW1ib2wgd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlzIHBhc3QgZW5kIVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgZWxmLT5uYW1lLCBzeW1uZHgpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgICAgIH0KKworICAgICAgICBkZXN0ID0gYmFzZS0+bG9hZF9hZGRyICsgci0+cl9v ZmZzZXQ7CisgICAgICAgIHZhbCA9IHItPnJfYWRkZW5kICsgZWxmLT5zeW1bc3ltbmR4XS5zeW0t PnN0X3ZhbHVlOworCisgICAgICAgIHN3aXRjaCAoIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pICkK KyAgICAgICAgeworICAgICAgICBjYXNlIFJfWDg2XzY0X05PTkU6CisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBjYXNlIFJfWDg2XzY0XzY0OgorICAgICAgICAgICAgKih1aW50NjRfdCAq KWRlc3QgPSB2YWw7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfWDg2XzY0 X1BMVDMyOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFhlbiB1c2VzIC1mcGljIHdo aWNoIG5vcm1hbGx5IHVzZXMgUExUIHJlbG9jYXRpb25zCisgICAgICAgICAgICAgKiBleGNlcHQg dGhhdCBpdCBzZXRzIHZpc2liaWxpdHkgdG8gaGlkZGVuIHdoaWNoIG1lYW5zCisgICAgICAgICAg ICAgKiB0aGF0IHRoZXkgYXJlIG5vdCB1c2VkLiAgSG93ZXZlciwgd2hlbiBnY2MgY2Fubm90Cisg ICAgICAgICAgICAgKiBpbmxpbmUgbWVtY3B5IGl0IGVtaXRzIG1lbWNweSB3aXRoIGRlZmF1bHQg dmlzaWJpbGl0eQorICAgICAgICAgICAgICogd2hpY2ggdGhlbiBjcmVhdGVzIGEgUExUIHJlbG9j YXRpb24uICBJdCBjYW4ganVzdCBiZQorICAgICAgICAgICAgICogdHJlYXRlZCB0aGUgc2FtZSBh cyBSX1g4Nl82NF9QQzMyLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBGYWxsIHRo cm91Z2ggKi8KKworICAgICAgICBjYXNlIFJfWDg2XzY0X1BDMzI6CisgICAgICAgICAgICAqKHVp bnQzMl90ICopZGVzdCA9IHZhbCAtICh1aW50NjRfdClkZXN0OworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJ Q0UgIiVzOiBVbmhhbmRsZWQgcmVsb2NhdGlvbiAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAg ZWxmLT5uYW1lLCBFTEY2NF9SX1RZUEUoci0+cl9pbmZvKSk7CisgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICog VGhlIGZ1bmN0aW9uIHByZXBhcmVzIGEgeFNwbGljZSBwYXlsb2FkIGJ5IGFsbG9jYXRpbmcgc3Bh Y2Ugd2hpY2gKKyAqIHRoZW4gY2FuIGJlIHVzZWQgZm9yIGxvYWRpbmcgdGhlIGFsbG9jYXRlZCBz ZWN0aW9ucywgcmVzb2x2aW5nIHN5bWJvbHMsCisgKiBwZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBl dGMuCisgKi8KK3ZvaWQgKmFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBw YWdlcywgbWZuX3QgKiptZm4pCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgdm9pZCAqcDsK KworICAgIEFTU0VSVChwYWdlcyk7CisgICAgQVNTRVJUKG1mbiAmJiAhKm1mbik7CisKKyAgICBw ID0gdm1hbGxvY190eXBlKHBhZ2VzICogUEFHRV9TSVpFLCBWTUFQX1hFTiwgbWZuKTsKKyAgICBX QVJOX09OKCFwKTsKKyAgICBpZiAoIHAgKQorICAgIHsKKyAgICAgICAgZm9yICggaSA9IDA7IGkg PCBwYWdlczsgaSsrICkKKyAgICAgICAgICAgIGNsZWFyX3BhZ2UocCArIChpICogUEFHRV9TSVpF KSApOworICAgIH0KKyAgICByZXR1cm4gcDsKK30KKworLyoKKyAqIE9uY2UgdGhlIHJlc29sdmlu ZyBzeW1ib2xzLCBwZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBldGMgaXMgY29tcGxldGUKKyAqIHdl IHNlY3VyZSB0aGUgbWVtb3J5IGJ5IHB1dHRpbmcgaW4gdGhlIHByb3BlciBwYWdlIHRhYmxlIGF0 dHJpYnV0ZXMKKyAqIGZvciB0aGUgZGVzaXJlZCB0eXBlLgorICovCitpbnQgYXJjaF94c3BsaWNl X3NlY3VyZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1mbl90ICptZm4pCit7CisgICAgdW5zaWdu ZWQgbG9uZyBjdXI7CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKXZh OworICAgIGludCBmbGFnOworCisgICAgQVNTRVJUKHZhKTsKKyAgICBBU1NFUlQocGFnZXMpOwor CisgICAgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlggKQorICAgICAgICBmbGFnID0gUEFHRV9I WVBFUlZJU09SX1JYOworICAgIGVsc2UgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlcgKQorICAg ICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JXOworICAgIGVsc2UKKyAgICAgICAgZmxhZyA9 IFBBR0VfSFlQRVJWSVNPUl9STzsKKworICAgIC8qCisgICAgICogV2UgY291bGQgd2FsayB0aGUg cGFnZXRhYmxlIGFuZCBkbyB0aGUgcGFnZXRhYmxlIG1hbmlwdWxhdGlvbnMKKyAgICAgKiAoc3Ry aXAgdGhlIF9QQUdFX1JXKSwgd2hpY2ggd291bGQgbWVhbiBhbHNvIG5vdCBuZWVkaW5nIHRoZSBt Zm4KKyAgICAgKiBhcnJheSwgYnV0IHRoZXJlIGFyZSBubyBnZW5lcmljIGNvZGUgZm9yIHRoaXMg eWV0IChUT0RPKS4KKyAgICAgKgorICAgICAqIEZvciByaWdodCBub3cgdGVhciBkb3duIHRoZSBw YWdldGFibGVzIGFuZCByZWNyZWF0ZSB0aGVtLgorICAgICAqLworICAgIGRlc3Ryb3lfeGVuX21h cHBpbmdzKHN0YXJ0LCBzdGFydCArIHBhZ2VzICogUEFHRV9TSVpFKTsKKworICAgIGZvciAoIGN1 ciA9IHN0YXJ0OyBwYWdlcy0tOyArK21mbiwgY3VyICs9IFBBR0VfU0laRSApCisgICAgeworICAg ICAgICBpZiAoIG1hcF9wYWdlc190b194ZW4oY3VyLCBtZm5feCgqbWZuKSwgMSwgZmxhZykgKQor ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGN1ciAhPSBzdGFydCApCisgICAgICAgICAgICAg ICAgZGVzdHJveV94ZW5fbWFwcGluZ3Moc3RhcnQsIGN1cik7CisgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIGFy Y2hfeHNwbGljZV9mcmVlX3BheWxvYWQodm9pZCAqdmEpCit7CisgICAgdmZyZWVfdHlwZSh2YSwg Vk1BUF9YRU4pOworfQorCit2b2lkIGFyY2hfeHNwbGljZV9pbml0KHZvaWQpCit7CisgICAgdm9p ZCAqc3RhcnQsICplbmQ7CisKKyAgICBzdGFydCA9ICh2b2lkICopeGVuX3ZpcnRfZW5kOworICAg IGVuZCA9ICh2b2lkICopKFhFTl9WSVJUX0VORCAtIE5SX0NQVVMgKiBQQUdFX1NJWkUpOworCisg ICAgQlVHX09OKGVuZCA8PSBzdGFydCk7CisKKyAgICB2bV9pbml0X3R5cGUoVk1BUF9YRU4sIHN0 YXJ0LCBlbmQpOworfQorLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQK KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4v Y29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCmluZGV4IDA2ZjRhN2IuLjEw YzgxNjYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZS5jCisrKyBiL3hlbi9jb21tb24v eHNwbGljZS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSA8eGVuL3NtcC5oPgogI2luY2x1 ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVu L3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAogI2luY2x1ZGUgPGFz bS9ldmVudC5oPgpAQCAtMjgsNiArMjksMTQgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHVpbnQz Ml90IHN0YXRlOyAgICAgICAgICAgICAgICAgICAgICAvKiBPbmUgb2YgdGhlIFhTUExJQ0VfU1RB VEVfKi4gKi8KICAgICBpbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCBv ciAtWEVOX0VYWC4gKi8KICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7ICAgICAgICAgICAgICAg LyogTGlua2VkIHRvICdwYXlsb2FkX2xpc3QnLiAqLworICAgIHZvaWQgKnRleHRfYWRkcjsgICAg ICAgICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLnRleHQuICovCisgICAgc2l6 ZV90IHRleHRfc2l6ZTsgICAgICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZS4gKi8K KyAgICB2b2lkICpyd19hZGRyOyAgICAgICAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRy ZXNzIG9mIC5kYXRhLiAqLworICAgIHNpemVfdCByd19zaXplOyAgICAgICAgICAgICAgICAgICAg ICAvKiAuLiBhbmQgaXRzIHNpemUgKGlmIGFueSkuICovCisgICAgdm9pZCAqcm9fYWRkcjsgICAg ICAgICAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAucm9kYXRhLiAqLworICAg IHNpemVfdCByb19zaXplOyAgICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUg KGlmIGFueSkuICovCisgICAgc2l6ZV90IHBhZ2VzOyAgICAgICAgICAgICAgICAgICAgICAgIC8q IFRvdGFsIHBhZ2VzIGZvciBbdGV4dCxydyxyb11fYWRkciAqLworICAgIG1mbl90ICptZm47ICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgTUZOcyBiYWNraW5nIHRoZXNlIHBhZ2VzLiAq LwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVdOyAgICAvKiBOYW1lIG9mIGl0 LiAqLwogfTsKIApAQCAtODUsNiArOTQsMTc4IEBAIHN0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmlu ZF9wYXlsb2FkKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIGZvdW5kOwogfQogCisvKgor ICogRnVuY3Rpb25zIHJlbGF0ZWQgdG8gWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAoc2VlIHhz cGxpY2VfdXBsb2FkKSwgYW5kCisgKiBmcmVlaW5nIHBheWxvYWQgKFhFTl9TWVNDVExfWFNQTElD RV9BQ1RJT046WFNQTElDRV9BQ1RJT05fVU5MT0FEKS4KKyAqLworCitzdGF0aWMgdm9pZCBmcmVl X3BheWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCkKK3sKKyAgICAvKiBTZXQgdG8g emVybyB1bnRpbCAibW92ZV9wYXlsb2FkIi4gKi8KKyAgICBpZiAoICFwYXlsb2FkLT50ZXh0X2Fk ZHIgKQorICAgICAgICByZXR1cm47CisKKyAgICB4ZnJlZShwYXlsb2FkLT5tZm4pOworICAgIHBh eWxvYWQtPm1mbiA9IE5VTEw7CisKKyAgICBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHBheWxv YWQtPnRleHRfYWRkcik7CisKKyAgICBwYXlsb2FkLT50ZXh0X2FkZHIgPSBOVUxMOworICAgIHBh eWxvYWQtPnJvX2FkZHIgPSBOVUxMOworICAgIHBheWxvYWQtPnJ3X2FkZHIgPSBOVUxMOworICAg IHBheWxvYWQtPnBhZ2VzID0gMDsKK30KKworLyoKKyogY2FsY19zZWN0aW9uIGNvbXB1dGVzIHRo ZSBzaXplICh0YWtpbmcgaW50byBhY2NvdW50IHNlY3Rpb24gYWxpZ25tZW50KS4KKyoKKyogSXQg YWxzbyBtb2RpZmllcyBzaF9lbnRzaXplIHdpdGggdGhlIG9mZnNldCBvZiBmcm9tIHRoZSBzdGFy dCBvZgorKiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIFRoaXMgaXMgdXNlZCBpbiBtb3ZlX3BheWxv YWQgdG8gZmlndXJlIG91dCB0aGUKKyogZGVzdGluYXRpb24gbG9jYXRpb24uCisqLworc3RhdGlj IHZvaWQgY2FsY19zZWN0aW9uKHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYywgc2l6ZV90ICpz aXplKQoreworICAgIEVsZl9TaGRyICpzOworICAgIHNpemVfdCBhbGlnbl9zaXplOworCisgICAg LyogQ2FzdGluZyBhd2F5IGNvbnN0bmVzcyBzaW5jZSB3ZSBtb2RpZnkgaXQuICovCisgICAgcyA9 IChFbGZfU2hkciAqKXNlYy0+c2VjOworICAgIGFsaWduX3NpemUgPSBST1VORFVQKCpzaXplLCBz LT5zaF9hZGRyYWxpZ24pOworICAgIHMtPnNoX2VudHNpemUgPSBhbGlnbl9zaXplOworCisgICAg KnNpemUgPSBzLT5zaF9zaXplICsgYWxpZ25fc2l6ZTsKK30KKworc3RhdGljIGludCBtb3ZlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQor eworICAgIHVpbnQ4X3QgKmJ1ZjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3Qgc2l6 ZSA9IDA7CisKKyAgICAvKiBDb21wdXRlIHRleHQgcmVnaW9ucy4gKi8KKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZWxm LT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIChTSEZfQUxMT0N8U0hGX0VYRUNJTlNUUikpID09Cisg ICAgICAgICAgICAgKFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSApCisgICAgICAgICAgICBjYWxj X3NlY3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+dGV4dF9zaXplKTsKKyAgICB9CisKKyAg ICAvKiBDb21wdXRlIHJ3IGRhdGEuICovCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hf ZmxhZ3MgJiBTSEZfQUxMT0MpICYmCisgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNo X2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2Vj LT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYt PnNlY1tpXSwgJnBheWxvYWQtPnJ3X3NpemUpOworICAgIH0KKworICAgIC8qIENvbXB1dGUgcm8g ZGF0YS4gKi8KKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQor ICAgIHsKKyAgICAgICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExP QykgJiYKKyAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhF Q0lOU1RSKSAmJgorICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxv YWQtPnJvX3NpemUpOworICAgIH0KKworICAgIC8qIERvIG5vdCBhY2NlcHQgd3guICovCisgICAg Zm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAg IGlmICggIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAg ICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAg ICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAg ICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IE5v IFdYIHNlY3Rpb25zIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUb3RhbCBvZiBhbGwgdGhyZWUg cmVnaW9ucyAtIFJYLCBSVywgYW5kIFJPLiBXZSBoYXZlIHRvIGhhdmUKKyAgICAgKiBrZWVwIHRo ZW0gaW4gc2VwZXJhdGUgcGFnZXMgc28gd2UgUEFHRV9BTElHTiB0aGUgUlggYW5kIFJXIHRvIGhh dmUKKyAgICAgKiB0aGVtIG9uIHNlcGVyYXRlIHBhZ2VzLiBUaGUgbGFzdCBvbmUgd2lsbCBieSBk ZWZhdWx0IGZhbGwgb24gaXRzCisgICAgICogb3duIHBhZ2UuCisgICAgICovCisgICAgc2l6ZSA9 IFBBR0VfQUxJR04ocGF5bG9hZC0+dGV4dF9zaXplKSArIFBBR0VfQUxJR04ocGF5bG9hZC0+cndf c2l6ZSkgKworICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQtPnJvX3NpemU7CisKKyAgICBz aXplID0gUEZOX1VQKHNpemUpOworICAgIGJ1ZiA9IGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2Fk KHNpemUsICZwYXlsb2FkLT5tZm4pOworICAgIGlmICggIWJ1ZiApCisgICAgeworICAgICAgICBw cmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBm b3IgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1 cm4gLUVOT01FTTsKKyAgICB9CisgICAgcGF5bG9hZC0+cGFnZXMgPSBzaXplOworICAgIHBheWxv YWQtPnRleHRfYWRkciA9IGJ1ZjsKKyAgICBwYXlsb2FkLT5yd19hZGRyID0gcGF5bG9hZC0+dGV4 dF9hZGRyICsgUEFHRV9BTElHTihwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIHBheWxvYWQtPnJv X2FkZHIgPSBwYXlsb2FkLT5yd19hZGRyICsgUEFHRV9BTElHTihwYXlsb2FkLT5yd19zaXplKTsK KworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgewor ICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAg ICAgICB7CisgICAgICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hG X0VYRUNJTlNUUikgKQorICAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT50ZXh0X2FkZHI7 CisgICAgICAgICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZf V1JJVEUpICkKKyAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT5yd19hZGRyOworICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT5yb19hZGRyOworCisg ICAgICAgICAgICBlbGYtPnNlY1tpXS5sb2FkX2FkZHIgPSBidWYgKyBlbGYtPnNlY1tpXS5zZWMt PnNoX2VudHNpemU7CisKKyAgICAgICAgICAgIC8qIERvbid0IGNvcHkgTk9CSVRTIC0gc3VjaCBh cyBCU1MuICovCisgICAgICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfdHlwZSAhPSBT SFRfTk9CSVRTICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkoZWxmLT5z ZWNbaV0ubG9hZF9hZGRyLCBlbGYtPnNlY1tpXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAg ICBlbGYtPnNlY1tpXS5zZWMtPnNoX3NpemUpOworICAgICAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0RFQlVHLCBYU1BMSUNFICIlczogTG9hZGVkICVzIGF0IDB4JXBcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c2VjW2ldLm5hbWUsIGVsZi0+c2VjW2ldLmxv YWRfYWRkcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g MDsKK30KKworc3RhdGljIGludCBzZWN1cmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9h ZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgaW50IHJjOworICAgIHVuc2lnbmVk IGludCB0ZXh0X3BhZ2VzLCByd19wYWdlcywgcm9fcGFnZXM7CisgICAgbWZuX3QgKm1mbiA9IHBh eWxvYWQtPm1mbjsKKworICAgIEFTU0VSVChtZm4pOworCisgICAgdGV4dF9wYWdlcyA9IFBGTl9V UChwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIEFTU0VSVCh0ZXh0X3BhZ2VzKTsKKworICAgIHJj ID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2FkLT50ZXh0X2FkZHIsIHRleHRfcGFnZXMsIFhT UExJQ0VfVkFfUlgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbik7CisgICAgaWYg KCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJ3X3BhZ2VzID0gUEZOX1VQKHBheWxv YWQtPnJ3X3NpemUpOworICAgIGlmICggcndfcGFnZXMgKQorICAgIHsKKyAgICAgICAgcmMgPSBh cmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQtPnJ3X2FkZHIsIHJ3X3BhZ2VzLCBYU1BMSUNFX1ZB X1JXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuICsgdGV4dF9wYWdlcyk7 CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAg IHJvX3BhZ2VzID0gUEZOX1VQKHBheWxvYWQtPnJvX3NpemUpOworICAgIGlmICggcm9fcGFnZXMg KQorICAgIHsKKyAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQtPnJvX2Fk ZHIsIHJvX3BhZ2VzLCBYU1BMSUNFX1ZBX1JPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWZuICsgdGV4dF9wYWdlcyArIHJ3X3BhZ2VzKTsKKyAgICB9CisKKyAgICBBU1NFUlQo cm9fcGFnZXMgKyByd19wYWdlcyArIHRleHRfcGFnZXMgPT0gcGF5bG9hZC0+cGFnZXMpOworCisg ICAgcmV0dXJuIHJjOworfQorCiAvKiBXZSBNVVNUIGJlIGhvbGRpbmcgdGhlIHBheWxvYWRfbG9j ayBzcGlubG9jay4gKi8KIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAq ZGF0YSkKIHsKQEAgLTkyLDEzICsyNzMsNDggQEAgc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpkYXRhKQogICAgIGxpc3RfZGVsKCZkYXRhLT5saXN0KTsKICAgICBwYXls b2FkX2NudC0tOwogICAgIHBheWxvYWRfdmVyc2lvbisrOworICAgIGZyZWVfcGF5bG9hZF9kYXRh KGRhdGEpOwogICAgIHhmcmVlKGRhdGEpOwogfQogCitzdGF0aWMgaW50IGxvYWRfcGF5bG9hZF9k YXRhKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCB2b2lkICpyYXcsIHNpemVfdCBsZW4pCit7Cisg ICAgc3RydWN0IHhzcGxpY2VfZWxmIGVsZiA9IHsgLm5hbWUgPSBwYXlsb2FkLT5uYW1lLCAubGVu ID0gbGVuIH07CisgICAgaW50IHJjID0gMDsKKworICAgIHJjID0geHNwbGljZV9lbGZfbG9hZCgm ZWxmLCByYXcpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0g bW92ZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3Rv IG91dDsKKworICAgIHJjID0geHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKCZlbGYpOworICAg IGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNwbGljZV9lbGZfcGVy Zm9ybV9yZWxvY3MoJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisg ICAgcmMgPSBzZWN1cmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKKworIG91dDoKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZnJlZV9wYXlsb2FkX2RhdGEocGF5bG9hZCk7CisKKyAgICAvKiBGcmVl IG91ciB0ZW1wb3JhcnkgZGF0YSBzdHJ1Y3R1cmUuICovCisgICAgeHNwbGljZV9lbGZfZnJlZSgm ZWxmKTsKKworICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4 ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKIHsKICAgICBzdHJ1Y3QgcGF5bG9h ZCAqZGF0YSA9IE5VTEwsICpmb3VuZDsKICAgICBjaGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpF XTsKKyAgICB2b2lkICpyYXdfZGF0YSA9IE5VTEw7CiAgICAgaW50IHJjOwogCiAgICAgcmMgPSB2 ZXJpZnlfcGF5bG9hZCh1cGxvYWQsIG4pOwpAQCAtMTI3LDkgKzM0MywyMCBAQCBzdGF0aWMgaW50 IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogICAg ICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICByYyA9IDA7CisgICAgcmMgPSAtRU5PTUVNOwor ICAgIHJhd19kYXRhID0gdm1hbGxvYyh1cGxvYWQtPnNpemUpOworICAgIGlmICggIXJhd19kYXRh ICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IC1FRkFVTFQ7CisgICAgaWYgKCBfX2Nv cHlfZnJvbV9ndWVzdChyYXdfZGF0YSwgdXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkK KyAgICAgICAgZ290byBvdXQ7CiAKICAgICBtZW1jcHkoZGF0YS0+bmFtZSwgbiwgc3RybGVuKG4p KTsKKyAgICByYyA9IGxvYWRfcGF5bG9hZF9kYXRhKGRhdGEsIHJhd19kYXRhLCB1cGxvYWQtPnNp emUpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKwogICAgIGRhdGEtPnN0YXRl ID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwogICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0 KTsKIApAQCAtMTQwLDYgKzM2Nyw4IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5 c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgb3V0OgogICAgIHNwaW5fdW5sb2NrKCZw YXlsb2FkX2xvY2spOwogCisgICAgdmZyZWUocmF3X2RhdGEpOworCiAgICAgaWYgKCByYyApCiAg ICAgICAgIHhmcmVlKGRhdGEpOwogCkBAIC0zNzksOCArNjA4LDkgQEAgc3RhdGljIHZvaWQgeHNw bGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKICAgICB9CiAKICAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCi0gICAgICAgIHByaW50aygi IG5hbWU9JXMgc3RhdGU9JXMoJWQpXG4iLCBkYXRhLT5uYW1lLAotICAgICAgICAgICAgICAgc3Rh dGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUpOworICAgICAgICBwcmludGsoIiBuYW1l PSVzIHN0YXRlPSVzKCVkKSAlcCAoLmRhdGE9JXAsIC5yb2RhdGE9JXApIHVzaW5nICV6dSBwYWdl cy5cbiIsCisgICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUp LCBkYXRhLT5zdGF0ZSwgZGF0YS0+dGV4dF9hZGRyLAorICAgICAgICAgICAgICAgZGF0YS0+cndf YWRkciwgZGF0YS0+cm9fYWRkciwgZGF0YS0+cGFnZXMpOwogCiAgICAgc3Bpbl91bmxvY2soJnBh eWxvYWRfbG9jayk7CiB9CkBAIC0zODgsNiArNjE4LDggQEAgc3RhdGljIHZvaWQgeHNwbGljZV9w cmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKIHN0YXRpYyBpbnQgX19pbml0IHhzcGxpY2VfaW5p dCh2b2lkKQogewogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNlX3ByaW50YWxs LCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKworICAgIGFyY2hfeHNwbGljZV9pbml0KCk7 CiAgICAgcmV0dXJuIDA7CiB9CiBfX2luaXRjYWxsKHhzcGxpY2VfaW5pdCk7CmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKaW5k ZXggYjI0NGQ0Mi4uNTkzMjNiOGMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZV9lbGYu YworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKQEAgLTI0OSw5ICsyNDksMTA3IEBAIHN0 YXRpYyBpbnQgZWxmX2dldF9zeW0oc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQg KmRhdGEpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJv bHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAg aW50IHJjID0gMDsKKworICAgIC8qCisgICAgICogVGhlIGZpcnN0IGVudHJ5IG9mIGFuIEVMRiBz eW1ib2wgdGFibGUgaXMgdGhlICJ1bmRlZmluZWQgc3ltYm9sIGluZGV4Ii4KKyAgICAgKiBha2Eg cmVzZXJ2ZWQgc28gd2Ugc2tpcCBpdC4KKyAgICAgKi8KKyAgICBBU1NFUlQoZWxmLT5zeW0pOwor CisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCisgICAgeworICAgICAgICB1 aW50MTZfdCBpZHggPSBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4OworCisgICAgICAgIHJjID0g MDsKKyAgICAgICAgc3dpdGNoICggaWR4ICkKKyAgICAgICAgeworICAgICAgICBjYXNlIFNITl9D T01NT046CisgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogVW5leHBl Y3RlZCBjb21tb24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUs IGVsZi0+c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTSE5fVU5ERUY6CisgICAgICAgICAgICBwcmludGso WEVOTE9HX0VSUiBYU1BMSUNFICIlczogVW5rbm93biBzeW1ib2w6ICVzXG4iLAorICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9 IC1FTk9FTlQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNITl9BQlM6Cisg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFic29sdXRlIHN5 bWJvbDogJXMgPT4gJSMiUFJJeDY0IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1l LCBlbGYtPnN5bVtpXS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZWxmLT5z eW1baV0uc3ltLT5zdF92YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh dWx0OgorICAgICAgICAgICAgaWYgKCBlbGYtPnNlY1tpZHhdLnNlYy0+c2hfZmxhZ3MgJiBTSEZf QUxMT0MgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVsZi0+c3ltW2ldLnN5bS0+ c3RfdmFsdWUgKz0KKyAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZWxmLT5zZWNb aWR4XS5sb2FkX2FkZHI7CisgICAgICAgICAgICAgICAgaWYgKCBlbGYtPnN5bVtpXS5uYW1lICkK KyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyBYU1BMSUNFICIlczogU3lt Ym9sIHJlc29sdmVkOiAlcyA9PiAjJSJQUkl4NjQiKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICh1aW50NjRfdCllbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgZWxmLT5zZWNbaWR4XS5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIHJldHVybiByYzsKK30KKworaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEs ICpiYXNlOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYyA9IDA7CisKKyAgICAvKgor ICAgICAqIFRoZSBmaXJzdCBlbnRyeSBvZiBhbiBFTEYgc3ltYm9sIHRhYmxlIGlzIHRoZSAidW5k ZWZpbmVkIHN5bWJvbCBpbmRleCIuCisgICAgICogYWthIHJlc2VydmVkIHNvIHdlIHNraXAgaXQu CisgICAgICovCisgICAgQVNTRVJUKGVsZi0+c3ltKTsKKworICAgIGZvciAoIGkgPSAxOyBpIDwg ZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICByZWxhID0gJmVsZi0+c2Vj W2ldOworCisgICAgICAgIGlmICggKHJlbGEtPnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMQSApICYm CisgICAgICAgICAgICAgKHJlbGEtPnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMICkgKQorICAgICAg ICAgICAgY29udGludWU7CisKKyAgICAgICAgIC8qIElzIGl0IGEgdmFsaWQgcmVsb2NhdGlvbiBz ZWN0aW9uPyAqLworICAgICAgICAgaWYgKCByZWxhLT5zZWMtPnNoX2luZm8gPj0gZWxmLT5oZHIt PmVfc2hudW0gKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgIGJhc2UgPSAmZWxm LT5zZWNbcmVsYS0+c2VjLT5zaF9pbmZvXTsKKworICAgICAgICAgLyogRG9uJ3QgcmVsb2NhdGUg bm9uLWFsbG9jYXRlZCBzZWN0aW9ucy4gKi8KKyAgICAgICAgIGlmICggIShiYXNlLT5zZWMtPnNo X2ZsYWdzICYgU0hGX0FMTE9DKSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp ZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfdHlwZSA9PSBTSFRfUkVMQSApCisgICAgICAgICAgICBy YyA9IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoZWxmLCBiYXNlLCByZWxhKTsKKyAgICAgICAg ZWxzZSAvKiBTSFRfUkVMICovCisgICAgICAgICAgICByYyA9IGFyY2hfeHNwbGljZV9wZXJmb3Jt X3JlbChlbGYsIGJhc2UsIHJlbGEpOworCisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2Vf aGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogewogICAgIGNvbnN0 IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhkcjsKKyAgICBpbnQgcmM7CiAKICAgICBpZiAoIHNpemVv ZigqZWxmLT5oZHIpID4gZWxmLT5sZW4gKQogICAgIHsKQEAgLTI3Niw2ICszNzQsMjYgQEAgc3Rh dGljIGludCB4c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZikKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogICAgIH0KIAorICAgIGlmICggIUlTX0VM RigqaGRyKSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczog Tm90IGFuIEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgfQorCisgICAgaWYgKCBoZHItPmVfaWRlbnRbRUlfQ0xBU1NdICE9IEVMRkNMQVNT NjQgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9EQVRBXSAhPSBFTEZEQVRBMkxTQiB8fAor ICAgICAgICAgaGRyLT5lX2lkZW50W0VJX09TQUJJXSAhPSBFTEZPU0FCSV9TWVNWIHx8CisgICAg ICAgICBoZHItPmVfdHlwZSAhPSBFVF9SRUwgfHwKKyAgICAgICAgIGhkci0+ZV9waG51bSAhPSAw ICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiBJbnZhbGlk IEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQ OworICAgIH0KKworICAgIHJjID0gYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoZWxmKTsKKyAgICBp ZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCiAgICAgaWYgKCBlbGYtPmhkci0+ZV9zaHN0 cm5keCA9PSBTSE5fVU5ERUYgKQogICAgIHsKICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcs IFhTUExJQ0UgIiVzOiBTZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNl LmgKaW5kZXggMDA0ODJkMC4uYjg0M2I1ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hz cGxpY2UuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC02LDYgKzYsOSBAQAog I2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hfXwogI2RlZmluZSBfX1hFTl9YU1BMSUNFX0hfXwogCitz dHJ1Y3QgeHNwbGljZV9lbGY7CitzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjOworc3RydWN0IHhzcGxp Y2VfZWxmX3N5bTsKIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CiAKICNpZmRlZiBDT05G SUdfWFNQTElDRQpAQCAtMTUsNiArMTgsMzMgQEAgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9v cDsKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKIAor LyogQXJjaCBob29rcy4gKi8KK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZik7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2ludCBhcmNoX3hzcGxpY2Vf cGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEp OworZW51bSB2YV90eXBlIHsKKyAgICBYU1BMSUNFX1ZBX1JYLCAvKiAudGV4dCAqLworICAgIFhT UExJQ0VfVkFfUlcsIC8qIC5kYXRhICovCisgICAgWFNQTElDRV9WQV9STywgLyogLnJvZGF0YSAq LworfTsKKworI2luY2x1ZGUgPHhlbi9tbS5oPgordm9pZCAqYXJjaF94c3BsaWNlX2FsbG9jX3Bh eWxvYWQodW5zaWduZWQgaW50IHBhZ2VzLCBtZm5fdCAqKm1mbik7CisKKy8qCisgKiBGdW5jdGlv biB0byBzZWN1cmUgdGhlIGFsbG9jYXRlIHBhZ2VzIChmcm9tIGFyY2hfeHNwbGljZV9hbGxvY19w YXlsb2FkKQorICogd2l0aCB0aGUgcmlnaHQgcGFnZSBwZXJtaXNzaW9ucy4KKyAqLworaW50IGFy Y2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90 eXBlIHR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWZuX3QgKm1mbik7CisK K3ZvaWQgYXJjaF94c3BsaWNlX2ZyZWVfcGF5bG9hZCh2b2lkICp2YSk7CisKK3ZvaWQgYXJjaF94 c3BsaWNlX2luaXQodm9pZCk7CiAjZWxzZQogCiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+IC8qIEZv ciAtRU9QTk9UU1VQUCAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxm LmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaAppbmRleCAzMjMxNjM5Li4xZDQzNmFk IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaAorKysgYi94ZW4vaW5j bHVkZS94ZW4veHNwbGljZV9lbGYuaApAQCAtMTUsNiArMTUsOCBAQCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxm X3Jlc29sdmVfc2VjdGlvbl9uYW1lcy4gKi8KICAgICBjb25zdCB2b2lkICpkYXRhOyAgICAgICAg ICAgICAgICAgICAgLyogUG9pbnRlciB0byB0aGUgc2VjdGlvbiAoZG9uZSBieQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9ucyku ICovCisgICAgdm9pZCAqbG9hZF9hZGRyOyAgICAgICAgICAgIC8qIEEgcG9pbnRlciB0byB0aGUg YWxsb2NhdGVkIGRlc3RpbmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEb25lIGJ5IGxvYWRfcGF5bG9hZF9kYXRhLiAqLwogfTsKIAogc3RydWN0IHhzcGxpY2Vf ZWxmX3N5bSB7CkBAIC0zOCw2ICs0MCw5IEBAIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMg KnhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqCiBpbnQg eHNwbGljZV9lbGZfbG9hZChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0 YSk7CiB2b2lkIHhzcGxpY2VfZWxmX2ZyZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOwogCitp bnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsK K2ludCB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7 CisKICNlbmRpZiAvKiBfX1hFTl9YU1BMSUNFX0VMRl9IX18gKi8KIAogLyoKLS0gCjIuNS4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK