From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v9 11/27] xsplice: Implement payload loading Date: Wed, 27 Apr 2016 14:40:06 -0400 Message-ID: <20160427184000.GA17114@x230.dumpdata.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-12-git-send-email-konrad.wilk@oracle.com> <571F8B9F02000078000E5E09@prv-mh.provo.novell.com> <20160427032857.GD26540@localhost.localdomain> <5720943902000078000E632B@prv-mh.provo.novell.com> <20160427154825.GD26384@x230.dumpdata.com> <5721017C02000078000E6775@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avUOc-0000jn-U2 for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 18:41:11 +0000 Content-Disposition: inline In-Reply-To: <5721017C02000078000E6775@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Stefano Stabellini , Keir Fraser , ross.lagerwall@citrix.com, andrew.cooper3@citrix.com, mpohlack@amazon.de, Julien Grall , sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBBcHIgMjcsIDIwMTYgYXQgMTA6MTQ6MjBBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDI3LjA0LjE2IGF0IDE3OjQ4LCA8a29ucmFkQGtlcm5lbC5vcmc+IHdyb3Rl Ogo+ID4gK2ludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxm ICplbGYpCj4gPiArewo+ID4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiA+ICsgICAgaW50IHJjID0g MDsKPiA+ICsKPiA+ICsgICAgQVNTRVJUKGVsZi0+c3ltKTsKPiA+ICsKPiA+ICsgICAgZm9yICgg aSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHVuc2ln bmVkIGludCBpZHggPSBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4Owo+ID4gKyAgICAgICAgY29u c3QgRWxmX1N5bSAqc3ltID0gZWxmLT5zeW1baV0uc3ltOwo+ID4gKyAgICAgICAgdW5zaWduZWQg bG9uZyBzdF92YWx1ZSA9IHN5bS0+c3RfdmFsdWU7Cj4gCj4gQmV0dGVyIHRvIHVzZSBFbGZfQWRk ciBoZXJlLgoKL21lIG5vZHMuCgpJIGhhZG4ndCByZWNlaXZlZCBhbnkgb3RoZXIgZW1haWxzIHNv IGhvcGVmdWxseSB0aGF0IHdhcyB0aGUgb25seQpyZW1haW5pbmcgaXNzdWUuIEhlcmUgaXMgdGhl IHVwZGF0ZWQgcGF0Y2g6CgoKRnJvbSA3NDFjNzdmMmRkMGQ5Njc3ZWQ0NGEyMGM5YzQzYWEwNmFl ZDVkODgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb3NzIExhZ2Vyd2FsbCA8cm9z cy5sYWdlcndhbGxAY2l0cml4LmNvbT4KRGF0ZTogV2VkLCAyNyBBcHIgMjAxNiAwOTowMTo1MSAt MDQwMApTdWJqZWN0OiBbUEFUQ0hdIHhzcGxpY2U6IEltcGxlbWVudCBwYXlsb2FkIGxvYWRpbmcK CkFkZCBzdXBwb3J0IGZvciBsb2FkaW5nIHhzcGxpY2UgcGF5bG9hZHMuIFRoaXMgaXMgc29tZXdo YXQgc2ltaWxhciB0bwp0aGUgTGludXgga2VybmVsIG1vZHVsZSBsb2FkZXIsIGltcGxlbWVudGlu ZyB0aGUgZm9sbG93aW5nIHN0ZXBzOgotIFZlcmlmeSB0aGUgZWxmIGZpbGUuCi0gUGFyc2UgdGhl IGVsZiBmaWxlLgotIEFsbG9jYXRlIGEgcmVnaW9uIG9mIG1lbW9yeSBtYXBwZWQgd2l0aGluIGEg ZnJlZSBhcmVhIG9mCiAgW3hlbl92aXJ0X2VuZCwgWEVOX1ZJUlRfRU5EXS4KLSBDb3B5IGFsbG9j YXRlZCBzZWN0aW9ucyBpbnRvIHRoZSBuZXcgcmVnaW9uLiBTcGxpdCB0aGVtIGluIHRocmVlCiAg cmVnaW9ucyAtIC50ZXh0LCAuZGF0YSwgYW5kIC5yb2RhdGEuIE1VU1QgaGF2ZSBhdCBsZWFzdCAu dGV4dC4KLSBSZXNvbHZlIHNlY3Rpb24gc3ltYm9scy4gQWxsIG90aGVyIHN5bWJvbHMgbXVzdCBi ZSBhYnNvbHV0ZSBhZGRyZXNzZXMuCiAgKE5vdGUgdGhhdCBwYXRjaCB0aXRsZWQgInhzcGxpY2Us c3ltYm9sczogSW1wbGVtZW50IHN5bWJvbCBuYW1lIHJlc29sdXRpb24KICAgb24gYWRkcmVzcyIg aW1wbGVtZW50cyB0aGF0KQotIFBlcmZvcm0gcmVsb2NhdGlvbnMuCi0gU2VjdXJlIHRoZSB0aGUg cmVnaW9ucyAoLnRleHQsLmRhdGEsLnJvZGF0YSkgd2l0aCBwcm9wZXIgcGVybWlzc2lvbnMuCgpX ZSBjYXBpdGFsaXplIG9uIHRoZSB2bWFsbG9jIGNhbGxiYWNrIEFQSSAoc2VlIHBhdGNoIHRpdGxl ZDoKInJtL3g4Ni92bWFwOiBBZGQgdlt6fG1dYWxsb2NfeGVuLCBhbmQgdm1faW5pdF90eXBlIikg dG8gYWxsb2NhdGUKYSByZWdpb24gb2YgbWVtb3J5IHdpdGhpbiB0aGUgW3hlbl92aXJ0X2VuZCwg WEVOX1ZJUlRfRU5EXSBmb3IgdGhlIGNvZGUuCgpXZSBhbHNvIHVzZSB0aGUgIng4Ni9tbTogSW50 cm9kdWNlIG1vZGlmeV94ZW5fbWFwcGluZ3MoKSIKdG8gY2hhbmdlIHRoZSB2aXJ0dWFsIGFkZHJl c3MgcGFnZS10YWJsZSBwZXJtaXNzaW9ucy4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxs IDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1 dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwg PGp1bGllbi5ncmFsbEBhcm0uY29tPgoKLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29t PgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGlj aEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ Cgp2MjogLSBDaGFuZ2UgdGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlvdXQv c2l6ZS4KICAgIC0gQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4KICAg IC0gTW92ZSBlbGZfcmVzb2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxlLgog ICAgLSBQcmludCB0aGUgcGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVyLgp2 MzoKICAgIC0gTWFrZSBpdCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91dCB1 c2luZyB0aGUgcmV0dXJuXyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KICAgIC0g QWRkIHRoZSBfcmV0dXJuIG1hY3JvIGJhY2sgLSBidXQgb25seSB1c2UgaXQgZHVyaW5nIGRlYnVn IGJ1aWxkcy4KICAgIC0gUmVtb3ZlIHRoZSBtYWNybywgcHJlZml4IGFyY2hfIG9uIGFyY2ggc3Bl Y2lmaWMgY2FsbHMuCnY0OgogICAgLSBNb3ZlIGFsbG9jX3BheWxvYWQgdG8gYXJjaCBzcGVjaWZp YyBmaWxlLgogICAgLSBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90LCB1c2UgY29uc3QKICAg IC0gQWRkIGNvcHlyaWdodHMKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFTU0VS VC4gQ2hhbmdlIHdoaWxlIHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJvciBs b29wCiAgIC0gVXNlIHZtYWxsb2MvdmZyZWUgY2IgQVBJcwogICAtIFNlY3VyZSAudGV4dCBwYWdl cyB0byBiZSBSWCBpbnN0ZWFkIG9mIFJXWC4KdjU6CiAgLSBGaXggYWxsb2NhdGlvbiBvZiB2aXJ0 dWFsIGFkZHJlc3NlcyBvbmx5IGFsbG93aW5nIG9uZSBwYWdlIHRvIGJlIGFsbG9jYXRlZC4KICAt IENyZWF0ZSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhIHJlZ2lvbnMgd2l0aCBkaWZmZXJlbnQg cGVybWlzc2lvbnMuCiAgLSBNYWtlIHRoZSBmaW5kX3NwYWNlX3Qgbm90IGEgdHlwZWRlZiB0byBw b2ludGVyIHRvIGEgZnVuY3Rpb24uCiAgLSBBbGxvY2F0ZSBtZW1vcnkgaW4gaGVyZS4KdjY6IERy b3AgcGFyZW50aGVzZXMgb24gdHlwZWRlZnMuCiAgLSBzL2FuIHhTcGxpY2UvYSB4U3BsaWNlLwog IC0gUmViYXNlIG9uICJ2bWFwOiBBZGQgdm1hbGxvY19jYiIKICAtIFJlYmFzZSBvbiAidm1hcDog QWRkIHZtYWxsb2NfdHlwZSBhbmQgdm1faW5pdF90eXBlIgogIC0gcy91aW50OF90L3ZvaWQvIG9u IGxvYWRfYWRkcgogIC0gU2V0IHhzcGxpY2VfZWxmIG9uIHN0YWNrIHdpdGhvdXQgdXNpbmcgbWVt c2V0Lgp2NzoKICAtIENoYW5nZWQgdGhlIGNoZWNrIG9uIGRlbHRhID0gZWxmLT5oZHItPmVfc2hv ZmYgKyBlbGYtPmhkci0+ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKICAgIFRoZSBz ZWN0aW9ucyBjYW4gYmUgcmlnaHQgYXQgdGhlIGJhY2sgb2YgdGhlIGZpbGUgKGRpZmZlcmVudCBs aW5rZXIhKSwgc28gdGhlIGZhaWxpbmcgY29uZGl0aW9uYWwKICAgIGZvciAnaWYgKGRlbHRhID49 IGVsZi0+bGVuKScgaXMgaW5jb3JyZWN0IGFuZCBzaG91bGQgaGF2ZSBiZWVuICc+Jy4KICAtIENo YW5nZWQgZHByaW50ayhYRU5MT0dfREVCVUcgdG8gWEVOTE9HX0VSUiwgdGhlbiBiYWNrIHRvIERF QlVHLiBDb252ZXJ0ZWQKICAgIHNvbWUgb2YgdGhlIHByaW50ayB0byBkcHJpbnRrLgogIC0gUmVi YXNlIG9uICIgYXJtL3g4Ni92bWFwOiBBZGQgdm1hbGxvY194ZW4sIHZmcmVlX3hlbiBhbmQgdm1f aW5pdF90eXBlIgogIC0gQ2hhbmdlZCBzb21lIG9mIHRoZSBwcmludGsgWEVOTE9HX0VSUiB0byBY RU5MT0dfREVCVUcKICAtIENoZWNrIHRoZSBpZHggaW4gdGhlIHJlbG9jYXRpb24gdG8gbWFrZSBz dXJlIGl0IGlzIHdpdGhpbiBib3VuZHMgYW5kCiAgICBpbXBsZW1lbnRlZC4KICAtIFVzZSAieDg2 L21tOiBJbnRyb2R1Y2UgbW9kaWZ5X3hlbl9tYXBwaW5ncygpIgogIC0gSW50cm9kdWNlIFBSSXhF bGZBZGRyCiAgLSBDaGVjayBmb3Igb3ZlcmZsb3cgaW4gUl9YODZfNjRfUEMzMgogIC0gUmV0dXJu IC1FT1BOT1RTVVBQIGlmIHdlIGRvbid0IHN1cHBvcnQgdHlwZXMgaW4gRUxGNjRfUl9UWVBFCnY4 OgogIC0gQ2hhbmdlIGRwcmludGsgYW5kIHByaW50ayBYRU5MT0dfREVCVUcgdG8gWEVOTE9HX0VS UgogIC0gQ29udmVydCBmb3VyIG9mIHRoZSBwcmludGtzIGluIGRwcmludGsuCnY5OgogIC0gUmVi YXNlIG9uIGRpZmZlcmVudCBzcGlubG9jayB1c2FnZSBpbiB4c3BsaWNlX3VwbG9hZC4KICAtIERv IHByb3BlciBib3VuZCBhbmQgb3ZlcmZsb3cgY2hlY2tpbmcuCiAgLSBBZGRlZCAnY29uc3QnIG9u IFt0ZXh0LHJvLHJ3XV9hZGRyLgogIC0gTWFkZSAnY2FsY19zZWN0aW9uJyBhbmQgJ21vdmVfcGF5 bG9hZCcgdXNlIGFuIGR5bmFtaWNhbGx5CiAgICBhbGxvY2F0ZWQgYXJyYXkgZm9yIGNvbXB1dGVk IG9mZnNldHMgaW5zdGVhZCBvZiBtb2RpZnlpbmcgc2hfZW50c2l6ZS4KICAtIFJlbW92ZSBhcmNo X3hzcGxpY2VfW2FsbG9jX3BheWxvYWR8ZnJlZV0gYW5kIHVzZSB2emFsbG9jX3hlbiBhbmQKICAg IHZmcmVlLgogIC0gQ29sbGFwc2UgZm9yIGxvb3AgaW4gbW92ZV9wYXlsb2FkLgogIC0gTW92ZSB4 c3BsaWNlLm8gaW4gTWFrZWZpbGUKICAtIEFkZCBtb3JlIGNoZWNrcyBpbiBhcmNoX3hzcGxpY2Vf cGVyZm9ybV9yZWxhIChyX29mZnNldCBhbmQKICAgICBzaF9zaXplICUgc2hfZW50c2l6ZSkKICAt IFVzZSBpbnQzMl90IGFuZCBpbnQ2NF90IGluIGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEuCiAg LSBUaWdodGVuIHRoZSBsaXN0IG9mIHNoX2ZsYWdzIHdlIGNoZWNrCiAgLSBVc2UgaW50ZXJtZWRp YXRlIG9uICdidWYnIHNvIHRoYXQgd2UgY2FuIGRvICdjb25zdCB2b2lkIConCiAgLSBVc2UgaW50 ZXJtZWRpYXRlIGluIHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyBmb3IgJ2NvbnN0JyBvZiBl bGYtPnN5bS4KICAtIEZhaWwgaWYgKGFuZCBvbmx5KSBTSEZfQUxMT0MgYW5kIFNIVF9OT0JJVFMg c2VjdGlvbiBpcyBzZWVuLgp2MTA6CiAgIC0gRHJvcHBlZCBBbmRyZXcncyBSZXZpZXdlZC1ieQog ICAtIEV4cGFuZCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZiB0byBjaGVjayBFSV9DTEFTUyBhbmQg RUlfQUJJVkVSU0lPTgogICAtIEluIGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEgZHJvcCBjaGVj ayBhZ2FpbnN0ICFyZWxhLT5zZWMtPnNoX2VudHNpemUsCiAgICAgYWRkIGV4dHJhIGNoZWNrcyBh Z2FpbnN0IHJfb2Zmc2V0ICsgc2l6ZW9mKHR5cGUpIG5lY2Nlc3NhdGluZwogICAgIGFuIGV4dHJh IGdvdG8gc3RhdGVtZW50LgogICAtIE1ha2UgYXJjaF94c3BsaWNlX2luaXQgYmUgX19pbml0Lgog ICAtIEluIGZyZWVfcGF5bG9hZF9kYXRhIGNoZWNrIGFnYWluc3QgLT5wYWdlcyBpbnN0ZWFkIG9m IC0+dGV4dF9hZGRyLgogICAtIEluIG1vdmVfcGF5bG9hZCB1c2UgJ3ZvaWQgKicgaW5zdGVhZCBv ZiAndWludDhfdCAqJywgdXNlIHhtYWxsb2NfYXJyYXkKICAgICBmb3Igb2Zmc2V0LCBleHBhbmQg b24gdGhlICdEbyBOb3RoaW5nJyBjb21tZW50IGFuZCB0aGUgJ0lnbm9yaW5nJzsKICAgICBVc2Ug dm1hbGxvYyBpbnN0ZWFkIG9mIHZ6YWxsb2MgLSB3aGljaCBtZWFucyBmb3IgLmJzcyB3ZSBhbHNv IHVzZQogICAgIG1lbXNldDsgZHJvcCB0aGUgdW5hcnkgKyB3aGVuIGNhbGN1bGF0aW5nIGFkZHJl c3MgZm9yIHJ3X2J1ZjsKICAgICBGaXggaW5kZW50aW9uIChJIGhvcGU/IEkgZG9uJ3Qgc2VlIGFu IGlzc3VlKTsgYWxzbyB1c2Ugb2Zmc2V0W2ldID1VSU5UX01BWAogICAgIGZvciBzZWN0aW9ucyB3 ZSBhcmUgbm90IGdvaW5nIHRvIGFsbG9jYXRlIG9yIG1lbWNweSAtIGFuZCBhc3NlcnQgaWYKICAg ICB3ZSBkbyBoaXQgdGhvc2UuCiAgIC0gSW4geHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzIG1v dmUgY2hlY2sgYWdhaW5zdAogICAgICEoZWxmLT5zZWNbaWR4XS5zZWMtPnNoX2ZsYWdzICYgU0hG X0FMTE9DKSBiYWNrIHRvIHdoYXQgaXQgd2FzCiAgICAgaW4gdjguCiAgIC0gSW4geHNwbGljZV9l bGZfcGVyZm9ybV9yZWxvY3MgZHJvcCBjb21tZW50IGFib3V0IGZpcnN0IEVMRgogICAgIHN5bWJv bC4KICAgLSBEaWZmZXJlbnQgaWYvZWxzZSBpZiBpbiB1cGxvYWQgZnVuY3Rpb24uCnYxMC4xIC0g cGF0Y2ggcG9zdGVkIGFzIGlubGluZSByZXBseSB3aXRoaW4gdjkgcGF0Y2hzZXQ6CiAgIC0gQWRk IGNoZWNrIGZvciBFSV9EQVRBIGFuZCBkaXRjaCBFSV9BQklWRVJTSU9OIG91dCBvZiBwbGF0Zm9y bSBzcGVjaWZpYyBjaGVja3MuCiAgIC0gSW4gZWxmX3Jlc29sdmVfc3ltYm9scyB1c2UgY29uc3Qg RWxmU3ltIGFuZCB0ZW1wb3JhcnkgdmFyaWFibGUgKHN0X3ZhbHVlKQogICAgIHdoaWNoIGlzIHVz ZWQgdG8gc2V0IHZhbHVlIGluIGNvbnN0IChhbmQgb25seSBpbiBvbmUgcGxhY2Ugd2lsbCB3ZQog ICAgIHVuY29uc3QgdGhlIHN5bSk7IGNoYW5nZSAlIyJQUkl4Li4iIHRvICN4IG9yICNseCB0eXBl cyBhcyB3ZSBkb24ndCB1c2UgRWxmCiAgICAgdHlwZXMgYW55bW9yZS4KICAgLSBNYWtlIHRoZSBy X29mZnNldCBjaGVjayBiZSB3aXRoaW4gc3dpdGNoIHN0YXRlbWVudHMgdG8gZ3VhcmQgYWdhaW5z dCBOT05FCiAgICAgcmVsb2NhdGlvbnMuCiAgIC0gRml4IHRoZSAnZWxzZSBpZicgc3BhY2luZyBp c3N1ZTsKICAgLSBVc2UgZGlmZmVyZW50IG1lc3NhZ2Ugd2hlbiBpZHggaW4gc3ltYm9scyBpcyBv dXQgb2YgYm91bmRzLgp2MTAuMiAtIHBhdGNoIHBvc3RlZCBhcyBpbmxpbmUgcmVwbHkgd2l0aGlu IHRoZSB2MTAuMSBhYm92ZS4KICAgLSBJbiAnbW92ZV9wYXlsb2FkJyBzaW1wbGlmeSBsb29wIGNh bGN1bGF0aW5nIHNpemUuCiAgIC0gSW4geHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzIHVzZSBF bGZfQWRkciBpbnN0ZWFkIG9mIHVuc2lnbmVkIGxvbmcuCiAgICAgQWxzbyB1c2UgJSMiUFJJeCIg dG8gd29yayBvbiBBUk0zMgotLS0KIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgIHwgICAx ICsKIHhlbi9hcmNoL2FybS94c3BsaWNlLmMgICAgICAgIHwgIDQ2ICsrKysrKysrKwogeGVuL2Fy Y2gveDg2L01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3hzcGxpY2UuYyAg ICAgICAgfCAxNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi94 c3BsaWNlLmMgICAgICAgICAgfCAyMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgICAgICB8IDExOCArKysrKysrKysr KysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmggIHwgICA0ICsKIHhlbi9p bmNsdWRlL3hlbi94c3BsaWNlLmggICAgIHwgIDI0ICsrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNw bGljZV9lbGYuaCB8ICAxMSArLQogOSBmaWxlcyBjaGFuZ2VkLCA2MDYgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0veHNwbGljZS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3hzcGxpY2UuYwoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCAwMzI4 YjUwLi5lYWU1Y2IzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIveGVu L2FyY2gvYXJtL01ha2VmaWxlCkBAIC00MCw2ICs0MCw3IEBAIG9iai15ICs9IGRldmljZS5vCiBv YmoteSArPSBkZWNvZGUubwogb2JqLXkgKz0gcHJvY2Vzc29yLm8KIG9iai15ICs9IHNtYy5vCitv YmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAKICNvYmotYmluLXkgKz0gLi4uLm8K IApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3hzcGxpY2UuYyBiL3hlbi9hcmNoL2FybS94c3Bs aWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNiNzc2NwotLS0gL2Rl di9udWxsCisrKyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKQEAgLTAsMCArMSw0NiBAQAorLyoK KyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworI2lu Y2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVu L2xpYi5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgorI2luY2x1ZGUgPHhlbi94c3Bs aWNlLmg+CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworaW50IGFyY2hfeHNwbGlj ZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkK K3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3Jl bGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBy ZXR1cm4gLUVOT1NZUzsKK30KKworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qgdm9pZCAq dmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUpCit7CisgICAgcmV0dXJu IC1FTk9TWVM7Cit9CisKK3ZvaWQgX19pbml0IGFyY2hfeHNwbGljZV9pbml0KHZvaWQpCit7Cit9 CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQt dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01h a2VmaWxlIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDcyOTA2NWIuLmY3NGZkMmMgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZp bGUKQEAgLTYxLDYgKzYxLDcgQEAgb2JqLXkgKz0geDg2X2VtdWxhdGUubwogb2JqLXkgKz0gdGJv b3Qubwogb2JqLXkgKz0gaHBldC5vCiBvYmoteSArPSB2bV9ldmVudC5vCitvYmotJChDT05GSUdf WFNQTElDRSkgKz0geHNwbGljZS5vCiBvYmoteSArPSB4c3RhdGUubwogCiBvYmotJChjcmFzaF9k ZWJ1ZykgKz0gZ2Ric3R1Yi5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveHNwbGljZS5jIGIv eGVuL2FyY2gveDg2L3hzcGxpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44MjYxOGY3Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwpAQCAt MCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBS JkQgTHRkLgorICovCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vaW5p dC5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRl IDx4ZW4vcGZuLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGlj ZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitpbnQgYXJjaF94c3BsaWNlX3Zl cmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisKKyAgICBjb25zdCBF bGZfRWhkciAqaGRyID0gZWxmLT5oZHI7CisKKyAgICBpZiAoIGhkci0+ZV9tYWNoaW5lICE9IEVN X1g4Nl82NCB8fAorICAgICAgICAgaGRyLT5lX2lkZW50W0VJX0NMQVNTXSAhPSBFTEZDTEFTUzY0 IHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfREFUQV0gIT0gRUxGREFUQTJMU0IgKQorICAg IHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogVW5zdXBwb3J0ZWQg RUxGIE1hY2hpbmUgdHlwZSFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAg ICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQg YXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpyZWxhKQoreworICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNIVF9S RUwgcmVsb2NhdGlvbiB1bnN1cHBvcnRlZFxuIiwKKyAgICAgICAgICAgIGVsZi0+bmFtZSk7Cisg ICAgcmV0dXJuIC1FT1BOT1RTVVBQOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVs YShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGNv bnN0IEVsZl9SZWxBICpyOworICAgIHVuc2lnbmVkIGludCBzeW1uZHgsIGk7CisgICAgdWludDY0 X3QgdmFsOworICAgIHVpbnQ4X3QgKmRlc3Q7CisKKyAgICAvKiBOb3RoaW5nIHRvIGRvLiAqLwor ICAgIGlmICggIXJlbGEtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgIHJldHVybiAwOworCisgICAg aWYgKCByZWxhLT5zZWMtPnNoX2VudHNpemUgPCBzaXplb2YoRWxmX1JlbEEpIHx8CisgICAgICAg ICByZWxhLT5zZWMtPnNoX3NpemUgJSByZWxhLT5zZWMtPnNoX2VudHNpemUgKQorICAgIHsKKyAg ICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiByZWxhdGl2ZSBo ZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IChyZWxh LT5zZWMtPnNoX3NpemUgLyByZWxhLT5zZWMtPnNoX2VudHNpemUpOyBpKysgKQorICAgIHsKKyAg ICAgICAgciA9IHJlbGEtPmRhdGEgKyBpICogcmVsYS0+c2VjLT5zaF9lbnRzaXplOworCisgICAg ICAgIHN5bW5keCA9IEVMRjY0X1JfU1lNKHItPnJfaW5mbyk7CisKKyAgICAgICAgaWYgKCBzeW1u ZHggPiBlbGYtPm5zeW0gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19F UlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSByZWxvY2F0aW9uIHdhbnRzIHN5bWJvbEAldSB3aGlj aCBpcyBwYXN0IGVuZCFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgc3ltbmR4 KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgZGVz dCA9IGJhc2UtPmxvYWRfYWRkciArIHItPnJfb2Zmc2V0OworICAgICAgICB2YWwgPSByLT5yX2Fk ZGVuZCArIGVsZi0+c3ltW3N5bW5keF0uc3ltLT5zdF92YWx1ZTsKKworICAgICAgICBzd2l0Y2gg KCBFTEY2NF9SX1RZUEUoci0+cl9pbmZvKSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBSX1g4 Nl82NF9OT05FOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX1g4Nl82NF82 NDoKKyAgICAgICAgICAgIGlmICggci0+cl9vZmZzZXQgPj0gYmFzZS0+c2VjLT5zaF9zaXplIHx8 CisgICAgICAgICAgICAgICAgKHItPnJfb2Zmc2V0ICsgc2l6ZW9mKHVpbnQ2NF90KSkgPiBiYXNl LT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX29mZnNldDsKKworICAg ICAgICAgICAgKih1aW50NjRfdCAqKWRlc3QgPSB2YWw7CisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBjYXNlIFJfWDg2XzY0X1BMVDMyOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAg ICAqIFhlbiB1c2VzIC1mcGljIHdoaWNoIG5vcm1hbGx5IHVzZXMgUExUIHJlbG9jYXRpb25zCisg ICAgICAgICAgICAgKiBleGNlcHQgdGhhdCBpdCBzZXRzIHZpc2liaWxpdHkgdG8gaGlkZGVuIHdo aWNoIG1lYW5zCisgICAgICAgICAgICAgKiB0aGF0IHRoZXkgYXJlIG5vdCB1c2VkLiAgSG93ZXZl ciwgd2hlbiBnY2MgY2Fubm90CisgICAgICAgICAgICAgKiBpbmxpbmUgbWVtY3B5IGl0IGVtaXRz IG1lbWNweSB3aXRoIGRlZmF1bHQgdmlzaWJpbGl0eQorICAgICAgICAgICAgICogd2hpY2ggdGhl biBjcmVhdGVzIGEgUExUIHJlbG9jYXRpb24uICBJdCBjYW4ganVzdCBiZQorICAgICAgICAgICAg ICogdHJlYXRlZCB0aGUgc2FtZSBhcyBSX1g4Nl82NF9QQzMyLgorICAgICAgICAgICAgICovCisg ICAgICAgIGNhc2UgUl9YODZfNjRfUEMzMjoKKyAgICAgICAgICAgIGlmICggci0+cl9vZmZzZXQg Pj0gYmFzZS0+c2VjLT5zaF9zaXplIHx8CisgICAgICAgICAgICAgICAgKHItPnJfb2Zmc2V0ICsg c2l6ZW9mKHVpbnQzMl90KSkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgICAg IGdvdG8gYmFkX29mZnNldDsKKworICAgICAgICAgICAgdmFsIC09ICh1aW50NjRfdClkZXN0Owor ICAgICAgICAgICAgKihpbnQzMl90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGlmICggKGlu dDY0X3QpdmFsICE9ICooaW50MzJfdCAqKWRlc3QgKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IE92ZXJmbG93IGluIHJlbG9j YXRpb24gJXUgaW4gJXMgZm9yICVzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSwgaSwgcmVsYS0+bmFtZSwgYmFzZS0+bmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu IC1FT1ZFUkZMT1c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg ICBkZWZhdWx0OgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczog VW5oYW5kbGVkIHJlbG9jYXRpb24gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUsIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pKTsKKyAgICAgICAgICAgIHJldHVybiAtRU9QTk9U U1VQUDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworCisgYmFkX29mZnNldDoK KyAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSByZWxvY2F0aW9u IG9mZnNldCBpcyBwYXN0ICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgZWxmLT5uYW1lLCBi YXNlLT5uYW1lKTsKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworLyoKKyAqIE9uY2UgdGhlIHJl c29sdmluZyBzeW1ib2xzLCBwZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBldGMgaXMgY29tcGxldGUK KyAqIHdlIHNlY3VyZSB0aGUgbWVtb3J5IGJ5IHB1dHRpbmcgaW4gdGhlIHByb3BlciBwYWdlIHRh YmxlIGF0dHJpYnV0ZXMKKyAqIGZvciB0aGUgZGVzaXJlZCB0eXBlLgorICovCitpbnQgYXJjaF94 c3BsaWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZh X3R5cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp dmE7CisgICAgdW5zaWduZWQgaW50IGZsYWc7CisKKyAgICBBU1NFUlQodmEpOworICAgIEFTU0VS VChwYWdlcyk7CisKKyAgICBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SWCApCisgICAgICAgIGZs YWcgPSBQQUdFX0hZUEVSVklTT1JfUlg7CisgICAgZWxzZSBpZiAoIHR5cGUgPT0gWFNQTElDRV9W QV9SVyApCisgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlc7CisgICAgZWxzZQorICAg ICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JPOworCisgICAgbW9kaWZ5X3hlbl9tYXBwaW5n cyhzdGFydCwgc3RhcnQgKyBwYWdlcyAqIFBBR0VfU0laRSwgZmxhZyk7CisKKyAgICByZXR1cm4g MDsKK30KKwordm9pZCBfX2luaXQgYXJjaF94c3BsaWNlX2luaXQodm9pZCkKK3sKKyAgICB2b2lk ICpzdGFydCwgKmVuZDsKKworICAgIHN0YXJ0ID0gKHZvaWQgKil4ZW5fdmlydF9lbmQ7CisgICAg ZW5kID0gKHZvaWQgKikoWEVOX1ZJUlRfRU5EIC0gTlJfQ1BVUyAqIFBBR0VfU0laRSk7CisKKyAg ICBCVUdfT04oZW5kIDw9IHN0YXJ0KTsKKworICAgIHZtX2luaXRfdHlwZShWTUFQX1hFTiwgc3Rh cnQsIGVuZCk7Cit9CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9j b21tb24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggNzNlNTBmMC4uMTY4 OGM2YyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1vbi94 c3BsaWNlLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDx4ZW4vc21wLmg+CiAjaW5jbHVk ZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4v eHNwbGljZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCiAjaW5jbHVkZSA8YXNt L2V2ZW50Lmg+CkBAIC0yOSw2ICszMCwxMyBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgdWludDMy X3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIE9uZSBvZiB0aGUgWFNQTElDRV9TVEFU RV8qLiAqLwogICAgIGludDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwIG9y IC1YRU5fRVhYLiAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgICAgICAgICAgICAgICAv KiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICovCisgICAgY29uc3Qgdm9pZCAqdGV4dF9hZGRy OyAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAudGV4dC4gKi8KKyAgICBzaXpl X3QgdGV4dF9zaXplOyAgICAgICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplLiAqLwor ICAgIGNvbnN0IHZvaWQgKnJ3X2FkZHI7ICAgICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJl c3Mgb2YgLmRhdGEuICovCisgICAgc2l6ZV90IHJ3X3NpemU7ICAgICAgICAgICAgICAgICAgICAg IC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55KS4gKi8KKyAgICBjb25zdCB2b2lkICpyb19hZGRy OyAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC5yb2RhdGEuICovCisgICAg c2l6ZV90IHJvX3NpemU7ICAgICAgICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAo aWYgYW55KS4gKi8KKyAgICB1bnNpZ25lZCBpbnQgcGFnZXM7ICAgICAgICAgICAgICAgICAgLyog VG90YWwgcGFnZXMgZm9yIFt0ZXh0LHJ3LHJvXV9hZGRyICovCiAgICAgY2hhciBuYW1lW1hFTl9Y U1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBAIC04MywxOSAr OTEsMjIzIEBAIHN0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9wYXlsb2FkKGNvbnN0IGNoYXIg Km5hbWUpCiAgICAgcmV0dXJuIGZvdW5kOwogfQogCisvKgorICogRnVuY3Rpb25zIHJlbGF0ZWQg dG8gWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAoc2VlIHhzcGxpY2VfdXBsb2FkKSwgYW5kCisg KiBmcmVlaW5nIHBheWxvYWQgKFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT046WFNQTElDRV9BQ1RJ T05fVU5MT0FEKS4KKyAqLworCitzdGF0aWMgdm9pZCBmcmVlX3BheWxvYWRfZGF0YShzdHJ1Y3Qg cGF5bG9hZCAqcGF5bG9hZCkKK3sKKyAgICAvKiBTZXQgdG8gemVybyB1bnRpbCAibW92ZV9wYXls b2FkIi4gKi8KKyAgICBpZiAoICFwYXlsb2FkLT5wYWdlcyApCisgICAgICAgIHJldHVybjsKKwor ICAgIHZmcmVlKCh2b2lkICopcGF5bG9hZC0+dGV4dF9hZGRyKTsKKworICAgIHBheWxvYWQtPnBh Z2VzID0gMDsKK30KKworLyoKKyogY2FsY19zZWN0aW9uIGNvbXB1dGVzIHRoZSBzaXplICh0YWtp bmcgaW50byBhY2NvdW50IHNlY3Rpb24gYWxpZ25tZW50KS4KKyoKKyogRnVydGhlcm1vcmUgdGhl IG9mZnNldCBpcyBzZXQgd2l0aCB0aGUgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB2aXJ0 dWFsCisqIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBwYXlsb2FkICh1c2luZyBwYXNzZWQgaW4gc2l6 ZSkuIFRoaXMgaXMgdXNlZCBpbgorKiBtb3ZlX3BheWxvYWQgdG8gZmlndXJlIG91dCB0aGUgZGVz dGluYXRpb24gbG9jYXRpb24gKGxvYWRfYWRkcikuCisqLworc3RhdGljIHZvaWQgY2FsY19zZWN0 aW9uKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYywgc2l6ZV90ICpzaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb2Zmc2V0KQoreworICAgIGNvbnN0 IEVsZl9TaGRyICpzID0gc2VjLT5zZWM7CisgICAgc2l6ZV90IGFsaWduX3NpemU7CisKKyAgICBh bGlnbl9zaXplID0gUk9VTkRVUCgqc2l6ZSwgcy0+c2hfYWRkcmFsaWduKTsKKyAgICAqb2Zmc2V0 ID0gYWxpZ25fc2l6ZTsKKyAgICAqc2l6ZSA9IHMtPnNoX3NpemUgKyBhbGlnbl9zaXplOworfQor CitzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0 IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdm9pZCAqdGV4dF9idWYsICpyb19idWYsICpyd19i dWY7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIHVuc2ln bmVkIGludCAqb2Zmc2V0OworICAgIGludCByYyA9IDA7CisKKyAgICBvZmZzZXQgPSB4bWFsbG9j X2FycmF5KHVuc2lnbmVkIGludCwgZWxmLT5oZHItPmVfc2hudW0pOworICAgIGlmICggIW9mZnNl dCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgLyogQ29tcHV0ZSBzaXplIG9mIGRp ZmZlcmVudCByZWdpb25zLiAqLworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hu dW07IGkrKyApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBEbyBub3RoaW5nLiBUaGVz ZSBhcmUgLnJlbC50ZXh0LCByZWwuKiwgLnN5bXRhYiwgLnN0cnRhYiwKKyAgICAgICAgICogYW5k IC5zaHN0cnRhYi4gRm9yIHRoZSBub24tcmVsb2NhdGUgd2UgYWxsb2NhdGUgYW5kIGNvcHkgdGhl c2UKKyAgICAgICAgICogdmlhIG90aGVyIG1lYW5zIC0gYW5kIHRoZSAucmVsIHdlIGNhbiBpZ25v cmUgYXMgd2Ugb25seSB1c2UgaXQKKyAgICAgICAgICogb25jZSBkdXJpbmcgbG9hZGluZy4KKyAg ICAgICAgICovCisgICAgICAgIGlmICggIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hG X0FMTE9DKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIG9mZnNldFtpXSA9IFVJTlRfTUFYOwor ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAoZWxmLT5zZWNb aV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5TVFIpICYmCisgICAgICAgICAgICAgIShlbGYt PnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAgICAgICAgICBjYWxjX3Nl Y3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+dGV4dF9zaXplLCAmb2Zmc2V0W2ldKTsKKyAg ICAgICAgZWxzZSBpZiAoICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5T VFIpICYmCisgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxv YWQtPnJ3X3NpemUsICZvZmZzZXRbaV0pOworICAgICAgICBlbHNlIGlmICggIShlbGYtPnNlY1tp XS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAgICAgICEo ZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAgY2Fs Y19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQtPnJvX3NpemUsICZvZmZzZXRbaV0pOwor ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVH LCBYU1BMSUNFICIlczogTm90IHN1cHBvcnRpbmcgJXMgc2VjdGlvbiFcbiIsCisgICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSk7CisgICAgICAgICAgICByYyA9 IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisK KyAgICAvKgorICAgICAqIFRvdGFsIG9mIGFsbCB0aHJlZSByZWdpb25zIC0gUlgsIFJXLCBhbmQg Uk8uIFdlIGhhdmUgdG8gaGF2ZQorICAgICAqIGtlZXAgdGhlbSBpbiBzZXBlcmF0ZSBwYWdlcyBz byB3ZSBQQUdFX0FMSUdOIHRoZSBSWCBhbmQgUlcgdG8gaGF2ZQorICAgICAqIHRoZW0gb24gc2Vw ZXJhdGUgcGFnZXMuIFRoZSBsYXN0IG9uZSB3aWxsIGJ5IGRlZmF1bHQgZmFsbCBvbiBpdHMKKyAg ICAgKiBvd24gcGFnZS4KKyAgICAgKi8KKyAgICBzaXplID0gUEFHRV9BTElHTihwYXlsb2FkLT50 ZXh0X3NpemUpICsgUEFHRV9BTElHTihwYXlsb2FkLT5yd19zaXplKSArCisgICAgICAgICAgICAg ICAgICAgICAgcGF5bG9hZC0+cm9fc2l6ZTsKKworICAgIHNpemUgPSBQRk5fVVAoc2l6ZSk7IC8q IE5yIG9mIHBhZ2VzLiAqLworICAgIHRleHRfYnVmID0gdm1hbGxvY194ZW4oc2l6ZSAqIFBBR0Vf U0laRSk7CisgICAgaWYgKCAhdGV4dF9idWYgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5M T0dfRVJSLCBYU1BMSUNFICIlczogQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGF5bG9h ZCFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmMgPSAtRU5PTUVN OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgcndfYnVmID0gdGV4dF9idWYgKyBQQUdF X0FMSUdOKHBheWxvYWQtPnRleHRfc2l6ZSk7CisgICAgcm9fYnVmID0gcndfYnVmICsgUEFHRV9B TElHTihwYXlsb2FkLT5yd19zaXplKTsKKworICAgIHBheWxvYWQtPnBhZ2VzID0gc2l6ZTsKKyAg ICBwYXlsb2FkLT50ZXh0X2FkZHIgPSB0ZXh0X2J1ZjsKKyAgICBwYXlsb2FkLT5yd19hZGRyID0g cndfYnVmOworICAgIHBheWxvYWQtPnJvX2FkZHIgPSByb19idWY7CisKKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCBlbGYt PnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DICkKKyAgICAgICAgeworICAgICAgICAg ICAgdm9pZCAqYnVmOworCisgICAgICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxh Z3MgJiBTSEZfRVhFQ0lOU1RSICkKKyAgICAgICAgICAgICAgICBidWYgPSB0ZXh0X2J1ZjsKKyAg ICAgICAgICAgIGVsc2UgaWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRF ICkKKyAgICAgICAgICAgICAgICBidWYgPSByd19idWY7CisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgYnVmID0gcm9fYnVmOworCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0W2ld ICE9IFVJTlRfTUFYKTsKKworICAgICAgICAgICAgZWxmLT5zZWNbaV0ubG9hZF9hZGRyID0gYnVm ICsgb2Zmc2V0W2ldOworCisgICAgICAgICAgICAvKiBEb24ndCBjb3B5IE5PQklUUyAtIHN1Y2gg YXMgQlNTLiAqLworICAgICAgICAgICAgaWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX3R5cGUgIT0g U0hUX05PQklUUyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVtY3B5KGVsZi0+ c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5zZWNbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg ICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9zaXplKTsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhF TkxPR19ERUJVRywgWFNQTElDRSAiJXM6IExvYWRlZCAlcyBhdCAlcFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSwgZWxmLT5zZWNbaV0ubG9h ZF9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICBtZW1zZXQoZWxmLT5zZWNbaV0ubG9hZF9hZGRyLCAwLCBlbGYtPnNlY1tpXS5zZWMtPnNoX3Np emUpOworICAgICAgICB9CisgICAgfQorCisgb3V0OgorICAgIHhmcmVlKG9mZnNldCk7CisKKyAg ICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxv YWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIGludCByYzsKKyAg ICB1bnNpZ25lZCBpbnQgdGV4dF9wYWdlcywgcndfcGFnZXMsIHJvX3BhZ2VzOworCisgICAgdGV4 dF9wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIEFTU0VSVCh0ZXh0X3Bh Z2VzKTsKKworICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2FkLT50ZXh0X2FkZHIs IHRleHRfcGFnZXMsIFhTUExJQ0VfVkFfUlgpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1 cm4gcmM7CisKKyAgICByd19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yd19zaXplKTsKKyAgICBp ZiAoIHJ3X3BhZ2VzICkKKyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShw YXlsb2FkLT5yd19hZGRyLCByd19wYWdlcywgWFNQTElDRV9WQV9SVyk7CisgICAgICAgIGlmICgg cmMgKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJvX3BhZ2VzID0gUEZO X1VQKHBheWxvYWQtPnJvX3NpemUpOworICAgIGlmICggcm9fcGFnZXMgKQorICAgICAgICByYyA9 IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5bG9hZC0+cm9fYWRkciwgcm9fcGFnZXMsIFhTUExJQ0Vf VkFfUk8pOworCisgICAgQVNTRVJUKHJvX3BhZ2VzICsgcndfcGFnZXMgKyB0ZXh0X3BhZ2VzID09 IHBheWxvYWQtPnBhZ2VzKTsKKworICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIHZvaWQgZnJl ZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogewogICAgIEFTU0VSVChzcGluX2lzX2xv Y2tlZCgmcGF5bG9hZF9sb2NrKSk7CiAgICAgbGlzdF9kZWwoJmRhdGEtPmxpc3QpOwogICAgIHBh eWxvYWRfY250LS07CiAgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAgZnJlZV9wYXlsb2FkX2Rh dGEoZGF0YSk7CiAgICAgeGZyZWUoZGF0YSk7CiB9CiAKK3N0YXRpYyBpbnQgbG9hZF9wYXlsb2Fk X2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikKK3sK KyAgICBzdHJ1Y3QgeHNwbGljZV9lbGYgZWxmID0geyAubmFtZSA9IHBheWxvYWQtPm5hbWUsIC5s ZW4gPSBsZW4gfTsKKyAgICBpbnQgcmMgPSAwOworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9sb2Fk KCZlbGYsIHJhdyk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMg PSBtb3ZlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdv dG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoJmVsZik7Cisg ICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9w ZXJmb3JtX3JlbG9jcygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisK KyAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworCisgb3V0OgorICAgIGlm ICggcmMgKQorICAgICAgICBmcmVlX3BheWxvYWRfZGF0YShwYXlsb2FkKTsKKworICAgIC8qIEZy ZWUgb3VyIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZS4gKi8KKyAgICB4c3BsaWNlX2VsZl9mcmVl KCZlbGYpOworCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2Fk KHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogewogICAgIHN0cnVjdCBwYXls b2FkICpkYXRhLCAqZm91bmQ7CiAgICAgY2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07Cisg ICAgdm9pZCAqcmF3X2RhdGE7CiAgICAgaW50IHJjOwogCiAgICAgcmMgPSB2ZXJpZnlfcGF5bG9h ZCh1cGxvYWQsIG4pOwpAQCAtMTAzLDYgKzMxNSw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91cGxv YWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgICAgICAgIHJldHVybiBy YzsKIAogICAgIGRhdGEgPSB4emFsbG9jKHN0cnVjdCBwYXlsb2FkKTsKKyAgICByYXdfZGF0YSA9 IHZtYWxsb2ModXBsb2FkLT5zaXplKTsKIAogICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsK IApAQCAtMTExLDExICszMjQsMTggQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lz Y3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKICAgICAgICAgcmMgPSBQVFJfRVJSKGZvdW5k KTsKICAgICBlbHNlIGlmICggZm91bmQgKQogICAgICAgICByYyA9IC1FRVhJU1Q7Ci0gICAgZWxz ZSBpZiAoICFkYXRhICkKKyAgICBlbHNlIGlmICggIWRhdGEgfHwgIXJhd19kYXRhICkKICAgICAg ICAgcmMgPSAtRU5PTUVNOworICAgIGVsc2UgaWYgKCBfX2NvcHlfZnJvbV9ndWVzdChyYXdfZGF0 YSwgdXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkKKyAgICAgICAgcmMgPSAtRUZBVUxU OwogICAgIGVsc2UKICAgICB7CiAgICAgICAgIG1lbWNweShkYXRhLT5uYW1lLCBuLCBzdHJsZW4o bikpOworCisgICAgICAgIHJjID0gbG9hZF9wYXlsb2FkX2RhdGEoZGF0YSwgcmF3X2RhdGEsIHVw bG9hZC0+c2l6ZSk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgZ290byBvdXQ7CisK ICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CiAgICAgICAgIElO SVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKIApAQCAtMTIzLDggKzM0MywxMiBAQCBzdGF0aWMg aW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQog ICAgICAgICBwYXlsb2FkX2NudCsrOwogICAgICAgICBwYXlsb2FkX3ZlcnNpb24rKzsKICAgICB9 CisKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CiAKKyAgICB2ZnJlZShy YXdfZGF0YSk7CisKICAgICBpZiAoIHJjICkKICAgICAgICAgeGZyZWUoZGF0YSk7CiAKQEAgLTM1 OSw4ICs1ODMsOSBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIg a2V5KQogICAgIH0KIAogICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9s aXN0LCBsaXN0ICkKLSAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZClcbiIsIGRh dGEtPm5hbWUsCi0gICAgICAgICAgICAgICBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5z dGF0ZSk7CisgICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpICVwICguZGF0YT0l cCwgLnJvZGF0YT0lcCkgdXNpbmcgJXUgcGFnZXMuXG4iLAorICAgICAgICAgICAgICAgZGF0YS0+ bmFtZSwgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUsIGRhdGEtPnRleHRfYWRk ciwKKyAgICAgICAgICAgICAgIGRhdGEtPnJ3X2FkZHIsIGRhdGEtPnJvX2FkZHIsIGRhdGEtPnBh Z2VzKTsKIAogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwogfQpAQCAtMzY4LDYgKzU5 Myw4IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiBz dGF0aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKIHsKICAgICByZWdpc3Rlcl9rZXlo YW5kbGVyKCd4JywgeHNwbGljZV9wcmludGFsbCwgInByaW50IHhzcGxpY2luZyBpbmZvIiwgMSk7 CisKKyAgICBhcmNoX3hzcGxpY2VfaW5pdCgpOwogICAgIHJldHVybiAwOwogfQogX19pbml0Y2Fs bCh4c3BsaWNlX2luaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIv eGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCmluZGV4IGYwNDYwMTUuLmY1MWExNjEgMTAwNjQ0Ci0t LSBhL3hlbi9jb21tb24veHNwbGljZV9lbGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxm LmMKQEAgLTEwMCw2ICsxMDAsNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogCiAgICAgICAgICAgICBl bGYtPnN5bXRhYiA9ICZzZWNbaV07CiAKKyAgICAgICAgICAgIGVsZi0+c3ltdGFiX2lkeCA9IGk7 CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZWxmLT5zeW10YWItPnNlYy0+c2hfbGlu ayB3b3VsZCBwb2ludCB0byB0aGUgcmlnaHQgc2VjdGlvbgogICAgICAgICAgICAgICogYnV0IHdl IGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5nIGFsbCB0aGUgc2VjdGlvbnMuCkBAIC0yNTAsOSArMjUx LDEyMiBAQCBzdGF0aWMgaW50IGVsZl9nZXRfc3ltKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBj b25zdCB2b2lkICpkYXRhKQogICAgIHJldHVybiAwOwogfQogCitpbnQgeHNwbGljZV9lbGZfcmVz b2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHVuc2lnbmVkIGlu dCBpOworICAgIGludCByYyA9IDA7CisKKyAgICBBU1NFUlQoZWxmLT5zeW0pOworCisgICAgZm9y ICggaSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBp bnQgaWR4ID0gZWxmLT5zeW1baV0uc3ltLT5zdF9zaG5keDsKKyAgICAgICAgY29uc3QgRWxmX1N5 bSAqc3ltID0gZWxmLT5zeW1baV0uc3ltOworICAgICAgICBFbGZfQWRkciBzdF92YWx1ZSA9IHN5 bS0+c3RfdmFsdWU7CisKKyAgICAgICAgc3dpdGNoICggaWR4ICkKKyAgICAgICAgeworICAgICAg ICBjYXNlIFNITl9DT01NT046CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiBVbmV4cGVjdGVkIGNvbW1vbiBzeW1ib2w6ICVzXG4iLAorICAgICAgICAgICAgICAg ICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgcmMgPSAtRUlO VkFMOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTSE5fVU5ERUY6CisgICAg ICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmtub3duIHN5bWJvbDog JXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7 CisgICAgICAgICAgICByYyA9IC1FTk9FTlQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg ICBjYXNlIFNITl9BQlM6CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElD RSAiJXM6IEFic29sdXRlIHN5bWJvbDogJXMgPT4gJSMiUFJJeEVsZkFkZHIiXG4iLAorICAgICAg ICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUsIHN5bS0+c3RfdmFsdWUp OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8q IFNITl9DT01NT04gYW5kIFNITl9BQlMgYXJlIGFib3ZlLiAqLworICAgICAgICAgICAgaWYgKCBp ZHggPj0gU0hOX0xPUkVTRVJWRSApCisgICAgICAgICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsK KyAgICAgICAgICAgIGVsc2UgaWYgKCBpZHggPj0gZWxmLT5oZHItPmVfc2hudW0gKQorICAgICAg ICAgICAgICAgIHJjID0gLUVJTlZBTDsKKworICAgICAgICAgICAgaWYgKCByYyApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczog T3V0IG9mIGJvdW5kcyBzeW1ib2wgc2VjdGlvbiAlI3hcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICBlbGYtPm5hbWUsIGlkeCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIC8qIE1hdGNoZXMgJ21vdmVfcGF5bG9hZCcgd2hpY2ggaWdub3Jl cyBzdWNoIHNlY3Rpb25zLiAqLworICAgICAgICAgICAgaWYgKCAhKGVsZi0+c2VjW2lkeF0uc2Vj LT5zaF9mbGFncyAmIFNIRl9BTExPQykgKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgICAgICBzdF92YWx1ZSArPSAodW5zaWduZWQgbG9uZyllbGYtPnNlY1tpZHhdLmxvYWRfYWRk cjsKKyAgICAgICAgICAgIGlmICggZWxmLT5zeW1baV0ubmFtZSApCisgICAgICAgICAgICAgICAg ZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiBTeW1ib2wgcmVzb2x2ZWQ6ICVzID0+ ICUjIlBSSXhFbGZBZGRyIiAoJXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUsIGVsZi0+c3ltW2ldLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIHN0X3ZhbHVlLCBl bGYtPnNlY1tpZHhdLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyApCisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAoKEVsZl9TeW0gKilzeW0pLT5zdF92YWx1ZSA9IHN0 X3ZhbHVlOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworaW50IHhzcGxpY2VfZWxmX3Bl cmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKnIsICpiYXNlOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYyA9 IDA7CisKKyAgICBBU1NFUlQoZWxmLT5zeW0pOworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYt Pmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIHIgPSAmZWxmLT5zZWNbaV07CisK KyAgICAgICAgaWYgKCAoci0+c2VjLT5zaF90eXBlICE9IFNIVF9SRUxBKSAmJgorICAgICAgICAg ICAgIChyLT5zZWMtPnNoX3R5cGUgIT0gU0hUX1JFTCkgKQorICAgICAgICAgICAgY29udGludWU7 CisKKyAgICAgICAgIC8qIElzIGl0IGEgdmFsaWQgcmVsb2NhdGlvbiBzZWN0aW9uPyAqLworICAg ICAgICAgaWYgKCByLT5zZWMtPnNoX2luZm8gPj0gZWxmLT5oZHItPmVfc2hudW0gKQorICAgICAg ICAgICAgY29udGludWU7CisKKyAgICAgICAgIGJhc2UgPSAmZWxmLT5zZWNbci0+c2VjLT5zaF9p bmZvXTsKKworICAgICAgICAgLyogRG9uJ3QgcmVsb2NhdGUgbm9uLWFsbG9jYXRlZCBzZWN0aW9u cy4gKi8KKyAgICAgICAgIGlmICggIShiYXNlLT5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAp CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIHItPnNlYy0+c2hfbGluayAh PSBlbGYtPnN5bXRhYl9pZHggKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSBsaW5rIG9mICVzIGlzIGluY29ycmVjdCAoJWQs IGV4cGVjdGVkPSVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCByLT5uYW1l LCByLT5zZWMtPnNoX2xpbmssIGVsZi0+c3ltdGFiX2lkeCk7CisgICAgICAgICAgICByYyA9IC1F SU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggci0+ c2VjLT5zaF90eXBlID09IFNIVF9SRUxBICkKKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNl X3BlcmZvcm1fcmVsYShlbGYsIGJhc2UsIHIpOworICAgICAgICBlbHNlIC8qIFNIVF9SRUwgKi8K KyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKGVsZiwgYmFzZSwgcik7 CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+ aGRyOworICAgIGludCByYzsKIAogICAgIGlmICggc2l6ZW9mKCplbGYtPmhkcikgPiBlbGYtPmxl biApCiAgICAgewpAQCAtMjc5LDYgKzM5MywxMCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVy X2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgICAgICByZXR1cm4gLUVP UE5PVFNVUFA7CiAgICAgfQogCisgICAgcmMgPSBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihlbGYp OworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKICAgICBpZiAoIGVsZi0+aGRy LT5lX3Noc3RybmR4ID09IFNITl9VTkRFRiApCiAgICAgewogICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLApk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaCBiL3hlbi9pbmNsdWRlL3hl bi9lbGZzdHJ1Y3RzLmgKaW5kZXggODVmMzVlZC4uMmI5YmQzZiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUveGVuL2VsZnN0cnVjdHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5o CkBAIC00NzIsNiArNDcyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogI2VuZGlmCiAKICNpZiBkZWZp bmVkKEVMRlNJWkUpICYmIChFTEZTSVpFID09IDMyKQorI2RlZmluZSBQUkl4RWxmQWRkcgkiMDh4 IgorCiAjZGVmaW5lIEVsZl9FaGRyCUVsZjMyX0VoZHIKICNkZWZpbmUgRWxmX1BoZHIJRWxmMzJf UGhkcgogI2RlZmluZSBFbGZfU2hkcglFbGYzMl9TaGRyCkBAIC00OTcsNiArNDk5LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgewogCiAjZGVmaW5lIEF1eEluZm8JCUF1eDMySW5mbwogI2VsaWYgZGVmaW5l ZChFTEZTSVpFKSAmJiAoRUxGU0laRSA9PSA2NCkKKyNkZWZpbmUgUFJJeEVsZkFkZHIJUFJJeDY0 CisKICNkZWZpbmUgRWxmX0VoZHIJRWxmNjRfRWhkcgogI2RlZmluZSBFbGZfUGhkcglFbGY2NF9Q aGRyCiAjZGVmaW5lIEVsZl9TaGRyCUVsZjY0X1NoZHIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDc1NTk4Nzcu Ljg1N2MyNjQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtNiw2ICs2LDkgQEAKICNpZm5kZWYgX19YRU5fWFNQ TElDRV9IX18KICNkZWZpbmUgX19YRU5fWFNQTElDRV9IX18KIAorc3RydWN0IHhzcGxpY2VfZWxm Oworc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1 Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCiAjaWZkZWYgQ09ORklHX1hTUExJQ0UKQEAgLTE1 LDYgKzE4LDI3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CiAKIGludCB4c3BsaWNl X29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7CiAKKy8qIEFyY2ggaG9va3MuICov CitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICpl bGYpOworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxm X3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmX3NlYyAqcmVsYSk7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2VudW0gdmFfdHlwZSB7 CisgICAgWFNQTElDRV9WQV9SWCwgLyogLnRleHQgKi8KKyAgICBYU1BMSUNFX1ZBX1JXLCAvKiAu ZGF0YSAqLworICAgIFhTUExJQ0VfVkFfUk8sIC8qIC5yb2RhdGEgKi8KK307CisKKy8qCisgKiBG dW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRlIHBhZ2VzIChmcm9tIGFyY2hfeHNwbGljZV9h bGxvY19wYXlsb2FkKQorICogd2l0aCB0aGUgcmlnaHQgcGFnZSBwZXJtaXNzaW9ucy4KKyAqLwor aW50IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdl cywgZW51bSB2YV90eXBlIHR5cGVzKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsK ICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oIGIveGVuL2luY2x1ZGUveGVuL3hz cGxpY2VfZWxmLmgKaW5kZXggNjg2YWFmMC4uNzUwZGM5NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL3hzcGxpY2VfZWxmLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgK QEAgLTE1LDYgKzE1LDggQEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMu ICovCiAgICAgY29uc3Qgdm9pZCAqZGF0YTsgICAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIg dG8gdGhlIHNlY3Rpb24gKGRvbmUgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWxmX3Jlc29sdmVfc2VjdGlvbnMpLiAqLworICAgIHZvaWQgKmxvYWRfYWRk cjsgICAgICAgICAgICAgICAgICAgICAvKiBBIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXN0 aW5hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9u ZSBieSBsb2FkX3BheWxvYWRfZGF0YS4gKi8KIH07CiAKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0g ewpAQCAtMjksOCArMzEsMTAgQEAgc3RydWN0IHhzcGxpY2VfZWxmIHsKICAgICBzdHJ1Y3QgeHNw bGljZV9lbGZfc2VjICpzZWM7ICAgICAgICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRl ZCBieSB1cy4gKi8KICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07ICAgICAgICAgLyog QXJyYXkgb2Ygc3ltYm9scyAsIGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICB1bnNpZ25lZCBpbnQg bnN5bTsKLSAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRl ciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAqLwotICAgIGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKnN0cnRhYjsvKiBQb2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlvbiAt IGFrYSB0byBzZWNbeV0uICovCisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3lt dGFiOy8qIFBvaW50ZXIgdG8gLnN5bXRhYiBzZWN0aW9uIC0gYWthIHRvCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY1tzeW10YWJfaWR4XS4gKi8KKyAgICBj b25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzdHJ0YWI7LyogUG9pbnRlciB0byAuc3RydGFi IHNlY3Rpb24uICovCisgICAgdW5zaWduZWQgaW50IHN5bXRhYl9pZHg7CiB9OwogCiBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwKQEAgLTM4LDYgKzQyLDkgQEAgY29uc3Qgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3RydWN0IHhzcGxpY2Vf ZWxmICoKIGludCB4c3BsaWNlX2VsZl9sb2FkKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25z dCB2b2lkICpkYXRhKTsKIHZvaWQgeHNwbGljZV9lbGZfZnJlZShzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZik7CiAKK2ludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2Vf ZWxmICplbGYpOworaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmKTsKKwogI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfRUxGX0hfXyAqLwogCiAvKgot LSAKMi40LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=