From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Hocko Subject: Re: [RFC PATCH] mm, oom: distinguish blockable mode for mmu notifiers Date: Mon, 9 Jul 2018 14:29:08 +0200 Message-ID: <20180709122908.GJ22049@dhcp22.suse.cz> References: <20180622150242.16558-1-mhocko@kernel.org> <20180627074421.GF32348@dhcp22.suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180627074421.GF32348-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: LKML Cc: kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Radim =?utf-8?B?S3LEjW3DocWZ?= , David Airlie , Joonas Lahtinen , Sudeep Dutt , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, Felix Kuehling , Andrea Arcangeli , "David (ChunMing) Zhou" , Dimitri Sivanich , linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Jason Gunthorpe , Doug Ledford , David Rientjes , xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Jani Nikula , =?iso-8859-1?B?Suly9G1l?= Glisse , Rodrigo Vivi , Boris Ostrovsky , Juergen Gross Mike Marciniszyn List-Id: dri-devel@lists.freedesktop.org T24gV2VkIDI3LTA2LTE4IDA5OjQ0OjIxLCBNaWNoYWwgSG9ja28gd3JvdGU6Cj4gVGhpcyBpcyB0 aGUgdjIgb2YgUkZDIGJhc2VkIG9uIHRoZSBmZWVkYmFjayBJJ3ZlIHJlY2VpdmVkIHNvIGZhci4g VGhlCj4gY29kZSBldmVuIGNvbXBpbGVzIGFzIGEgYm9udXMgOykgSSBoYXZlbid0IHJ1bnRpbWUg dGVzdGVkIGl0IHlldCwgbW9zdGx5Cj4gYmVjYXVzZSBJIGhhdmUgbm8gaWRlYSBob3cuCj4gCj4g QW55IGZ1cnRoZXIgZmVlZGJhY2sgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIG9mIGNvdXJzZS4KCkFu eSBvdGhlciBmZWVkYmFjayBiZWZvcmUgSSBwb3N0IHRoaXMgYXMgbm9uLVJGQz8KCj4gLS0tCj4g RnJvbSBlYzlhNzI0MWJmNDIyYjkwODUzMmM0YzMzOTUzYjBkYTI2NTVhZDA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQo+IEZyb206IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgo+IERh dGU6IFdlZCwgMjAgSnVuIDIwMTggMTU6MDM6MjAgKzAyMDAKPiBTdWJqZWN0OiBbUEFUQ0hdIG1t LCBvb206IGRpc3Rpbmd1aXNoIGJsb2NrYWJsZSBtb2RlIGZvciBtbXUgbm90aWZpZXJzCj4gTUlN RS1WZXJzaW9uOiAxLjAKPiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgK PiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cj4gCj4gVGhlcmUgYXJlIHNldmVyYWwg YmxvY2thYmxlIG1tdSBub3RpZmllcnMgd2hpY2ggbWlnaHQgc2xlZXAgaW4KPiBtbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCBhbmQgdGhhdCBpcyBhIHByb2JsZW0gZm9yIHRoZQo+ IG9vbV9yZWFwZXIgYmVjYXVzZSBpdCBuZWVkcyB0byBndWFyYW50ZWUgYSBmb3J3YXJkIHByb2dy ZXNzIHNvIGl0IGNhbm5vdAo+IGRlcGVuZCBvbiBhbnkgc2xlZXBhYmxlIGxvY2tzLgo+IAo+IEN1 cnJlbnRseSB3ZSBzaW1wbHkgYmFjayBvZmYgYW5kIG1hcmsgYW4gb29tIHZpY3RpbSB3aXRoIGJs b2NrYWJsZSBtbXUKPiBub3RpZmllcnMgYXMgZG9uZSBhZnRlciBhIHNob3J0IHNsZWVwLiBUaGF0 IGNhbiByZXN1bHQgaW4gc2VsZWN0aW5nIGEKPiBuZXcgb29tIHZpY3RpbSBwcmVtYXR1cmVseSBi ZWNhdXNlIHRoZSBwcmV2aW91cyBvbmUgc3RpbGwgaGFzbid0IHRvcm4KPiBpdHMgbWVtb3J5IGRv d24geWV0Lgo+IAo+IFdlIGNhbiBkbyBtdWNoIGJldHRlciB0aG91Z2guIEV2ZW4gaWYgbW11IG5v dGlmaWVycyB1c2Ugc2xlZXBhYmxlIGxvY2tzCj4gdGhlcmUgaXMgbm8gcmVhc29uIHRvIGF1dG9t YXRpY2FsbHkgYXNzdW1lIHRob3NlIGxvY2tzIGFyZSBoZWxkLgo+IE1vcmVvdmVyIG1ham9yaXR5 IG9mIG5vdGlmaWVycyBvbmx5IGNhcmUgYWJvdXQgYSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzCj4g c3BhY2UgYW5kIHRoZXJlIGlzIGFic29sdXRlbHkgemVybyByZWFzb24gdG8gZmFpbCB3aGVuIHdl IGFyZSB1bm1hcHBpbmcgYW4KPiB1bnJlbGF0ZWQgcmFuZ2UuIE1hbnkgbm90aWZpZXJzIGRvIHJl YWxseSBibG9jayBhbmQgd2FpdCBmb3IgSFcgd2hpY2ggaXMKPiBoYXJkZXIgdG8gaGFuZGxlIGFu ZCB3ZSBoYXZlIHRvIGJhaWwgb3V0IHRob3VnaC4KPiAKPiBUaGlzIHBhdGNoIGhhbmRsZXMgdGhl IGxvdyBoYW5naW5nIGZydWlkLiBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0 Cj4gZ2V0cyBhIGJsb2NrYWJsZSBmbGFnIGFuZCBjYWxsYmFja3MgYXJlIG5vdCBhbGxvd2VkIHRv IHNsZWVwIGlmIHRoZQo+IGZsYWcgaXMgc2V0IHRvIGZhbHNlLiBUaGlzIGlzIGFjaGlldmVkIGJ5 IHVzaW5nIHRyeWxvY2sgaW5zdGVhZCBvZiB0aGUKPiBzbGVlcGFibGUgbG9jayBmb3IgbW9zdCBj YWxsYmFja3MgYW5kIGNvbnRpbnVlIGFzIGxvbmcgYXMgd2UgZG8gbm90Cj4gYmxvY2sgZG93biB0 aGUgY2FsbCBjaGFpbi4KPiAKPiBJIHRoaW5rIHdlIGNhbiBpbXByb3ZlIHRoYXQgZXZlbiBmdXJ0 aGVyIGJlY2F1c2UgdGhlcmUgaXMgYSBjb21tb24KPiBwYXR0ZXJuIHRvIGRvIGEgcmFuZ2UgbG9v a3VwIGZpcnN0IGFuZCB0aGVuIGRvIHNvbWV0aGluZyBhYm91dCB0aGF0Lgo+IFRoZSBmaXJzdCBw YXJ0IGNhbiBiZSBkb25lIHdpdGhvdXQgYSBzbGVlcGluZyBsb2NrIGluIG1vc3QgY2FzZXMgQUZB SUNTLgo+IAo+IFRoZSBvb21fcmVhcGVyIGVuZCB0aGVuIHNpbXBseSByZXRyaWVzIGlmIHRoZXJl IGlzIGF0IGxlYXN0IG9uZSBub3RpZmllcgo+IHdoaWNoIGNvdWxkbid0IG1ha2UgYW55IHByb2dy ZXNzIGluICFibG9ja2FibGUgbW9kZS4gQSByZXRyeSBsb29wIGlzCj4gYWxyZWFkeSBpbXBsZW1l bnRlZCB0byB3YWl0IGZvciB0aGUgbW1hcF9zZW0gYW5kIHRoaXMgaXMgYmFzaWNhbGx5IHRoZQo+ IHNhbWUgdGhpbmcuCj4gCj4gQ2hhbmdlcyBzaW5jZSByZmMgdjEKPiAtIGdwdSBub3RpZmllcnMg Y2FuIHNsZWVwIHdoaWxlIHdhaXRpbmcgZm9yIEhXIChldmljdF9wcm9jZXNzX3F1ZXVlc19jcHNj aAo+ICAgb24gYSBsb2NrIGFuZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlIG9uIHVuYm91bmQg dGltZW91dCkgbWFrZSBzdXJlCj4gICB3ZSBiYWlsIG91dCB3aGVuIHdlIGhhdmUgYW4gaW50ZXJz ZWN0aW5nIHJhbmdlIGZvciBzdGFydGVyCj4gLSBub3RlIHRoYXQgYSBub3RpZmllciBmYWlsZWQg dG8gdGhlIGxvZyBmb3IgZWFzaWVyIGRlYnVnZ2luZwo+IC0gYmFjayBvZmYgZWFybHkgaW4gaWJf dW1lbV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0IGlmIHRoZQo+ICAgY2FsbGJhY2sg aXMgY2FsbGVkCj4gLSBtbl9pbnZsX3JhbmdlX3N0YXJ0IHdhaXRzIGZvciBjb21wbGV0aW9uIGRv d24gdGhlIHVubWFwX2dyYW50X3BhZ2VzCj4gICBwYXRoIHNvIHdlIGhhdmUgdG8gYmFjayBvZmYg ZWFybHkgb24gb3ZlcmxhcHBpbmcgcmFuZ2VzCj4gCj4gQ2M6ICJEYXZpZCAoQ2h1bk1pbmcpIFpo b3UiIDxEYXZpZDEuWmhvdUBhbWQuY29tPgo+IENjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUBy ZWRoYXQuY29tPgo+IENjOiAiUmFkaW0gS3LEjW3DocWZIiA8cmtyY21hckByZWRoYXQuY29tPgo+ IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gQ2M6ICJDaHJp c3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IENjOiBEYXZpZCBBaXJs aWUgPGFpcmxpZWRAbGludXguaWU+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4 LmludGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ IENjOiBEb3VnIExlZGZvcmQgPGRsZWRmb3JkQHJlZGhhdC5jb20+Cj4gQ2M6IEphc29uIEd1bnRo b3JwZSA8amdnQHppZXBlLmNhPgo+IENjOiBNaWtlIE1hcmNpbmlzenluIDxtaWtlLm1hcmNpbmlz enluQGludGVsLmNvbT4KPiBDYzogRGVubmlzIERhbGVzc2FuZHJvIDxkZW5uaXMuZGFsZXNzYW5k cm9AaW50ZWwuY29tPgo+IENjOiBTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgo+ IENjOiBBc2h1dG9zaCBEaXhpdCA8YXNodXRvc2guZGl4aXRAaW50ZWwuY29tPgo+IENjOiBEaW1p dHJpIFNpdmFuaWNoIDxzaXZhbmljaEBzZ2kuY29tPgo+IENjOiBCb3JpcyBPc3Ryb3Zza3kgPGJv cmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IENjOiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3Vz ZS5jb20+Cj4gQ2M6ICJKw6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gQ2M6 IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+Cj4gQ2M6IEZlbGl4IEt1ZWhs aW5nIDxmZWxpeC5rdWVobGluZ0BhbWQuY29tPgo+IENjOiBrdm1Admdlci5rZXJuZWwub3JnIChv cGVuIGxpc3Q6S0VSTkVMIFZJUlRVQUwgTUFDSElORSBGT1IgWDg2IChLVk0veDg2KSkKPiBDYzog bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyAob3BlbiBsaXN0Olg4NiBBUkNISVRFQ1RVUkUg KDMyLUJJVCBBTkQgNjQtQklUKSkKPiBDYzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcg KG9wZW4gbGlzdDpSQURFT04gYW5kIEFNREdQVSBEUk0gRFJJVkVSUykKPiBDYzogZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZyAob3BlbiBsaXN0OkRSTSBEUklWRVJTKQo+IENjOiBpbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnIChvcGVuIGxpc3Q6SU5URUwgRFJNIERSSVZFUlMg KGV4Y2x1ZGluZyBQb3Vsc2JvLCBNb29yZXN0b3cuLi4pCj4gQ2M6IGxpbnV4LXJkbWFAdmdlci5r ZXJuZWwub3JnIChvcGVuIGxpc3Q6SU5GSU5JQkFORCBTVUJTWVNURU0pCj4gQ2M6IHhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGxpc3Q6WEVOIEhZUEVSVklTT1IgSU5U RVJGQUNFKQo+IENjOiBsaW51eC1tbUBrdmFjay5vcmcgKG9wZW4gbGlzdDpITU0gLSBIZXRlcm9n ZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KQo+IFJlcG9ydGVkLWJ5OiBEYXZpZCBSaWVudGplcyA8 cmllbnRqZXNAZ29vZ2xlLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgSG9ja28gPG1ob2Nr b0BzdXNlLmNvbT4KPiAtLS0KPiAgYXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDcgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyAg fCA0MyArKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdXNlcnB0ci5jIHwgMTMgKysrKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fbW4uYyAgICAgIHwgMjIgKysrKysrKysrKystLQo+ICBkcml2ZXJzL2luZmluaWJhbmQv Y29yZS91bWVtX29kcC5jICAgICAgfCAzMyArKysrKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMv aW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jICAgICB8IDExICsrKystLS0KPiAgZHJpdmVycy9p bmZpbmliYW5kL2h3L21seDUvb2RwLmMgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9taXNjL21p Yy9zY2lmL3NjaWZfZG1hLmMgICAgICAgIHwgIDcgKystLQo+ICBkcml2ZXJzL21pc2Mvc2dpLWdy dS9ncnV0bGJwdXJnZS5jICAgICAgfCAgNyArKy0tCj4gIGRyaXZlcnMveGVuL2dudGRldi5jICAg ICAgICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgaW5jbHVk ZS9saW51eC9rdm1faG9zdC5oICAgICAgICAgICAgICAgIHwgIDQgKy0tCj4gIGluY2x1ZGUvbGlu dXgvbW11X25vdGlmaWVyLmggICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKysrKy0tLS0tCj4g IGluY2x1ZGUvbGludXgvb29tLmggICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGluY2x1 ZGUvcmRtYS9pYl91bWVtX29kcC5oICAgICAgICAgICAgICB8ICAzICstCj4gIG1tL2htbS5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KPiAgbW0vbW1hcC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgbW0vbW11X25vdGlmaWVyLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKystLS0KPiAgbW0vb29tX2tpbGwuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKystLS0tLS0tLQo+ICB2aXJ0L2t2bS9r dm1fbWFpbi5jICAgICAgICAgICAgICAgICAgICAgfCAxNSArKysrKystLS0KPiAgMTkgZmlsZXMg Y2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKPiBpbmRleCA2YmNl Y2MzMjVlN2UuLmFjMDhmNWQ3MTFiZSAxMDA2NDQKPiAtLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMK PiArKysgYi9hcmNoL3g4Ni9rdm0veDg2LmMKPiBAQCAtNzIwMyw4ICs3MjAzLDkgQEAgc3RhdGlj IHZvaWQgdmNwdV9sb2FkX2VvaV9leGl0bWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgCWt2 bV94ODZfb3BzLT5sb2FkX2VvaV9leGl0bWFwKHZjcHUsIGVvaV9leGl0X2JpdG1hcCk7Cj4gIH0K PiAgCj4gLXZvaWQga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0 IGt2bSAqa3ZtLAo+IC0JCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQo+ ICtpbnQga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IGt2bSAq a3ZtLAo+ICsJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCWJv b2wgYmxvY2thYmxlKQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIGFwaWNfYWRkcmVzczsKPiAgCj4g QEAgLTcyMTUsNiArNzIxNiw4IEBAIHZvaWQga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLAo+ICAJYXBpY19hZGRyZXNzID0gZ2ZuX3RvX2h2YShr dm0sIEFQSUNfREVGQVVMVF9QSFlTX0JBU0UgPj4gUEFHRV9TSElGVCk7Cj4gIAlpZiAoc3RhcnQg PD0gYXBpY19hZGRyZXNzICYmIGFwaWNfYWRkcmVzcyA8IGVuZCkKPiAgCQlrdm1fbWFrZV9hbGxf Y3B1c19yZXF1ZXN0KGt2bSwgS1ZNX1JFUV9BUElDX1BBR0VfUkVMT0FEKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiAgfQo+ICAKPiAgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21u LmMKPiBpbmRleCA4M2UzNDRmYmI1MGEuLjMzOTlhNGE5MjdmYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCj4gQEAgLTEzNiwxMiArMTM2LDE4IEBAIHZvaWQgYW1k Z3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICptbikKPiAgICoKPiAgICogVGFrZSB0aGUg cm1uIHJlYWQgc2lkZSBsb2NrLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgYW1kZ3B1X21uX3JlYWRf bG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpybW4pCj4gK3N0YXRpYyBpbnQgYW1kZ3B1X21uX3JlYWRf bG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpybW4sIGJvb2wgYmxvY2thYmxlKQo+ICB7Cj4gLQltdXRl eF9sb2NrKCZybW4tPnJlYWRfbG9jayk7Cj4gKwlpZiAoYmxvY2thYmxlKQo+ICsJCW11dGV4X2xv Y2soJnJtbi0+cmVhZF9sb2NrKTsKPiArCWVsc2UgaWYgKCFtdXRleF90cnlsb2NrKCZybW4tPnJl YWRfbG9jaykpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gKwo+ICAJaWYgKGF0b21pY19pbmNfcmV0 dXJuKCZybW4tPnJlY3Vyc2lvbikgPT0gMSkKPiAgCQlkb3duX3JlYWRfbm9uX293bmVyKCZybW4t PmxvY2spOwo+ICAJbXV0ZXhfdW5sb2NrKCZybW4tPnJlYWRfbG9jayk7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xOTcsMTAgKzIwMywxMSBAQCBzdGF0aWMgdm9pZCBh bWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwKPiAg ICogV2UgYmxvY2sgZm9yIGFsbCBCT3MgYmV0d2VlbiBzdGFydCBhbmQgZW5kIHRvIGJlIGlkbGUg YW5kCj4gICAqIHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fp bi4KPiAgICovCj4gLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0 X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3RhdGljIGludCBhbWRncHVfbW5faW52 YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gIAkJCQkJ CSBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgCQkJCQkJIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4g LQkJCQkJCSB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kLAo+ ICsJCQkJCQkgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVjdCBhbWRncHVfbW4gKnJtbiA9 IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOwo+ICAJc3RydWN0IGludGVy dmFsX3RyZWVfbm9kZSAqaXQ7Cj4gQEAgLTIwOCwxNyArMjE1LDI4IEBAIHN0YXRpYyB2b2lkIGFt ZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICpt biwKPiAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNs dXNpdmUgKi8KPiAgCWVuZCAtPSAxOwo+ICAKPiAtCWFtZGdwdV9tbl9yZWFkX2xvY2socm1uKTsK PiArCS8qIFRPRE8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3BsaXQgbG9ja2luZyBmb3IgaW50ZXJ2 YWwgdHJlZSBhbmQKPiArCSAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUKPiArCSAqLwo+ICsJ aWYgKGFtZGdwdV9tbl9yZWFkX2xvY2socm1uLCBibG9ja2FibGUpKQo+ICsJCXJldHVybiAtRUFH QUlOOwo+ICAKPiAgCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZybW4tPm9iamVjdHMs IHN0YXJ0LCBlbmQpOwo+ICAJd2hpbGUgKGl0KSB7Cj4gIAkJc3RydWN0IGFtZGdwdV9tbl9ub2Rl ICpub2RlOwo+ICAKPiArCQlpZiAoIWJsb2NrYWJsZSkgewo+ICsJCQlhbWRncHVfbW5fcmVhZF91 bmxvY2socm1uKTsKPiArCQkJcmV0dXJuIC1FQUdBSU47Cj4gKwkJfQo+ICsKPiAgCQlub2RlID0g Y29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUsIGl0KTsKPiAgCQlpdCA9IGlu dGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCBzdGFydCwgZW5kKTsKPiAgCj4gIAkJYW1kZ3B1X21u X2ludmFsaWRhdGVfbm9kZShub2RlLCBzdGFydCwgZW5kKTsKPiAgCX0KPiArCj4gKwlyZXR1cm4g MDsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTIzMywxMCArMjUxLDExIEBAIHN0YXRpYyB2b2lkIGFt ZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICpt biwKPiAgICogbmVjZXNzaXRhdGVzIGV2aWN0aW5nIGFsbCB1c2VyLW1vZGUgcXVldWVzIG9mIHRo ZSBwcm9jZXNzLiBUaGUgQk9zCj4gICAqIGFyZSByZXN0b3J0ZWQgaW4gYW1kZ3B1X21uX2ludmFs aWRhdGVfcmFuZ2VfZW5kX2hzYS4KPiAgICovCj4gLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0X2hzYShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3RhdGlj IGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1tdV9ub3Rp ZmllciAqbW4sCj4gIAkJCQkJCSBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgCQkJCQkJIHVuc2ln bmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJCSB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCQkJIHVu c2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVj dCBhbWRncHVfbW4gKnJtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4p Owo+ICAJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7Cj4gQEAgLTI0NCwxMyArMjYzLDE5 IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYShzdHJ1 Y3QgbW11X25vdGlmaWVyICptbiwKPiAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1 dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8KPiAgCWVuZCAtPSAxOwo+ICAKPiAtCWFtZGdwdV9t bl9yZWFkX2xvY2socm1uKTsKPiArCWlmIChhbWRncHVfbW5fcmVhZF9sb2NrKHJtbiwgYmxvY2th YmxlKSkKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiAgCj4gIAlpdCA9IGludGVydmFsX3RyZWVfaXRl cl9maXJzdCgmcm1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsKPiAgCXdoaWxlIChpdCkgewo+ICAJ CXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZTsKPiAgCQlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsK PiAgCj4gKwkJaWYgKCFibG9ja2FibGUpIHsKPiArCQkJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKHJt bik7Cj4gKwkJCXJldHVybiAtRUFHQUlOOwo+ICsJCX0KPiArCj4gIAkJbm9kZSA9IGNvbnRhaW5l cl9vZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7Cj4gIAkJaXQgPSBpbnRlcnZhbF90 cmVlX2l0ZXJfbmV4dChpdCwgc3RhcnQsIGVuZCk7Cj4gIAo+IEBAIC0yNjIsNiArMjg3LDggQEAg c3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAo+ICAJCQkJYW1kZ3B1X2FtZGtmZF9ldmljdF91c2VycHRyKG1lbSwg bW0pOwo+ICAJCX0KPiAgCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+IGluZGV4IDg1NGJkNTFiOTQ3OC4u OWNiZmY2OGY2YjQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3VzZXJwdHIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIu Ywo+IEBAIC0xMTIsMTAgKzExMiwxMSBAQCBzdGF0aWMgdm9pZCBkZWxfb2JqZWN0KHN0cnVjdCBp OTE1X21tdV9vYmplY3QgKm1vKQo+ICAJbW8tPmF0dGFjaGVkID0gZmFsc2U7Cj4gIH0KPiAgCj4g LXN0YXRpYyB2b2lkIGk5MTVfZ2VtX3VzZXJwdHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChz dHJ1Y3QgbW11X25vdGlmaWVyICpfbW4sCj4gK3N0YXRpYyBpbnQgaTkxNV9nZW1fdXNlcnB0cl9t bl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiAgCQkJ CQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJCQkgICAgICAgdW5zaWduZWQg bG9uZyBzdGFydCwKPiAtCQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJCQkg ICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSAgICAgICBib29sIGJsb2NrYWJsZSkK PiAgewo+ICAJc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9Cj4gIAkJY29udGFpbmVyX29m KF9tbiwgc3RydWN0IGk5MTVfbW11X25vdGlmaWVyLCBtbik7Cj4gQEAgLTEyNCw3ICsxMjUsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV91c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo c3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ICAJTElTVF9IRUFEKGNhbmNlbGxlZCk7Cj4gIAo+ ICAJaWYgKFJCX0VNUFRZX1JPT1QoJm1uLT5vYmplY3RzLnJiX3Jvb3QpKQo+IC0JCXJldHVybjsK PiArCQlyZXR1cm4gMDsKPiAgCj4gIAkvKiBpbnRlcnZhbCByYW5nZXMgYXJlIGluY2x1c2l2ZSwg YnV0IGludmFsaWRhdGUgcmFuZ2UgaXMgZXhjbHVzaXZlICovCj4gIAllbmQtLTsKPiBAQCAtMTMy LDYgKzEzMywxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV91c2VycHRyX21uX2ludmFsaWRhdGVf cmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ICAJc3Bpbl9sb2NrKCZtbi0+ bG9jayk7Cj4gIAlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmbW4tPm9iamVjdHMsIHN0 YXJ0LCBlbmQpOwo+ICAJd2hpbGUgKGl0KSB7Cj4gKwkJaWYgKCFibG9ja2FibGUpIHsKPiArCQkJ c3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKPiArCQkJcmV0dXJuIC1FQUdBSU47Cj4gKwkJfQo+ICAJ CS8qIFRoZSBtbXVfb2JqZWN0IGlzIHJlbGVhc2VkIGxhdGUgd2hlbiBkZXN0cm95aW5nIHRoZQo+ ICAJCSAqIEdFTSBvYmplY3Qgc28gaXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8gZ2FpbiBhCj4g IAkJICogcmVmZXJlbmNlIG9uIGFuIG9iamVjdCBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBmcmVl ZAo+IEBAIC0xNTQsNiArMTU5LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdXNlcnB0cl9tbl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiAgCj4gIAlp ZiAoIWxpc3RfZW1wdHkoJmNhbmNlbGxlZCkpCj4gIAkJZmx1c2hfd29ya3F1ZXVlKG1uLT53cSk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25v dGlmaWVyX29wcyBpOTE1X2dlbV91c2VycHRyX25vdGlmaWVyID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fbW4uYwo+IGluZGV4IGFiZDI0OTc1YzliMS4uZjhiMzVkZjQ0YzYwIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCj4gQEAgLTExOCwxOSArMTE4LDI3IEBAIHN0YXRp YyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgKiBX ZSBibG9jayBmb3IgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdG8gYmUgaWRsZSBhbmQK PiAgICogdW5tYXAgdGhlbSBieSBtb3ZlIHRoZW0gaW50byBzeXN0ZW0gZG9tYWluIGFnYWluLgo+ ICAgKi8KPiAtc3RhdGljIHZvaWQgcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3Ry dWN0IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgcmFkZW9uX21uX2ludmFsaWRhdGVf cmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gIAkJCQkJICAgICBzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKPiAgCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJ ICAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ ICsJCQkJCSAgICAgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVjdCByYWRlb25fbW4gKnJt biA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOwo+ICAJc3RydWN0IHR0 bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Cj4gIAlzdHJ1Y3QgaW50ZXJ2 YWxfdHJlZV9ub2RlICppdDsKPiArCWludCByZXQgPSAwOwo+ICAKPiAgCS8qIG5vdGlmaWNhdGlv biBpcyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8KPiAgCWVuZCAtPSAx Owo+ICAKPiAtCW11dGV4X2xvY2soJnJtbi0+bG9jayk7Cj4gKwkvKiBUT0RPIHdlIHNob3VsZCBi ZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCj4gKwkgKiB0aGUg dGVhciBkb3duLgo+ICsJICovCj4gKwlpZiAoYmxvY2thYmxlKQo+ICsJCW11dGV4X2xvY2soJnJt bi0+bG9jayk7Cj4gKwllbHNlIGlmICghbXV0ZXhfdHJ5bG9jaygmcm1uLT5sb2NrKSkKPiArCQly ZXR1cm4gLUVBR0FJTjsKPiAgCj4gIAlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmcm1u LT5vYmplY3RzLCBzdGFydCwgZW5kKTsKPiAgCXdoaWxlIChpdCkgewo+IEBAIC0xMzgsNiArMTQ2 LDExIEBAIHN0YXRpYyB2b2lkIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVj dCBtbXVfbm90aWZpZXIgKm1uLAo+ICAJCXN0cnVjdCByYWRlb25fYm8gKmJvOwo+ICAJCWxvbmcg cjsKPiAgCj4gKwkJaWYgKCFibG9ja2FibGUpIHsKPiArCQkJcmV0ID0gLUVBR0FJTjsKPiArCQkJ Z290byBvdXRfdW5sb2NrOwo+ICsJCX0KPiArCj4gIAkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwg c3RydWN0IHJhZGVvbl9tbl9ub2RlLCBpdCk7Cj4gIAkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJf bmV4dChpdCwgc3RhcnQsIGVuZCk7Cj4gIAo+IEBAIC0xNjYsNyArMTc5LDEwIEBAIHN0YXRpYyB2 b2lkIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIg Km1uLAo+ICAJCX0KPiAgCX0KPiAgCQo+ICtvdXRfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZy bW4tPmxvY2spOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2Nv cmUvdW1lbV9vZHAuYwo+IGluZGV4IDE4MjQzNmI5MmJhOS4uNmVjNzQ4ZWNjZmY3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMKPiArKysgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jCj4gQEAgLTE4Niw2ICsxODYsNyBAQCBzdGF0aWMg dm9pZCBpYl91bWVtX25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4g IAlyYnRfaWJfdW1lbV9mb3JfZWFjaF9pbl9yYW5nZSgmY29udGV4dC0+dW1lbV90cmVlLCAwLAo+ ICAJCQkJICAgICAgVUxMT05HX01BWCwKPiAgCQkJCSAgICAgIGliX3VtZW1fbm90aWZpZXJfcmVs ZWFzZV90cmFtcG9saW5lLAo+ICsJCQkJICAgICAgdHJ1ZSwKPiAgCQkJCSAgICAgIE5VTEwpOwo+ ICAJdXBfcmVhZCgmY29udGV4dC0+dW1lbV9yd3NlbSk7Cj4gIH0KPiBAQCAtMjA3LDIyICsyMDgs MzEgQEAgc3RhdGljIGludCBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X3RyYW1wb2xpbmUoc3RydWN0 IGliX3VtZW0gKml0ZW0sIHU2NCBzdGFydCwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBpYl91bWVtX25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgaWJfdW1lbV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAJCQkJCQkgICAgc3RydWN0 IG1tX3N0cnVjdCAqbW0sCj4gIAkJCQkJCSAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJ CQkgICAgdW5zaWduZWQgbG9uZyBlbmQpCj4gKwkJCQkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCwK PiArCQkJCQkJICAgIGJvb2wgYmxvY2thYmxlKQo+ICB7Cj4gIAlzdHJ1Y3QgaWJfdWNvbnRleHQg KmNvbnRleHQgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBpYl91Y29udGV4dCwgbW4pOwo+ICsJ aW50IHJldDsKPiAgCj4gIAlpZiAoIWNvbnRleHQtPmludmFsaWRhdGVfcmFuZ2UpCj4gLQkJcmV0 dXJuOwo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChibG9ja2FibGUpCj4gKwkJZG93bl9yZWFk KCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiArCWVsc2UgaWYgKCFkb3duX3JlYWRfdHJ5bG9jaygm Y29udGV4dC0+dW1lbV9yd3NlbSkpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gIAo+ICAJaWJfdWNv bnRleHRfbm90aWZpZXJfc3RhcnRfYWNjb3VudChjb250ZXh0KTsKPiAtCWRvd25fcmVhZCgmY29u dGV4dC0+dW1lbV9yd3NlbSk7Cj4gLQlyYnRfaWJfdW1lbV9mb3JfZWFjaF9pbl9yYW5nZSgmY29u dGV4dC0+dW1lbV90cmVlLCBzdGFydCwKPiArCXJldCA9IHJidF9pYl91bWVtX2Zvcl9lYWNoX2lu X3JhbmdlKCZjb250ZXh0LT51bWVtX3RyZWUsIHN0YXJ0LAo+ICAJCQkJICAgICAgZW5kLAo+IC0J CQkJICAgICAgaW52YWxpZGF0ZV9yYW5nZV9zdGFydF90cmFtcG9saW5lLCBOVUxMKTsKPiArCQkJ CSAgICAgIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfdHJhbXBvbGluZSwKPiArCQkJCSAgICAgIGJs b2NrYWJsZSwgTlVMTCk7Cj4gIAl1cF9yZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiArCj4g KwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGludmFsaWRhdGVfcmFuZ2VfZW5k X3RyYW1wb2xpbmUoc3RydWN0IGliX3VtZW0gKml0ZW0sIHU2NCBzdGFydCwKPiBAQCAtMjQyLDEw ICsyNTIsMTUgQEAgc3RhdGljIHZvaWQgaWJfdW1lbV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgCWlmICghY29udGV4dC0+aW52YWxpZGF0 ZV9yYW5nZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICsJLyoKPiArCSAqIFRPRE86IHdlIGN1cnJlbnRs eSBiYWlsIG91dCBpZiB0aGVyZSBpcyBhbnkgc2xlZXBhYmxlIHdvcmsgdG8gYmUgZG9uZQo+ICsJ ICogaW4gaWJfdW1lbV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0IHNvIHdlIHNob3Vs ZG4ndCByZWFsbHkgYmxvY2sKPiArCSAqIGhlcmUuIEJ1dCB0aGlzIGlzIHVnbHkgYW5kIGZyYWdp bGUuCj4gKwkgKi8KPiAgCWRvd25fcmVhZCgmY29udGV4dC0+dW1lbV9yd3NlbSk7Cj4gIAlyYnRf aWJfdW1lbV9mb3JfZWFjaF9pbl9yYW5nZSgmY29udGV4dC0+dW1lbV90cmVlLCBzdGFydCwKPiAg CQkJCSAgICAgIGVuZCwKPiAtCQkJCSAgICAgIGludmFsaWRhdGVfcmFuZ2VfZW5kX3RyYW1wb2xp bmUsIE5VTEwpOwo+ICsJCQkJICAgICAgaW52YWxpZGF0ZV9yYW5nZV9lbmRfdHJhbXBvbGluZSwg dHJ1ZSwgTlVMTCk7Cj4gIAl1cF9yZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiAgCWliX3Vj b250ZXh0X25vdGlmaWVyX2VuZF9hY2NvdW50KGNvbnRleHQpOwo+ICB9Cj4gQEAgLTc5OCw2ICs4 MTMsNyBAQCBFWFBPUlRfU1lNQk9MKGliX3VtZW1fb2RwX3VubWFwX2RtYV9wYWdlcyk7Cj4gIGlu dCByYnRfaWJfdW1lbV9mb3JfZWFjaF9pbl9yYW5nZShzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgKnJv b3QsCj4gIAkJCQkgIHU2NCBzdGFydCwgdTY0IGxhc3QsCj4gIAkJCQkgIHVtZW1fY2FsbF9iYWNr IGNiLAo+ICsJCQkJICBib29sIGJsb2NrYWJsZSwKPiAgCQkJCSAgdm9pZCAqY29va2llKQo+ICB7 Cj4gIAlpbnQgcmV0X3ZhbCA9IDA7Cj4gQEAgLTgwOSw2ICs4MjUsOSBAQCBpbnQgcmJ0X2liX3Vt ZW1fZm9yX2VhY2hfaW5fcmFuZ2Uoc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290LAo+ICAKPiAg CWZvciAobm9kZSA9IHJidF9pYl91bWVtX2l0ZXJfZmlyc3Qocm9vdCwgc3RhcnQsIGxhc3QgLSAx KTsKPiAgCQkJbm9kZTsgbm9kZSA9IG5leHQpIHsKPiArCQkvKiBUT0RPIG1vdmUgdGhlIGJsb2Nr YWJsZSBkZWNpc2lvbiB1cCB0byB0aGUgY2FsbGJhY2sgKi8KPiArCQlpZiAoIWJsb2NrYWJsZSkK PiArCQkJcmV0dXJuIC1FQUdBSU47Cj4gIAkJbmV4dCA9IHJidF9pYl91bWVtX2l0ZXJfbmV4dChu b2RlLCBzdGFydCwgbGFzdCAtIDEpOwo+ICAJCXVtZW0gPSBjb250YWluZXJfb2Yobm9kZSwgc3Ry dWN0IGliX3VtZW1fb2RwLCBpbnRlcnZhbF90cmVlKTsKPiAgCQlyZXRfdmFsID0gY2IodW1lbS0+ dW1lbSwgc3RhcnQsIGxhc3QsIGNvb2tpZSkgfHwgcmV0X3ZhbDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9pbmZpbmliYW5kL2h3L2hmaTEvbW11X3JiLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcv aGZpMS9tbXVfcmIuYwo+IGluZGV4IDcwYWNlZWZlMTRkNS4uZTFjNzk5NmMwMThlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jCj4gKysrIGIvZHJpdmVy cy9pbmZpbmliYW5kL2h3L2hmaTEvbW11X3JiLmMKPiBAQCAtNjcsOSArNjcsOSBAQCBzdHJ1Y3Qg bW11X3JiX2hhbmRsZXIgewo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbW11X25vZGVfc3Rh cnQoc3RydWN0IG1tdV9yYl9ub2RlICopOwo+ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtbXVfbm9k ZV9sYXN0KHN0cnVjdCBtbXVfcmJfbm9kZSAqKTsKPiAtc3RhdGljIHZvaWQgbW11X25vdGlmaWVy X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKiwKPiArc3RhdGljIGludCBtbXVfbm90 aWZpZXJfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqLAo+ICAJCQkJICAgICBzdHJ1 Y3QgbW1fc3RydWN0ICosCj4gLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp Owo+ICsJCQkJICAgICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBib29sKTsKPiAgc3Rh dGljIHN0cnVjdCBtbXVfcmJfbm9kZSAqX19tbXVfcmJfc2VhcmNoKHN0cnVjdCBtbXVfcmJfaGFu ZGxlciAqLAo+ICAJCQkJCSAgIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwo+ICBzdGF0 aWMgdm9pZCBkb19yZW1vdmUoc3RydWN0IG1tdV9yYl9oYW5kbGVyICpoYW5kbGVyLAo+IEBAIC0y ODQsMTAgKzI4NCwxMSBAQCB2b2lkIGhmaTFfbW11X3JiX3JlbW92ZShzdHJ1Y3QgbW11X3JiX2hh bmRsZXIgKmhhbmRsZXIsCj4gIAloYW5kbGVyLT5vcHMtPnJlbW92ZShoYW5kbGVyLT5vcHNfYXJn LCBub2RlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgbW11X25vdGlmaWVyX3JhbmdlX3N0YXJ0 KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IG1tdV9ub3RpZmllcl9yYW5n ZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgCQkJCSAgICAgc3RydWN0IG1tX3N0 cnVjdCAqbW0sCj4gIAkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkgICAgIHVu c2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCSAg ICAgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVjdCBtbXVfcmJfaGFuZGxlciAqaGFuZGxl ciA9Cj4gIAkJY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgbW11X3JiX2hhbmRsZXIsIG1uKTsKPiBA QCAtMzEzLDYgKzMxNCw4IEBAIHN0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9zdGFydChz dHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgCj4gIAlpZiAoYWRkZWQpCj4gIAkJcXVldWVfd29y ayhoYW5kbGVyLT53cSwgJmhhbmRsZXItPmRlbF93b3JrKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAg fQo+ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2Rw LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYwo+IGluZGV4IGYxYTg3YTY5MGE0 Yy4uZDIxNmUwZDI5MjFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1 L29kcC5jCj4gKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMKPiBAQCAtNDg4 LDcgKzQ4OCw3IEBAIHZvaWQgbWx4NV9pYl9mcmVlX2ltcGxpY2l0X21yKHN0cnVjdCBtbHg1X2li X21yICppbXIpCj4gIAo+ICAJZG93bl9yZWFkKCZjdHgtPnVtZW1fcndzZW0pOwo+ICAJcmJ0X2li X3VtZW1fZm9yX2VhY2hfaW5fcmFuZ2UoJmN0eC0+dW1lbV90cmVlLCAwLCBVTExPTkdfTUFYLAo+ IC0JCQkJICAgICAgbXJfbGVhZl9mcmVlLCBpbXIpOwo+ICsJCQkJICAgICAgbXJfbGVhZl9mcmVl LCB0cnVlLCBpbXIpOwo+ICAJdXBfcmVhZCgmY3R4LT51bWVtX3J3c2VtKTsKPiAgCj4gIAl3YWl0 X2V2ZW50KGltci0+cV9sZWFmX2ZyZWUsICFhdG9taWNfcmVhZCgmaW1yLT5udW1fbGVhZl9mcmVl KSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9zY2lmX2RtYS5jIGIvZHJp dmVycy9taXNjL21pYy9zY2lmL3NjaWZfZG1hLmMKPiBpbmRleCA2M2Q2MjQ2ZDZkZmYuLjYzNjlh ZWFhNzA1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21pc2MvbWljL3NjaWYvc2NpZl9kbWEuYwo+ ICsrKyBiL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9zY2lmX2RtYS5jCj4gQEAgLTIwMCwxNSArMjAw LDE4IEBAIHN0YXRpYyB2b2lkIHNjaWZfbW11X25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9u b3RpZmllciAqbW4sCj4gIAlzY2hlZHVsZV93b3JrKCZzY2lmX2luZm8ubWlzY193b3JrKTsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgc2NpZl9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9z dGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3RhdGljIGludCBzY2lmX21tdV9ub3Rp Zmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAJ CQkJCQkgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJCQkgICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsCj4gLQkJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmQpCj4gKwkJCQkJCSAgICAg dW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSAgICAgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAg CXN0cnVjdCBzY2lmX21tdV9ub3RpZgkqbW1uOwo+ICAKPiAgCW1tbiA9IGNvbnRhaW5lcl9vZiht biwgc3RydWN0IHNjaWZfbW11X25vdGlmLCBlcF9tbXVfbm90aWZpZXIpOwo+ICAJc2NpZl9ybWFf ZGVzdHJveV90Y3cobW1uLCBzdGFydCwgZW5kIC0gc3RhcnQpOwo+ICsKPiArCXJldHVybiAwOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBzY2lmX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNj L3NnaS1ncnUvZ3J1dGxicHVyZ2UuYyBiL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydXRsYnB1cmdl LmMKPiBpbmRleCBhMzQ1NGViNTZmYmYuLmJlMjhmMDViZmFmYSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jCj4gKysrIGIvZHJpdmVycy9taXNjL3NnaS1n cnUvZ3J1dGxicHVyZ2UuYwo+IEBAIC0yMTksOSArMjE5LDEwIEBAIHZvaWQgZ3J1X2ZsdXNoX2Fs bF90bGIoc3RydWN0IGdydV9zdGF0ZSAqZ3J1KQo+ICAvKgo+ICAgKiBNTVVPUFMgbm90aWZpZXIg Y2FsbG91dCBmdW5jdGlvbnMKPiAgICovCj4gLXN0YXRpYyB2b2lkIGdydV9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IGdydV9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAJCQkJICAgICAg IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+IC0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ICB7Cj4gIAlz dHJ1Y3QgZ3J1X21tX3N0cnVjdCAqZ21zID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgZ3J1X21t X3N0cnVjdCwKPiAgCQkJCQkJIG1zX25vdGlmaWVyKTsKPiBAQCAtMjMxLDYgKzIzMiw4IEBAIHN0 YXRpYyB2b2lkIGdydV9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIg Km1uLAo+ICAJZ3J1X2RiZyhncnVkZXYsICJnbXMgJXAsIHN0YXJ0IDB4JWx4LCBlbmQgMHglbHgs IGFjdCAlZFxuIiwgZ21zLAo+ICAJCXN0YXJ0LCBlbmQsIGF0b21pY19yZWFkKCZnbXMtPm1zX3Jh bmdlX2FjdGl2ZSkpOwo+ICAJZ3J1X2ZsdXNoX3RsYl9yYW5nZShnbXMsIHN0YXJ0LCBlbmQgLSBz dGFydCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdydV9pbnZh bGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vZ250ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwo+IGluZGV4IGJkNTY2 NTNiOWJiYy4uNTViNGYwZTNmNGQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5j Cj4gKysrIGIvZHJpdmVycy94ZW4vZ250ZGV2LmMKPiBAQCAtNDQxLDE4ICs0NDEsMjUgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBnbnRkZXZfdm1vcHMgPSB7Cj4g IAo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8KPiAgCj4gK3N0YXRpYyBib29sIGluX3JhbmdlKHN0cnVjdCBn cmFudF9tYXAgKm1hcCwKPiArCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg bG9uZyBlbmQpCj4gK3sKPiArCWlmICghbWFwLT52bWEpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJ aWYgKG1hcC0+dm1hLT52bV9zdGFydCA+PSBlbmQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYg KG1hcC0+dm1hLT52bV9lbmQgPD0gc3RhcnQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJl dHVybiB0cnVlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCB1bm1hcF9pZl9pbl9yYW5nZShzdHJ1 Y3QgZ3JhbnRfbWFwICptYXAsCj4gIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln bmVkIGxvbmcgZW5kKQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIG1zdGFydCwgbWVuZDsKPiAgCWlu dCBlcnI7Cj4gIAo+IC0JaWYgKCFtYXAtPnZtYSkKPiAtCQlyZXR1cm47Cj4gLQlpZiAobWFwLT52 bWEtPnZtX3N0YXJ0ID49IGVuZCkKPiAtCQlyZXR1cm47Cj4gLQlpZiAobWFwLT52bWEtPnZtX2Vu ZCA8PSBzdGFydCkKPiAtCQlyZXR1cm47Cj4gIAltc3RhcnQgPSBtYXgoc3RhcnQsIG1hcC0+dm1h LT52bV9zdGFydCk7Cj4gIAltZW5kICAgPSBtaW4oZW5kLCAgIG1hcC0+dm1hLT52bV9lbmQpOwo+ ICAJcHJfZGVidWcoIm1hcCAlZCslZCAoJWx4ICVseCksIHJhbmdlICVseCAlbHgsIG1yYW5nZSAl bHggJWx4XG4iLAo+IEBAIC00NjUsMjEgKzQ3Miw0MCBAQCBzdGF0aWMgdm9pZCB1bm1hcF9pZl9p bl9yYW5nZShzdHJ1Y3QgZ3JhbnRfbWFwICptYXAsCj4gIAlXQVJOX09OKGVycik7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIG1uX2ludmxfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAq bW4sCj4gK3N0YXRpYyBpbnQgbW5faW52bF9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKPiAgCQkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+IC0JCQkJdW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gKwkJCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNp Z25lZCBsb25nIGVuZCwKPiArCQkJCWJvb2wgYmxvY2thYmxlKQo+ICB7Cj4gIAlzdHJ1Y3QgZ250 ZGV2X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBnbnRkZXZfcHJpdiwgbW4p Owo+ICAJc3RydWN0IGdyYW50X21hcCAqbWFwOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJLyog VE9ETyBkbyB3ZSByZWFsbHkgbmVlZCBhIG11dGV4IGhlcmU/ICovCj4gKwlpZiAoYmxvY2thYmxl KQo+ICsJCW11dGV4X2xvY2soJnByaXYtPmxvY2spOwo+ICsJZWxzZSBpZiAoIW11dGV4X3RyeWxv Y2soJnByaXYtPmxvY2spKQo+ICsJCXJldHVybiAtRUFHQUlOOwo+ICAKPiAtCW11dGV4X2xvY2so JnByaXYtPmxvY2spOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZwcml2LT5tYXBzLCBu ZXh0KSB7Cj4gKwkJaWYgKGluX3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpIHsKPiArCQkJcmV0ID0g LUVBR0FJTjsKPiArCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCX0KPiAgCQl1bm1hcF9pZl9pbl9y YW5nZShtYXAsIHN0YXJ0LCBlbmQpOwo+ICAJfQo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAs ICZwcml2LT5mcmVlYWJsZV9tYXBzLCBuZXh0KSB7Cj4gKwkJaWYgKGluX3JhbmdlKG1hcCwgc3Rh cnQsIGVuZCkpIHsKPiArCQkJcmV0ID0gLUVBR0FJTjsKPiArCQkJZ290byBvdXRfdW5sb2NrOwo+ ICsJCX0KPiAgCQl1bm1hcF9pZl9pbl9yYW5nZShtYXAsIHN0YXJ0LCBlbmQpOwo+ICAJfQo+ICsK PiArb3V0X3VubG9jazoKPiAgCW11dGV4X3VubG9jaygmcHJpdi0+bG9jayk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgbW5fcmVsZWFzZShzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5j bHVkZS9saW51eC9rdm1faG9zdC5oCj4gaW5kZXggNGVlN2JjNTQ4YTgzLi4xNDg5MzUwODUxOTQg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCj4gKysrIGIvaW5jbHVkZS9s aW51eC9rdm1faG9zdC5oCj4gQEAgLTEyNzUsOCArMTI3NSw4IEBAIHN0YXRpYyBpbmxpbmUgbG9u ZyBrdm1fYXJjaF92Y3B1X2FzeW5jX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAo+ICB9Cj4gICNl bmRpZiAvKiBDT05GSUdfSEFWRV9LVk1fVkNQVV9BU1lOQ19JT0NUTCAqLwo+ICAKPiAtdm9pZCBr dm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4g LQkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwo+ICtpbnQga3ZtX2Fy Y2hfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLAo+ICsJCXVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBib29sIGJsb2NrYWJsZSk7Cj4g IAo+ICAjaWZkZWYgQ09ORklHX0hBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0UKPiAgaW50IGt2 bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbW11 X25vdGlmaWVyLmgKPiBpbmRleCAzOTJlNmFmODI3MDEuLjJlYjFhMmQwMTc1OSAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9t bXVfbm90aWZpZXIuaAo+IEBAIC0xNTEsMTMgKzE1MSwxNSBAQCBzdHJ1Y3QgbW11X25vdGlmaWVy X29wcyB7Cj4gIAkgKiBhZGRyZXNzIHNwYWNlIGJ1dCBtYXkgc3RpbGwgYmUgcmVmZXJlbmNlZCBi eSBzcHRlcyB1bnRpbAo+ICAJICogdGhlIGxhc3QgcmVmY291bnQgaXMgZHJvcHBlZC4KPiAgCSAq Cj4gLQkgKiBJZiBib3RoIG9mIHRoZXNlIGNhbGxiYWNrcyBjYW5ub3QgYmxvY2ssIGFuZCBpbnZh bGlkYXRlX3JhbmdlCj4gLQkgKiBjYW5ub3QgYmxvY2ssIG1tdV9ub3RpZmllcl9vcHMuZmxhZ3Mg c2hvdWxkIGhhdmUKPiAtCSAqIE1NVV9JTlZBTElEQVRFX0RPRVNfTk9UX0JMT0NLIHNldC4KPiAr CSAqIElmIGJsb2NrYWJsZSBhcmd1bWVudCBpcyBzZXQgdG8gZmFsc2UgdGhlbiB0aGUgY2FsbGJh Y2sgY2Fubm90Cj4gKwkgKiBzbGVlcCBhbmQgaGFzIHRvIHJldHVybiB3aXRoIC1FQUdBSU4uIDAg c2hvdWxkIGJlIHJldHVybmVkCj4gKwkgKiBvdGhlcndpc2UuCj4gKwkgKgo+ICAJICovCj4gLQl2 b2lkICgqaW52YWxpZGF0ZV9yYW5nZV9zdGFydCkoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4g KwlpbnQgKCppbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwK PiAgCQkJCSAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAtCQkJCSAgICAgICB1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7Cj4gKwkJCQkgICAgICAgdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkgICAgICAgYm9vbCBibG9ja2Fi bGUpOwo+ICAJdm9pZCAoKmludmFsaWRhdGVfcmFuZ2VfZW5kKShzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKPiAgCQkJCSAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gIAkJCQkgICAgIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKPiBAQCAtMjI5LDggKzIzMSw5IEBA IGV4dGVybiBpbnQgX19tbXVfbm90aWZpZXJfdGVzdF95b3VuZyhzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKPiAgCQkJCSAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKPiAgZXh0ZXJuIHZvaWQgX19t bXVfbm90aWZpZXJfY2hhbmdlX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgCQkJCSAgICAg IHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgcHRlKTsKPiAtZXh0ZXJuIHZvaWQgX19tbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAt CQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwo+ICtleHRlcm4g aW50IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tX3N0cnVj dCAqbW0sCj4gKwkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ ICsJCQkJICBib29sIGJsb2NrYWJsZSk7Cj4gIGV4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2lu dmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJICB1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKPiAgCQkJCSAgYm9vbCBvbmx5X2VuZCk7 Cj4gQEAgLTI4MSw3ICsyODQsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJICB1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKPiAgewo+ICAJaWYgKG1tX2hhc19u b3RpZmllcnMobW0pKQo+IC0JCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo bW0sIHN0YXJ0LCBlbmQpOwo+ICsJCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQobW0sIHN0YXJ0LCBlbmQsIHRydWUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBt bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9ub25ibG9jayhzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKPiArCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQp Cj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsJaWYgKG1tX2hhc19ub3RpZmllcnMobW0pKQo+ICsJ CXJldCA9IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0LCBl bmQsIGZhbHNlKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5l IHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAo+IEBAIC00NjEsNiArNDc0LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgewo+ICB9 Cj4gIAo+ICtzdGF0aWMgaW5saW5lIGludCBtbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9z dGFydF9ub25ibG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiArCQkJCSAgdW5zaWduZWQgbG9u ZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nIGVuZCkKPiAgewo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29vbS5oIGIvaW5j bHVkZS9saW51eC9vb20uaAo+IGluZGV4IDZhZGFjMTEzZTk2ZC4uOTJmNzBlNGM2MjUyIDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvb29tLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L29vbS5o Cj4gQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfc3RhYmxlX2FkZHJl c3Nfc3BhY2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAt dm9pZCBfX29vbV9yZWFwX3Rhc2tfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pOwo+ICtib29sIF9f b29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7Cj4gIAo+ICBleHRlcm4gdW5z aWduZWQgbG9uZyBvb21fYmFkbmVzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsCj4gIAkJc3RydWN0 IG1lbV9jZ3JvdXAgKm1lbWNnLCBjb25zdCBub2RlbWFza190ICpub2RlbWFzaywKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9yZG1hL2liX3VtZW1fb2RwLmggYi9pbmNsdWRlL3JkbWEvaWJfdW1lbV9v ZHAuaAo+IGluZGV4IDZhMTdmODU2Zjg0MS4uMzgxY2RmNWE5YmQxIDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvcmRtYS9pYl91bWVtX29kcC5oCj4gKysrIGIvaW5jbHVkZS9yZG1hL2liX3VtZW1fb2Rw LmgKPiBAQCAtMTE5LDcgKzExOSw4IEBAIHR5cGVkZWYgaW50ICgqdW1lbV9jYWxsX2JhY2spKHN0 cnVjdCBpYl91bWVtICppdGVtLCB1NjQgc3RhcnQsIHU2NCBlbmQsCj4gICAqLwo+ICBpbnQgcmJ0 X2liX3VtZW1fZm9yX2VhY2hfaW5fcmFuZ2Uoc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290LAo+ ICAJCQkJICB1NjQgc3RhcnQsIHU2NCBlbmQsCj4gLQkJCQkgIHVtZW1fY2FsbF9iYWNrIGNiLCB2 b2lkICpjb29raWUpOwo+ICsJCQkJICB1bWVtX2NhbGxfYmFjayBjYiwKPiArCQkJCSAgYm9vbCBi bG9ja2FibGUsIHZvaWQgKmNvb2tpZSk7Cj4gIAo+ICAvKgo+ICAgKiBGaW5kIGZpcnN0IHJlZ2lv biBpbnRlcnNlY3Rpbmcgd2l0aCBhZGRyZXNzIHJhbmdlLgo+IGRpZmYgLS1naXQgYS9tbS9obW0u YyBiL21tL2htbS5jCj4gaW5kZXggZGU3YjZiZjc3MjAxLi44MWZkNTdiZDI2MzQgMTAwNjQ0Cj4g LS0tIGEvbW0vaG1tLmMKPiArKysgYi9tbS9obW0uYwo+IEBAIC0xNzcsMTYgKzE3NywxOSBAQCBz dGF0aWMgdm9pZCBobW1fcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwgc3RydWN0IG1t X3N0cnVjdCAqbW0pCj4gIAl1cF93cml0ZSgmaG1tLT5taXJyb3JzX3NlbSk7Cj4gIH0KPiAgCj4g LXN0YXRpYyB2b2lkIGhtbV9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZp ZXIgKm1uLAo+ICtzdGF0aWMgaW50IGhtbV9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAo+ICAJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkgICAgICAgdW5zaWduZWQgbG9u ZyBlbmQpCj4gKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkgICAgICAgYm9v bCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVjdCBobW0gKmhtbSA9IG1tLT5obW07Cj4gIAo+ICAJ Vk1fQlVHX09OKCFobW0pOwo+ICAKPiAgCWF0b21pY19pbmMoJmhtbS0+c2VxdWVuY2UpOwo+ICsK PiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBobW1faW52YWxpZGF0ZV9yYW5n ZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gZGlmZiAtLWdpdCBhL21tL21tYXAuYyBi L21tL21tYXAuYwo+IGluZGV4IGQxZWI4N2VmNGIxYS4uMzM2YmVlOGM0ZTI1IDEwMDY0NAo+IC0t LSBhL21tL21tYXAuYwo+ICsrKyBiL21tL21tYXAuYwo+IEBAIC0zMDc0LDcgKzMwNzQsNyBAQCB2 b2lkIGV4aXRfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgCQkgKiByZWxpYWJseSB0ZXN0 IGl0Lgo+ICAJCSAqLwo+ICAJCW11dGV4X2xvY2soJm9vbV9sb2NrKTsKPiAtCQlfX29vbV9yZWFw X3Rhc2tfbW0obW0pOwo+ICsJCSh2b2lkKV9fb29tX3JlYXBfdGFza19tbShtbSk7Cj4gIAkJbXV0 ZXhfdW5sb2NrKCZvb21fbG9jayk7Cj4gIAo+ICAJCXNldF9iaXQoTU1GX09PTV9TS0lQLCAmbW0t PmZsYWdzKTsKPiBkaWZmIC0tZ2l0IGEvbW0vbW11X25vdGlmaWVyLmMgYi9tbS9tbXVfbm90aWZp ZXIuYwo+IGluZGV4IGVmZjZiODhhOTkzZi4uMTAzYjJiNDUwMDQzIDEwMDY0NAo+IC0tLSBhL21t L21tdV9ub3RpZmllci5jCj4gKysrIGIvbW0vbW11X25vdGlmaWVyLmMKPiBAQCAtMTc0LDE4ICsx NzQsMjkgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gIAlzcmN1X3JlYWRfdW5sb2NrKCZzcmN1LCBp ZCk7Cj4gIH0KPiAgCj4gLXZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFy dChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAtCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z aWduZWQgbG9uZyBlbmQpCj4gK2ludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICsJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1 bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCSAgYm9vbCBibG9ja2FibGUpCj4gIHsKPiAgCXN0cnVj dCBtbXVfbm90aWZpZXIgKm1uOwo+ICsJaW50IHJldCA9IDA7Cj4gIAlpbnQgaWQ7Cj4gIAo+ICAJ aWQgPSBzcmN1X3JlYWRfbG9jaygmc3JjdSk7Cj4gIAlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Uo bW4sICZtbS0+bW11X25vdGlmaWVyX21tLT5saXN0LCBobGlzdCkgewo+IC0JCWlmIChtbi0+b3Bz LT5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KQo+IC0JCQltbi0+b3BzLT5pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0KG1uLCBtbSwgc3RhcnQsIGVuZCk7Cj4gKwkJaWYgKG1uLT5vcHMtPmludmFsaWRhdGVf cmFuZ2Vfc3RhcnQpIHsKPiArCQkJaW50IF9yZXQgPSBtbi0+b3BzLT5pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0KG1uLCBtbSwgc3RhcnQsIGVuZCwgYmxvY2thYmxlKTsKPiArCQkJaWYgKF9yZXQpIHsK PiArCQkJCXByX2luZm8oIiVwUyBjYWxsYmFjayBmYWlsZWQgd2l0aCAlZCBpbiAlc2Jsb2NrYWJs ZSBjb250ZXh0LlxuIiwKPiArCQkJCQkJbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydCwg X3JldCwKPiArCQkJCQkJIWJsb2NrYWJsZSA/ICJub24tIjogIiIpOwo+ICsJCQkJcmV0ID0gX3Jl dDsKPiArCQkJfQo+ICsJCX0KPiAgCX0KPiAgCXNyY3VfcmVhZF91bmxvY2soJnNyY3UsIGlkKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKF9fbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvbW0vb29tX2tp bGwuYyBiL21tL29vbV9raWxsLmMKPiBpbmRleCA4NDA4MWU3N2JjNTEuLjVhOTM2Y2YyNGQ3OSAx MDA2NDQKPiAtLS0gYS9tbS9vb21fa2lsbC5jCj4gKysrIGIvbW0vb29tX2tpbGwuYwo+IEBAIC00 NzksOSArNDc5LDEwIEBAIHN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChvb21fcmVhcGVy X3dhaXQpOwo+ICBzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpvb21fcmVhcGVyX2xpc3Q7Cj4g IHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sob29tX3JlYXBlcl9sb2NrKTsKPiAgCj4gLXZvaWQgX19v b21fcmVhcF90YXNrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICtib29sIF9fb29tX3JlYXBf dGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgewo+ICAJc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWE7Cj4gKwlib29sIHJldCA9IHRydWU7Cj4gIAo+ICAJLyoKPiAgCSAqIFRlbGwgYWxs IHVzZXJzIG9mIGdldF91c2VyL2NvcHlfZnJvbV91c2VyIGV0Yy4uLiB0aGF0IHRoZSBjb250ZW50 Cj4gQEAgLTUxMSwxMiArNTEyLDE3IEBAIHZvaWQgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tKQo+ICAJCQlzdHJ1Y3QgbW11X2dhdGhlciB0bGI7Cj4gIAo+ICAJCQl0bGJf Z2F0aGVyX21tdSgmdGxiLCBtbSwgc3RhcnQsIGVuZCk7Cj4gLQkJCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KG1tLCBzdGFydCwgZW5kKTsKPiArCQkJaWYgKG1tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2NrKG1tLCBzdGFydCwgZW5kKSkgewo+ICsJ CQkJcmV0ID0gZmFsc2U7Cj4gKwkJCQljb250aW51ZTsKPiArCQkJfQo+ICAJCQl1bm1hcF9wYWdl X3JhbmdlKCZ0bGIsIHZtYSwgc3RhcnQsIGVuZCwgTlVMTCk7Cj4gIAkJCW1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgc3RhcnQsIGVuZCk7Cj4gIAkJCXRsYl9maW5pc2hfbW11 KCZ0bGIsIHN0YXJ0LCBlbmQpOwo+ICAJCX0KPiAgCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+ICBzdGF0aWMgYm9vbCBvb21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAq dHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiBAQCAtNTQ1LDE4ICs1NTEsNiBAQCBzdGF0aWMg Ym9vbCBvb21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1f c3RydWN0ICptbSkKPiAgCQlnb3RvIHVubG9ja19vb207Cj4gIAl9Cj4gIAo+IC0JLyoKPiAtCSAq IElmIHRoZSBtbSBoYXMgaW52YWxpZGF0ZV97c3RhcnQsZW5kfSgpIG5vdGlmaWVycyB0aGF0IGNv dWxkIGJsb2NrLAo+IC0JICogc2xlZXAgdG8gZ2l2ZSB0aGUgb29tIHZpY3RpbSBzb21lIG1vcmUg dGltZS4KPiAtCSAqIFRPRE86IHdlIHJlYWxseSB3YW50IHRvIGdldCByaWQgb2YgdGhpcyB1Z2x5 IGhhY2sgYW5kIG1ha2Ugc3VyZSB0aGF0Cj4gLQkgKiBub3RpZmllcnMgY2Fubm90IGJsb2NrIGZv ciB1bmJvdW5kZWQgYW1vdW50IG9mIHRpbWUKPiAtCSAqLwo+IC0JaWYgKG1tX2hhc19ibG9ja2Fi bGVfaW52YWxpZGF0ZV9ub3RpZmllcnMobW0pKSB7Cj4gLQkJdXBfcmVhZCgmbW0tPm1tYXBfc2Vt KTsKPiAtCQlzY2hlZHVsZV90aW1lb3V0X2lkbGUoSFopOwo+IC0JCWdvdG8gdW5sb2NrX29vbTsK PiAtCX0KPiAtCj4gIAkvKgo+ICAJICogTU1GX09PTV9TS0lQIGlzIHNldCBieSBleGl0X21tYXAg d2hlbiB0aGUgT09NIHJlYXBlciBjYW4ndAo+ICAJICogd29yayBvbiB0aGUgbW0gYW55bW9yZS4g VGhlIGNoZWNrIGZvciBNTUZfT09NX1NLSVAgbXVzdCBydW4KPiBAQCAtNTcxLDcgKzU2NSwxMiBA QCBzdGF0aWMgYm9vbCBvb21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBz dHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgCj4gIAl0cmFjZV9zdGFydF90YXNrX3JlYXBpbmcodHNr LT5waWQpOwo+ICAKPiAtCV9fb29tX3JlYXBfdGFza19tbShtbSk7Cj4gKwkvKiBmYWlsZWQgdG8g cmVhcCBwYXJ0IG9mIHRoZSBhZGRyZXNzIHNwYWNlLiBUcnkgYWdhaW4gbGF0ZXIgKi8KPiArCWlm ICghX19vb21fcmVhcF90YXNrX21tKG1tKSkgewo+ICsJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7 Cj4gKwkJcmV0ID0gZmFsc2U7Cj4gKwkJZ290byB1bmxvY2tfb29tOwo+ICsJfQo+ICAKPiAgCXBy X2luZm8oIm9vbV9yZWFwZXI6IHJlYXBlZCBwcm9jZXNzICVkICglcyksIG5vdyBhbm9uLXJzczol bHVrQiwgZmlsZS1yc3M6JWx1a0IsIHNobWVtLXJzczolbHVrQlxuIiwKPiAgCQkJdGFza19waWRf bnIodHNrKSwgdHNrLT5jb21tLAo+IGRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIv dmlydC9rdm0va3ZtX21haW4uYwo+IGluZGV4IGFkYTIxZjQ3ZjIyYi4uMTZjZTM4ZjE3OGQxIDEw MDY0NAo+IC0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKPiArKysgYi92aXJ0L2t2bS9rdm1fbWFp bi5jCj4gQEAgLTEzNSw5ICsxMzUsMTAgQEAgc3RhdGljIHZvaWQga3ZtX3VldmVudF9ub3RpZnlf Y2hhbmdlKHVuc2lnbmVkIGludCB0eXBlLCBzdHJ1Y3Qga3ZtICprdm0pOwo+ICBzdGF0aWMgdW5z aWduZWQgbG9uZyBsb25nIGt2bV9jcmVhdGV2bV9jb3VudDsKPiAgc3RhdGljIHVuc2lnbmVkIGxv bmcgbG9uZyBrdm1fYWN0aXZlX3ZtczsKPiAgCj4gLV9fd2VhayB2b2lkIGt2bV9hcmNoX21tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwKPiAtCQl1bnNpZ25lZCBs b25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKPiArX193ZWFrIGludCBrdm1fYXJjaF9tbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4gKwkJdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGJvb2wgYmxvY2thYmxlKQo+ICB7Cj4gKwly ZXR1cm4gMDsKPiAgfQo+ICAKPiAgYm9vbCBrdm1faXNfcmVzZXJ2ZWRfcGZuKGt2bV9wZm5fdCBw Zm4pCj4gQEAgLTM1NCwxMyArMzU1LDE1IEBAIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJf Y2hhbmdlX3B0ZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgCXNyY3VfcmVhZF91bmxvY2so Jmt2bS0+c3JjdSwgaWR4KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0 aWMgaW50IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11 X25vdGlmaWVyICptbiwKPiAgCQkJCQkJICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAJCQkJ CQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAtCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgZW5k KQo+ICsJCQkJCQkgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSAgICBib29sIGJsb2Nr YWJsZSkKPiAgewo+ICAJc3RydWN0IGt2bSAqa3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7 Cj4gIAlpbnQgbmVlZF90bGJfZmx1c2ggPSAwLCBpZHg7Cj4gKwlpbnQgcmV0Owo+ICAKPiAgCWlk eCA9IHNyY3VfcmVhZF9sb2NrKCZrdm0tPnNyY3UpOwo+ICAJc3Bpbl9sb2NrKCZrdm0tPm1tdV9s b2NrKTsKPiBAQCAtMzc4LDkgKzM4MSwxMSBAQCBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gIAo+ICAJ c3Bpbl91bmxvY2soJmt2bS0+bW11X2xvY2spOwo+ICAKPiAtCWt2bV9hcmNoX21tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlKGt2bSwgc3RhcnQsIGVuZCk7Cj4gKwlyZXQgPSBrdm1fYXJjaF9t bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShrdm0sIHN0YXJ0LCBlbmQsIGJsb2NrYWJsZSk7 Cj4gIAo+ICAJc3JjdV9yZWFkX3VubG9jaygma3ZtLT5zcmN1LCBpZHgpOwo+ICsKPiArCXJldHVy biByZXQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0 ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gLS0gCj4gMi4xOC4wCj4gCj4g LS0gCj4gTWljaGFsIEhvY2tvCj4gU1VTRSBMYWJzCgotLSAKTWljaGFsIEhvY2tvClNVU0UgTGFi cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4 IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK