From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 08/24] xsplice: Implement payload loading Date: Wed, 27 Apr 2016 15:27:05 -0400 Message-ID: <1461785241-4481-9-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-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 1avVD3-0007fP-4C for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:33:17 +0000 In-Reply-To: <1461785241-4481-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Julien Grall , Stefano Stabellini , Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgbG9hZGluZyB4c3BsaWNlIHBheWxvYWRzLiBUaGlzIGlzIHNvbWV3aGF0IHNpbWls YXIgdG8KdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUgbG9hZGVyLCBpbXBsZW1lbnRpbmcgdGhlIGZv bGxvd2luZyBzdGVwczoKLSBWZXJpZnkgdGhlIGVsZiBmaWxlLgotIFBhcnNlIHRoZSBlbGYgZmls ZS4KLSBBbGxvY2F0ZSBhIHJlZ2lvbiBvZiBtZW1vcnkgbWFwcGVkIHdpdGhpbiBhIGZyZWUgYXJl YSBvZgogIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJUX0VORF0uCi0gQ29weSBhbGxvY2F0ZWQgc2Vj dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4gU3BsaXQgdGhlbSBpbiB0aHJlZQogIHJlZ2lvbnMg LSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhLiBNVVNUIGhhdmUgYXQgbGVhc3QgLnRleHQuCi0g UmVzb2x2ZSBzZWN0aW9uIHN5bWJvbHMuIEFsbCBvdGhlciBzeW1ib2xzIG11c3QgYmUgYWJzb2x1 dGUgYWRkcmVzc2VzLgogIChOb3RlIHRoYXQgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlLHN5bWJvbHM6 IEltcGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uCiAgIG9uIGFkZHJlc3MiIGltcGxlbWVu dHMgdGhhdCkKLSBQZXJmb3JtIHJlbG9jYXRpb25zLgotIFNlY3VyZSB0aGUgdGhlIHJlZ2lvbnMg KC50ZXh0LC5kYXRhLC5yb2RhdGEpIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgoKV2UgY2FwaXRh bGl6ZSBvbiB0aGUgdm1hbGxvYyBjYWxsYmFjayBBUEkgKHNlZSBwYXRjaCB0aXRsZWQ6CiJybS94 ODYvdm1hcDogQWRkIHZbenxtXWFsbG9jX3hlbiwgYW5kIHZtX2luaXRfdHlwZSIpIHRvIGFsbG9j YXRlCmEgcmVnaW9uIG9mIG1lbW9yeSB3aXRoaW4gdGhlIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJU X0VORF0gZm9yIHRoZSBjb2RlLgoKV2UgYWxzbyB1c2UgdGhlICJ4ODYvbW06IEludHJvZHVjZSBt b2RpZnlfeGVuX21hcHBpbmdzKCkiCnRvIGNoYW5nZSB0aGUgdmlydHVhbCBhZGRyZXNzIHBhZ2Ut dGFibGUgcGVybWlzc2lvbnMuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5s YWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpBY2tlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAYXJtLmNvbT4KCi0tLQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBr ZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtl aXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKdjI6IC0g Q2hhbmdlIHRoZSAneHNwbGljZV9wYXRjaF9mdW5jJyBzdHJ1Y3R1cmUgbGF5b3V0L3NpemUuCiAg ICAtIEFkZCBtb3JlIGVycm9yIGNoZWNraW5nLiBGaXggbWVtb3J5IGxlYWsuCiAgICAtIE1vdmUg ZWxmX3Jlc29sdmUgYW5kIGVsZl9wZXJmb3JtIHJlbG9jcyBpbiBlbGYgZmlsZS4KICAgIC0gUHJp bnQgdGhlIHBheWxvYWQgYWRkcmVzcyBhbmQgcGFnZXMgaW4ga2V5aGFuZGxlci4KdjM6CiAgICAt IE1ha2UgaXQgYnVpbGQgdW5kZXIgQVJNCiAgICAtIEJ1aWxkIGl0IHdpdGhvdXQgdXNpbmcgdGhl IHJldHVybl8gbWFjcm8uCiAgICAtIEFkZCBmaXhlcyBmcm9tIFJvc3MuCiAgICAtIEFkZCB0aGUg X3JldHVybiBtYWNybyBiYWNrIC0gYnV0IG9ubHkgdXNlIGl0IGR1cmluZyBkZWJ1ZyBidWlsZHMu CiAgICAtIFJlbW92ZSB0aGUgbWFjcm8sIHByZWZpeCBhcmNoXyBvbiBhcmNoIHNwZWNpZmljIGNh bGxzLgp2NDoKICAgIC0gTW92ZSBhbGxvY19wYXlsb2FkIHRvIGFyY2ggc3BlY2lmaWMgZmlsZS4K ICAgIC0gVXNlIHZvaWQqIGluc3RlYWQgb2YgdWludDhfdCwgdXNlIGNvbnN0CiAgICAtIEFkZCBj b3B5cmlnaHRzCiAgICAtIFVucm9sbCB0aGUgdm1hcCBjb2RlIHRvIGFkZCBBU1NFUlQuIENoYW5n ZSB3aGlsZSB0byBub3QgaW5jdXIKICAgICAgcG90ZW50aWFsIGxvbmcgZXJyb3IgbG9vcAogICAt IFVzZSB2bWFsbG9jL3ZmcmVlIGNiIEFQSXMKICAgLSBTZWN1cmUgLnRleHQgcGFnZXMgdG8gYmUg UlggaW5zdGVhZCBvZiBSV1guCnY1OgogIC0gRml4IGFsbG9jYXRpb24gb2YgdmlydHVhbCBhZGRy ZXNzZXMgb25seSBhbGxvd2luZyBvbmUgcGFnZSB0byBiZSBhbGxvY2F0ZWQuCiAgLSBDcmVhdGUg LnRleHQsIC5kYXRhLCBhbmQgLnJvZGF0YSByZWdpb25zIHdpdGggZGlmZmVyZW50IHBlcm1pc3Np b25zLgogIC0gTWFrZSB0aGUgZmluZF9zcGFjZV90IG5vdCBhIHR5cGVkZWYgdG8gcG9pbnRlciB0 byBhIGZ1bmN0aW9uLgogIC0gQWxsb2NhdGUgbWVtb3J5IGluIGhlcmUuCnY2OiBEcm9wIHBhcmVu dGhlc2VzIG9uIHR5cGVkZWZzLgogIC0gcy9hbiB4U3BsaWNlL2EgeFNwbGljZS8KICAtIFJlYmFz ZSBvbiAidm1hcDogQWRkIHZtYWxsb2NfY2IiCiAgLSBSZWJhc2Ugb24gInZtYXA6IEFkZCB2bWFs bG9jX3R5cGUgYW5kIHZtX2luaXRfdHlwZSIKICAtIHMvdWludDhfdC92b2lkLyBvbiBsb2FkX2Fk ZHIKICAtIFNldCB4c3BsaWNlX2VsZiBvbiBzdGFjayB3aXRob3V0IHVzaW5nIG1lbXNldC4Kdjc6 CiAgLSBDaGFuZ2VkIHRoZSBjaGVjayBvbiBkZWx0YSA9IGVsZi0+aGRyLT5lX3Nob2ZmICsgZWxm LT5oZHItPmVfc2hudW0gKiBlbGYtPmhkci0+ZV9zaGVudHNpemU7CiAgICBUaGUgc2VjdGlvbnMg Y2FuIGJlIHJpZ2h0IGF0IHRoZSBiYWNrIG9mIHRoZSBmaWxlIChkaWZmZXJlbnQgbGlua2VyISks IHNvIHRoZSBmYWlsaW5nIGNvbmRpdGlvbmFsCiAgICBmb3IgJ2lmIChkZWx0YSA+PSBlbGYtPmxl biknIGlzIGluY29ycmVjdCBhbmQgc2hvdWxkIGhhdmUgYmVlbiAnPicuCiAgLSBDaGFuZ2VkIGRw cmludGsoWEVOTE9HX0RFQlVHIHRvIFhFTkxPR19FUlIsIHRoZW4gYmFjayB0byBERUJVRy4gQ29u dmVydGVkCiAgICBzb21lIG9mIHRoZSBwcmludGsgdG8gZHByaW50ay4KICAtIFJlYmFzZSBvbiAi IGFybS94ODYvdm1hcDogQWRkIHZtYWxsb2NfeGVuLCB2ZnJlZV94ZW4gYW5kIHZtX2luaXRfdHlw ZSIKICAtIENoYW5nZWQgc29tZSBvZiB0aGUgcHJpbnRrIFhFTkxPR19FUlIgdG8gWEVOTE9HX0RF QlVHCiAgLSBDaGVjayB0aGUgaWR4IGluIHRoZSByZWxvY2F0aW9uIHRvIG1ha2Ugc3VyZSBpdCBp cyB3aXRoaW4gYm91bmRzIGFuZAogICAgaW1wbGVtZW50ZWQuCiAgLSBVc2UgIng4Ni9tbTogSW50 cm9kdWNlIG1vZGlmeV94ZW5fbWFwcGluZ3MoKSIKICAtIEludHJvZHVjZSBQUkl4RWxmQWRkcgog IC0gQ2hlY2sgZm9yIG92ZXJmbG93IGluIFJfWDg2XzY0X1BDMzIKICAtIFJldHVybiAtRU9QTk9U U1VQUCBpZiB3ZSBkb24ndCBzdXBwb3J0IHR5cGVzIGluIEVMRjY0X1JfVFlQRQp2ODoKICAtIENo YW5nZSBkcHJpbnRrIGFuZCBwcmludGsgWEVOTE9HX0RFQlVHIHRvIFhFTkxPR19FUlIKICAtIENv bnZlcnQgZm91ciBvZiB0aGUgcHJpbnRrcyBpbiBkcHJpbnRrLgp2OToKICAtIFJlYmFzZSBvbiBk aWZmZXJlbnQgc3BpbmxvY2sgdXNhZ2UgaW4geHNwbGljZV91cGxvYWQuCiAgLSBEbyBwcm9wZXIg Ym91bmQgYW5kIG92ZXJmbG93IGNoZWNraW5nLgogIC0gQWRkZWQgJ2NvbnN0JyBvbiBbdGV4dCxy byxyd11fYWRkci4KICAtIE1hZGUgJ2NhbGNfc2VjdGlvbicgYW5kICdtb3ZlX3BheWxvYWQnIHVz ZSBhbiBkeW5hbWljYWxseQogICAgYWxsb2NhdGVkIGFycmF5IGZvciBjb21wdXRlZCBvZmZzZXRz IGluc3RlYWQgb2YgbW9kaWZ5aW5nIHNoX2VudHNpemUuCiAgLSBSZW1vdmUgYXJjaF94c3BsaWNl X1thbGxvY19wYXlsb2FkfGZyZWVdIGFuZCB1c2UgdnphbGxvY194ZW4gYW5kCiAgICB2ZnJlZS4K ICAtIENvbGxhcHNlIGZvciBsb29wIGluIG1vdmVfcGF5bG9hZC4KICAtIE1vdmUgeHNwbGljZS5v IGluIE1ha2VmaWxlCiAgLSBBZGQgbW9yZSBjaGVja3MgaW4gYXJjaF94c3BsaWNlX3BlcmZvcm1f cmVsYSAocl9vZmZzZXQgYW5kCiAgICAgc2hfc2l6ZSAlIHNoX2VudHNpemUpCiAgLSBVc2UgaW50 MzJfdCBhbmQgaW50NjRfdCBpbiBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhLgogIC0gVGlnaHRl biB0aGUgbGlzdCBvZiBzaF9mbGFncyB3ZSBjaGVjawogIC0gVXNlIGludGVybWVkaWF0ZSBvbiAn YnVmJyBzbyB0aGF0IHdlIGNhbiBkbyAnY29uc3Qgdm9pZCAqJwogIC0gVXNlIGludGVybWVkaWF0 ZSBpbiB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMgZm9yICdjb25zdCcgb2YgZWxmLT5zeW0u CiAgLSBGYWlsIGlmIChhbmQgb25seSkgU0hGX0FMTE9DIGFuZCBTSFRfTk9CSVRTIHNlY3Rpb24g aXMgc2Vlbi4KdjEwOgogICAtIERyb3BwZWQgQW5kcmV3J3MgUmV2aWV3ZWQtYnkKICAgLSBFeHBh bmQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYgdG8gY2hlY2sgRUlfQ0xBU1MgYW5kIEVJX0FCSVZF UlNJT04KICAgLSBJbiBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhIGRyb3AgY2hlY2sgYWdhaW5z dCAhcmVsYS0+c2VjLT5zaF9lbnRzaXplLAogICAgIGFkZCBleHRyYSBjaGVja3MgYWdhaW5zdCBy X29mZnNldCArIHNpemVvZih0eXBlKSBuZWNjZXNzYXRpbmcKICAgICBhbiBleHRyYSBnb3RvIHN0 YXRlbWVudC4KICAgLSBNYWtlIGFyY2hfeHNwbGljZV9pbml0IGJlIF9faW5pdC4KICAgLSBJbiBm cmVlX3BheWxvYWRfZGF0YSBjaGVjayBhZ2FpbnN0IC0+cGFnZXMgaW5zdGVhZCBvZiAtPnRleHRf YWRkci4KICAgLSBJbiBtb3ZlX3BheWxvYWQgdXNlICd2b2lkIConIGluc3RlYWQgb2YgJ3VpbnQ4 X3QgKicsIHVzZSB4bWFsbG9jX2FycmF5CiAgICAgZm9yIG9mZnNldCwgZXhwYW5kIG9uIHRoZSAn RG8gTm90aGluZycgY29tbWVudCBhbmQgdGhlICdJZ25vcmluZyc7CiAgICAgVXNlIHZtYWxsb2Mg aW5zdGVhZCBvZiB2emFsbG9jIC0gd2hpY2ggbWVhbnMgZm9yIC5ic3Mgd2UgYWxzbyB1c2UKICAg ICBtZW1zZXQ7IGRyb3AgdGhlIHVuYXJ5ICsgd2hlbiBjYWxjdWxhdGluZyBhZGRyZXNzIGZvciBy d19idWY7CiAgICAgRml4IGluZGVudGlvbiAoSSBob3BlPyBJIGRvbid0IHNlZSBhbiBpc3N1ZSk7 IGFsc28gdXNlIG9mZnNldFtpXSA9VUlOVF9NQVgKICAgICBmb3Igc2VjdGlvbnMgd2UgYXJlIG5v dCBnb2luZyB0byBhbGxvY2F0ZSBvciBtZW1jcHkgLSBhbmQgYXNzZXJ0IGlmCiAgICAgd2UgZG8g aGl0IHRob3NlLgogICAtIEluIHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyBtb3ZlIGNoZWNr IGFnYWluc3QKICAgICAhKGVsZi0+c2VjW2lkeF0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykg YmFjayB0byB3aGF0IGl0IHdhcwogICAgIGluIHY4LgogICAtIEluIHhzcGxpY2VfZWxmX3BlcmZv cm1fcmVsb2NzIGRyb3AgY29tbWVudCBhYm91dCBmaXJzdCBFTEYKICAgICBzeW1ib2wuCiAgIC0g RGlmZmVyZW50IGlmL2Vsc2UgaWYgaW4gdXBsb2FkIGZ1bmN0aW9uLgp2MTAuMSAtIHBhdGNoIHBv c3RlZCBhcyBpbmxpbmUgcmVwbHkgd2l0aGluIHY5IHBhdGNoc2V0OgogICAtIEFkZCBjaGVjayBm b3IgRUlfREFUQSBhbmQgZGl0Y2ggRUlfQUJJVkVSU0lPTiBvdXQgb2YgcGxhdGZvcm0gc3BlY2lm aWMgY2hlY2tzLgogICAtIEluIGVsZl9yZXNvbHZlX3N5bWJvbHMgdXNlIGNvbnN0IEVsZlN5bSBh bmQgdGVtcG9yYXJ5IHZhcmlhYmxlIChzdF92YWx1ZSkKICAgICB3aGljaCBpcyB1c2VkIHRvIHNl dCB2YWx1ZSBpbiBjb25zdCAoYW5kIG9ubHkgaW4gb25lIHBsYWNlIHdpbGwgd2UKICAgICB1bmNv bnN0IHRoZSBzeW0pOyBjaGFuZ2UgJSMiUFJJeC4uIiB0byAjeCBvciAjbHggdHlwZXMgYXMgd2Ug ZG9uJ3QgdXNlIEVsZgogICAgIHR5cGVzIGFueW1vcmUuCiAgIC0gTWFrZSB0aGUgcl9vZmZzZXQg Y2hlY2sgYmUgd2l0aGluIHN3aXRjaCBzdGF0ZW1lbnRzIHRvIGd1YXJkIGFnYWluc3QgTk9ORQog ICAgIHJlbG9jYXRpb25zLgogICAtIEZpeCB0aGUgJ2Vsc2UgaWYnIHNwYWNpbmcgaXNzdWU7CiAg IC0gVXNlIGRpZmZlcmVudCBtZXNzYWdlIHdoZW4gaWR4IGluIHN5bWJvbHMgaXMgb3V0IG9mIGJv dW5kcy4KdjEwLjIgLSBwYXRjaCBwb3N0ZWQgYXMgaW5saW5lIHJlcGx5IGFnYWluc3QgdGhlIHYx MC4xIGFib3ZlLgogICAtIEluICdtb3ZlX3BheWxvYWQnIHNpbXBsaWZ5IGxvb3AgY2FsY3VsYXRp bmcgc2l6ZS4KICAgLSBJbiB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMgdXNlIEVsZl9BZGRy IGluc3RlYWQgb2YgdW5zaWduZWQgbG9uZy4KICAgICBBbHNvIHVzZSAlIyJQUkl4IiB0byB3b3Jr IG9uIEFSTTMyCi0tLQogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogeGVu L2FyY2gvYXJtL3hzcGxpY2UuYyAgICAgICAgfCAgNDYgKysrKysrKysrCiB4ZW4vYXJjaC94ODYv TWFrZWZpbGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYveHNwbGljZS5jICAgICAgICB8 IDE3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2Uu YyAgICAgICAgICB8IDIzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KIHhlbi9jb21tb24veHNwbGljZV9lbGYuYyAgICAgIHwgMTE4ICsrKysrKysrKysrKysrKysr KysrKwogeGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaCAgfCAgIDQgKwogeGVuL2luY2x1ZGUv eGVuL3hzcGxpY2UuaCAgICAgfCAgMjQgKysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2Vs Zi5oIHwgIDExICstCiA5IGZpbGVzIGNoYW5nZWQsIDYwNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS94c3BsaWNlLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYveHNwbGljZS5jCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDAzMjhiNTAuLmVh ZTVjYjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9h cm0vTWFrZWZpbGUKQEAgLTQwLDYgKzQwLDcgQEAgb2JqLXkgKz0gZGV2aWNlLm8KIG9iai15ICs9 IGRlY29kZS5vCiBvYmoteSArPSBwcm9jZXNzb3Iubwogb2JqLXkgKz0gc21jLm8KK29iai0kKENP TkZJR19YU1BMSUNFKSArPSB4c3BsaWNlLm8KIAogI29iai1iaW4teSArPSAuLi4ubwogCmRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0veHNwbGljZS5jIGIveGVuL2FyY2gvYXJtL3hzcGxpY2UuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2I3NzY3Ci0tLSAvZGV2L251bGwK KysrIGIveGVuL2FyY2gvYXJtL3hzcGxpY2UuYwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogIENv cHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICovCisjaW5jbHVkZSA8 eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+ CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4K KworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZv cm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAg IHJldHVybiAtRU5PU1lTOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAt RU5PU1lTOworfQorCitpbnQgYXJjaF94c3BsaWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5z aWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT1NZ UzsKK30KKwordm9pZCBfX2luaXQgYXJjaF94c3BsaWNlX2luaXQodm9pZCkKK3sKK30KKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK KyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUg Yi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggNzI5MDY1Yi4uZjc0ZmQyYyAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAt NjEsNiArNjEsNyBAQCBvYmoteSArPSB4ODZfZW11bGF0ZS5vCiBvYmoteSArPSB0Ym9vdC5vCiBv YmoteSArPSBocGV0Lm8KIG9iai15ICs9IHZtX2V2ZW50Lm8KK29iai0kKENPTkZJR19YU1BMSUNF KSArPSB4c3BsaWNlLm8KIG9iai15ICs9IHhzdGF0ZS5vCiAKIG9iai0kKGNyYXNoX2RlYnVnKSAr PSBnZGJzdHViLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMgYi94ZW4vYXJj aC94ODYveHNwbGljZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNjE4 ZjcKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYveHNwbGljZS5jCkBAIC0wLDAgKzEs MTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQu CisgKi8KKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cisj aW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9w Zm4uaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5o PgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Vs Zihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKworICAgIGNvbnN0IEVsZl9FaGRy ICpoZHIgPSBlbGYtPmhkcjsKKworICAgIGlmICggaGRyLT5lX21hY2hpbmUgIT0gRU1fWDg2XzY0 IHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfQ0xBU1NdICE9IEVMRkNMQVNTNjQgfHwKKyAg ICAgICAgIGhkci0+ZV9pZGVudFtFSV9EQVRBXSAhPSBFTEZEQVRBMkxTQiApCisgICAgeworICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbnN1cHBvcnRlZCBFTEYgTWFj aGluZSB0eXBlIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1 cm4gLUVPUE5PVFNVUFA7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBhcmNoX3hz cGxpY2VfcGVyZm9ybV9yZWwoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJl bGEpCit7CisgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU0hUX1JFTCByZWxv Y2F0aW9uIHVuc3VwcG9ydGVkXG4iLAorICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICByZXR1 cm4gLUVPUE5PVFNVUFA7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgY29uc3QgRWxm X1JlbEEgKnI7CisgICAgdW5zaWduZWQgaW50IHN5bW5keCwgaTsKKyAgICB1aW50NjRfdCB2YWw7 CisgICAgdWludDhfdCAqZGVzdDsKKworICAgIC8qIE5vdGhpbmcgdG8gZG8uICovCisgICAgaWYg KCAhcmVsYS0+c2VjLT5zaF9zaXplICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIHJl bGEtPnNlYy0+c2hfZW50c2l6ZSA8IHNpemVvZihFbGZfUmVsQSkgfHwKKyAgICAgICAgIHJlbGEt PnNlYy0+c2hfc2l6ZSAlIHJlbGEtPnNlYy0+c2hfZW50c2l6ZSApCisgICAgeworICAgICAgICBk cHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIHJlbGF0aXZlIGhlYWRlciBp cyBjb3JydXB0ZWQhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJl dHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgKHJlbGEtPnNlYy0+ c2hfc2l6ZSAvIHJlbGEtPnNlYy0+c2hfZW50c2l6ZSk7IGkrKyApCisgICAgeworICAgICAgICBy ID0gcmVsYS0+ZGF0YSArIGkgKiByZWxhLT5zZWMtPnNoX2VudHNpemU7CisKKyAgICAgICAgc3lt bmR4ID0gRUxGNjRfUl9TWU0oci0+cl9pbmZvKTsKKworICAgICAgICBpZiAoIHN5bW5keCA+IGVs Zi0+bnN5bSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRSAiJXM6IFJlbGF0aXZlIHJlbG9jYXRpb24gd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlzIHBh c3QgZW5kIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBzeW1uZHgpOworICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBkZXN0ID0gYmFz ZS0+bG9hZF9hZGRyICsgci0+cl9vZmZzZXQ7CisgICAgICAgIHZhbCA9IHItPnJfYWRkZW5kICsg ZWxmLT5zeW1bc3ltbmR4XS5zeW0tPnN0X3ZhbHVlOworCisgICAgICAgIHN3aXRjaCAoIEVMRjY0 X1JfVFlQRShyLT5yX2luZm8pICkKKyAgICAgICAgeworICAgICAgICBjYXNlIFJfWDg2XzY0X05P TkU6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfWDg2XzY0XzY0OgorICAg ICAgICAgICAgaWYgKCByLT5yX29mZnNldCA+PSBiYXNlLT5zZWMtPnNoX3NpemUgfHwKKyAgICAg ICAgICAgICAgICAoci0+cl9vZmZzZXQgKyBzaXplb2YodWludDY0X3QpKSA+IGJhc2UtPnNlYy0+ c2hfc2l6ZSApCisgICAgICAgICAgICAgICAgZ290byBiYWRfb2Zmc2V0OworCisgICAgICAgICAg ICAqKHVpbnQ2NF90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg IGNhc2UgUl9YODZfNjRfUExUMzI6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogWGVu IHVzZXMgLWZwaWMgd2hpY2ggbm9ybWFsbHkgdXNlcyBQTFQgcmVsb2NhdGlvbnMKKyAgICAgICAg ICAgICAqIGV4Y2VwdCB0aGF0IGl0IHNldHMgdmlzaWJpbGl0eSB0byBoaWRkZW4gd2hpY2ggbWVh bnMKKyAgICAgICAgICAgICAqIHRoYXQgdGhleSBhcmUgbm90IHVzZWQuICBIb3dldmVyLCB3aGVu IGdjYyBjYW5ub3QKKyAgICAgICAgICAgICAqIGlubGluZSBtZW1jcHkgaXQgZW1pdHMgbWVtY3B5 IHdpdGggZGVmYXVsdCB2aXNpYmlsaXR5CisgICAgICAgICAgICAgKiB3aGljaCB0aGVuIGNyZWF0 ZXMgYSBQTFQgcmVsb2NhdGlvbi4gIEl0IGNhbiBqdXN0IGJlCisgICAgICAgICAgICAgKiB0cmVh dGVkIHRoZSBzYW1lIGFzIFJfWDg2XzY0X1BDMzIuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg Y2FzZSBSX1g4Nl82NF9QQzMyOgorICAgICAgICAgICAgaWYgKCByLT5yX29mZnNldCA+PSBiYXNl LT5zZWMtPnNoX3NpemUgfHwKKyAgICAgICAgICAgICAgICAoci0+cl9vZmZzZXQgKyBzaXplb2Yo dWludDMyX3QpKSA+IGJhc2UtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgICAgICAgICAgZ290byBi YWRfb2Zmc2V0OworCisgICAgICAgICAgICB2YWwgLT0gKHVpbnQ2NF90KWRlc3Q7CisgICAgICAg ICAgICAqKGludDMyX3QgKilkZXN0ID0gdmFsOworICAgICAgICAgICAgaWYgKCAoaW50NjRfdCl2 YWwgIT0gKihpbnQzMl90ICopZGVzdCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogT3ZlcmZsb3cgaW4gcmVsb2NhdGlvbiAl dSBpbiAlcyBmb3IgJXMhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBp LCByZWxhLT5uYW1lLCBiYXNlLT5uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVPVkVS RkxPVzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmhhbmRs ZWQgcmVsb2NhdGlvbiAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgRUxG NjRfUl9UWVBFKHItPnJfaW5mbykpOworICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwor ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKKyBiYWRfb2Zmc2V0OgorICAgIGRw cmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFJlbGF0aXZlIHJlbG9jYXRpb24gb2Zmc2V0 IGlzIHBhc3QgJXMgc2VjdGlvbiFcbiIsCisgICAgICAgICAgICBlbGYtPm5hbWUsIGJhc2UtPm5h bWUpOworICAgIHJldHVybiAtRUlOVkFMOworfQorCisvKgorICogT25jZSB0aGUgcmVzb2x2aW5n IHN5bWJvbHMsIHBlcmZvcm1pbmcgcmVsb2NhdGlvbnMsIGV0YyBpcyBjb21wbGV0ZQorICogd2Ug c2VjdXJlIHRoZSBtZW1vcnkgYnkgcHV0dGluZyBpbiB0aGUgcHJvcGVyIHBhZ2UgdGFibGUgYXR0 cmlidXRlcworICogZm9yIHRoZSBkZXNpcmVkIHR5cGUuCisgKi8KK2ludCBhcmNoX3hzcGxpY2Vf c2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSB0 eXBlKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQgPSAodW5zaWduZWQgbG9uZyl2YTsKKyAg ICB1bnNpZ25lZCBpbnQgZmxhZzsKKworICAgIEFTU0VSVCh2YSk7CisgICAgQVNTRVJUKHBhZ2Vz KTsKKworICAgIGlmICggdHlwZSA9PSBYU1BMSUNFX1ZBX1JYICkKKyAgICAgICAgZmxhZyA9IFBB R0VfSFlQRVJWSVNPUl9SWDsKKyAgICBlbHNlIGlmICggdHlwZSA9PSBYU1BMSUNFX1ZBX1JXICkK KyAgICAgICAgZmxhZyA9IFBBR0VfSFlQRVJWSVNPUl9SVzsKKyAgICBlbHNlCisgICAgICAgIGZs YWcgPSBQQUdFX0hZUEVSVklTT1JfUk87CisKKyAgICBtb2RpZnlfeGVuX21hcHBpbmdzKHN0YXJ0 LCBzdGFydCArIHBhZ2VzICogUEFHRV9TSVpFLCBmbGFnKTsKKworICAgIHJldHVybiAwOworfQor Cit2b2lkIF9faW5pdCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKQoreworICAgIHZvaWQgKnN0YXJ0 LCAqZW5kOworCisgICAgc3RhcnQgPSAodm9pZCAqKXhlbl92aXJ0X2VuZDsKKyAgICBlbmQgPSAo dm9pZCAqKShYRU5fVklSVF9FTkQgLSBOUl9DUFVTICogUEFHRV9TSVpFKTsKKworICAgIEJVR19P TihlbmQgPD0gc3RhcnQpOworCisgICAgdm1faW5pdF90eXBlKFZNQVBfWEVOLCBzdGFydCwgZW5k KTsKK30KKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94 c3BsaWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwppbmRleCA3M2U1MGYwLi4xNjg4YzZjIDEw MDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2UuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2Uu YwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHhlbi9zbXAuaD4KICNpbmNsdWRlIDx4ZW4v c3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNl X2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAKICNpbmNsdWRlIDxhc20vZXZlbnQu aD4KQEAgLTI5LDYgKzMwLDEzIEBAIHN0cnVjdCBwYXlsb2FkIHsKICAgICB1aW50MzJfdCBzdGF0 ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRoZSBYU1BMSUNFX1NUQVRFXyouICov CiAgICAgaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAgb3IgLVhFTl9F WFguICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAgICAgICAgICAgICAgIC8qIExpbmtl ZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KKyAgICBjb25zdCB2b2lkICp0ZXh0X2FkZHI7ICAgICAg ICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC50ZXh0LiAqLworICAgIHNpemVfdCB0ZXh0 X3NpemU7ICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQgaXRzIHNpemUuICovCisgICAgY29u c3Qgdm9pZCAqcndfYWRkcjsgICAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAu ZGF0YS4gKi8KKyAgICBzaXplX3Qgcndfc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgLyogLi4g YW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLworICAgIGNvbnN0IHZvaWQgKnJvX2FkZHI7ICAgICAg ICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLnJvZGF0YS4gKi8KKyAgICBzaXplX3Qg cm9fc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplIChpZiBhbnkp LiAqLworICAgIHVuc2lnbmVkIGludCBwYWdlczsgICAgICAgICAgICAgICAgICAvKiBUb3RhbCBw YWdlcyBmb3IgW3RleHQscncscm9dX2FkZHIgKi8KICAgICBjaGFyIG5hbWVbWEVOX1hTUExJQ0Vf TkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KIH07CiAKQEAgLTgzLDE5ICs5MSwyMjMg QEAgc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3QgY2hhciAqbmFtZSkK ICAgICByZXR1cm4gZm91bmQ7CiB9CiAKKy8qCisgKiBGdW5jdGlvbnMgcmVsYXRlZCB0byBYRU5f U1lTQ1RMX1hTUExJQ0VfVVBMT0FEIChzZWUgeHNwbGljZV91cGxvYWQpLCBhbmQKKyAqIGZyZWVp bmcgcGF5bG9hZCAoWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTjpYU1BMSUNFX0FDVElPTl9VTkxP QUQpLgorICovCisKK3N0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2Fk ICpwYXlsb2FkKQoreworICAgIC8qIFNldCB0byB6ZXJvIHVudGlsICJtb3ZlX3BheWxvYWQiLiAq LworICAgIGlmICggIXBheWxvYWQtPnBhZ2VzICkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmZy ZWUoKHZvaWQgKilwYXlsb2FkLT50ZXh0X2FkZHIpOworCisgICAgcGF5bG9hZC0+cGFnZXMgPSAw OworfQorCisvKgorKiBjYWxjX3NlY3Rpb24gY29tcHV0ZXMgdGhlIHNpemUgKHRha2luZyBpbnRv IGFjY291bnQgc2VjdGlvbiBhbGlnbm1lbnQpLgorKgorKiBGdXJ0aGVybW9yZSB0aGUgb2Zmc2V0 IGlzIHNldCB3aXRoIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZpcnR1YWwKKyog YWRkcmVzcyBzcGFjZSBmb3IgdGhlIHBheWxvYWQgKHVzaW5nIHBhc3NlZCBpbiBzaXplKS4gVGhp cyBpcyB1c2VkIGluCisqIG1vdmVfcGF5bG9hZCB0byBmaWd1cmUgb3V0IHRoZSBkZXN0aW5hdGlv biBsb2NhdGlvbiAobG9hZF9hZGRyKS4KKyovCitzdGF0aWMgdm9pZCBjYWxjX3NlY3Rpb24oY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjLCBzaXplX3QgKnNpemUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvZmZzZXQpCit7CisgICAgY29uc3QgRWxmX1No ZHIgKnMgPSBzZWMtPnNlYzsKKyAgICBzaXplX3QgYWxpZ25fc2l6ZTsKKworICAgIGFsaWduX3Np emUgPSBST1VORFVQKCpzaXplLCBzLT5zaF9hZGRyYWxpZ24pOworICAgICpvZmZzZXQgPSBhbGln bl9zaXplOworICAgICpzaXplID0gcy0+c2hfc2l6ZSArIGFsaWduX3NpemU7Cit9CisKK3N0YXRp YyBpbnQgbW92ZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKK3sKKyAgICB2b2lkICp0ZXh0X2J1ZiwgKnJvX2J1ZiwgKnJ3X2J1ZjsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgaW50 ICpvZmZzZXQ7CisgICAgaW50IHJjID0gMDsKKworICAgIG9mZnNldCA9IHhtYWxsb2NfYXJyYXko dW5zaWduZWQgaW50LCBlbGYtPmhkci0+ZV9zaG51bSk7CisgICAgaWYgKCAhb2Zmc2V0ICkKKyAg ICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICAvKiBDb21wdXRlIHNpemUgb2YgZGlmZmVyZW50 IHJlZ2lvbnMuICovCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsr ICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIERvIG5vdGhpbmcuIFRoZXNlIGFyZSAu cmVsLnRleHQsIHJlbC4qLCAuc3ltdGFiLCAuc3RydGFiLAorICAgICAgICAgKiBhbmQgLnNoc3Ry dGFiLiBGb3IgdGhlIG5vbi1yZWxvY2F0ZSB3ZSBhbGxvY2F0ZSBhbmQgY29weSB0aGVzZQorICAg ICAgICAgKiB2aWEgb3RoZXIgbWVhbnMgLSBhbmQgdGhlIC5yZWwgd2UgY2FuIGlnbm9yZSBhcyB3 ZSBvbmx5IHVzZSBpdAorICAgICAgICAgKiBvbmNlIGR1cmluZyBsb2FkaW5nLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKCAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0Mp ICkKKyAgICAgICAgeworICAgICAgICAgICAgb2Zmc2V0W2ldID0gVUlOVF9NQVg7CisgICAgICAg ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMt PnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAhKGVsZi0+c2VjW2ld LnNlYy0+c2hfZmxhZ3MgJiBTSEZfV1JJVEUpICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigm ZWxmLT5zZWNbaV0sICZwYXlsb2FkLT50ZXh0X3NpemUsICZvZmZzZXRbaV0pOworICAgICAgICBl bHNlIGlmICggIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYK KyAgICAgICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRF KSApCisgICAgICAgICAgICBjYWxjX3NlY3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+cndf c2l6ZSwgJm9mZnNldFtpXSk7CisgICAgICAgIGVsc2UgaWYgKCAhKGVsZi0+c2VjW2ldLnNlYy0+ c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgorICAgICAgICAgICAgICAgICAgIShlbGYtPnNl Y1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAgICAgICAgICBjYWxjX3NlY3Rp b24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+cm9fc2l6ZSwgJm9mZnNldFtpXSk7CisgICAgICAg IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJ Q0UgIiVzOiBOb3Qgc3VwcG9ydGluZyAlcyBzZWN0aW9uIVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tpXS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0gLUVPUE5P VFNVUFA7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8q CisgICAgICogVG90YWwgb2YgYWxsIHRocmVlIHJlZ2lvbnMgLSBSWCwgUlcsIGFuZCBSTy4gV2Ug aGF2ZSB0byBoYXZlCisgICAgICoga2VlcCB0aGVtIGluIHNlcGVyYXRlIHBhZ2VzIHNvIHdlIFBB R0VfQUxJR04gdGhlIFJYIGFuZCBSVyB0byBoYXZlCisgICAgICogdGhlbSBvbiBzZXBlcmF0ZSBw YWdlcy4gVGhlIGxhc3Qgb25lIHdpbGwgYnkgZGVmYXVsdCBmYWxsIG9uIGl0cworICAgICAqIG93 biBwYWdlLgorICAgICAqLworICAgIHNpemUgPSBQQUdFX0FMSUdOKHBheWxvYWQtPnRleHRfc2l6 ZSkgKyBQQUdFX0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpICsKKyAgICAgICAgICAgICAgICAgICAg ICBwYXlsb2FkLT5yb19zaXplOworCisgICAgc2l6ZSA9IFBGTl9VUChzaXplKTsgLyogTnIgb2Yg cGFnZXMuICovCisgICAgdGV4dF9idWYgPSB2bWFsbG9jX3hlbihzaXplICogUEFHRV9TSVpFKTsK KyAgICBpZiAoICF0ZXh0X2J1ZiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIs IFhTUExJQ0UgIiVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYXlsb2FkIVxuIiwK KyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByYyA9IC1FTk9NRU07CisgICAg ICAgIGdvdG8gb3V0OworICAgIH0KKyAgICByd19idWYgPSB0ZXh0X2J1ZiArIFBBR0VfQUxJR04o cGF5bG9hZC0+dGV4dF9zaXplKTsKKyAgICByb19idWYgPSByd19idWYgKyBQQUdFX0FMSUdOKHBh eWxvYWQtPnJ3X3NpemUpOworCisgICAgcGF5bG9hZC0+cGFnZXMgPSBzaXplOworICAgIHBheWxv YWQtPnRleHRfYWRkciA9IHRleHRfYnVmOworICAgIHBheWxvYWQtPnJ3X2FkZHIgPSByd19idWY7 CisgICAgcGF5bG9hZC0+cm9fYWRkciA9IHJvX2J1ZjsKKworICAgIGZvciAoIGkgPSAxOyBpIDwg ZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIGVsZi0+c2VjW2ld LnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAgICAgICB7CisgICAgICAgICAgICB2b2lk ICpidWY7CisKKyAgICAgICAgICAgIGlmICggZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9FWEVDSU5TVFIgKQorICAgICAgICAgICAgICAgIGJ1ZiA9IHRleHRfYnVmOworICAgICAgICAg ICAgZWxzZSBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfV1JJVEUgKQorICAg ICAgICAgICAgICAgIGJ1ZiA9IHJ3X2J1ZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICBidWYgPSByb19idWY7CisKKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXRbaV0gIT0gVUlO VF9NQVgpOworCisgICAgICAgICAgICBlbGYtPnNlY1tpXS5sb2FkX2FkZHIgPSBidWYgKyBvZmZz ZXRbaV07CisKKyAgICAgICAgICAgIC8qIERvbid0IGNvcHkgTk9CSVRTIC0gc3VjaCBhcyBCU1Mu ICovCisgICAgICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfdHlwZSAhPSBTSFRfTk9C SVRTICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkoZWxmLT5zZWNbaV0u bG9hZF9hZGRyLCBlbGYtPnNlY1tpXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBlbGYt PnNlY1tpXS5zZWMtPnNoX3NpemUpOworICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RF QlVHLCBYU1BMSUNFICIlczogTG9hZGVkICVzIGF0ICVwXG4iLAorICAgICAgICAgICAgICAgICAg ICAgICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tpXS5uYW1lLCBlbGYtPnNlY1tpXS5sb2FkX2FkZHIp OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1lbXNl dChlbGYtPnNlY1tpXS5sb2FkX2FkZHIsIDAsIGVsZi0+c2VjW2ldLnNlYy0+c2hfc2l6ZSk7Cisg ICAgICAgIH0KKyAgICB9CisKKyBvdXQ6CisgICAgeGZyZWUob2Zmc2V0KTsKKworICAgIHJldHVy biByYzsKK30KKworc3RhdGljIGludCBzZWN1cmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5 bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgaW50IHJjOworICAgIHVuc2ln bmVkIGludCB0ZXh0X3BhZ2VzLCByd19wYWdlcywgcm9fcGFnZXM7CisKKyAgICB0ZXh0X3BhZ2Vz ID0gUEZOX1VQKHBheWxvYWQtPnRleHRfc2l6ZSk7CisgICAgQVNTRVJUKHRleHRfcGFnZXMpOwor CisgICAgcmMgPSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQtPnRleHRfYWRkciwgdGV4dF9w YWdlcywgWFNQTElDRV9WQV9SWCk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsK KworICAgIHJ3X3BhZ2VzID0gUEZOX1VQKHBheWxvYWQtPnJ3X3NpemUpOworICAgIGlmICggcndf cGFnZXMgKQorICAgIHsKKyAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQt PnJ3X2FkZHIsIHJ3X3BhZ2VzLCBYU1BMSUNFX1ZBX1JXKTsKKyAgICAgICAgaWYgKCByYyApCisg ICAgICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAgcm9fcGFnZXMgPSBQRk5fVVAocGF5 bG9hZC0+cm9fc2l6ZSk7CisgICAgaWYgKCByb19wYWdlcyApCisgICAgICAgIHJjID0gYXJjaF94 c3BsaWNlX3NlY3VyZShwYXlsb2FkLT5yb19hZGRyLCByb19wYWdlcywgWFNQTElDRV9WQV9STyk7 CisKKyAgICBBU1NFUlQocm9fcGFnZXMgKyByd19wYWdlcyArIHRleHRfcGFnZXMgPT0gcGF5bG9h ZC0+cGFnZXMpOworCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgdm9pZCBmcmVlX3BheWxv YWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCiB7CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZw YXlsb2FkX2xvY2spKTsKICAgICBsaXN0X2RlbCgmZGF0YS0+bGlzdCk7CiAgICAgcGF5bG9hZF9j bnQtLTsKICAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICBmcmVlX3BheWxvYWRfZGF0YShkYXRh KTsKICAgICB4ZnJlZShkYXRhKTsKIH0KIAorc3RhdGljIGludCBsb2FkX3BheWxvYWRfZGF0YShz dHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgdm9pZCAqcmF3LCBzaXplX3QgbGVuKQoreworICAgIHN0 cnVjdCB4c3BsaWNlX2VsZiBlbGYgPSB7IC5uYW1lID0gcGF5bG9hZC0+bmFtZSwgLmxlbiA9IGxl biB9OworICAgIGludCByYyA9IDA7CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX2xvYWQoJmVsZiwg cmF3KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IG1vdmVf cGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scygmZWxmKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX3BlcmZvcm1f cmVsb2NzKCZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJj ID0gc2VjdXJlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7CisKKyBvdXQ6CisgICAgaWYgKCByYyAp CisgICAgICAgIGZyZWVfcGF5bG9hZF9kYXRhKHBheWxvYWQpOworCisgICAgLyogRnJlZSBvdXIg dGVtcG9yYXJ5IGRhdGEgc3RydWN0dXJlLiAqLworICAgIHhzcGxpY2VfZWxmX2ZyZWUoJmVsZik7 CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5 c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRh dGEsICpmb3VuZDsKICAgICBjaGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKyAgICB2b2lk ICpyYXdfZGF0YTsKICAgICBpbnQgcmM7CiAKICAgICByYyA9IHZlcmlmeV9wYXlsb2FkKHVwbG9h ZCwgbik7CkBAIC0xMDMsNiArMzE1LDcgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5f c3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKICAgICAgICAgcmV0dXJuIHJjOwogCiAg ICAgZGF0YSA9IHh6YWxsb2Moc3RydWN0IHBheWxvYWQpOworICAgIHJhd19kYXRhID0gdm1hbGxv Yyh1cGxvYWQtPnNpemUpOwogCiAgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOwogCkBAIC0x MTEsMTEgKzMyNCwxOCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNw bGljZV91cGxvYWRfdCAqdXBsb2FkKQogICAgICAgICByYyA9IFBUUl9FUlIoZm91bmQpOwogICAg IGVsc2UgaWYgKCBmb3VuZCApCiAgICAgICAgIHJjID0gLUVFWElTVDsKLSAgICBlbHNlIGlmICgg IWRhdGEgKQorICAgIGVsc2UgaWYgKCAhZGF0YSB8fCAhcmF3X2RhdGEgKQogICAgICAgICByYyA9 IC1FTk9NRU07CisgICAgZWxzZSBpZiAoIF9fY29weV9mcm9tX2d1ZXN0KHJhd19kYXRhLCB1cGxv YWQtPnBheWxvYWQsIHVwbG9hZC0+c2l6ZSkgKQorICAgICAgICByYyA9IC1FRkFVTFQ7CiAgICAg ZWxzZQogICAgIHsKICAgICAgICAgbWVtY3B5KGRhdGEtPm5hbWUsIG4sIHN0cmxlbihuKSk7CisK KyAgICAgICAgcmMgPSBsb2FkX3BheWxvYWRfZGF0YShkYXRhLCByYXdfZGF0YSwgdXBsb2FkLT5z aXplKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIG91dDsKKwogICAgICAg ICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKICAgICAgICAgSU5JVF9MSVNU X0hFQUQoJmRhdGEtPmxpc3QpOwogCkBAIC0xMjMsOCArMzQzLDEyIEBAIHN0YXRpYyBpbnQgeHNw bGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgICAgICAg IHBheWxvYWRfY250Kys7CiAgICAgICAgIHBheWxvYWRfdmVyc2lvbisrOwogICAgIH0KKworIG91 dDoKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKIAorICAgIHZmcmVlKHJhd19kYXRh KTsKKwogICAgIGlmICggcmMgKQogICAgICAgICB4ZnJlZShkYXRhKTsKIApAQCAtMzU5LDggKzU4 Myw5IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiAg ICAgfQogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxp c3QgKQotICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKVxuIiwgZGF0YS0+bmFt ZSwKLSAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlKTsK KyAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkgJXAgKC5kYXRhPSVwLCAucm9k YXRhPSVwKSB1c2luZyAldSBwYWdlcy5cbiIsCisgICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBz dGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSwgZGF0YS0+dGV4dF9hZGRyLAorICAg ICAgICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0YS0+cm9fYWRkciwgZGF0YS0+cGFnZXMpOwog CiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CiB9CkBAIC0zNjgsNiArNTkzLDggQEAg c3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKIHN0YXRpYyBp bnQgX19pbml0IHhzcGxpY2VfaW5pdCh2b2lkKQogewogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIo J3gnLCB4c3BsaWNlX3ByaW50YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKworICAg IGFyY2hfeHNwbGljZV9pbml0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiBfX2luaXRjYWxsKHhzcGxp Y2VfaW5pdCk7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgYi94ZW4vY29t bW9uL3hzcGxpY2VfZWxmLmMKaW5kZXggZjA0NjAxNS4uZjUxYTE2MSAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi94c3BsaWNlX2VsZi5jCisrKyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwpAQCAt MTAwLDYgKzEwMCw3IEBAIHN0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0IHhz cGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCiAKICAgICAgICAgICAgIGVsZi0+c3lt dGFiID0gJnNlY1tpXTsKIAorICAgICAgICAgICAgZWxmLT5zeW10YWJfaWR4ID0gaTsKICAgICAg ICAgICAgIC8qCiAgICAgICAgICAgICAgKiBlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxk IHBvaW50IHRvIHRoZSByaWdodCBzZWN0aW9uCiAgICAgICAgICAgICAgKiBidXQgd2UgaGFkbid0 IGZpbmlzaGVkIHBhcnNpbmcgYWxsIHRoZSBzZWN0aW9ucy4KQEAgLTI1MCw5ICsyNTEsMTIyIEBA IHN0YXRpYyBpbnQgZWxmX2dldF9zeW0oc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZv aWQgKmRhdGEpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5 bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdW5zaWduZWQgaW50IGk7Cisg ICAgaW50IHJjID0gMDsKKworICAgIEFTU0VSVChlbGYtPnN5bSk7CisKKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+bnN5bTsgaSsrICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBpZHgg PSBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4OworICAgICAgICBjb25zdCBFbGZfU3ltICpzeW0g PSBlbGYtPnN5bVtpXS5zeW07CisgICAgICAgIEVsZl9BZGRyIHN0X3ZhbHVlID0gc3ltLT5zdF92 YWx1ZTsKKworICAgICAgICBzd2l0Y2ggKCBpZHggKQorICAgICAgICB7CisgICAgICAgIGNhc2Ug U0hOX0NPTU1PTjoKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6 IFVuZXhwZWN0ZWQgY29tbW9uIHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGVs Zi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7Cisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNITl9VTkRFRjoKKyAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVua25vd24gc3ltYm9sOiAlc1xuIiwK KyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAg ICAgICAgIHJjID0gLUVOT0VOVDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug U0hOX0FCUzoKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczog QWJzb2x1dGUgc3ltYm9sOiAlcyA9PiAlIyJQUkl4RWxmQWRkciJcbiIsCisgICAgICAgICAgICAg ICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwgc3ltLT5zdF92YWx1ZSk7CisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogU0hOX0NP TU1PTiBhbmQgU0hOX0FCUyBhcmUgYWJvdmUuICovCisgICAgICAgICAgICBpZiAoIGlkeCA+PSBT SE5fTE9SRVNFUlZFICkKKyAgICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAg ICAgICAgZWxzZSBpZiAoIGlkeCA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOworCisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBPdXQgb2Yg Ym91bmRzIHN5bWJvbCBzZWN0aW9uICUjeFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs Zi0+bmFtZSwgaWR4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgLyogTWF0Y2hlcyAnbW92ZV9wYXlsb2FkJyB3aGljaCBpZ25vcmVzIHN1Y2gg c2VjdGlvbnMuICovCisgICAgICAgICAgICBpZiAoICEoZWxmLT5zZWNbaWR4XS5zZWMtPnNoX2Zs YWdzICYgU0hGX0FMTE9DKSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg IHN0X3ZhbHVlICs9ICh1bnNpZ25lZCBsb25nKWVsZi0+c2VjW2lkeF0ubG9hZF9hZGRyOworICAg ICAgICAgICAgaWYgKCBlbGYtPnN5bVtpXS5uYW1lICkKKyAgICAgICAgICAgICAgICBkcHJpbnRr KFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFN5bWJvbCByZXNvbHZlZDogJXMgPT4gJSMiUFJJ eEVsZkFkZHIiICglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxm LT5zeW1baV0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RfdmFsdWUsIGVsZi0+c2Vj W2lkeF0ubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgICgoRWxmX1N5bSAqKXN5bSktPnN0X3ZhbHVlID0gc3RfdmFsdWU7 CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgeHNwbGljZV9lbGZfcGVyZm9ybV9y ZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgc3RydWN0IHhzcGxpY2VfZWxm X3NlYyAqciwgKmJhc2U7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IHJjID0gMDsKKwor ICAgIEFTU0VSVChlbGYtPnN5bSk7CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5l X3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgciA9ICZlbGYtPnNlY1tpXTsKKworICAgICAg ICBpZiAoIChyLT5zZWMtPnNoX3R5cGUgIT0gU0hUX1JFTEEpICYmCisgICAgICAgICAgICAgKHIt PnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMKSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg ICAgICAgLyogSXMgaXQgYSB2YWxpZCByZWxvY2F0aW9uIHNlY3Rpb24/ICovCisgICAgICAgICBp ZiAoIHItPnNlYy0+c2hfaW5mbyA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICAgYmFzZSA9ICZlbGYtPnNlY1tyLT5zZWMtPnNoX2luZm9dOwor CisgICAgICAgICAvKiBEb24ndCByZWxvY2F0ZSBub24tYWxsb2NhdGVkIHNlY3Rpb25zLiAqLwor ICAgICAgICAgaWYgKCAhKGJhc2UtPnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggci0+c2VjLT5zaF9saW5rICE9IGVsZi0+ c3ltdGFiX2lkeCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwg WFNQTElDRSAiJXM6IFJlbGF0aXZlIGxpbmsgb2YgJXMgaXMgaW5jb3JyZWN0ICglZCwgZXhwZWN0 ZWQ9JWQpXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHItPm5hbWUsIHItPnNl Yy0+c2hfbGluaywgZWxmLT5zeW10YWJfaWR4KTsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByLT5zZWMtPnNo X3R5cGUgPT0gU0hUX1JFTEEgKQorICAgICAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2VfcGVyZm9y bV9yZWxhKGVsZiwgYmFzZSwgcik7CisgICAgICAgIGVsc2UgLyogU0hUX1JFTCAqLworICAgICAg ICAgICAgcmMgPSBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoZWxmLCBiYXNlLCByKTsKKworICAg ICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKwogc3RhdGljIGludCB4c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZikKIHsKICAgICBjb25zdCBFbGZfRWhkciAqaGRyID0gZWxmLT5oZHI7Cisg ICAgaW50IHJjOwogCiAgICAgaWYgKCBzaXplb2YoKmVsZi0+aGRyKSA+IGVsZi0+bGVuICkKICAg ICB7CkBAIC0yNzksNiArMzkzLDEwIEBAIHN0YXRpYyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2so Y29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKICAgICB9CiAKKyAgICByYyA9IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGVsZik7CisgICAg aWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKwogICAgIGlmICggZWxmLT5oZHItPmVfc2hz dHJuZHggPT0gU0hOX1VOREVGICkKICAgICB7CiAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwg WFNQTElDRSAiJXM6IFNlY3Rpb24gbmFtZSBpZHggaXMgdW5kZWZpbmVkIT9cbiIsCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIveGVuL2luY2x1ZGUveGVuL2VsZnN0 cnVjdHMuaAppbmRleCA4NWYzNWVkLi4yYjliZDNmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94 ZW4vZWxmc3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKQEAgLTQ3 Miw2ICs0NzIsOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRUxG U0laRSkgJiYgKEVMRlNJWkUgPT0gMzIpCisjZGVmaW5lIFBSSXhFbGZBZGRyCSIwOHgiCisKICNk ZWZpbmUgRWxmX0VoZHIJRWxmMzJfRWhkcgogI2RlZmluZSBFbGZfUGhkcglFbGYzMl9QaGRyCiAj ZGVmaW5lIEVsZl9TaGRyCUVsZjMyX1NoZHIKQEAgLTQ5Nyw2ICs0OTksOCBAQCB0eXBlZGVmIHN0 cnVjdCB7CiAKICNkZWZpbmUgQXV4SW5mbwkJQXV4MzJJbmZvCiAjZWxpZiBkZWZpbmVkKEVMRlNJ WkUpICYmIChFTEZTSVpFID09IDY0KQorI2RlZmluZSBQUkl4RWxmQWRkcglQUkl4NjQKKwogI2Rl ZmluZSBFbGZfRWhkcglFbGY2NF9FaGRyCiAjZGVmaW5lIEVsZl9QaGRyCUVsZjY0X1BoZHIKICNk ZWZpbmUgRWxmX1NoZHIJRWxmNjRfU2hkcgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hz cGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggNzU1OTg3Ny4uODU3YzI2 NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4veHNwbGljZS5oCkBAIC02LDYgKzYsOSBAQAogI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hf XwogI2RlZmluZSBfX1hFTl9YU1BMSUNFX0hfXwogCitzdHJ1Y3QgeHNwbGljZV9lbGY7CitzdHJ1 Y3QgeHNwbGljZV9lbGZfc2VjOworc3RydWN0IHhzcGxpY2VfZWxmX3N5bTsKIHN0cnVjdCB4ZW5f c3lzY3RsX3hzcGxpY2Vfb3A7CiAKICNpZmRlZiBDT05GSUdfWFNQTElDRQpAQCAtMTUsNiArMTgs MjcgQEAgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsKIAogaW50IHhzcGxpY2Vfb3Aoc3Ry dWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKIAorLyogQXJjaCBob29rcy4gKi8KK2ludCBh cmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7Citp bnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpi YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpyZWxhKTsKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpOworZW51bSB2YV90eXBlIHsKKyAgICBY U1BMSUNFX1ZBX1JYLCAvKiAudGV4dCAqLworICAgIFhTUExJQ0VfVkFfUlcsIC8qIC5kYXRhICov CisgICAgWFNQTElDRV9WQV9STywgLyogLnJvZGF0YSAqLworfTsKKworLyoKKyAqIEZ1bmN0aW9u IHRvIHNlY3VyZSB0aGUgYWxsb2NhdGUgcGFnZXMgKGZyb20gYXJjaF94c3BsaWNlX2FsbG9jX3Bh eWxvYWQpCisgKiB3aXRoIHRoZSByaWdodCBwYWdlIHBlcm1pc3Npb25zLgorICovCitpbnQgYXJj aF94c3BsaWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVt IHZhX3R5cGUgdHlwZXMpOworCit2b2lkIGFyY2hfeHNwbGljZV9pbml0KHZvaWQpOwogI2Vsc2UK IAogI2luY2x1ZGUgPHhlbi9lcnJuby5oPiAvKiBGb3IgLUVOT1NZUyAqLwpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9l bGYuaAppbmRleCA2ODZhYWYwLi43NTBkYzk0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4v eHNwbGljZV9lbGYuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaApAQCAtMTUs NiArMTUsOCBAQCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcy4gKi8KICAg ICBjb25zdCB2b2lkICpkYXRhOyAgICAgICAgICAgICAgICAgICAgLyogUG9pbnRlciB0byB0aGUg c2VjdGlvbiAoZG9uZSBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9ucykuICovCisgICAgdm9pZCAqbG9hZF9hZGRyOyAgICAg ICAgICAgICAgICAgICAgIC8qIEEgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGRlc3RpbmF0aW9u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb25lIGJ5IGxv YWRfcGF5bG9hZF9kYXRhLiAqLwogfTsKIAogc3RydWN0IHhzcGxpY2VfZWxmX3N5bSB7CkBAIC0y OSw4ICszMSwxMCBAQCBzdHJ1Y3QgeHNwbGljZV9lbGYgewogICAgIHN0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgKnNlYzsgICAgICAgICAvKiBBcnJheSBvZiBzZWN0aW9ucywgYWxsb2NhdGVkIGJ5IHVz LiAqLwogICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gKnN5bTsgICAgICAgICAvKiBBcnJheSBv ZiBzeW1ib2xzICwgYWxsb2NhdGVkIGJ5IHVzLiAqLwogICAgIHVuc2lnbmVkIGludCBuc3ltOwot ICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN5bXRhYjsvKiBQb2ludGVyIHRvIC5z eW10YWIgc2VjdGlvbiAtIGFrYSB0byBzZWNbeF0uICovCi0gICAgY29uc3Qgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyAqc3RydGFiOy8qIFBvaW50ZXIgdG8gLnN0cnRhYiBzZWN0aW9uIC0gYWthIHRv IHNlY1t5XS4gKi8KKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7Lyog UG9pbnRlciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VjW3N5bXRhYl9pZHhdLiAqLworICAgIGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN0cnRhYjsvKiBQb2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlv bi4gKi8KKyAgICB1bnNpZ25lZCBpbnQgc3ltdGFiX2lkeDsKIH07CiAKIGNvbnN0IHN0cnVjdCB4 c3BsaWNlX2VsZl9zZWMgKnhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLApAQCAtMzgsNiArNDIsOSBAQCBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKgog aW50IHhzcGxpY2VfZWxmX2xvYWQoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQg KmRhdGEpOwogdm9pZCB4c3BsaWNlX2VsZl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsK IAoraW50IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs Zik7CitpbnQgeHNwbGljZV9lbGZfcGVyZm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICpl bGYpOworCiAjZW5kaWYgLyogX19YRU5fWFNQTElDRV9FTEZfSF9fICovCiAKIC8qCi0tIAoyLjUu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==