From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 12/34] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Wed, 23 Mar 2016 23:13:42 -0400 Message-ID: <20160324031342.GC13266@localhost.localdomain> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> <1458064616-23101-13-git-send-email-konrad.wilk@oracle.com> <56F2AD7102000078000DFAEB@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 1aivjb-0002qt-Ue for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 03:14:56 +0000 Content-Disposition: inline In-Reply-To: <56F2AD7102000078000DFAEB@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: Wei Liu , Stefano Stabellini , andrew.cooper3@citrix.com, Ian Jackson , mpohlack@amazon.de, ross.lagerwall@citrix.com, xen-devel@lists.xenproject.org, Daniel De Graaf , sasha.levin@oracle.com List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBNYXIgMjMsIDIwMTYgYXQgMDc6NTE6MjlBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDE1LjAzLjE2IGF0IDE4OjU2LCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4g d3JvdGU6Cj4gPiAtLS0gYS94ZW4vY29tbW9uL0tjb25maWcKPiA+ICsrKyBiL3hlbi9jb21tb24v S2NvbmZpZwo+ID4gQEAgLTE2OCw0ICsxNjgsMTUgQEAgY29uZmlnIFNDSEVEX0RFRkFVTFQKPiA+ ICAKPiA+ICBlbmRtZW51Cj4gPiAgCj4gPiArIyBFbmFibGUvRGlzYWJsZSB4c3BsaWNlIHN1cHBv cnQKPiA+ICtjb25maWcgWFNQTElDRQo+ID4gKwlib29sICJ4U3BsaWNlIGxpdmUgcGF0Y2hpbmcg c3VwcG9ydCIKPiA+ICsJZGVmYXVsdCB5Cj4gCj4gSXNuJ3QgaXQgYSBsaXR0bGUgZWFybHkgaW4g dGhlIHNlcmllcyB0byBkZWZhdWx0IHRoaXMgdG8gb24/CgpJIGFtIGFtYml0aW91cyEKPiAKPiBB bmQgdGhlbiBvZiBjb3Vyc2UgdGhlIEVYUEVSVCBxdWVzdGlvbiBjb21lcyB1cCBhZ2Fpbi4gTm8K PiBtYXR0ZXIgdGhhdCBJYW5DIGlzIG5vIGxvbmdlciBhcm91bmQgdG8gaGVscCB3aXRoIHRoZQo+ IGFyZ3VtZW50YXRpb24sIHRoZSBwb2ludCBoZSBoYXMgYmVlbiBtYWtpbmcgYWJvdXQgdG9vIG1h bnkKPiBmbGF2b3JzIGVuZGluZyB1cCBpbiB0aGUgd2lsZCBjb250aW51ZXMgdG8gYXBwbHkuCgon dG9vIG1hbnkgZmxhdm9ycyc/IEFzIGluIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBYZW4gd2l0aCBv ciB3aXRob3V0CnRoZXNlIG9wdGlvbnMgZW5hYmxlZD8gCgouLiBzbmlwLi4KPiAKPiA+ICtzdGF0 aWMgaW50IGZpbmRfcGF5bG9hZChjb25zdCB4ZW5feHNwbGljZV9uYW1lX3QgKm5hbWUsIHN0cnVj dCBwYXlsb2FkICoqZikKPiAKLi5zbmlwLi4KPiA+ICsgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ ID4gKwo+ID4gKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOwo+IAo+IFdo eSBkbyB5b3UgbmVlZCBhIHJlY3Vyc2l2ZSBsb2NrIGhlcmU/IEkgdGhpbmsgc29tZXRoaW5nIGxp a2UgdGhpcwo+IHNob3VsZCBiZSByZWFzb25lZCBhYm91dCBpbiB0aGUgY29tbWl0IG1lc3NhZ2Uu CgpUaGUgZWFybGllciB2ZXJzaW9uIHVzZWQgYW4gZXh0cmEgcGFyYW1ldGVyIChsb2NrZWQpIHRv IGRpZmZyZW5jaWF0ZQp3aGV0aGVyIHRvIHRha2UgYSBsb2NrIG9yIG5vdCBhcyB0aGUgY2FsbGVy IGNvdWxkIGhhdmUgdGFrZW4gaXQuCgpBbmRyZXcgZGlkbid0IGxpa2UgaXQgcGFydGljdWxhcmx5 IGFuZCBhc2tlZCBpdCB0byBiZSByZWN1cnNpdmUKc28gdGhhdCB3ZSBkb24ndCBieSBhY2NpZGVu dCBtZXNzIHVwIHRoZSBsb2NraW5nLgoKLi4gc25pcC4uCj4gPiArc3RhdGljIGludCB4c3BsaWNl X3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKCi4uIHNuaXAuLgo+ ID4gKyBvdXQ6Cj4gPiArICAgIHZmcmVlKHJhd19kYXRhKTsKPiAKPiBCeSBoZXJlIHlvdSBhbGxv Y2F0ZWQgYW5kIGZpbGxlZCByYXdfZGF0YS4gQW5kIG5vdyB5b3UKPiB1bmNvbmRpdGlvbmFsbHkg ZnJlZSBpdC4gV2hhdCBpcyB0aGF0IGdvb2QgZm9yPwoKTm90aGluZy4gSXQgd2FzIGFkZGVkIGFz IGEgcGxhY2Vob2xkZXIgLSBhcyB0aGUgcGF0Y2gKdGl0bGVkICJ4c3BsaWNlOiBJbXBsZW1lbnQg cGF5bG9hZCBsb2FkaW5nIiBpcyBhY3R1YWxseSBkb2luZwp1c2VmdWwgdGhpbmdzLiBJJ3ZlIG1v dmVkIHRoZSBvcGVyYXRpb25zIGFyb3VuZCByYXdfZGF0YSBpbnRvIHRoYXQKcGF0Y2guCgo+ID4g K3N0YXRpYyBpbnQgeHNwbGljZV9saXN0KHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgKmxpc3Qp Cj4gPiArewo+ID4gKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7Cj4gPiArICAgIHN0 cnVjdCBwYXlsb2FkICpkYXRhOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQgaWR4ID0gMCwgaSA9IDA7 Cj4gPiArICAgIGludCByYyA9IDA7Cj4gPiArCj4gPiArICAgIGlmICggbGlzdC0+bnIgPiAxMDI0 ICkKPiA+ICsgICAgICAgIHJldHVybiAtRTJCSUc7Cj4gPiArCj4gPiArICAgIGlmICggbGlzdC0+ cGFkICE9IDAgKQo+ID4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgIGlm ICggIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPnN0YXR1cywgc2l6ZW9mKHN0YXR1cykgKiBsaXN0 LT5ucikgfHwKPiA+ICsgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bmFtZSwgWEVO X1hTUExJQ0VfTkFNRV9TSVpFICogbGlzdC0+bnIpIHx8Cj4gPiArICAgICAgICAgIWd1ZXN0X2hh bmRsZV9va2F5KGxpc3QtPmxlbiwgc2l6ZW9mKHVpbnQzMl90KSAqIGxpc3QtPm5yKSApCj4gCj4g Z3Vlc3RfaGFuZGxlX29rYXkoKSBhbHJlYWR5IHRha2VzIGludG8gYWNjb3VudCB0aGUgZWxlbWVu dCBzaXplLAo+IGkuZS4gaXQncyBvbmx5IHRoZSBtaWRkbGUgb25lIHdoaWNoIG5lZWRzIHRvIGRv IGFueSBtdWx0aXBsaWNhdGlvbi4KPiAKPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4g Kwo+ID4gKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOwo+ID4gKyAgICBp ZiAoIGxpc3QtPmlkeCA+IHBheWxvYWRfY250IHx8ICFsaXN0LT5uciApCj4gCj4gVGhlIGxpc3Qt Pm5yIGNoZWNrIGNvdWxkIG1vdmUgdXAgb3V0c2lkZSB0aGUgbG9ja2VkIHJlZ2lvbiAoZS5nLgo+ IG1lcmdlIHdpdGggdGhlIHBhZCBmaWVsZCBjaGVjaykuCgpJIHJld29ya2VkIHRoaXMgYSBiaXQu IEkgbWFkZSBpdCBzbyB0aGF0IGlmIGxpc3QtPm5yIGlzIDAgd2Ugd291bGQKcG9wdWxhdGUgbGlz dC0+bnI9cGF5bG9hZF9jb3VudCwgbGlzdC0+dmVyc2lvbj1wYXlsb2FkX3ZlcnNpb24uCgoKPiAK PiA+ICsgICAgewo+ID4gKyAgICAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xv Y2spOwo+ID4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCj4gCj4g QXJlbid0IHlvdSBsYWNraW5nIGEgbGlzdC0+dmVyc2lvbiBjaGVjayBwcmlvciB0byBlbnRlcmlu ZyB0aGlzIGxvb3AKPiAod2hpY2ggd291bGQgdGhlbiBtZWFuIHlvdSBkb24ndCBuZWVkIHRvIHN0 b3JlIGl0IGJlbG93LCBidXQgb25seQo+IG9uIHRoZSBlcnJvciBwYXRoIGZyb20gdGhhdCBjaGVj ayk/CgpOby4gVGhlIHRvb2xzdGFjayBoYXMgbm8gaWRlYSBvZiB3aGF0IHRoZSByaWdodCB2ZXJz aW9uIGlzIG9uIHRoZQpmaXJzdCBpbnZvY2F0aW9uLiBXaGljaCBpcyBPSyBzaW5jZSBpdCBnZXRz IGZyZXNoIGRhdGEgKGl0IGlzCml0cyBmaXJzdCBpbnZvY2F0aW9uKS4KCk9uIHN1YnNlcXVlbnQg aW52b2NhdGlvbnMgd2UgZ2xlZWZ1bHkgcG9wdWxhdGUgdXAgdG8KbWluKHBheWxvYWRfY250LCAt Pm5yKSBvZiBkYXRhIGV2ZW4gaWYgdGhlIHZlcnNpb24gdGhlIHRvb2xzdGFjawpwcm92aWRlZCBp cyBkaWZmZXJlbnQuIFRoZSB0b29sc3RhY2sgd2lsbCBoYXZlIHRvIGRlY2lkZSB0byB0aHJvdyBh d2F5CnRoZSBkYXRhIGFuZCByZXRyeSB0aGUgaHlwZXJjYWxsOyBvciBwcmludCBpdCBvdXQgYXMg aXMuCgo+IAo+ID4gKyAgICB7Cj4gPiArICAgICAgICB1aW50MzJfdCBsZW47Cj4gPiArCj4gPiAr ICAgICAgICBpZiAoIGxpc3QtPmlkeCA+IGkrKyApCj4gPiArICAgICAgICAgICAgY29udGludWU7 Cj4gPiArCj4gPiArICAgICAgICBzdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKPiA+ICsgICAg ICAgIHN0YXR1cy5yYyA9IGRhdGEtPnJjOwo+ID4gKyAgICAgICAgbGVuID0gc3RybGVuKGRhdGEt Pm5hbWUpOwo+ID4gKwo+ID4gKyAgICAgICAgLyogTi5CLiAnaWR4JyAhPSAnaScuICovCj4gPiAr ICAgICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlzdC0+bmFtZSwgaWR4ICogWEVO X1hTUExJQ0VfTkFNRV9TSVpFLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGEtPm5hbWUsIGxlbikgfHwKPiA+ICsgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0 X29mZnNldChsaXN0LT5sZW4sIGlkeCwgJmxlbiwgMSkgfHwKPiAKPiBZb3UncmUgbm90IGNvcGlu ZyB0aGUgTlVMIHRlcm1pbmF0b3IgaGVyZSwgd2hpY2ggbWFrZXMgdGhlIHJlc3VsdAo+IG1vcmUg Y3VtYmVyc29tZSB0byBjb25zdW1lIGJ5IHRoZSBjYWxsZXIuIFBlcmhhcHMKPiBYRU5fWFNQTElD RV9OQU1FX1NJWkUgc2hvdWxkIHJlbWFpbiB0byBiZSAxMjggKG90aGVyIHRoYW4KPiBzdWdnZXN0 ZWQgYWJvdmUpLCBidXQgYmUgc3BlY2lmaWVkIHRvIGluY2x1ZGUgdGhlIHRlcm1pbmF0b3I/CgpZ ZXMuIEZpeGVkIHRoYXQuIEl0IGFsc28gbmVlZGVkIGEgbWlub3IgY2hhbmdlIGluOgoibGlieGM6 IEltcGxlbWVudGF0aW9uIG9mIFhFTl9YU1BMSUNFX29wIGluIGxpYnhjIiB0byBhY2NvdW50IGZv cgpzdHJsZW4uICgrMSB0byBpdHMgcmVzdWx0KQoKCkhlcmUgaXMgdGhlIG5ld2x5IG1pbnRlZCBw YXRjaCB3aXRoIHlvdXIgc3VnZ2VzdGlvbnMgaG9wZWZ1bGx5CmltcGxlbWVudGVkIHRvIHlvdXIg bGlraW5nIQoKRnJvbSA0MGYwZTlmZGI1MDkzNWQ0ZDNkZjYwODk1MDMxMzA1MWEyOGYxMmI5IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJh ZC53aWxrQG9yYWNsZS5jb20+CkRhdGU6IE1vbiwgMjUgSmFuIDIwMTYgMTA6NTE6MjIgLTA1MDAK U3ViamVjdDogW1BBVENIXSB4ZW4veHNwbGljZTogSHlwZXJ2aXNvciBpbXBsZW1lbnRhdGlvbiBv ZiBYRU5fWFNQTElDRV9vcAoKVGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRv IGFueSBwYXRjaGluZy4KCkl0IGp1c3QgYWRkcyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyB0aGUg aHlwZXJjYWxscywKa2VlcGluZyB0cmFjayBvZiBFTEYgcGF5bG9hZHMsIGFuZCB0aGUgYmFzaWMg b3BlcmF0aW9uczoKIC0gcXVlcnkgd2hpY2ggcGF5bG9hZHMgZXhpc3QsCiAtIHF1ZXJ5IGZvciBz cGVjaWZpYyBwYXlsb2FkcywKIC0gY2hlY2sqMSwgYXBwbHkqMSwgcmVwbGFjZSoxLCBhbmQgdW5s b2FkIHBheWxvYWRzLgoKKjE6IFdoaWNoIG9mIGNvdXJzZSBpbiB0aGlzIHBhdGNoIGFyZSBub3Bz LgoKVGhlIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJsZWQgb24gQVJNIHVudGlsIGFsbCBhcmNoCmNv bXBvbmVudHMgYXJlIGltcGxlbWVudGVkLgoKQWxzbyBieSBkZWZhdWx0IGl0IGlzIGRpc2FibGVk IHVudGlsIHRoZSBpbXBsZW1lbnRhdGlvbgppcyBpbiBwbGFjZS4KCldlIGFsc28gdXNlIHJlY3Vy c2l2ZSBzcGlubG9ja3MgdG8gc28gdGhhdCB0aGUgZmluZF9wYXlsb2FkCmZ1bmN0aW9uIGRvZXMg bm90IG5lZWQgdG8gaGF2ZSBhICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKQWNrZWQt Ynk6IERhbmllbCBEZSBHcmFhZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292PgpTaWduZWQtb2ZmLWJ5 OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgoKLS0tCkNj OiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KQ2M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVm YW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJp eC5jb20+Cgp2MjogUmViYXNlZCBvbiBrZXloYW5kbGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZy YXN0cnVjdHVyZQp2MzogRml4ZWQgWFNNLgogLSBSZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAg U3BsaXQgc3RhdHVzIGFuZCBlcnJvciBjb2RlLgogICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAg U2VwYXJhdGUgcGF5bG9hZCBkYXRhIGZyb20gdGhlIHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9Y U1BMSUNFX0lEXy4uL1hTUExJQ0VfTkFNRV8uLi8KIC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19Y U1BMSUNFIGJ1aWxkIHRvcHRpb24uCiAgICBGaXggY29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAg VXBkYXRlIHRoZSBzeXNjdGwuaCAoY2hhbmdlIGJpdHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ug b24gS2NvbmZpZyBjaGFuZ2VzLgogLSBBZGQgbWlzc2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBr ZXloYW5kbGVyLmggdG8gYnVpbGQgb24gQVJNLgogLSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhl IHNjaGVkdWxlcnMgaW50byBLY29uZmlnCiAtIHMvaWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xv Y2svcGF5bG9hZF9sb2NrLwogLSBQdXQgI2lmZGVmIENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBm aWxlIHBlciBEb3VnIHJldmlldy4KIC0gQW5kcmV3IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2 ZSBzcGlubG9ja3MsIGNoYW5nZSBuYW1lIHRvIHhzcGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5l dy1saW5lcywgYWRkIGxvY2FsIHZhcmlhYmxlIGJsb2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRp YWdyYW0sIHNxdWFzaCB0d28gZ290byBsYWJlbHMsIHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAg ICAgYWxsb2NfeGVuaGVhcF9wYWdlcy4KICAgIC0gY2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0 byB1aW50MzJfdAogICAgLSByZW1vdmUgdGhlIGVyciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxv YWQKICAgIC0gdXNlIHZvaWQqIGluc3RhZWQgb2YgdWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJv dW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQuCiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGls ZXIgdW5kZXIgQVJNLgogLSBBZGQgbWlzc2luZyBDb3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0g RHJvcHBlZCBMT0FERUQgc3RhdGUsIG1ha2UgdGhlIHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6 IE1hZGUgaXQgb25seSB3b3JrIG9uIHg4NiBwZXIgSnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciBy ZXF1ZXN0Lgp2NTogRHJvcHBlZCB0aGUgbG9hZC0+Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNj dGwuaAogICAgTWFkZSB0aGUgLT5ucj0wIGNhbGwgd29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBv ZiBjYXNlcy4KLS0tCiB0b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50 ZSB8ICAgMSArCiB4ZW4vY29tbW9uL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxMiArCiB4ZW4vY29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiB4ZW4vY29tbW9uL3N5c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyAr CiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwNiArKysr KysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgICAg ICAgICAgICAgICAgIHwgMTY2ICsrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5o ICAgICAgICAgICAgICAgICAgICB8ICAzNSArKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192 ZWN0b3JzICAgICAgICAgIHwgICAyICsKIDkgZmlsZXMgY2hhbmdlZCwgNjM2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKCmRpZmYgLS1naXQgYS90b29scy9mbGFz ay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9w b2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCmluZGV4IDdlNjljZTkuLjY4ZWY2ZGUgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCisrKyBiL3Rv b2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCkBAIC03Miw2ICs3Miw3 IEBAIGFsbG93IGRvbTBfdCB4ZW5fdDp4ZW4yIHsKIGFsbG93IGRvbTBfdCB4ZW5fdDp4ZW4yIHsK ICAgICBwbXVfY3RybAogICAgIGdldF9zeW1ib2wKKyAgICB4c3BsaWNlX29wCiB9OwogCiAjIEFs bG93IGRvbTAgdG8gdXNlIGFsbCBYRU5WRVJfIHN1Ym9wcyBhbmQgVkVSU0lPTiBzdWJvcHMgdGhh dCBoYXZlIGNoZWNrcy4KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBiL3hlbi9jb21t b24vS2NvbmZpZwppbmRleCAzNTIyZWNiLi5kODBkZGRiIDEwMDY0NAotLS0gYS94ZW4vY29tbW9u L0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC0xODIsNCArMTgyLDE2IEBAIGNv bmZpZyBTQ0hFRF9ERUZBVUxUCiAKIGVuZG1lbnUKIAorIyBFbmFibGUvRGlzYWJsZSB4c3BsaWNl IHN1cHBvcnQKK2NvbmZpZyBYU1BMSUNFCisJYm9vbCAieFNwbGljZSBsaXZlIHBhdGNoaW5nIHN1 cHBvcnQiCisJZGVmYXVsdCBuCisJZGVwZW5kcyBvbiBYODYKKwktLS1oZWxwLS0tCisJICBBbGxv d3MgYSBydW5uaW5nIFhlbiBoeXBlcnZpc29yIHRvIGJlIGR5bmFtaWNhbGx5IHBhdGNoZWQgdXNp bmcKKwkgIGJpbmFyeSBwYXRjaGVzIHdpdGhvdXQgcmVib290aW5nLiBUaGlzIGlzIHByaW1hcmls eSB1c2VkIHRvIGJpbmFyaWx5CisJICBwYXRjaCBpbiB0aGUgZmllbGQgYW4gaHlwZXJ2aXNvciB3 aXRoIFhTQSBmaXhlcy4KKworCSAgSWYgdW5zdXJlLCBzYXkgWS4KKwogZW5kbWVudQpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5kZXggZTQz ZWM0OS4uMWU0YmM3MCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysgYi94ZW4v Y29tbW9uL01ha2VmaWxlCkBAIC01OCw2ICs1OCw3IEBAIG9iai15ICs9IHZzcHJpbnRmLm8KIG9i ai15ICs9IHdhaXQubwogb2JqLSQoQ09ORklHX1hFTk9QUk9GKSArPSB4ZW5vcHJvZi5vCiBvYmot eSArPSB4bWFsbG9jX3Rsc2Yubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2Uubwog CiBvYmotYmluLSQoQ09ORklHX1g4NikgKz0gJChmb3JlYWNoIG4sZGVjb21wcmVzcyBidW56aXAy IHVueHogdW5sem1hIHVubHpvIHVubHo0IGVhcmx5Y3BpbywkKG4pLmluaXQubykKIApkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMKaW5kZXggMjUz YjdjOC4uMGZhYzk0MCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNjdGwuYworKysgYi94ZW4v Y29tbW9uL3N5c2N0bC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8eHNtL3hzbS5oPgog I2luY2x1ZGUgPHhlbi9wbXN0YXQuaD4KICNpbmNsdWRlIDx4ZW4vZ2Nvdi5oPgorI2luY2x1ZGUg PHhlbi94c3BsaWNlLmg+CiAKIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o eGVuX3N5c2N0bF90KSB1X3N5c2N0bCkKIHsKQEAgLTQ2MCw2ICs0NjEsMTIgQEAgbG9uZyBkb19z eXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAg ICAgICByZXQgPSB0bWVtX2NvbnRyb2woJm9wLT51LnRtZW1fb3ApOwogICAgICAgICBicmVhazsK IAorICAgIGNhc2UgWEVOX1NZU0NUTF94c3BsaWNlX29wOgorICAgICAgICByZXQgPSB4c3BsaWNl X29wKCZvcC0+dS54c3BsaWNlKTsKKyAgICAgICAgaWYgKCByZXQgIT0gLUVPUE5PVFNVUFAgKQor ICAgICAgICAgICAgY29weWJhY2sgPSAxOworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6 CiAgICAgICAgIHJldCA9IGFyY2hfZG9fc3lzY3RsKG9wLCB1X3N5c2N0bCk7CiAgICAgICAgIGNv cHliYWNrID0gMDsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1v bi94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0NzAzMgot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBAIC0wLDAgKzEsNDA2IEBA CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRlIDx4ZW4vZXJyLmg+Cisj aW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+ CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8 eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL3NtcC5oPgor I2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KKworI2luY2x1ZGUgPGFzbS9ldmVudC5oPgorI2luY2x1ZGUgPHB1 YmxpYy9zeXNjdGwuaD4KKworc3RhdGljIERFRklORV9TUElOTE9DSyhwYXlsb2FkX2xvY2spOwor c3RhdGljIExJU1RfSEVBRChwYXlsb2FkX2xpc3QpOworCitzdGF0aWMgdW5zaWduZWQgaW50IHBh eWxvYWRfY250Oworc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3ZlcnNpb24gPSAxOworCitz dHJ1Y3QgcGF5bG9hZCB7CisgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAg IC8qIE9uZSBvZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLworICAgIGludDMyX3QgcmM7ICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLworICAgIHN0cnVjdCBsaXN0 X2hlYWQgbGlzdDsgICAgICAgICAgICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICov CisgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQu ICovCit9OworCitzdGF0aWMgaW50IHZlcmlmeV9uYW1lKGNvbnN0IHhlbl94c3BsaWNlX25hbWVf dCAqbmFtZSkKK3sKKyAgICBpZiAoICFuYW1lLT5zaXplIHx8IG5hbWUtPnNpemUgPiBYRU5fWFNQ TElDRV9OQU1FX1NJWkUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggbmFt ZS0+cGFkWzBdIHx8IG5hbWUtPnBhZFsxXSB8fCBuYW1lLT5wYWRbMl0gKQorICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KG5hbWUtPm5hbWUsIG5h bWUtPnNpemUpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCB2ZXJpZnlfcGF5bG9hZChjb25zdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBs b2FkX3QgKnVwbG9hZCkKK3sKKyAgICBpZiAoIHZlcmlmeV9uYW1lKCZ1cGxvYWQtPm5hbWUpICkK KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICF1cGxvYWQtPnNpemUgKQorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggdXBsb2FkLT5zaXplID4gTUIoMikgKQor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KHVw bG9hZC0+cGF5bG9hZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOwor CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBXZSBtYXkgYmUgaG9sZGluZyB0aGUgcGF5bG9h ZF9sb2NrIG9yIG5vdC4gSGVuY2Ugd2UgbmVlZAorICogdGhlIHJlY3Vyc2l2ZSBzcGlubG9jay4g T3Igd2UgY2FuIGp1ZGljaW91c2x5IHVzZSBhbgorICogbG9jayBhcmd1bWVudCB0byBkaWZmZXJl bmNpYXRlIC0gYnV0IGl0IGlzIHNpbXBsZXIgd2l0aCByZWN1cnNpdmUgbG9ja3MuCisgKi8KK3N0 YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9wYXlsb2FkKGNvbnN0IHhlbl94c3BsaWNlX25hbWVf dCAqbmFtZSkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKmZvdW5kID0gTlVMTDsKKyAg ICBjaGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9 IHZlcmlmeV9uYW1lKG5hbWUpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gRVJSX1BU UihyYyk7CisKKyAgICBpZiAoIF9fY29weV9mcm9tX2d1ZXN0KG4sIG5hbWUtPm5hbWUsIG5hbWUt PnNpemUpICkKKyAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVGQVVMVCk7CisKKyAgICBpZiAoIG5b bmFtZS0+c2l6ZSAtIDFdICkKKyAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKyAg ICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworCisgICAgbGlzdF9mb3JfZWFj aF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAgaWYg KCAhc3RyY21wKGRhdGEtPm5hbWUsIG4pICkKKyAgICAgICAgeworICAgICAgICAgICAgZm91bmQg PSBkYXRhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzcGlu X3VubG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7CisKKyAgICByZXR1cm4gZm91bmQ7Cit9 CisKKy8qIFdlIE1VU1QgYmUgaG9sZGluZyB0aGUgcGF5bG9hZF9sb2NrIHNwaW5sb2NrLiAqLwor c3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQoreworICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CisgICAgbGlzdF9kZWwoJmRhdGEt Pmxpc3QpOworICAgIHBheWxvYWRfY250LS07CisgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAg eGZyZWUoZGF0YSk7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94 c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7Cisg ICAgaW50IHJjOworCisgICAgcmMgPSB2ZXJpZnlfcGF5bG9hZCh1cGxvYWQpOworICAgIGlmICgg cmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBkYXRhID0gZmluZF9wYXlsb2FkKCZ1cGxv YWQtPm5hbWUpOworICAgIGlmICggZGF0YSAmJiAhSVNfRVJSKGRhdGEpIC8qIEZvdW5kLiAqLyAp CisgICAgICAgIHJldHVybiAtRUVYSVNUOworCisgICAgaWYgKCBJU19FUlIoZGF0YSkgKQorICAg ICAgICByZXR1cm4gUFRSX0VSUihkYXRhKTsKKworICAgIGRhdGEgPSB4emFsbG9jKHN0cnVjdCBw YXlsb2FkKTsKKyAgICBpZiAoICFkYXRhICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAg ICByYyA9IC1FRkFVTFQ7CisgICAgaWYgKCBfX2NvcHlfZnJvbV9ndWVzdChkYXRhLT5uYW1lLCB1 cGxvYWQtPm5hbWUubmFtZSwgdXBsb2FkLT5uYW1lLnNpemUpICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByYyA9IC1FSU5WQUw7CisgICAgaWYgKCBkYXRhLT5uYW1lW3VwbG9hZC0+bmFtZS5z aXplIC0gMV0gKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gMDsKKyAgICBkYXRhLT5z dGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+ bGlzdCk7CisKKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworICAgIGxp c3RfYWRkX3RhaWwoJmRhdGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOworICAgIHBheWxvYWRfY250 Kys7CisgICAgcGF5bG9hZF92ZXJzaW9uKys7CisgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZw YXlsb2FkX2xvY2spOworCisgb3V0OgorICAgIGlmICggcmMgKQorICAgICAgICB4ZnJlZShkYXRh KTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCB4c3BsaWNlX2dldCh4ZW5fc3lz Y3RsX3hzcGxpY2VfZ2V0X3QgKmdldCkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsKKyAg ICBpbnQgcmM7CisKKyAgICByYyA9IHZlcmlmeV9uYW1lKCZnZXQtPm5hbWUpOworICAgIGlmICgg cmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXls b2FkX2xvY2spOworCisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZCgmZ2V0LT5uYW1lKTsKKyAgICBp ZiAoIElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrX3Jl Y3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKyAgICAgICAgaWYgKCAhZGF0YSApCisgICAgICAgICAg ICByZXR1cm4gLUVOT0VOVDsKKworICAgICAgICByZXR1cm4gUFRSX0VSUihkYXRhKTsKKyAgICB9 CisKKyAgICBnZXQtPnN0YXR1cy5zdGF0ZSA9IGRhdGEtPnN0YXRlOworICAgIGdldC0+c3RhdHVz LnJjID0gZGF0YS0+cmM7CisKKyAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9j ayk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4c3BsaWNlX2xpc3QoeGVuX3N5 c2N0bF94c3BsaWNlX2xpc3RfdCAqbGlzdCkKK3sKKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBz dGF0dXM7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGlkeCA9 IDAsIGkgPSAwOworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAoIGxpc3QtPm5yID4gMTAyNCAp CisgICAgICAgIHJldHVybiAtRTJCSUc7CisKKyAgICBpZiAoIGxpc3QtPnBhZCApCisgICAgICAg IHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBsaXN0LT5uciAmJgorICAgICAgICAgKCFndWVz dF9oYW5kbGVfb2theShsaXN0LT5zdGF0dXMsIGxpc3QtPm5yKSB8fAorICAgICAgICAgICFndWVz dF9oYW5kbGVfb2theShsaXN0LT5uYW1lLCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKiBsaXN0LT5u cikgfHwKKyAgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bGVuLCBsaXN0LT5ucikp ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZw YXlsb2FkX2xvY2spOworICAgIGlmICggbGlzdC0+aWR4ID4gcGF5bG9hZF9jbnQgKQorICAgIHsK KyAgICAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIGxpc3QtPm5yICkKKyAgICB7CisgICAg ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAg ICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBsZW47CisKKyAgICAgICAgICAgIGlmICggbGlz dC0+aWR4ID4gaSsrICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg c3RhdHVzLnN0YXRlID0gZGF0YS0+c3RhdGU7CisgICAgICAgICAgICBzdGF0dXMucmMgPSBkYXRh LT5yYzsKKyAgICAgICAgICAgIGxlbiA9IHN0cmxlbihkYXRhLT5uYW1lKSArIDE7CisKKyAgICAg ICAgICAgIC8qIE4uQi4gJ2lkeCcgIT0gJ2knLiAqLworICAgICAgICAgICAgaWYgKCBfX2NvcHlf dG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPm5hbWUsIGlkeCAqIFhFTl9YU1BMSUNFX05BTUVfU0laRSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBsZW4p IHx8CisgICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0X29mZnNldChsaXN0LT5sZW4sIGlk eCwgJmxlbiwgMSkgfHwKKyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxp c3QtPnN0YXR1cywgaWR4LCAmc3RhdHVzLCAxKSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBpZHgrKzsKKworICAgICAgICAgICAgaWYgKCAoaWR4ID49IGxpc3Qt Pm5yKSB8fCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKKyAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXN0LT5uciA9IHBheWxvYWRfY250IC0gaTsgLyog UmVtYWluaW5nIGFtb3VudC4gKi8KKyAgICBsaXN0LT52ZXJzaW9uID0gcGF5bG9hZF92ZXJzaW9u OworICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKworICAgIC8qIEFu ZCBob3cgbWFueSB3ZSBoYXZlIHByb2Nlc3NlZC4gKi8KKyAgICByZXR1cm4gcmMgPyA6IGlkeDsK K30KKworc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9u X3QgKmFjdGlvbikKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsKKyAgICBpbnQgcmM7CisK KyAgICByYyA9IHZlcmlmeV9uYW1lKCZhY3Rpb24tPm5hbWUpOworICAgIGlmICggcmMgKQorICAg ICAgICByZXR1cm4gcmM7CisKKyAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2sp OworICAgIGRhdGEgPSBmaW5kX3BheWxvYWQoJmFjdGlvbi0+bmFtZSk7CisgICAgaWYgKCBJU19F UlJfT1JfTlVMTChkYXRhKSApCisgICAgeworICAgICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JnBheWxvYWRfbG9jayk7CisgICAgICAgIGlmICggIWRhdGEgKQorICAgICAgICAgICAgcmV0dXJu IC1FTk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0YSk7CisgICAgfQorCisgICAg c3dpdGNoICggYWN0aW9uLT5jbWQgKQorICAgIHsKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0NI RUNLOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAg ICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAg ICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBY U1BMSUNFX0FDVElPTl9VTkxPQUQ6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElD RV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgZnJlZV9wYXlsb2FkKGRh dGEpOworICAgICAgICAgICAgLyogTm8gdG91Y2hpbmcgJ2RhdGEnIGZyb20gaGVyZSBvbiEgKi8K KyAgICAgICAgICAgIGRhdGEgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisg ICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUg PT0gWFNQTElDRV9TVEFURV9BUFBMSUVEICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8g aW1wbGVtZW50YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNF X1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAg ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0FQUExZOgorICAgICAgICBp ZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRhdGEt PnN0YXRlID0gWFNQTElDRV9TVEFURV9BUFBMSUVEOworICAgICAgICAgICAgZGF0YS0+cmMgPSAw OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9S RVBMQUNFOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8K KyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAg ICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVm YXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworCisgICAgcmV0dXJu IHJjOworfQorCitpbnQgeHNwbGljZV9vcCh4ZW5fc3lzY3RsX3hzcGxpY2Vfb3BfdCAqeHNwbGlj ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIHhzcGxpY2UtPnBhZCApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgc3dpdGNoICggeHNwbGljZS0+Y21kICkKKyAgICB7CisgICAg Y2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOgorICAgICAgICByYyA9IHhzcGxpY2VfdXBs b2FkKCZ4c3BsaWNlLT51LnVwbG9hZCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5f U1lTQ1RMX1hTUExJQ0VfR0VUOgorICAgICAgICByYyA9IHhzcGxpY2VfZ2V0KCZ4c3BsaWNlLT51 LmdldCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElT VDoKKyAgICAgICAgcmMgPSB4c3BsaWNlX2xpc3QoJnhzcGxpY2UtPnUubGlzdCk7CisgICAgICAg IGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OOgorICAgICAgICBy YyA9IHhzcGxpY2VfYWN0aW9uKCZ4c3BsaWNlLT51LmFjdGlvbik7CisgICAgICAgIGJyZWFrOwor CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJlYWs7 CisgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzdGF0ZTJz dHIodWludDMyX3Qgc3RhdGUpCit7CisjZGVmaW5lIFNUQVRFKHgpIFtYU1BMSUNFX1NUQVRFXyMj eF0gPSAjeAorICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geworICAgICAg ICAgICAgU1RBVEUoQ0hFQ0tFRCksCisgICAgICAgICAgICBTVEFURShBUFBMSUVEKSwKKyAgICB9 OworI3VuZGVmIFNUQVRFCisKKyAgICBpZiAoc3RhdGUgPj0gQVJSQVlfU0laRShuYW1lcykgfHwg IW5hbWVzW3N0YXRlXSkKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKworICAgIHJldHVybiBu YW1lc1tzdGF0ZV07Cit9CisKK3N0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQg Y2hhciBrZXkpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisKKyAgICBpZiAoICFzcGlu X3RyeWxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spICkKKyAgICB7CisgICAgICAgIHByaW50 aygiTG9jayBoZWxkLiBUcnkgYWdhaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAg ICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZClcbiIsIGRhdGEtPm5hbWUsCisgICAg ICAgICAgICAgICBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSk7CisKKyAgICBz cGluX3VubG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7Cit9CisKK3N0YXRpYyBpbnQgX19p bml0IHhzcGxpY2VfaW5pdCh2b2lkKQoreworICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4 c3BsaWNlX3ByaW50YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKyAgICByZXR1cm4g MDsKK30KK19faW5pdGNhbGwoeHNwbGljZV9pbml0KTsKKworLyoKKyAqIExvY2FsIHZhcmlhYmxl czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0 OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor ICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVk ZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggOTY2ODBlYi4uY2U2NzRkOCAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwu aApAQCAtNzY2LDYgKzc2NiwxNzAgQEAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCB7CiB0eXBl ZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3RtZW1fb3AgeGVuX3N5c2N0bF90bWVtX29wX3Q7CiBERUZJ TkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3RtZW1fb3BfdCk7CiAKKy8qCisgKiBYRU5f U1lTQ1RMX1hTUExJQ0Vfb3AKKyAqCisgKiBSZWZlciB0byB0aGUgZG9jcy91bnN0YWJsZS9taXNj L3hzcGxpY2UubWFya2Rvd24KKyAqIGZvciB0aGUgZGVzaWduIGRldGFpbHMgb2YgdGhpcyBoeXBl cmNhbGwuCisgKgorICogVGhlcmUgYXJlIGZvdXIgc3ViLW9wczoKKyAqICBYRU5fU1lTQ1RMX1hT UExJQ0VfVVBMT0FEICgwKQorICogIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgKDEpCisgKiAgWEVO X1NZU0NUTF9YU1BMSUNFX0xJU1QgKDIpCisgKiAgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAo MykKKyAqCisgKiBUaGUgbm9ybWFsIHNlcXVlbmNlIG9mIHN1Yi1vcHMgaXMgdG86CisgKiAgMSkg WEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCB0byB1cGxvYWQgdGhlIHBheWxvYWQuIElmIGVycm9y cyBTVE9QLgorICogIDIpIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8gY2hlY2sgdGhlIGAtPnJj YC4gSWYgLVhFTl9FQUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGdvIHRvIG5leHQgc3RlcC4K KyAqICAzKSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OIHdpdGggWFNQTElDRV9BQ1RJT05fQVBQ TFkgdG8gYXBwbHkgdGhlIHBhdGNoLgorICogIDQpIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8g Y2hlY2sgdGhlIGAtPnJjYC4gSWYgaW4gLVhFTl9FQUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJv IGV4aXQgd2l0aCBzdWNjZXNzLgorICovCisKKy8qCisgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBh biBFTEYgcGF5bG9hZC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUKKyAqIHBheWxvYWQuIFNob3Vs ZCBiZSBodW1hbiByZWFkYWJsZS4KKyAqIFJlY29tbWVuZGVkIGxlbmd0aCBpcyB1cHRvIFhFTl9Y U1BMSUNFX05BTUVfU0laRS4KKyAqIEluY2x1ZGVzIHRoZSBOVUwgdGVybWluYXRvci4KKyAqLwor I2RlZmluZSBYRU5fWFNQTElDRV9OQU1FX1NJWkUgMTI4CitzdHJ1Y3QgeGVuX3hzcGxpY2VfbmFt ZSB7CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBuYW1lOyAgICAgICAgIC8qIElOOiBw b2ludGVyIHRvIG5hbWUuICovCisgICAgdWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIElOOiBzaXplIG9mIG5hbWUuIE1heSBiZSB1cHRvCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9YU1BMSUNFX05BTUVfU0laRS4gKi8K KyAgICB1aW50MTZfdCBwYWRbM107ICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE1VU1Qg YmUgemVyby4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5feHNwbGljZV9uYW1lIHhlbl94c3Bs aWNlX25hbWVfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX25hbWVfdCk7 CisKKy8qCisgKiBVcGxvYWQgYSBwYXlsb2FkIHRvIHRoZSBoeXBlcnZpc29yLiBUaGUgcGF5bG9h ZCBpcyB2ZXJpZmllZAorICogYWdhaW5zdCBiYXNpYyBjaGVja3MgYW5kIGlmIHRoZXJlIGFyZSBh bnkgaXNzdWVzIHRoZSBwcm9wZXIgcmV0dXJuIGNvZGUKKyAqIHdpbGwgYmUgcmV0dXJuZWQuIFRo ZSBwYXlsb2FkIGlzIG5vdCBhcHBsaWVkIGF0IHRoaXMgdGltZSAtIHRoYXQgaXMKKyAqIGNvbnRy b2xsZWQgYnkgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTi4KKyAqCisgKiBUaGUgcmV0dXJuIHZh bHVlIGlzIHplcm8gaWYgdGhlIHBheWxvYWQgd2FzIHN1Y2Nlc2Z1bGx5IHVwbG9hZGVkLgorICog T3RoZXJ3aXNlIGFuIEVYWCByZXR1cm4gdmFsdWUgaXMgcHJvdmlkZWQuIER1cGxpY2F0ZSBgbmFt ZWAgYXJlIG5vdAorICogc3VwcG9ydGVkLgorICoKKyAqIFRoZSBwYXlsb2FkIGF0IHRoaXMgcG9p bnQgaXMgdmVyaWZpZWQgYWdhaW5zdCBiYXNpYyBjaGVja3MuCisgKgorICogVGhlIGBwYXlsb2Fk YCBpcyB0aGUgRUxGIHBheWxvYWQgYXMgbWVudGlvbmVkIGluIHRoZSBgUGF5bG9hZCBmb3JtYXRg CisgKiBzZWN0aW9uIGluIHRoZSB4U3BsaWNlIGRlc2lnbiBkb2N1bWVudC4KKyAqLworI2RlZmlu ZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIDAKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf dXBsb2FkIHsKKyAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyog SU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworICAgIHVpbnQ2NF90IHNpemU7ICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBJTiwgc2l6ZSBvZiB0aGUgRUxGIGZpbGUuICovCisgICAgWEVOX0dV RVNUX0hBTkRMRV82NCh1aW50OCkgcGF5bG9hZDsgICAgIC8qIElOLCB0aGUgRUxGIGZpbGUuICov Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZCB4ZW5fc3lzY3Rs X3hzcGxpY2VfdXBsb2FkX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hz cGxpY2VfdXBsb2FkX3QpOworCisvKgorICogUmV0cmlldmUgYW4gc3RhdHVzIG9mIGFuIHNwZWNp ZmljIHBheWxvYWQuCisgKgorICogVXBvbiBjb21wbGV0aW9uIHRoZSBgc3RydWN0IHhlbl94c3Bs aWNlX3N0YXR1c2AgaXMgdXBkYXRlZC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8g b24gc3VjY2VzcyBhbmQgWEVOX0VYWCBvbiBmYWlsdXJlLiBUaGlzIG9wZXJhdGlvbgorICogaXMg c3luY2hyb25vdXMgYW5kIGRvZXMgbm90IHJlcXVpcmUgcHJlZW1wdGlvbi4KKyAqLworI2RlZmlu ZSBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUIDEKKworc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB7 CisjZGVmaW5lIFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCAgICAgIDEKKyNkZWZpbmUgWFNQTElDRV9T VEFURV9BUFBMSUVEICAgICAgMgorICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAgICAv KiBPVVQ6IFhTUExJQ0VfU1RBVEVfKi4gKi8KKyAgICBpbnQzMl90IHJjOyAgICAgICAgICAgICAg ICAgICAgLyogT1VUOiAwIGlmIG5vIGVycm9yLCBvdGhlcndpc2UgLVhFTl9FWFguICovCit9Owor dHlwZWRlZiBzdHJ1Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzIHhlbl94c3BsaWNlX3N0YXR1c190Owor REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpOworCitzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX2dldCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAg ICAgICAgICAgICAgIC8qIElOLCBuYW1lIG9mIHRoZSBwYXlsb2FkLiAqLworICAgIHhlbl94c3Bs aWNlX3N0YXR1c190IHN0YXR1czsgICAgICAgICAgICAvKiBJTi9PVVQsIHN0YXRlIG9mIGl0LiAq LworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeGVuX3N5c2N0bF94 c3BsaWNlX2dldF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNl X2dldF90KTsKKworLyoKKyAqIFJldHJpZXZlIGFuIGFycmF5IG9mIGFiYnJldmlhdGVkIHN0YXR1 cyBhbmQgbmFtZXMgb2YgcGF5bG9hZHMgdGhhdCBhcmUKKyAqIGxvYWRlZCBpbiB0aGUgaHlwZXJ2 aXNvci4KKyAqCisgKiBJZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgYW4gcG9zaXRpdmUgbnVtYmVy LCBpdCBpcyB0aGUgbnVtYmVyICh1cCB0byBgbnJgKQorICogb2YgdGhlIHBheWxvYWRzIHJldHVy bmVkLCBhbG9uZyB3aXRoIGBucmAgdXBkYXRlZCB3aXRoIHRoZSBudW1iZXIgb2YgcmVtYWluaW5n CisgKiBwYXlsb2FkcywgYHZlcnNpb25gIHVwZGF0ZWQgKGl0IG1heSBiZSB0aGUgc2FtZSBhY3Jv c3MgaHlwZXJjYWxscy4gSWYgaXQKKyAqIHZhcmllcyB0aGUgZGF0YSBpcyBzdGFsZSBhbmQgZnVy dGhlciBjYWxscyBjb3VsZCBmYWlsKS4gVGhlIGBzdGF0dXNgLAorICogYG5hbWVgLCBhbmQgYGxl bmAnIGFyZSB1cGRhdGVkIGF0IHRoZWlyIGRlc2lnbmVkIGluZGV4IHZhbHVlIChgaWR4YCkgd2l0 aAorICogdGhlIHJldHVybmVkIHZhbHVlIG9mIGRhdGEuCisgKgorICogSWYgdGhlIGh5cGVyY2Fs bCByZXR1cm5zIEUyQklHIHRoZSBgbnJgIGlzIHRvbyBiaWcgYW5kIHNob3VsZCBiZQorICogbG93 ZXJlZC4gVGhlIHVwcGVyIGxpbWl0IG9mIGBucmAgaXMgbGVmdCB0byB0aGUgaW1wbGVtZW50aW9u LgorICoKKyAqIE5vdGUgdGhhdCBkdWUgdG8gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgaHlw ZXJjYWxscyB0aGUgZG9tYWluIG1pZ2h0IGhhdmUKKyAqIGFkZGVkIG9yIHJlbW92ZWQgdGhlIG51 bWJlciBvZiBwYXlsb2FkcyBtYWtpbmcgdGhpcyBpbmZvcm1hdGlvbiBzdGFsZS4gSXQgaXMKKyAq IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgdG9vbHN0YWNrIHRvIHVzZSB0aGUgYHZlcnNpb25g IGZpZWxkIHRvIGNoZWNrCisgKiBiZXR3ZWVuIGVhY2ggaW52b2NhdGlvbi4gaWYgdGhlIHZlcnNp b24gZGlmZmVycyBpdCBzaG91bGQgZGlzY2FyZCB0aGUgc3RhbGUKKyAqIGRhdGEgYW5kIHN0YXJ0 IGZyb20gc2NyYXRjaC4gSXQgaXMgT0sgZm9yIHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBuZXcK KyAqIGB2ZXJzaW9uYCBmaWVsZC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElT VCAyCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2xpc3QgeworICAgIHVpbnQzMl90IHZlcnNp b247ICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVQ6IEh5cGVydmlzb3Igc3RhbXBzIHZhbHVl LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB2YXJp ZXMgYmV0d2VlbiBjYWxscywgd2UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqIGdldHRpbmcgc3RhbGUgZGF0YS4gKi8KKyAgICB1aW50MzJfdCBpZHg7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IEluZGV4IGludG8gYXJyYXkuICovCisg ICAgdWludDMyX3QgbnI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBIb3cgbWFu eSBzdGF0dXMsIG5hbWUsIGFuZCBsZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hvdWxkIGZpbGwgb3V0LiBDYW4gYmUgemVybyB0byBnZXQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50IG9mIHBheWxv YWRzIGFuZCB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPVVQ6IEhvdyBtYW55IHBheWxvYWRzIGxlZnQuICovCisgICAgdWludDMyX3QgcGFk OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBNdXN0IGJlIHplcm8uICovCisgICAg WEVOX0dVRVNUX0hBTkRMRV82NCh4ZW5feHNwbGljZV9zdGF0dXNfdCkgc3RhdHVzOyAgLyogT1VU LiBNdXN0IGhhdmUgZW5vdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNwYWNlIGFsbG9jYXRlIGZvciBuciBvZiB0aGVtLiAqLworICAgIFhFTl9HVUVT VF9IQU5ETEVfNjQoY2hhcikgbmFtZTsgICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIG5hbWVzLiBF YWNoIG1lbWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNVVNUIFhFTl9YU1BMSUNFX05BTUVfU0laRSBpbiBzaXplLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGhhdmUgbnIgb2YgdGhlbS4gKi8KKyAg ICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQzMikgbGVuOyAgICAgICAgLyogT1VUOiBBcnJheSBv ZiBsZW5ndGhzIG9mIG5hbWUncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9mIHRoZW0uICovCit9OwordHlwZWRlZiBzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX2xpc3QgeGVuX3N5c2N0bF94c3BsaWNlX2xpc3RfdDsKK0RFRklO RV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QpOworCisvKgorICog UGVyZm9ybSBhbiBvcGVyYXRpb24gb24gdGhlIHBheWxvYWQgc3RydWN0dXJlIHJlZmVyZW5jZWQg YnkgdGhlIGBuYW1lYCBmaWVsZC4KKyAqIFRoZSBvcGVyYXRpb24gcmVxdWVzdCBpcyBhc3luY2hy b25vdXMgYW5kIHRoZSBzdGF0dXMgc2hvdWxkIGJlIHJldHJpZXZlZAorICogYnkgdXNpbmcgZWl0 aGVyIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgb3IgWEVOX1NZU0NUTF9YU1BMSUNFX0xJU1QgaHlw ZXJjYWxsLgorICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gMworc3RydWN0 IHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb24geworICAgIHhlbl94c3BsaWNlX25hbWVfdCBuYW1l OyAgICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2guICovCisjZGVmaW5lIFhT UExJQ0VfQUNUSU9OX0NIRUNLICAgICAgICAxCisjZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1VOTE9B RCAgICAgICAyCisjZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1JFVkVSVCAgICAgICAzCisjZGVmaW5l IFhTUExJQ0VfQUNUSU9OX0FQUExZICAgICAgICA0CisjZGVmaW5lIFhTUExJQ0VfQUNUSU9OX1JF UExBQ0UgICAgICA1CisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIElOOiBYU1BMSUNFX0FDVElPTl8qLiAqLworICAgIHVpbnQzMl90IHRpbWVvdXQ7ICAgICAg ICAgICAgICAgICAgICAgICAvKiBJTjogWmVybyBpZiBubyB0aW1lb3V0LiAqLworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPciB1cHBlciBib3VuZCBvZiB0 aW1lIChtcykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogZm9yIG9wZXJhdGlvbiB0byB0YWtlLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNj dGxfeHNwbGljZV9hY3Rpb24geGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90OworREVGSU5FX1hF Tl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90KTsKKworc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9vcCB7CisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIElOOiBYRU5fU1lTQ1RMX1hTUExJQ0VfKi4gKi8KKyAgICB1aW50MzJfdCBw YWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IEFsd2F5cyB6ZXJvLiAqLworICAg IHVuaW9uIHsKKyAgICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90IHVwbG9hZDsKKyAg ICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX2xpc3RfdCBsaXN0OworICAgICAgICB4ZW5fc3lzY3Rs X3hzcGxpY2VfZ2V0X3QgZ2V0OworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3Qg YWN0aW9uOworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf b3AgeGVuX3N5c2N0bF94c3BsaWNlX29wX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f c3lzY3RsX3hzcGxpY2Vfb3BfdCk7CisKIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICB1aW50MzJf dCBjbWQ7CiAjZGVmaW5lIFhFTl9TWVNDVExfcmVhZGNvbnNvbGUgICAgICAgICAgICAgICAgICAg IDEKQEAgLTc5MSw2ICs5NTUsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAjZGVmaW5lIFhFTl9T WVNDVExfcGNpdG9wb2luZm8gICAgICAgICAgICAgICAgICAgMjIKICNkZWZpbmUgWEVOX1NZU0NU TF9wc3JfY2F0X29wICAgICAgICAgICAgICAgICAgICAyMwogI2RlZmluZSBYRU5fU1lTQ1RMX3Rt ZW1fb3AgICAgICAgICAgICAgICAgICAgICAgIDI0CisjZGVmaW5lIFhFTl9TWVNDVExfeHNwbGlj ZV9vcCAgICAgICAgICAgICAgICAgICAgMjUKICAgICB1aW50MzJfdCBpbnRlcmZhY2VfdmVyc2lv bjsgLyogWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAqLwogICAgIHVuaW9uIHsKICAgICAg ICAgc3RydWN0IHhlbl9zeXNjdGxfcmVhZGNvbnNvbGUgICAgICAgcmVhZGNvbnNvbGU7CkBAIC04 MTYsNiArOTgxLDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogICAgICAgICBzdHJ1Y3QgeGVuX3N5 c2N0bF9wc3JfY210X29wICAgICAgICBwc3JfY210X29wOwogICAgICAgICBzdHJ1Y3QgeGVuX3N5 c2N0bF9wc3JfY2F0X29wICAgICAgICBwc3JfY2F0X29wOwogICAgICAgICBzdHJ1Y3QgeGVuX3N5 c2N0bF90bWVtX29wICAgICAgICAgICB0bWVtX29wOworICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0 bF94c3BsaWNlX29wICAgICAgICB4c3BsaWNlOwogICAgICAgICB1aW50OF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYWRbMTI4XTsKICAgICB9IHU7CiB9OwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM4NDg1MQotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly aWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorICoKKyAqLworCisjaWZuZGVmIF9fWEVOX1hTUExJQ0VfSF9fCisjZGVmaW5lIF9f WEVOX1hTUExJQ0VfSF9fCisKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CisKKyNpZmRl ZiBDT05GSUdfWFNQTElDRQorCitpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX29wICopOworCisjZWxzZQorCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+IC8qIEZvciAtRU9Q Tk9UU1VQUCAqLworc3RhdGljIGlubGluZSBpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0 bF94c3BsaWNlX29wICpvcCkKK3sKKyAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cit9CisKKyNlbmRp ZiAvKiBDT05GSUdfWFNQTElDRSAqLworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9IX18gKi8K KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hv b2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggMWVhZWM1OC4uM2VmMDQ0MSAxMDA2 NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hlbi94c20vZmxhc2svaG9va3Mu YwpAQCAtODA4LDYgKzgwOCwxMiBAQCBzdGF0aWMgaW50IGZsYXNrX3N5c2N0bChpbnQgY21kKQog ICAgIGNhc2UgWEVOX1NZU0NUTF90bWVtX29wOgogICAgICAgICByZXR1cm4gZG9tYWluX2hhc194 ZW4oY3VycmVudC0+ZG9tYWluLCBYRU5fX1RNRU1fQ09OVFJPTCk7CiAKKyNpZmRlZiBDT05GSUdf WFNQTElDRQorICAgIGNhc2UgWEVOX1NZU0NUTF94c3BsaWNlX29wOgorICAgICAgICByZXR1cm4g YXZjX2N1cnJlbnRfaGFzX3Blcm0oU0VDSU5JVFNJRF9YRU4sIFNFQ0NMQVNTX1hFTjIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU4yX19YU1BMSUNFX09QLCBOVUxMKTsK KyNlbmRpZgorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnRrKCJmbGFza19zeXNjdGw6IFVu a25vd24gb3AgJWRcbiIsIGNtZCk7CiAgICAgICAgIHJldHVybiAtRVBFUk07CmRpZmYgLS1naXQg YS94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycyBiL3hlbi94c20vZmxhc2svcG9s aWN5L2FjY2Vzc192ZWN0b3JzCmluZGV4IDU2NjAwYmIuLjFjNTliNTggMTAwNjQ0Ci0tLSBhL3hl bi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzCisrKyBiL3hlbi94c20vZmxhc2svcG9s aWN5L2FjY2Vzc192ZWN0b3JzCkBAIC05Myw2ICs5Myw4IEBAIGNsYXNzIHhlbjIKICAgICBwbXVf Y3RybAogIyBQTVUgdXNlIChkb21haW5zLCBpbmNsdWRpbmcgdW5wcml2aWxlZ2VkIG9uZXMsIHdp bGwgYmUgdXNpbmcgdGhpcyBvcGVyYXRpb24pCiAgICAgcG11X3VzZQorIyBYRU5fU1lTQ1RMX3hz cGxpY2Vfb3AKKyAgICB4c3BsaWNlX29wCiB9CiAKICMgQ2xhc3NlcyBkb21haW4gYW5kIGRvbWFp bjIgY29uc2lzdCBvZiBvcGVyYXRpb25zIHRoYXQgYSBkb21haW4gcGVyZm9ybXMgb24KLS0gCjIu NS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK