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: Tue, 26 Apr 2016 23:28:57 -0400 Message-ID: <20160427032857.GD26540@localhost.localdomain> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avGAE-0007W8-DU for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 03:29:22 +0000 Content-Disposition: inline In-Reply-To: <571F8B9F02000078000E5E09@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 PiA+ICtzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYpCj4gPiArewouLnNuaXAuLgo+ID4gKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBp ZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQo+ID4gKyAgICAgICAg ewo+ID4gKyAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZjsKPiAKPiBQZXJoYXBzIHZvaWQgKiBhZ2Fp bj8gQW5kIG1pc3NpbmcgYSBibGFuayBsaW5lIGFmdGVyd2FyZHMuCj4gCj4gPiArICAgICAgICAg ICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5TVFIpICkKPiA+ ICsgICAgICAgICAgICAgICAgYnVmID0gdGV4dF9idWY7Cj4gPiArICAgICAgICAgICAgZWxzZSBp ZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCj4gPiArICAgICAg ICAgICAgICAgIGJ1ZiA9IHJ3X2J1ZjsKPiA+ICsgICAgICAgICAgICAgZWxzZQo+IAo+IFRoZSBp bmRlbnRhdGlvbiBoZXJlIGlzIHN0aWxsIG9uZSBvZmYuCgpJIGFtIG5vdCBzZWVpbmcgaXQuIEkg ZGVsZXRlZCB0aGUgbGluZSBhbmQgYWRkZWQgaXQgYmFjayB1c2luZwpzcGFjZXMganVzdCBpbiBj YXNlLiBCdXQgSSByZWFsbHkgZG9uJ3Qgc2VlIHRoZSBpbmRlbnRhdGlvbiBpc3NlCnlvdSBhcmUg c2VlaW5nPwoKSGVyZSBpcyB3aGF0IHRoZSBwYXRjaCBsb29rcyBsaWtlIHdpdGggdGhlIGNoYW5n ZXMgKG1pbnVzIHRoZQpwb3NzaWJsaWxpdHkgb2YgbWFraW5nIEVsZl9TeW0gYW4gY29uc3QgYW5k IGNhc3RpbmcgaXQgLi4pOgoKRnJvbSA0YjE5MGE5ZDlmZTczODEzODQxNmQ5ZjUwMWFjNzQ2ZWE5 ZGIyNTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb3NzIExhZ2Vyd2FsbCA8cm9z cy5sYWdlcndhbGxAY2l0cml4LmNvbT4KRGF0ZTogVHVlLCAyNiBBcHIgMjAxNiAxMzo1Mjo0OCAt 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 bC4KLS0tCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9h cm0veHNwbGljZS5jICAgICAgICB8ICA0NiArKysrKysrKwogeGVuL2FyY2gveDg2L01ha2VmaWxl ICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3hzcGxpY2UuYyAgICAgICAgfCAxNzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAgICAg ICB8IDI0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHhlbi9j b21tb24veHNwbGljZV9lbGYuYyAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrCiB4ZW4v aW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oICB8ICAgNCArCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGlj ZS5oICAgICB8ICAyNCArKysrKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmggfCAgMTEg Ky0KIDkgZmlsZXMgY2hhbmdlZCwgNjExIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFr ZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDMyOGI1MC4uZWFlNWNiMyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmls ZQpAQCAtNDAsNiArNDAsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZGVjb2RlLm8K IG9iai15ICs9IHByb2Nlc3Nvci5vCiBvYmoteSArPSBzbWMubworb2JqLSQoQ09ORklHX1hTUExJ Q0UpICs9IHhzcGxpY2UubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYjc3NjcKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4v YXJjaC9hcm0veHNwbGljZS5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD KSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKyNpbmNsdWRlIDx4ZW4vZXJybm8u aD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRl IDx4ZW4veHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitpbnQgYXJj aF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7Cisg ICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1F Tk9TWVM7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9 CisKK2ludCBhcmNoX3hzcGxpY2Vfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQg cGFnZXMsIGVudW0gdmFfdHlwZSB0eXBlKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2 b2lkIF9faW5pdCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKQoreworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNo L3g4Ni9NYWtlZmlsZQppbmRleCA3MjkwNjViLi5mNzRmZDJjIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC02MSw2ICs2MSw3 IEBAIG9iai15ICs9IHg4Nl9lbXVsYXRlLm8KIG9iai15ICs9IHRib290Lm8KIG9iai15ICs9IGhw ZXQubwogb2JqLXkgKz0gdm1fZXZlbnQubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxp Y2Uubwogb2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQoY3Jhc2hfZGVidWcpICs9IGdkYnN0dWIu bwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4Ni94c3Bs aWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwY2JjMAotLS0gL2Rl di9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTAsMCArMSwxNzQgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworCisj aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4 ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3Bmbi5oPgorI2lu Y2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CisjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworCisgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVs Zi0+aGRyOworCisgICAgaWYgKCBoZHItPmVfbWFjaGluZSAhPSBFTV9YODZfNjQgfHwKKyAgICAg ICAgIGhkci0+ZV9pZGVudFtFSV9DTEFTU10gIT0gRUxGQ0xBU1M2NCB8fAorICAgICAgICAgaGRy LT5lX2lkZW50W0VJX0FCSVZFUlNJT05dICE9IDAgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhY RU5MT0dfRVJSLCBYU1BMSUNFICIlczogVW5zdXBwb3J0ZWQgRUxGIE1hY2hpbmUgdHlwZSFcbiIs CisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQ OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1f cmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGRw cmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNIVF9SRUwgcmVsb2NhdGlvbiB1bnN1cHBv cnRlZFxuIiwKKyAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgcmV0dXJuIC1FT1BOT1RTVVBQ OworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGNvbnN0IEVsZl9SZWxBICpyOworICAg IHVuc2lnbmVkIGludCBzeW1uZHgsIGk7CisgICAgdWludDY0X3QgdmFsOworICAgIHVpbnQ4X3Qg KmRlc3Q7CisKKyAgICAvKiBOb3RoaW5nIHRvIGRvLiAqLworICAgIGlmICggIXJlbGEtPnNlYy0+ c2hfc2l6ZSApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCByZWxhLT5zZWMtPnNoX2Vu dHNpemUgPCBzaXplb2YoRWxmX1JlbEEpIHx8CisgICAgICAgICByZWxhLT5zZWMtPnNoX3NpemUg JSByZWxhLT5zZWMtPnNoX2VudHNpemUgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0df RVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiByZWxhdGl2ZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxu IiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsK KyAgICB9CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IChyZWxhLT5zZWMtPnNoX3NpemUgLyByZWxh LT5zZWMtPnNoX2VudHNpemUpOyBpKysgKQorICAgIHsKKyAgICAgICAgciA9IHJlbGEtPmRhdGEg KyBpICogcmVsYS0+c2VjLT5zaF9lbnRzaXplOworCisgICAgICAgIHN5bW5keCA9IEVMRjY0X1Jf U1lNKHItPnJfaW5mbyk7CisKKyAgICAgICAgaWYgKCBzeW1uZHggPiBlbGYtPm5zeW0gKQorICAg ICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBSZWxh dGl2ZSByZWxvY2F0aW9uIHdhbnRzIHN5bWJvbEAldSB3aGljaCBpcyBwYXN0IGVuZCFcbiIsCisg ICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgc3ltbmR4KTsKKyAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByLT5yX29mZnNldCA+PSBiYXNl LT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgZ290byBiYWRfb2Zmc2V0OworCisgICAgICAg IGRlc3QgPSBiYXNlLT5sb2FkX2FkZHIgKyByLT5yX29mZnNldDsKKyAgICAgICAgdmFsID0gci0+ cl9hZGRlbmQgKyBlbGYtPnN5bVtzeW1uZHhdLnN5bS0+c3RfdmFsdWU7CisKKyAgICAgICAgc3dp dGNoICggRUxGNjRfUl9UWVBFKHItPnJfaW5mbykgKQorICAgICAgICB7CisgICAgICAgIGNhc2Ug Ul9YODZfNjRfTk9ORToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9YODZf NjRfNjQ6CisgICAgICAgICAgICBpZiAoIHItPnJfb2Zmc2V0ICsgc2l6ZW9mKHVpbnQ2NF90KSA+ IGJhc2UtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgICAgICAgICAgZ290byBiYWRfb2Zmc2V0Owor CisgICAgICAgICAgICAqKHVpbnQ2NF90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgUl9YODZfNjRfUExUMzI6CisgICAgICAgICAgICAvKgorICAgICAg ICAgICAgICogWGVuIHVzZXMgLWZwaWMgd2hpY2ggbm9ybWFsbHkgdXNlcyBQTFQgcmVsb2NhdGlv bnMKKyAgICAgICAgICAgICAqIGV4Y2VwdCB0aGF0IGl0IHNldHMgdmlzaWJpbGl0eSB0byBoaWRk ZW4gd2hpY2ggbWVhbnMKKyAgICAgICAgICAgICAqIHRoYXQgdGhleSBhcmUgbm90IHVzZWQuICBI b3dldmVyLCB3aGVuIGdjYyBjYW5ub3QKKyAgICAgICAgICAgICAqIGlubGluZSBtZW1jcHkgaXQg ZW1pdHMgbWVtY3B5IHdpdGggZGVmYXVsdCB2aXNpYmlsaXR5CisgICAgICAgICAgICAgKiB3aGlj aCB0aGVuIGNyZWF0ZXMgYSBQTFQgcmVsb2NhdGlvbi4gIEl0IGNhbiBqdXN0IGJlCisgICAgICAg ICAgICAgKiB0cmVhdGVkIHRoZSBzYW1lIGFzIFJfWDg2XzY0X1BDMzIuCisgICAgICAgICAgICAg Ki8KKyAgICAgICAgY2FzZSBSX1g4Nl82NF9QQzMyOgorICAgICAgICAgICAgaWYgKCByLT5yX29m ZnNldCArIHNpemVvZih1aW50MzJfdCkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAg ICAgICAgIGdvdG8gYmFkX29mZnNldDsKKworICAgICAgICAgICAgdmFsIC09ICh1aW50NjRfdClk ZXN0OworICAgICAgICAgICAgKihpbnQzMl90ICopZGVzdCA9IHZhbDsKKyAgICAgICAgICAgIGlm ICggKGludDY0X3QpdmFsICE9ICooaW50MzJfdCAqKWRlc3QgKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IE92ZXJmbG93IGlu IHJlbG9jYXRpb24gJXUgaW4gJXMgZm9yICVzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg IGVsZi0+bmFtZSwgaSwgcmVsYS0+bmFtZSwgYmFzZS0+bmFtZSk7CisgICAgICAgICAgICAgICAg cmV0dXJuIC1FT1ZFUkZMT1c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNF ICIlczogVW5oYW5kbGVkIHJlbG9jYXRpb24gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICBl bGYtPm5hbWUsIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pKTsKKyAgICAgICAgICAgIHJldHVybiAt RU9QTk9UU1VQUDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworCisgYmFkX29m ZnNldDoKKyAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSByZWxv Y2F0aW9uIG9mZnNldCBpcyBwYXN0ICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgZWxmLT5u YW1lLCBiYXNlLT5uYW1lKTsKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworLyoKKyAqIE9uY2Ug dGhlIHJlc29sdmluZyBzeW1ib2xzLCBwZXJmb3JtaW5nIHJlbG9jYXRpb25zLCBldGMgaXMgY29t cGxldGUKKyAqIHdlIHNlY3VyZSB0aGUgbWVtb3J5IGJ5IHB1dHRpbmcgaW4gdGhlIHByb3BlciBw YWdlIHRhYmxlIGF0dHJpYnV0ZXMKKyAqIGZvciB0aGUgZGVzaXJlZCB0eXBlLgorICovCitpbnQg YXJjaF94c3BsaWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBl bnVtIHZhX3R5cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVk IGxvbmcpdmE7CisgICAgdW5zaWduZWQgaW50IGZsYWc7CisKKyAgICBBU1NFUlQodmEpOworICAg IEFTU0VSVChwYWdlcyk7CisKKyAgICBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SWCApCisgICAg ICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlg7CisgICAgZWxzZSBpZiAoIHR5cGUgPT0gWFNQ TElDRV9WQV9SVyApCisgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlc7CisgICAgZWxz ZQorICAgICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JPOworCisgICAgbW9kaWZ5X3hlbl9t YXBwaW5ncyhzdGFydCwgc3RhcnQgKyBwYWdlcyAqIFBBR0VfU0laRSwgZmxhZyk7CisKKyAgICBy ZXR1cm4gMDsKK30KKwordm9pZCBfX2luaXQgYXJjaF94c3BsaWNlX2luaXQodm9pZCkKK3sKKyAg ICB2b2lkICpzdGFydCwgKmVuZDsKKworICAgIHN0YXJ0ID0gKHZvaWQgKil4ZW5fdmlydF9lbmQ7 CisgICAgZW5kID0gKHZvaWQgKikoWEVOX1ZJUlRfRU5EIC0gTlJfQ1BVUyAqIFBBR0VfU0laRSk7 CisKKyAgICBCVUdfT04oZW5kIDw9IHN0YXJ0KTsKKworICAgIHZtX2luaXRfdHlwZShWTUFQX1hF Tiwgc3RhcnQsIGVuZCk7Cit9CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQwor ICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0 aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBh L3hlbi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggNjYyM2Nl NS4uM2YzYWFjYyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2Nv bW1vbi94c3BsaWNlLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDx4ZW4vc21wLmg+CiAj aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRl IDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCiAjaW5jbHVk ZSA8YXNtL2V2ZW50Lmg+CkBAIC0yOSw2ICszMCwxMyBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAg dWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIE9uZSBvZiB0aGUgWFNQTElD RV9TVEFURV8qLiAqLwogICAgIGludDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAv KiAwIG9yIC1YRU5fRVhYLiAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgICAgICAgICAg ICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICovCisgICAgY29uc3Qgdm9pZCAqdGV4 dF9hZGRyOyAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAudGV4dC4gKi8KKyAg ICBzaXplX3QgdGV4dF9zaXplOyAgICAgICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXpl LiAqLworICAgIGNvbnN0IHZvaWQgKnJ3X2FkZHI7ICAgICAgICAgICAgICAgICAvKiBWaXJ0dWFs IGFkZHJlc3Mgb2YgLmRhdGEuICovCisgICAgc2l6ZV90IHJ3X3NpemU7ICAgICAgICAgICAgICAg ICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55KS4gKi8KKyAgICBjb25zdCB2b2lkICpy b19hZGRyOyAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC5yb2RhdGEuICov CisgICAgc2l6ZV90IHJvX3NpemU7ICAgICAgICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMg c2l6ZSAoaWYgYW55KS4gKi8KKyAgICB1bnNpZ25lZCBpbnQgcGFnZXM7ICAgICAgICAgICAgICAg ICAgLyogVG90YWwgcGFnZXMgZm9yIFt0ZXh0LHJ3LHJvXV9hZGRyICovCiAgICAgY2hhciBuYW1l W1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBAIC04 MywxOSArOTEsMjMxIEBAIHN0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9wYXlsb2FkKGNvbnN0 IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIGZvdW5kOwogfQogCisvKgorICogRnVuY3Rpb25zIHJl bGF0ZWQgdG8gWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAoc2VlIHhzcGxpY2VfdXBsb2FkKSwg YW5kCisgKiBmcmVlaW5nIHBheWxvYWQgKFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT046WFNQTElD RV9BQ1RJT05fVU5MT0FEKS4KKyAqLworCitzdGF0aWMgdm9pZCBmcmVlX3BheWxvYWRfZGF0YShz dHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCkKK3sKKyAgICAvKiBTZXQgdG8gemVybyB1bnRpbCAibW92 ZV9wYXlsb2FkIi4gKi8KKyAgICBpZiAoICFwYXlsb2FkLT5wYWdlcyApCisgICAgICAgIHJldHVy bjsKKworICAgIHZmcmVlKCh2b2lkICopcGF5bG9hZC0+dGV4dF9hZGRyKTsKKworICAgIHBheWxv YWQtPnBhZ2VzID0gMDsKK30KKworLyoKKyogY2FsY19zZWN0aW9uIGNvbXB1dGVzIHRoZSBzaXpl ICh0YWtpbmcgaW50byBhY2NvdW50IHNlY3Rpb24gYWxpZ25tZW50KS4KKyoKKyogRnVydGhlcm1v cmUgdGhlIG9mZnNldCBpcyBzZXQgd2l0aCB0aGUgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRo ZSB2aXJ0dWFsCisqIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBwYXlsb2FkICh1c2luZyBwYXNzZWQg aW4gc2l6ZSkuIFRoaXMgaXMgdXNlZCBpbgorKiBtb3ZlX3BheWxvYWQgdG8gZmlndXJlIG91dCB0 aGUgZGVzdGluYXRpb24gbG9jYXRpb24gKGxvYWRfYWRkcikuCisqLworc3RhdGljIHZvaWQgY2Fs Y19zZWN0aW9uKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYywgc2l6ZV90ICpzaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb2Zmc2V0KQoreworICAg IGNvbnN0IEVsZl9TaGRyICpzID0gc2VjLT5zZWM7CisgICAgc2l6ZV90IGFsaWduX3NpemU7CisK KyAgICBhbGlnbl9zaXplID0gUk9VTkRVUCgqc2l6ZSwgcy0+c2hfYWRkcmFsaWduKTsKKyAgICAq b2Zmc2V0ID0gYWxpZ25fc2l6ZTsKKyAgICAqc2l6ZSA9IHMtPnNoX3NpemUgKyBhbGlnbl9zaXpl OworfQorCitzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwg c3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdm9pZCAqdGV4dF9idWYsICpyb19idWYs ICpyd19idWY7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc2l6ZV90IHNpemUgPSAwOworICAg IHVuc2lnbmVkIGludCAqb2Zmc2V0OworICAgIGludCByYyA9IDA7CisKKyAgICBvZmZzZXQgPSB4 bWFsbG9jX2FycmF5KHVuc2lnbmVkIGludCwgZWxmLT5oZHItPmVfc2hudW0pOworICAgIGlmICgg IW9mZnNldCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgLyogQ29tcHV0ZSBzaXpl IG9mIGRpZmZlcmVudCByZWdpb25zLiAqLworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHIt PmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNo X2ZsYWdzICYgKFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSkgPT0KKyAgICAgICAgICAgICAoU0hG X0FMTE9DfFNIRl9FWEVDSU5TVFIpICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5z ZWNbaV0sICZwYXlsb2FkLT50ZXh0X3NpemUsICZvZmZzZXRbaV0pOworICAgICAgICBlbHNlIGlm ICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYmCisgICAgICAgICAg ICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgor ICAgICAgICAgICAgICAgICAgKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfV1JJVEUp ICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZwYXlsb2FkLT5yd19z aXplLCAmb2Zmc2V0W2ldKTsKKyAgICAgICAgZWxzZSBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNo X2ZsYWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5z ZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAgICAgICEoZWxm LT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19z ZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQtPnJvX3NpemUsICZvZmZzZXRbaV0pOworICAg ICAgICBlbHNlIGlmICggIWVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgfHwKKyAgICAgICAgICAg ICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgfHwKKyAg ICAgICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX01BU0tQUk9D KSApCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRG8gbm90aGluZy4gVGhlc2UgYXJl IC5yZWwudGV4dCwgcmVsLiosIC5zeW10YWIsIC5zdHJ0YWIsCisgICAgICAgICAgICAgKiBhbmQg LnNoc3RydGFiLiBGb3IgdGhlIG5vbi1yZWxvY2F0ZSB3ZSBhbGxvY2F0ZSBhbmQgY29weSB0aGVz ZQorICAgICAgICAgICAgICogdmlhIG90aGVyIG1lYW5zIC0gYW5kIHRoZSAucmVsIHdlIGNhbiBp Z25vcmUgYXMgd2Ugb25seSB1c2UgaXQKKyAgICAgICAgICAgICAqIG9uY2UgZHVyaW5nIGxvYWRp bmcuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG9mZnNldFtpXSA9IFVJTlRfTUFYOwor ICAgICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0Mp ICYmCisgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF90eXBlID09IFNIVF9O T0JJVFMpICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhT UExJQ0UgIiVzOiBOb3Qgc3VwcG9ydGluZyAlcyBzZWN0aW9uIVxuIiwKKyAgICAgICAgICAgICAg ICAgICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tpXS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0gLUVP UE5PVFNVUFA7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBlbHNl IC8qIFN1Y2ggYXMgLmNvbW1lbnQsIG9yIC5kZWJ1Z19zdHIuICovCisgICAgICAgIHsKKyAgICAg ICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogSWdub3JpbmcgJXMgc2Vj dGlvbiFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFt ZSk7CisgICAgICAgICAgICBvZmZzZXRbaV0gPSBVSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0K KworICAgIC8qCisgICAgICogVG90YWwgb2YgYWxsIHRocmVlIHJlZ2lvbnMgLSBSWCwgUlcsIGFu ZCBSTy4gV2UgaGF2ZSB0byBoYXZlCisgICAgICoga2VlcCB0aGVtIGluIHNlcGVyYXRlIHBhZ2Vz IHNvIHdlIFBBR0VfQUxJR04gdGhlIFJYIGFuZCBSVyB0byBoYXZlCisgICAgICogdGhlbSBvbiBz ZXBlcmF0ZSBwYWdlcy4gVGhlIGxhc3Qgb25lIHdpbGwgYnkgZGVmYXVsdCBmYWxsIG9uIGl0cwor ICAgICAqIG93biBwYWdlLgorICAgICAqLworICAgIHNpemUgPSBQQUdFX0FMSUdOKHBheWxvYWQt PnRleHRfc2l6ZSkgKyBQQUdFX0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpICsKKyAgICAgICAgICAg ICAgICAgICAgICBwYXlsb2FkLT5yb19zaXplOworCisgICAgc2l6ZSA9IFBGTl9VUChzaXplKTsg LyogTnIgb2YgcGFnZXMuICovCisgICAgdGV4dF9idWYgPSB2bWFsbG9jX3hlbihzaXplICogUEFH RV9TSVpFKTsKKyAgICBpZiAoICF0ZXh0X2J1ZiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYXls b2FkIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByYyA9IC1FTk9N RU07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICByd19idWYgPSB0ZXh0X2J1ZiArIFBB R0VfQUxJR04ocGF5bG9hZC0+dGV4dF9zaXplKTsKKyAgICByb19idWYgPSByd19idWYgKyBQQUdF X0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpOworCisgICAgcGF5bG9hZC0+cGFnZXMgPSBzaXplOwor ICAgIHBheWxvYWQtPnRleHRfYWRkciA9IHRleHRfYnVmOworICAgIHBheWxvYWQtPnJ3X2FkZHIg PSByd19idWY7CisgICAgcGF5bG9hZC0+cm9fYWRkciA9IHJvX2J1ZjsKKworICAgIGZvciAoIGkg PSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIGVs Zi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAgICAgICB7CisgICAgICAg ICAgICB2b2lkICpidWY7CisKKyAgICAgICAgICAgIGlmICggZWxmLT5zZWNbaV0uc2VjLT5zaF9m bGFncyAmIFNIRl9FWEVDSU5TVFIgKQorICAgICAgICAgICAgICAgIGJ1ZiA9IHRleHRfYnVmOwor ICAgICAgICAgICAgZWxzZSBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfV1JJ VEUgKQorICAgICAgICAgICAgICAgIGJ1ZiA9IHJ3X2J1ZjsKKyAgICAgICAgICAgICBlbHNlCisg ICAgICAgICAgICAgICAgYnVmID0gcm9fYnVmOworCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0 W2ldICE9IFVJTlRfTUFYKTsKKworICAgICAgICAgICAgZWxmLT5zZWNbaV0ubG9hZF9hZGRyID0g YnVmICsgb2Zmc2V0W2ldOworCisgICAgICAgICAgICAvKiBEb24ndCBjb3B5IE5PQklUUyAtIHN1 Y2ggYXMgQlNTLiAqLworICAgICAgICAgICAgaWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX3R5cGUg IT0gU0hUX05PQklUUyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVtY3B5KGVs Zi0+c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5zZWNbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAg ICAgICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9zaXplKTsKKyAgICAgICAgICAgICAgICBkcHJpbnRr KFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IExvYWRlZCAlcyBhdCAlcFxuIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSwgZWxmLT5zZWNbaV0u bG9hZF9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICBtZW1zZXQoZWxmLT5zZWNbaV0ubG9hZF9hZGRyLCAwLCBlbGYtPnNlY1tpXS5zZWMtPnNo X3NpemUpOworICAgICAgICB9CisgICAgfQorCisgb3V0OgorICAgIHhmcmVlKG9mZnNldCk7CisK KyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBh eWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIGludCByYzsK KyAgICB1bnNpZ25lZCBpbnQgdGV4dF9wYWdlcywgcndfcGFnZXMsIHJvX3BhZ2VzOworCisgICAg dGV4dF9wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIEFTU0VSVCh0ZXh0 X3BhZ2VzKTsKKworICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2FkLT50ZXh0X2Fk ZHIsIHRleHRfcGFnZXMsIFhTUExJQ0VfVkFfUlgpOworICAgIGlmICggcmMgKQorICAgICAgICBy ZXR1cm4gcmM7CisKKyAgICByd19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yd19zaXplKTsKKyAg ICBpZiAoIHJ3X3BhZ2VzICkKKyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3Vy ZShwYXlsb2FkLT5yd19hZGRyLCByd19wYWdlcywgWFNQTElDRV9WQV9SVyk7CisgICAgICAgIGlm ICggcmMgKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJvX3BhZ2VzID0g UEZOX1VQKHBheWxvYWQtPnJvX3NpemUpOworICAgIGlmICggcm9fcGFnZXMgKQorICAgICAgICBy YyA9IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5bG9hZC0+cm9fYWRkciwgcm9fcGFnZXMsIFhTUExJ Q0VfVkFfUk8pOworCisgICAgQVNTRVJUKHJvX3BhZ2VzICsgcndfcGFnZXMgKyB0ZXh0X3BhZ2Vz ID09IHBheWxvYWQtPnBhZ2VzKTsKKworICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIHZvaWQg ZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogewogICAgIEFTU0VSVChzcGluX2lz X2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CiAgICAgbGlzdF9kZWwoJmRhdGEtPmxpc3QpOwogICAg IHBheWxvYWRfY250LS07CiAgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAgZnJlZV9wYXlsb2Fk X2RhdGEoZGF0YSk7CiAgICAgeGZyZWUoZGF0YSk7CiB9CiAKK3N0YXRpYyBpbnQgbG9hZF9wYXls b2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikK K3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGYgZWxmID0geyAubmFtZSA9IHBheWxvYWQtPm5hbWUs IC5sZW4gPSBsZW4gfTsKKyAgICBpbnQgcmMgPSAwOworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9s b2FkKCZlbGYsIHJhdyk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAg cmMgPSBtb3ZlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAg IGdvdG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoJmVsZik7 CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSB4c3BsaWNlX2Vs Zl9wZXJmb3JtX3JlbG9jcygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworCisgb3V0OgorICAg IGlmICggcmMgKQorICAgICAgICBmcmVlX3BheWxvYWRfZGF0YShwYXlsb2FkKTsKKworICAgIC8q IEZyZWUgb3VyIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZS4gKi8KKyAgICB4c3BsaWNlX2VsZl9m cmVlKCZlbGYpOworCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfdXBs b2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogewogICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhLCAqZm91bmQ7CiAgICAgY2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07 CisgICAgdm9pZCAqcmF3X2RhdGE7CiAgICAgaW50IHJjOwogCiAgICAgcmMgPSB2ZXJpZnlfcGF5 bG9hZCh1cGxvYWQsIG4pOwpAQCAtMTAzLDYgKzMyMyw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91 cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAgICAgICAgIHJldHVy biByYzsKIAogICAgIGRhdGEgPSB4emFsbG9jKHN0cnVjdCBwYXlsb2FkKTsKKyAgICByYXdfZGF0 YSA9IHZtYWxsb2ModXBsb2FkLT5zaXplKTsKIAogICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2Nr KTsKIApAQCAtMTE4LDEzICszMzksMTkgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5f c3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKICAgICAgICAgZ290byBvdXQ7CiAgICAg fQogCi0gICAgaWYgKCAhZGF0YSApCi0gICAgewotICAgICAgICByYyA9IC1FTk9NRU07CisgICAg cmMgPSAtRU5PTUVNOworICAgIGlmICggIWRhdGEgfHwgIXJhd19kYXRhICkKICAgICAgICAgZ290 byBvdXQ7Ci0gICAgfQogCisgICAgcmMgPSAtRUZBVUxUOworICAgIGlmICggX19jb3B5X2Zyb21f Z3Vlc3QocmF3X2RhdGEsIHVwbG9hZC0+cGF5bG9hZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAg IGdvdG8gb3V0OwogICAgIG1lbWNweShkYXRhLT5uYW1lLCBuLCBzdHJsZW4obikpOworCisgICAg cmMgPSBsb2FkX3BheWxvYWRfZGF0YShkYXRhLCByYXdfZGF0YSwgdXBsb2FkLT5zaXplKTsKKyAg ICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJ Q0VfU1RBVEVfQ0hFQ0tFRDsKICAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7CiAKQEAg LTEzNSw2ICszNjIsOCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNw bGljZV91cGxvYWRfdCAqdXBsb2FkKQogIG91dDoKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9s b2NrKTsKIAorICAgIHZmcmVlKHJhd19kYXRhKTsKKwogICAgIGlmICggcmMgKQogICAgICAgICB4 ZnJlZShkYXRhKTsKIApAQCAtMzY5LDggKzU5OCw5IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJp bnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiAgICAgfQogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRy eSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQotICAgICAgICBwcmludGsoIiBuYW1lPSVz IHN0YXRlPSVzKCVkKVxuIiwgZGF0YS0+bmFtZSwKLSAgICAgICAgICAgICAgIHN0YXRlMnN0cihk YXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlKTsKKyAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0 ZT0lcyglZCkgJXAgKC5kYXRhPSVwLCAucm9kYXRhPSVwKSB1c2luZyAldSBwYWdlcy5cbiIsCisg ICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5z dGF0ZSwgZGF0YS0+dGV4dF9hZGRyLAorICAgICAgICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0 YS0+cm9fYWRkciwgZGF0YS0+cGFnZXMpOwogCiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9j ayk7CiB9CkBAIC0zNzgsNiArNjA4LDggQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1 bnNpZ25lZCBjaGFyIGtleSkKIHN0YXRpYyBpbnQgX19pbml0IHhzcGxpY2VfaW5pdCh2b2lkKQog ewogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNlX3ByaW50YWxsLCAicHJpbnQg eHNwbGljaW5nIGluZm8iLCAxKTsKKworICAgIGFyY2hfeHNwbGljZV9pbml0KCk7CiAgICAgcmV0 dXJuIDA7CiB9CiBfX2luaXRjYWxsKHhzcGxpY2VfaW5pdCk7CmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL3hzcGxpY2VfZWxmLmMgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKaW5kZXggZGQwNzhj NC4uYTNkODRiMSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCisrKyBiL3hl bi9jb21tb24veHNwbGljZV9lbGYuYwpAQCAtMTA1LDYgKzEwNSw3IEBAIHN0YXRpYyBpbnQgZWxm X3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRh dGEpCiAKICAgICAgICAgICAgIGVsZi0+c3ltdGFiID0gJnNlY1tpXTsKIAorICAgICAgICAgICAg ZWxmLT5zeW10YWJfaWR4ID0gaTsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBlbGYt PnN5bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxkIHBvaW50IHRvIHRoZSByaWdodCBzZWN0aW9uCiAg ICAgICAgICAgICAgKiBidXQgd2UgaGFkbid0IGZpbmlzaGVkIHBhcnNpbmcgYWxsIHRoZSBzZWN0 aW9ucy4KQEAgLTI1Myw5ICsyNTQsMTE4IEBAIHN0YXRpYyBpbnQgZWxmX2dldF9zeW0oc3RydWN0 IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCiAgICAgcmV0dXJuIDA7CiB9CiAK K2ludCB4c3BsaWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYp Cit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IHJjID0gMDsKKworICAgIEFTU0VSVChl bGYtPnN5bSk7CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+bnN5bTsgaSsrICkKKyAgICB7 CisgICAgICAgIHVuc2lnbmVkIGludCBpZHggPSBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4Owor ICAgICAgICBFbGZfU3ltICpzeW0gPSAoRWxmX1N5bSAqKWVsZi0+c3ltW2ldLnN5bTsKKworICAg ICAgICBzd2l0Y2ggKCBpZHggKQorICAgICAgICB7CisgICAgICAgIGNhc2UgU0hOX0NPTU1PTjoK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuZXhwZWN0ZWQg Y29tbW9uIHN5bWJvbDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxm LT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBi cmVhazsKKworICAgICAgICBjYXNlIFNITl9VTkRFRjoKKyAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0VSUiwgWFNQTElDRSAiJXM6IFVua25vd24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAg ICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0g LUVOT0VOVDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU0hOX0FCUzoKKyAg ICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogQWJzb2x1dGUgc3lt Ym9sOiAlcyA9PiAlIyJQUkl4RWxmQWRkciJcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwgc3ltLT5zdF92YWx1ZSk7CisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogU0hOX0NPTU1PTiBhbmQgU0hO X0FCUyBhcmUgYWJvdmUuICovCisgICAgICAgICAgICBpZiAoIGlkeCA+PSBTSE5fTE9SRVNFUlZF ICkKKyAgICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgZWxzZSBp ZiAoIGlkeCA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICAgICAgcmMgPSAtRUlO VkFMOworCisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmtub3duIHR5cGU9JSMiUFJJ eDE2IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaWR4KTsKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCAhKGVs Zi0+c2VjW2lkeF0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgKQorICAgICAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgICAgICBzeW0tPnN0X3ZhbHVlICs9ICh1bnNpZ25lZCBsb25nKWVs Zi0+c2VjW2lkeF0ubG9hZF9hZGRyOworICAgICAgICAgICAgaWYgKCBlbGYtPnN5bVtpXS5uYW1l ICkKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFN5 bWJvbCByZXNvbHZlZDogJXMgPT4gJSMiUFJJeEVsZkFkZHIiKCVzKVxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICBzeW0tPnN0X3ZhbHVlLCBlbGYtPnNlY1tpZHhdLm5hbWUpOworICAgICAgICB9CisK KyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1 cm4gcmM7Cit9CisKK2ludCB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyLCAqYmFzZTsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmMgPSAwOworCisgICAgQVNTRVJUKGVsZi0+c3lt KTsKKworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAg eworICAgICAgICByID0gJmVsZi0+c2VjW2ldOworCisgICAgICAgIGlmICggKHItPnNlYy0+c2hf dHlwZSAhPSBTSFRfUkVMQSkgJiYKKyAgICAgICAgICAgICAoci0+c2VjLT5zaF90eXBlICE9IFNI VF9SRUwpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAvKiBJcyBpdCBhIHZh bGlkIHJlbG9jYXRpb24gc2VjdGlvbj8gKi8KKyAgICAgICAgIGlmICggci0+c2VjLT5zaF9pbmZv ID49IGVsZi0+aGRyLT5lX3NobnVtICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg ICBiYXNlID0gJmVsZi0+c2VjW3ItPnNlYy0+c2hfaW5mb107CisKKyAgICAgICAgIC8qIERvbid0 IHJlbG9jYXRlIG5vbi1hbGxvY2F0ZWQgc2VjdGlvbnMuICovCisgICAgICAgICBpZiAoICEoYmFz ZS0+c2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgaWYgKCByLT5zZWMtPnNoX2xpbmsgIT0gZWxmLT5zeW10YWJfaWR4ICkKKyAgICAg ICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogUmVsYXRp dmUgbGluayBvZiAlcyBpcyBpbmNvcnJlY3QgKCVkLCBleHBlY3RlZD0lZClcbiIsCisgICAgICAg ICAgICAgICAgICAgIGVsZi0+bmFtZSwgci0+bmFtZSwgci0+c2VjLT5zaF9saW5rLCBlbGYtPnN5 bXRhYl9pZHgpOworICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHItPnNlYy0+c2hfdHlwZSA9PSBTSFRfUkVMQSAp CisgICAgICAgICAgICByYyA9IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoZWxmLCBiYXNlLCBy KTsKKyAgICAgICAgZWxzZSAvKiBTSFRfUkVMICovCisgICAgICAgICAgICByYyA9IGFyY2hfeHNw bGljZV9wZXJmb3JtX3JlbChlbGYsIGJhc2UsIHIpOworCisgICAgICAgIGlmICggcmMgKQorICAg ICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50 IHhzcGxpY2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogewog ICAgIGNvbnN0IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhkcjsKKyAgICBpbnQgcmM7CiAKICAgICBp ZiAoIHNpemVvZigqZWxmLT5oZHIpID4gZWxmLT5sZW4gKQogICAgIHsKQEAgLTI4Miw2ICszOTIs MTAgQEAgc3RhdGljIGludCB4c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogICAgIH0KIAorICAgIHJj ID0gYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAg cmV0dXJuIHJjOworCiAgICAgaWYgKCBlbGYtPmhkci0+ZV9zaHN0cm5keCA9PSBTSE5fVU5ERUYg KQogICAgIHsKICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlv biBuYW1lIGlkeCBpcyB1bmRlZmluZWQhP1xuIiwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9lbGZzdHJ1Y3RzLmggYi94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCmluZGV4IDg1ZjM1 ZWQuLjJiOWJkM2YgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaApAQCAtNDcyLDYgKzQ3Miw4IEBAIHR5cGVk ZWYgc3RydWN0IHsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTEZTSVpFKSAmJiAoRUxGU0laRSA9 PSAzMikKKyNkZWZpbmUgUFJJeEVsZkFkZHIJIjA4eCIKKwogI2RlZmluZSBFbGZfRWhkcglFbGYz Ml9FaGRyCiAjZGVmaW5lIEVsZl9QaGRyCUVsZjMyX1BoZHIKICNkZWZpbmUgRWxmX1NoZHIJRWxm MzJfU2hkcgpAQCAtNDk3LDYgKzQ5OSw4IEBAIHR5cGVkZWYgc3RydWN0IHsKIAogI2RlZmluZSBB dXhJbmZvCQlBdXgzMkluZm8KICNlbGlmIGRlZmluZWQoRUxGU0laRSkgJiYgKEVMRlNJWkUgPT0g NjQpCisjZGVmaW5lIFBSSXhFbGZBZGRyCVBSSXg2NAorCiAjZGVmaW5lIEVsZl9FaGRyCUVsZjY0 X0VoZHIKICNkZWZpbmUgRWxmX1BoZHIJRWxmNjRfUGhkcgogI2RlZmluZSBFbGZfU2hkcglFbGY2 NF9TaGRyCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oIGIveGVuL2luY2x1 ZGUveGVuL3hzcGxpY2UuaAppbmRleCA3NTU5ODc3Li44NTdjMjY0IDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS94ZW4veHNwbGljZS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKQEAg LTYsNiArNiw5IEBACiAjaWZuZGVmIF9fWEVOX1hTUExJQ0VfSF9fCiAjZGVmaW5lIF9fWEVOX1hT UExJQ0VfSF9fCiAKK3N0cnVjdCB4c3BsaWNlX2VsZjsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zZWM7 CitzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltOwogc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsK IAogI2lmZGVmIENPTkZJR19YU1BMSUNFCkBAIC0xNSw2ICsxOCwyNyBAQCBzdHJ1Y3QgeGVuX3N5 c2N0bF94c3BsaWNlX29wOwogCiBpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX29wICopOwogCisvKiBBcmNoIGhvb2tzLiAqLworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlf ZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKK2ludCBhcmNoX3hzcGxpY2VfcGVy Zm9ybV9yZWwoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpOworaW50 IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpi YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYyAqcmVsYSk7CitlbnVtIHZhX3R5cGUgeworICAgIFhTUExJQ0VfVkFfUlgsIC8qIC50 ZXh0ICovCisgICAgWFNQTElDRV9WQV9SVywgLyogLmRhdGEgKi8KKyAgICBYU1BMSUNFX1ZBX1JP LCAvKiAucm9kYXRhICovCit9OworCisvKgorICogRnVuY3Rpb24gdG8gc2VjdXJlIHRoZSBhbGxv Y2F0ZSBwYWdlcyAoZnJvbSBhcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9hZCkKKyAqIHdpdGggdGhl IHJpZ2h0IHBhZ2UgcGVybWlzc2lvbnMuCisgKi8KK2ludCBhcmNoX3hzcGxpY2Vfc2VjdXJlKGNv bnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSB0eXBlcyk7CisK K3ZvaWQgYXJjaF94c3BsaWNlX2luaXQodm9pZCk7CiAjZWxzZQogCiAjaW5jbHVkZSA8eGVuL2Vy cm5vLmg+IC8qIEZvciAtRU5PU1lTICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNw bGljZV9lbGYuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCmluZGV4IDY4NmFhZjAu Ljc1MGRjOTQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCisrKyBi L3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCkBAIC0xNSw2ICsxNSw4IEBAIHN0cnVjdCB4 c3BsaWNlX2VsZl9zZWMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzLiAqLwogICAgIGNvbnN0IHZvaWQgKmRhdGE7 ICAgICAgICAgICAgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBzZWN0aW9uIChkb25lIGJ5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3Nl Y3Rpb25zKS4gKi8KKyAgICB2b2lkICpsb2FkX2FkZHI7ICAgICAgICAgICAgICAgICAgICAgLyog QSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgZGVzdGluYXRpb24uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbmUgYnkgbG9hZF9wYXlsb2FkX2RhdGEuICov CiB9OwogCiBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltIHsKQEAgLTI5LDggKzMxLDEwIEBAIHN0cnVj dCB4c3BsaWNlX2VsZiB7CiAgICAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOyAgICAgICAg IC8qIEFycmF5IG9mIHNlY3Rpb25zLCBhbGxvY2F0ZWQgYnkgdXMuICovCiAgICAgc3RydWN0IHhz cGxpY2VfZWxmX3N5bSAqc3ltOyAgICAgICAgIC8qIEFycmF5IG9mIHN5bWJvbHMgLCBhbGxvY2F0 ZWQgYnkgdXMuICovCiAgICAgdW5zaWduZWQgaW50IG5zeW07Ci0gICAgY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmX3NlYyAqc3ltdGFiOy8qIFBvaW50ZXIgdG8gLnN5bXRhYiBzZWN0aW9uIC0gYWth IHRvIHNlY1t4XS4gKi8KLSAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzdHJ0YWI7 LyogUG9pbnRlciB0byAuc3RydGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3ldLiAqLworICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN5bXRhYjsvKiBQb2ludGVyIHRvIC5zeW10YWIg c2VjdGlvbiAtIGFrYSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWNbc3ltdGFiX2lkeF0uICovCisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc3RydGFiOy8qIFBvaW50ZXIgdG8gLnN0cnRhYiBzZWN0aW9uLiAqLworICAgIHVuc2lnbmVk IGludCBzeW10YWJfaWR4OwogfTsKIAogY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNw bGljZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCkBAIC0z OCw2ICs0Miw5IEBAIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnhzcGxpY2VfZWxmX3Nl Y19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqCiBpbnQgeHNwbGljZV9lbGZfbG9h ZChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSk7CiB2b2lkIHhzcGxp Y2VfZWxmX2ZyZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOwogCitpbnQgeHNwbGljZV9lbGZf cmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKK2ludCB4c3BsaWNlX2Vs Zl9wZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CisKICNlbmRpZiAvKiBf X1hFTl9YU1BMSUNFX0VMRl9IX18gKi8KIAogLyoKLS0gCjIuNC4zCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK