From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [RFC PATCH] mm, oom: distinguish blockable mode for mmu notifiers Date: Fri, 22 Jun 2018 17:13:02 +0200 Message-ID: <0aa9f695-5702-6704-9462-7779cbfdb3fd__47461.9254273877$1529680455$gmane$org@amd.com> References: <20180622150242.16558-1-mhocko@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fWNmG-0008JC-DD for xen-devel@lists.xenproject.org; Fri, 22 Jun 2018 15:15:08 +0000 In-Reply-To: <20180622150242.16558-1-mhocko@kernel.org> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Michal Hocko , LKML Cc: Michal Hocko , kvm@vger.kernel.org, =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , David Airlie , Joonas Lahtinen , Sudeep Dutt , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Andrea Arcangeli , "David (ChunMing) Zhou" , Dimitri Sivanich , linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org, Jason Gunthorpe , Doug Ledford , David Rientjes , xen-devel@lists.xenproject.org, intel-gfx@lists.freedesktop.org, Jani Nikula , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Rodrigo Vivi , Boris Ostrovsky , Juergen Gross , Mike Marciniszyn List-Id: xen-devel@lists.xenproject.org SGkgTWljaGFsLAoKW0FkZGluZyBGZWxpeCBhcyB3ZWxsXQoKV2VsbCBmaXJzdCBvZiBhbGwgeW91 IGhhdmUgYSBtaXNjb25jZXB0aW9uIHdoeSBhdCBsZWFzdCB0aGUgQU1EIGdyYXBoaWNzIApkcml2 ZXIgbmVlZCB0byBiZSBhYmxlIHRvIHNsZWVwIGluIGFuIE1NVSBub3RpZmllcjogV2UgbmVlZCB0 byBzbGVlcCAKYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIGhhcmR3YXJlIG9wZXJhdGlvbnMg dG8gZmluaXNoIGFuZCAqTk9UKiAKYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIGxvY2tzLgoK SSdtIG5vdCBzdXJlIGlmIHlvdXIgZmxhZyBub3cgbWVhbnMgdGhhdCB5b3UgZ2VuZXJhbGx5IGNh bid0IHNsZWVwIGluIApNTVUgbm90aWZpZXJzIGFueSBtb3JlLCBidXQgaWYgdGhhdCdzIHRoZSBj YXNlIGF0IGxlYXN0IEFNRCBoYXJkd2FyZSAKd2lsbCBicmVhayBiYWRseS4gSW4gb3VyIGNhc2Ug dGhlIGFwcHJvYWNoIG9mIHdhaXRpbmcgZm9yIGEgc2hvcnQgdGltZSAKZm9yIHRoZSBwcm9jZXNz IHRvIGJlIHJlYXBlZCBhbmQgdGhlbiBzZWxlY3QgYW5vdGhlciB2aWN0aW0gYWN0dWFsbHkgCnNv dW5kcyBsaWtlIHRoZSByaWdodCB0aGluZyB0byBkby4KCldoYXQgd2UgYWxzbyBhbHJlYWR5IHRy eSB0byBkbyBpcyB0byBhYm9ydCBoYXJkd2FyZSBvcGVyYXRpb25zIHdpdGggdGhlIAphZGRyZXNz IHNwYWNlIHdoZW4gd2UgZGV0ZWN0IHRoYXQgdGhlIHByb2Nlc3MgaXMgZHlpbmcsIGJ1dCB0aGF0 IGNhbiAKY2VydGFpbmx5IGJlIGltcHJvdmVkLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKQW0gMjIu MDYuMjAxOCB1bSAxNzowMiBzY2hyaWViIE1pY2hhbCBIb2NrbzoKPiBGcm9tOiBNaWNoYWwgSG9j a28gPG1ob2Nrb0BzdXNlLmNvbT4KPgo+IFRoZXJlIGFyZSBzZXZlcmFsIGJsb2NrYWJsZSBtbXUg bm90aWZpZXJzIHdoaWNoIG1pZ2h0IHNsZWVwIGluCj4gbW11X25vdGlmaWVyX2ludmFsaWRhdGVf cmFuZ2Vfc3RhcnQgYW5kIHRoYXQgaXMgYSBwcm9ibGVtIGZvciB0aGUKPiBvb21fcmVhcGVyIGJl Y2F1c2UgaXQgbmVlZHMgdG8gZ3VhcmFudGVlIGEgZm9yd2FyZCBwcm9ncmVzcyBzbyBpdCBjYW5u b3QKPiBkZXBlbmQgb24gYW55IHNsZWVwYWJsZSBsb2Nrcy4gQ3VycmVudGx5IHdlIHNpbXBseSBi YWNrIG9mZiBhbmQgbWFyayBhbgo+IG9vbSB2aWN0aW0gd2l0aCBibG9ja2FibGUgbW11IG5vdGlm aWVycyBhcyBkb25lIGFmdGVyIGEgc2hvcnQgc2xlZXAuCj4gVGhhdCBjYW4gcmVzdWx0IGluIHNl bGVjdGluZyBhIG5ldyBvb20gdmljdGltIHByZW1hdHVyZWx5IGJlY2F1c2UgdGhlCj4gcHJldmlv dXMgb25lIHN0aWxsIGhhc24ndCB0b3JuIGl0cyBtZW1vcnkgZG93biB5ZXQuCj4KPiBXZSBjYW4g ZG8gbXVjaCBiZXR0ZXIgdGhvdWdoLiBFdmVuIGlmIG1tdSBub3RpZmllcnMgdXNlIHNsZWVwYWJs ZSBsb2Nrcwo+IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBhdXRvbWF0aWNhbGx5IGFzc3VtZSB0aG9z ZSBsb2NrcyBhcmUgaGVsZC4KPiBNb3Jlb3ZlciBtb3N0IG5vdGlmaWVycyBvbmx5IGNhcmUgYWJv dXQgYSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzCj4gc3BhY2UuIFRoaXMgcGF0Y2ggaGFuZGxlcyB0 aGUgZmlyc3QgcGFydCBvZiB0aGUgcHJvYmxlbS4KPiBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0IGdldHMgYSBibG9ja2FibGUgZmxhZyBhbmQKPiBjYWxsYmFja3MgYXJlIG5v dCBhbGxvd2VkIHRvIHNsZWVwIGlmIHRoZSBmbGFnIGlzIHNldCB0byBmYWxzZS4gVGhpcyBpcwo+ IGFjaGlldmVkIGJ5IHVzaW5nIHRyeWxvY2sgaW5zdGVhZCBvZiB0aGUgc2xlZXBhYmxlIGxvY2sg Zm9yIG1vc3QKPiBjYWxsYmFja3MuIEkgdGhpbmsgd2UgY2FuIGltcHJvdmUgdGhhdCBldmVuIGZ1 cnRoZXIgYmVjYXVzZSB0aGVyZSBpcwo+IGEgY29tbW9uIHBhdHRlcm4gdG8gZG8gYSByYW5nZSBs b29rdXAgZmlyc3QgYW5kIHRoZW4gZG8gc29tZXRoaW5nIGFib3V0Cj4gdGhhdC4gVGhlIGZpcnN0 IHBhcnQgY2FuIGJlIGRvbmUgd2l0aG91dCBhIHNsZWVwaW5nIGxvY2sgSSBwcmVzdW1lLgo+Cj4g QW55d2F5LCB3aGF0IGRvZXMgdGhlIG9vbV9yZWFwZXIgZG8gd2l0aCBhbGwgdGhhdD8gV2UgZG8g bm90IGhhdmUgdG8KPiBmYWlsIHJpZ2h0IGF3YXkuIFdlIHNpbXBseSByZXRyeSBpZiB0aGVyZSBp cyBhdCBsZWFzdCBvbmUgbm90aWZpZXIgd2hpY2gKPiBjb3VsZG4ndCBtYWtlIGFueSBwcm9ncmVz cy4gQSByZXRyeSBsb29wIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgdG8gd2FpdAo+IGZvciB0aGUg bW1hcF9zZW0gYW5kIHRoaXMgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIHRoaW5nLgo+Cj4gQ2M6ICJE YXZpZCAoQ2h1bk1pbmcpIFpob3UiIDxEYXZpZDEuWmhvdUBhbWQuY29tPgo+IENjOiBQYW9sbyBC b256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgo+IENjOiAiUmFkaW0gS3LEjW3DocWZIiA8cmty Y21hckByZWRoYXQuY29tPgo+IENjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFt ZC5jb20+Cj4gQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pgo+IENjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+Cj4gQ2M6IEphbmkgTmlrdWxh IDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9v bmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdv LnZpdmlAaW50ZWwuY29tPgo+IENjOiBEb3VnIExlZGZvcmQgPGRsZWRmb3JkQHJlZGhhdC5jb20+ Cj4gQ2M6IEphc29uIEd1bnRob3JwZSA8amdnQHppZXBlLmNhPgo+IENjOiBNaWtlIE1hcmNpbmlz enluIDxtaWtlLm1hcmNpbmlzenluQGludGVsLmNvbT4KPiBDYzogRGVubmlzIERhbGVzc2FuZHJv IDxkZW5uaXMuZGFsZXNzYW5kcm9AaW50ZWwuY29tPgo+IENjOiBTdWRlZXAgRHV0dCA8c3VkZWVw LmR1dHRAaW50ZWwuY29tPgo+IENjOiBBc2h1dG9zaCBEaXhpdCA8YXNodXRvc2guZGl4aXRAaW50 ZWwuY29tPgo+IENjOiBEaW1pdHJpIFNpdmFuaWNoIDxzaXZhbmljaEBzZ2kuY29tPgo+IENjOiBC b3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IENjOiBKdWVyZ2Vu IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Cj4gQ2M6ICJKw6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3Nl QHJlZGhhdC5jb20+Cj4gQ2M6IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+ Cj4gQ2M6IGt2bUB2Z2VyLmtlcm5lbC5vcmcgKG9wZW4gbGlzdDpLRVJORUwgVklSVFVBTCBNQUNI SU5FIEZPUiBYODYgKEtWTS94ODYpKQo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn IChvcGVuIGxpc3Q6WDg2IEFSQ0hJVEVDVFVSRSAoMzItQklUIEFORCA2NC1CSVQpKQo+IENjOiBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZyAob3BlbiBsaXN0OlJBREVPTiBhbmQgQU1ER1BV IERSTSBEUklWRVJTKQo+IENjOiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnIChvcGVu IGxpc3Q6RFJNIERSSVZFUlMpCj4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcg KG9wZW4gbGlzdDpJTlRFTCBEUk0gRFJJVkVSUyAoZXhjbHVkaW5nIFBvdWxzYm8sIE1vb3Jlc3Rv dy4uLikKPiBDYzogbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcgKG9wZW4gbGlzdDpJTkZJTklC QU5EIFNVQlNZU1RFTSkKPiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIChtb2Rl cmF0ZWQgbGlzdDpYRU4gSFlQRVJWSVNPUiBJTlRFUkZBQ0UpCj4gQ2M6IGxpbnV4LW1tQGt2YWNr Lm9yZyAob3BlbiBsaXN0OkhNTSAtIEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpCj4g UmVwb3J0ZWQtYnk6IERhdmlkIFJpZW50amVzIDxyaWVudGplc0Bnb29nbGUuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgo+IC0tLQo+Cj4gSGksCj4g dGhpcyBpcyBhbiBSRkMgYW5kIG5vdCB0ZXN0ZWQgYXQgYWxsLiBJIGFtIG5vdCB2ZXJ5IGZhbWls aWFyIHdpdGggdGhlCj4gbW11IG5vdGlmaWVycyBzZW1hbnRpY3MgdmVyeSBtdWNoIHNvIHRoaXMg aXMgYSBjcnVkZSBhdHRlbXB0IHRvIGFjaGlldmUKPiB3aGF0IEkgbmVlZCBiYXNpY2FsbHkuIEl0 IG1pZ2h0IGJlIGNvbXBsZXRlbHkgd3JvbmcgYnV0IEkgd291bGQgbGlrZQo+IHRvIGRpc2N1c3Mg d2hhdCB3b3VsZCBiZSBhIGJldHRlciB3YXkgaWYgdGhhdCBpcyB0aGUgY2FzZS4KPgo+IGdldF9t YWludGFpbmVycyBnYXZlIG1lIHF1aXRlIGxhcmdlIGxpc3Qgb2YgcGVvcGxlIHRvIENDIHNvIEkg aGFkIHRvIHRyaW0KPiBpdCBkb3duLiBJZiB5b3UgdGhpbmsgSSBoYXZlIGZvcmdvdCBzb21lYm9k eSwgcGxlYXNlIGxldCBtZSBrbm93Cj4KPiBBbnkgZmVlZGJhY2sgaXMgaGlnaGx5IGFwcHJlY2lh dGVkLgo+Cj4gICBhcmNoL3g4Ni9rdm0veDg2LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyAr KysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jICB8IDMzICsr KysrKysrKysrKysrKysrKystLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3VzZXJwdHIuYyB8IDEwICsrKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9tbi5jICAgICAgfCAxNSArKysrKysrKy0tLQo+ICAgZHJpdmVycy9pbmZpbmliYW5kL2NvcmUv dW1lbV9vZHAuYyAgICAgIHwgMTUgKysrKysrKystLS0KPiAgIGRyaXZlcnMvaW5maW5pYmFuZC9o dy9oZmkxL21tdV9yYi5jICAgICB8ICA3ICsrKystLQo+ICAgZHJpdmVycy9taXNjL21pYy9zY2lm L3NjaWZfZG1hLmMgICAgICAgIHwgIDcgKysrKy0tCj4gICBkcml2ZXJzL21pc2Mvc2dpLWdydS9n cnV0bGJwdXJnZS5jICAgICAgfCAgNyArKysrLS0KPiAgIGRyaXZlcnMveGVuL2dudGRldi5jICAg ICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrLS0tCj4gICBpbmNsdWRlL2xpbnV4L2t2bV9o b3N0LmggICAgICAgICAgICAgICAgfCAgMiArLQo+ICAgaW5jbHVkZS9saW51eC9tbXVfbm90aWZp ZXIuaCAgICAgICAgICAgIHwgMTUgKysrKysrKysrLS0KPiAgIG1tL2htbS5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKystLQo+ICAgbW0vbW11X25vdGlmaWVyLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKystLS0KPiAgIG1tL29vbV9raWxsLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIHZp cnQva3ZtL2t2bV9tYWluLmMgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLQo+ICAg MTUgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQo+Cj4g ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwo+IGlu ZGV4IDZiY2VjYzMyNWU3ZS4uYWMwOGY1ZDcxMWJlIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2t2 bS94ODYuYwo+ICsrKyBiL2FyY2gveDg2L2t2bS94ODYuYwo+IEBAIC03MjAzLDggKzcyMDMsOSBA QCBzdGF0aWMgdm9pZCB2Y3B1X2xvYWRfZW9pX2V4aXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KQo+ICAgCWt2bV94ODZfb3BzLT5sb2FkX2VvaV9leGl0bWFwKHZjcHUsIGVvaV9leGl0X2JpdG1h cCk7Cj4gICB9Cj4gICAKPiAtdm9pZCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4gLQkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg bG9uZyBlbmQpCj4gK2ludCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShz dHJ1Y3Qga3ZtICprdm0sCj4gKwkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQsCj4gKwkJYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJdW5zaWduZWQgbG9uZyBhcGljX2Fk ZHJlc3M7Cj4gICAKPiBAQCAtNzIxNSw2ICs3MjE2LDggQEAgdm9pZCBrdm1fYXJjaF9tbXVfbm90 aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4gICAJYXBpY19hZGRyZXNz ID0gZ2ZuX3RvX2h2YShrdm0sIEFQSUNfREVGQVVMVF9QSFlTX0JBU0UgPj4gUEFHRV9TSElGVCk7 Cj4gICAJaWYgKHN0YXJ0IDw9IGFwaWNfYWRkcmVzcyAmJiBhcGljX2FkZHJlc3MgPCBlbmQpCj4g ICAJCWt2bV9tYWtlX2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0FQSUNfUEFHRV9SRUxP QUQpOwo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICB2b2lkIGt2bV92Y3B1X3JlbG9h ZF9hcGljX2FjY2Vzc19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfbW4uYwo+IGluZGV4IDgzZTM0NGZiYjUwYS4uZDEzOGE1MjZmZWZm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKPiBAQCAtMTM2LDEy ICsxMzYsMTggQEAgdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKQo+ ICAgICoKPiAgICAqIFRha2UgdGhlIHJtbiByZWFkIHNpZGUgbG9jay4KPiAgICAqLwo+IC1zdGF0 aWMgdm9pZCBhbWRncHVfbW5fcmVhZF9sb2NrKHN0cnVjdCBhbWRncHVfbW4gKnJtbikKPiArc3Rh dGljIGludCBhbWRncHVfbW5fcmVhZF9sb2NrKHN0cnVjdCBhbWRncHVfbW4gKnJtbiwgYm9vbCBi bG9ja2FibGUpCj4gICB7Cj4gLQltdXRleF9sb2NrKCZybW4tPnJlYWRfbG9jayk7Cj4gKwlpZiAo YmxvY2thYmxlKQo+ICsJCW11dGV4X2xvY2soJnJtbi0+cmVhZF9sb2NrKTsKPiArCWVsc2UgaWYg KCFtdXRleF90cnlsb2NrKCZybW4tPnJlYWRfbG9jaykpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4g Kwo+ICAgCWlmIChhdG9taWNfaW5jX3JldHVybigmcm1uLT5yZWN1cnNpb24pID09IDEpCj4gICAJ CWRvd25fcmVhZF9ub25fb3duZXIoJnJtbi0+bG9jayk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZybW4t PnJlYWRfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0x OTcsMTAgKzIwMywxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0 cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwKPiAgICAqIFdlIGJsb2NrIGZvciBhbGwgQk9zIGJl dHdlZW4gc3RhcnQgYW5kIGVuZCB0byBiZSBpZGxlIGFuZAo+ICAgICogdW5tYXAgdGhlbSBieSBt b3ZlIHRoZW0gaW50byBzeXN0ZW0gZG9tYWluIGFnYWluLgo+ICAgICovCj4gLXN0YXRpYyB2b2lk IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKPiArc3RhdGljIGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngo c3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJCQkgc3RydWN0IG1tX3N0cnVjdCAqbW0s Cj4gICAJCQkJCQkgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAtCQkJCQkJIHVuc2lnbmVkIGxvbmcg ZW5kKQo+ICsJCQkJCQkgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSBib29sIGJsb2NrYWJs ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X21uICpybW4gPSBjb250YWluZXJfb2YobW4sIHN0 cnVjdCBhbWRncHVfbW4sIG1uKTsKPiAgIAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsK PiBAQCAtMjA4LDcgKzIxNSwxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9y YW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJLyogbm90aWZpY2F0 aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLwo+ICAgCWVuZCAt PSAxOwo+ICAgCj4gLQlhbWRncHVfbW5fcmVhZF9sb2NrKHJtbik7Cj4gKwkvKiBUT0RPIHdlIHNo b3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCj4gKwkg KiBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlCj4gKwkgKi8KPiArCWlmIChhbWRncHVfbW5fcmVh ZF9sb2NrKHJtbiwgYmxvY2thYmxlKSkKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiAgIAo+ICAgCWl0 ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZybW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOwo+ ICAgCXdoaWxlIChpdCkgewo+IEBAIC0yMTksNiArMjMwLDggQEAgc3RhdGljIHZvaWQgYW1kZ3B1 X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ ICAgCj4gICAJCWFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3RhcnQsIGVuZCk7Cj4g ICAJfQo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICAvKioKPiBAQCAtMjMzLDEwICsy NDYsMTEgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4 KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgICogbmVjZXNzaXRhdGVzIGV2aWN0aW5nIGFs bCB1c2VyLW1vZGUgcXVldWVzIG9mIHRoZSBwcm9jZXNzLiBUaGUgQk9zCj4gICAgKiBhcmUgcmVz dG9ydGVkIGluIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZF9oc2EuCj4gICAgKi8KPiAt c3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0X2hzYShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAkJCQkJCSBzdHJ1Y3QgbW1f c3RydWN0ICptbSwKPiAgIAkJCQkJCSB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJCQkgdW5z aWduZWQgbG9uZyBlbmQpCj4gKwkJCQkJCSB1bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCQkJIGJv b2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBhbWRncHVfbW4gKnJtbiA9IGNvbnRhaW5l cl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOwo+ICAgCXN0cnVjdCBpbnRlcnZhbF90cmVl X25vZGUgKml0Owo+IEBAIC0yNDQsNyArMjU4LDggQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCS8q IG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8K PiAgIAllbmQgLT0gMTsKPiAgIAo+IC0JYW1kZ3B1X21uX3JlYWRfbG9jayhybW4pOwo+ICsJaWYg KGFtZGdwdV9tbl9yZWFkX2xvY2socm1uLCBibG9ja2FibGUpKQo+ICsJCXJldHVybiAtRUFHQUlO Owo+ICAgCj4gICAJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJnJtbi0+b2JqZWN0cywg c3RhcnQsIGVuZCk7Cj4gICAJd2hpbGUgKGl0KSB7Cj4gQEAgLTI2Miw2ICsyNzcsOCBAQCBzdGF0 aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1tdV9u b3RpZmllciAqbW4sCj4gICAJCQkJYW1kZ3B1X2FtZGtmZF9ldmljdF91c2VycHRyKG1lbSwgbW0p Owo+ICAgCQl9Cj4gICAJfQo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICAvKioKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCj4gaW5kZXggODU0YmQ1MWI5NDc4 Li41Mjg1ZGY5MzMxZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdXNlcnB0ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0 ci5jCj4gQEAgLTExMiwxMCArMTEyLDExIEBAIHN0YXRpYyB2b2lkIGRlbF9vYmplY3Qoc3RydWN0 IGk5MTVfbW11X29iamVjdCAqbW8pCj4gICAJbW8tPmF0dGFjaGVkID0gZmFsc2U7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiArc3RhdGljIGludCBpOTE1X2dlbV91c2Vy cHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ ICAgCQkJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCQkJICAgICAgIHVu c2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiAr CQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgICAgICAgYm9vbCBibG9j a2FibGUpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9Cj4gICAJCWNv bnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+IEBAIC0xMjQs NyArMTI1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiAgIAlMSVNUX0hFQUQoY2FuY2Vs bGVkKTsKPiAgIAo+ICAgCWlmIChSQl9FTVBUWV9ST09UKCZtbi0+b2JqZWN0cy5yYl9yb290KSkK PiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIDA7Cj4gICAKPiAgIAkvKiBpbnRlcnZhbCByYW5nZXMg YXJlIGluY2x1c2l2ZSwgYnV0IGludmFsaWRhdGUgcmFuZ2UgaXMgZXhjbHVzaXZlICovCj4gICAJ ZW5kLS07Cj4gQEAgLTE1Miw3ICsxNTMsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV91c2VycHRy X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ICAg CQlkZWxfb2JqZWN0KG1vKTsKPiAgIAlzcGluX3VubG9jaygmbW4tPmxvY2spOwo+ICAgCj4gLQlp ZiAoIWxpc3RfZW1wdHkoJmNhbmNlbGxlZCkpCj4gKwkvKiBUT0RPOiBjYW4gd2Ugc2tpcCB3YWl0 aW5nIGhlcmU/ICovCj4gKwlpZiAoIWxpc3RfZW1wdHkoJmNhbmNlbGxlZCkgJiYgYmxvY2thYmxl KQo+ICAgCQlmbHVzaF93b3JrcXVldWUobW4tPndxKTsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fbW4uYwo+IGluZGV4IGFiZDI0OTc1YzliMS4uYjQ3ZTgyOGI3MjVkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCj4gQEAgLTExOCwxMCArMTE4LDExIEBAIHN0 YXRpYyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAg ICogV2UgYmxvY2sgZm9yIGFsbCBCT3MgYmV0d2VlbiBzdGFydCBhbmQgZW5kIHRvIGJlIGlkbGUg YW5kCj4gICAgKiB1bm1hcCB0aGVtIGJ5IG1vdmUgdGhlbSBpbnRvIHN5c3RlbSBkb21haW4gYWdh aW4uCj4gICAgKi8KPiAtc3RhdGljIHZvaWQgcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgcmFkZW9uX21uX2ludmFs aWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJCSAgICAg c3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwK PiAtCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJCSAgICAgdW5zaWduZWQgbG9u ZyBlbmQsCj4gKwkJCQkJICAgICBib29sIGJsb2NrYWJsZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgcmFk ZW9uX21uICpybW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCByYWRlb25fbW4sIG1uKTsKPiAg IAlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwgZmFsc2UgfTsKPiBAQCAt MTMwLDcgKzEzMSwxMyBAQCBzdGF0aWMgdm9pZCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9z dGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAkvKiBub3RpZmljYXRpb24gaXMgZXhj bHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVzaXZlICovCj4gICAJZW5kIC09IDE7Cj4gICAK PiAtCW11dGV4X2xvY2soJnJtbi0+bG9jayk7Cj4gKwkvKiBUT0RPIHdlIHNob3VsZCBiZSBhYmxl IHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCj4gKwkgKiB0aGUgdGVhciBk b3duLgo+ICsJICovCj4gKwlpZiAoYmxvY2thYmxlKQo+ICsJCW11dGV4X2xvY2soJnJtbi0+bG9j ayk7Cj4gKwllbHNlIGlmICghbXV0ZXhfdHJ5bG9jaygmcm1uLT5sb2NrKSkKPiArCQlyZXR1cm4g LUVBR0FJTjsKPiAgIAo+ICAgCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZybW4tPm9i amVjdHMsIHN0YXJ0LCBlbmQpOwo+ICAgCXdoaWxlIChpdCkgewo+IEBAIC0xNjcsNiArMTc0LDgg QEAgc3RhdGljIHZvaWQgcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sCj4gICAJfQo+ICAgCQo+ICAgCW11dGV4X3VubG9jaygmcm1uLT5sb2Nr KTsKPiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBt bXVfbm90aWZpZXJfb3BzIHJhZGVvbl9tbl9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVt X29kcC5jCj4gaW5kZXggMTgyNDM2YjkyYmE5Li5mNjVmNmEyOWRhYWUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYwo+ICsrKyBiL2RyaXZlcnMvaW5maW5p YmFuZC9jb3JlL3VtZW1fb2RwLmMKPiBAQCAtMjA3LDIyICsyMDcsMjkgQEAgc3RhdGljIGludCBp bnZhbGlkYXRlX3JhbmdlX3N0YXJ0X3RyYW1wb2xpbmUoc3RydWN0IGliX3VtZW0gKml0ZW0sIHU2 NCBzdGFydCwKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpYl91bWVt X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4s Cj4gK3N0YXRpYyBpbnQgaWJfdW1lbV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0 cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCQkJCQkJICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LAo+ICAgCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJCSAgICB1bnNpZ25l ZCBsb25nIGVuZCkKPiArCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgICAg Ym9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IGliX3Vjb250ZXh0ICpjb250ZXh0ID0g Y29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgaWJfdWNvbnRleHQsIG1uKTsKPiAgIAo+ICAgCWlmICgh Y29udGV4dC0+aW52YWxpZGF0ZV9yYW5nZSkKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJaWYgKGJsb2NrYWJsZSkKPiArCQlkb3duX3JlYWQoJmNvbnRleHQtPnVtZW1fcndzZW0p Owo+ICsJZWxzZSBpZiAoIWRvd25fcmVhZF90cnlsb2NrKCZjb250ZXh0LT51bWVtX3J3c2VtKSkK PiArCQlyZXR1cm4gLUVBR0FJTjsKPiAgIAo+ICAgCWliX3Vjb250ZXh0X25vdGlmaWVyX3N0YXJ0 X2FjY291bnQoY29udGV4dCk7Cj4gLQlkb3duX3JlYWQoJmNvbnRleHQtPnVtZW1fcndzZW0pOwo+ ICAgCXJidF9pYl91bWVtX2Zvcl9lYWNoX2luX3JhbmdlKCZjb250ZXh0LT51bWVtX3RyZWUsIHN0 YXJ0LAo+ICAgCQkJCSAgICAgIGVuZCwKPiAgIAkJCQkgICAgICBpbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0X3RyYW1wb2xpbmUsIE5VTEwpOwo+ICAgCXVwX3JlYWQoJmNvbnRleHQtPnVtZW1fcndzZW0p Owo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGludmFsaWRhdGVf cmFuZ2VfZW5kX3RyYW1wb2xpbmUoc3RydWN0IGliX3VtZW0gKml0ZW0sIHU2NCBzdGFydCwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvbW11X3JiLmMgYi9kcml2ZXJz L2luZmluaWJhbmQvaHcvaGZpMS9tbXVfcmIuYwo+IGluZGV4IDcwYWNlZWZlMTRkNS4uODc4MDU2 MGQxNjIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5j Cj4gKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvbW11X3JiLmMKPiBAQCAtMjg0LDEw ICsyODQsMTEgQEAgdm9pZCBoZmkxX21tdV9yYl9yZW1vdmUoc3RydWN0IG1tdV9yYl9oYW5kbGVy ICpoYW5kbGVyLAo+ICAgCWhhbmRsZXItPm9wcy0+cmVtb3ZlKGhhbmRsZXItPm9wc19hcmcsIG5v ZGUpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9zdGFydChz dHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3RhdGljIGludCBtbXVfbm90aWZpZXJfcmFuZ2Vf c3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJICAgICBzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKPiAgIAkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkgICAgIHVu c2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCSAg ICAgYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IG1tdV9yYl9oYW5kbGVyICpoYW5k bGVyID0KPiAgIAkJY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgbW11X3JiX2hhbmRsZXIsIG1uKTsK PiBAQCAtMzEzLDYgKzMxNCw4IEBAIHN0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9yYW5nZV9zdGFy dChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAo+ICAgCWlmIChhZGRlZCkKPiAgIAkJcXVl dWVfd29yayhoYW5kbGVyLT53cSwgJmhhbmRsZXItPmRlbF93b3JrKTsKPiArCj4gKwlyZXR1cm4g MDsKPiAgIH0KPiAgIAo+ICAgLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL21pYy9zY2lm L3NjaWZfZG1hLmMgYi9kcml2ZXJzL21pc2MvbWljL3NjaWYvc2NpZl9kbWEuYwo+IGluZGV4IDYz ZDYyNDZkNmRmZi4uZDk0MDU2OGJlZDg3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy9taWMv c2NpZi9zY2lmX2RtYS5jCj4gKysrIGIvZHJpdmVycy9taXNjL21pYy9zY2lmL3NjaWZfZG1hLmMK PiBAQCAtMjAwLDE1ICsyMDAsMTggQEAgc3RhdGljIHZvaWQgc2NpZl9tbXVfbm90aWZpZXJfcmVs ZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAlzY2hlZHVsZV93b3JrKCZzY2lmX2lu Zm8ubWlzY193b3JrKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBzY2lmX21tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0 aWMgaW50IHNjaWZfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sCj4gICAJCQkJCQkgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAg CQkJCQkJICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJCQkgICAgIHVuc2lnbmVkIGxv bmcgZW5kKQo+ICsJCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgICAgIGJv b2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBzY2lmX21tdV9ub3RpZgkqbW1uOwo+ICAg Cj4gICAJbW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qgc2NpZl9tbXVfbm90aWYsIGVwX21t dV9ub3RpZmllcik7Cj4gICAJc2NpZl9ybWFfZGVzdHJveV90Y3cobW1uLCBzdGFydCwgZW5kIC0g c3RhcnQpOwo+ICsKPiArCXJldHVybiAwCj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIHNjaWZf bW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1u LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jIGIvZHJp dmVycy9taXNjL3NnaS1ncnUvZ3J1dGxicHVyZ2UuYwo+IGluZGV4IGEzNDU0ZWI1NmZiZi4uYmUy OGYwNWJmYWZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydXRsYnB1cmdl LmMKPiArKysgYi9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jCj4gQEAgLTIxOSw5 ICsyMTksMTAgQEAgdm9pZCBncnVfZmx1c2hfYWxsX3RsYihzdHJ1Y3QgZ3J1X3N0YXRlICpncnUp Cj4gICAvKgo+ICAgICogTU1VT1BTIG5vdGlmaWVyIGNhbGxvdXQgZnVuY3Rpb25zCj4gICAgKi8K PiAtc3RhdGljIHZvaWQgZ3J1X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3Rp ZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgZ3J1X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0 IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ IC0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJ ICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBncnVfbW1fc3RydWN0ICpn bXMgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBncnVfbW1fc3RydWN0LAo+ICAgCQkJCQkJIG1z X25vdGlmaWVyKTsKPiBAQCAtMjMxLDYgKzIzMiw4IEBAIHN0YXRpYyB2b2lkIGdydV9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCWdydV9kYmcoZ3J1 ZGV2LCAiZ21zICVwLCBzdGFydCAweCVseCwgZW5kIDB4JWx4LCBhY3QgJWRcbiIsIGdtcywKPiAg IAkJc3RhcnQsIGVuZCwgYXRvbWljX3JlYWQoJmdtcy0+bXNfcmFuZ2VfYWN0aXZlKSk7Cj4gICAJ Z3J1X2ZsdXNoX3RsYl9yYW5nZShnbXMsIHN0YXJ0LCBlbmQgLSBzdGFydCk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGdydV9pbnZhbGlkYXRlX3JhbmdlX2Vu ZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZ250 ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwo+IGluZGV4IGJkNTY2NTNiOWJiYy4uNTA3MjRk MDlmZTVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5jCj4gKysrIGIvZHJpdmVy cy94ZW4vZ250ZGV2LmMKPiBAQCAtNDY1LDE0ICs0NjUsMjAgQEAgc3RhdGljIHZvaWQgdW5tYXBf aWZfaW5fcmFuZ2Uoc3RydWN0IGdyYW50X21hcCAqbWFwLAo+ICAgCVdBUk5fT04oZXJyKTsKPiAg IH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBtbl9pbnZsX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90 aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IG1uX2ludmxfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9u b3RpZmllciAqbW4sCj4gICAJCQkJc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gLQkJCQl1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCXVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJ c3RydWN0IGdudGRldl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgZ250ZGV2 X3ByaXYsIG1uKTsKPiAgIAlzdHJ1Y3QgZ3JhbnRfbWFwICptYXA7Cj4gICAKPiAtCW11dGV4X2xv Y2soJnByaXYtPmxvY2spOwo+ICsJLyogVE9ETyBkbyB3ZSByZWFsbHkgbmVlZCBhIG11dGV4IGhl cmU/ICovCj4gKwlpZiAoYmxvY2thYmxlKQo+ICsJCW11dGV4X2xvY2soJnByaXYtPmxvY2spOwo+ ICsJZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnByaXYtPmxvY2spKQo+ICsJCXJldHVybiAtRUFH QUlOOwo+ICsKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQp IHsKPiAgIAkJdW5tYXBfaWZfaW5fcmFuZ2UobWFwLCBzdGFydCwgZW5kKTsKPiAgIAl9Cj4gQEAg LTQ4MCw2ICs0ODYsOCBAQCBzdGF0aWMgdm9pZCBtbl9pbnZsX3JhbmdlX3N0YXJ0KHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAo+ICAgCQl1bm1hcF9pZl9pbl9yYW5nZShtYXAsIHN0YXJ0LCBlbmQp Owo+ICAgCX0KPiAgIAltdXRleF91bmxvY2soJnByaXYtPmxvY2spOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90 aWZpZXIgKm1uLAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNs dWRlL2xpbnV4L2t2bV9ob3N0LmgKPiBpbmRleCA0ZWU3YmM1NDhhODMuLmU0MTgxMDYzZTc1NSAx MDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKPiArKysgYi9pbmNsdWRlL2xp bnV4L2t2bV9ob3N0LmgKPiBAQCAtMTI3NSw3ICsxMjc1LDcgQEAgc3RhdGljIGlubGluZSBsb25n IGt2bV9hcmNoX3ZjcHVfYXN5bmNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsCj4gICB9Cj4gICAj ZW5kaWYgLyogQ09ORklHX0hBVkVfS1ZNX1ZDUFVfQVNZTkNfSU9DVEwgKi8KPiAgIAo+IC12b2lk IGt2bV9hcmNoX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwK PiAraW50IGt2bV9hcmNoX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBrdm0g Kmt2bSwKPiAgIAkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwo+ICAg Cj4gICAjaWZkZWYgQ09ORklHX0hBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0UKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbW11X25v dGlmaWVyLmgKPiBpbmRleCAzOTJlNmFmODI3MDEuLjM2OTg2NzUwMWJlZCAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmllci5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9tbXVf bm90aWZpZXIuaAo+IEBAIC0yMzAsNyArMjMwLDggQEAgZXh0ZXJuIGludCBfX21tdV9ub3RpZmll cl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgZXh0ZXJuIHZvaWQgX19tbXVf bm90aWZpZXJfY2hhbmdlX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgIAkJCQkgICAgICB1 bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90IHB0ZSk7Cj4gICBleHRlcm4gdm9pZCBfX21tdV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+IC0J CQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7Cj4gKwkJCQkgIHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJICBib29sIGJsb2Nr YWJsZSk7Cj4gICBleHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2Vu ZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgIAkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgZW5kLAo+ICAgCQkJCSAgYm9vbCBvbmx5X2VuZCk7Cj4gQEAgLTI4MSw3ICsy ODIsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFy dCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gICB7Cj4gICAJaWYgKG1tX2hhc19ub3RpZmllcnMobW0p KQo+IC0JCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0LCBl bmQpOwo+ICsJCV9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0 LCBlbmQsIHRydWUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBtbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydF9ub25ibG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAr CQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gK3sKPiArCWlu dCByZXQgPSAwOwo+ICsJaWYgKG1tX2hhc19ub3RpZmllcnMobW0pKQo+ICsJCXJldCA9IF9fbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0LCBlbmQsIGZhbHNlKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+IGRp ZmYgLS1naXQgYS9tbS9obW0uYyBiL21tL2htbS5jCj4gaW5kZXggZGU3YjZiZjc3MjAxLi44MWZk NTdiZDI2MzQgMTAwNjQ0Cj4gLS0tIGEvbW0vaG1tLmMKPiArKysgYi9tbS9obW0uYwo+IEBAIC0x NzcsMTYgKzE3NywxOSBAQCBzdGF0aWMgdm9pZCBobW1fcmVsZWFzZShzdHJ1Y3QgbW11X25vdGlm aWVyICptbiwgc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gICAJdXBfd3JpdGUoJmhtbS0+bWlycm9y c19zZW0pOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGhtbV9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IGhtbV9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCQkJCSAgICAgICBzdHJ1 Y3QgbW1fc3RydWN0ICptbSwKPiAgIAkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAt CQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCSAgICAgICB1bnNpZ25lZCBsb25n IGVuZCwKPiArCQkJCSAgICAgICBib29sIGJsb2NrYWJsZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaG1t ICpobW0gPSBtbS0+aG1tOwo+ICAgCj4gICAJVk1fQlVHX09OKCFobW0pOwo+ICAgCj4gICAJYXRv bWljX2luYygmaG1tLT5zZXF1ZW5jZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyB2b2lkIGhtbV9pbnZhbGlkYXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKPiBkaWZmIC0tZ2l0IGEvbW0vbW11X25vdGlmaWVyLmMgYi9tbS9tbXVfbm90aWZpZXIu Ywo+IGluZGV4IGVmZjZiODhhOTkzZi4uMzBjYzQzMTIxZGE5IDEwMDY0NAo+IC0tLSBhL21tL21t dV9ub3RpZmllci5jCj4gKysrIGIvbW0vbW11X25vdGlmaWVyLmMKPiBAQCAtMTc0LDE4ICsxNzQs MjUgQEAgdm9pZCBfX21tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gICAJc3JjdV9yZWFkX3VubG9jaygmc3JjdSwgaWQp Owo+ICAgfQo+ICAgCj4gLXZvaWQgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFy dChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAtCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z aWduZWQgbG9uZyBlbmQpCj4gK2ludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICsJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1 bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCSAgYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3Ry dWN0IG1tdV9ub3RpZmllciAqbW47Cj4gKwlpbnQgcmV0ID0gMDsKPiAgIAlpbnQgaWQ7Cj4gICAK PiAgIAlpZCA9IHNyY3VfcmVhZF9sb2NrKCZzcmN1KTsKPiAgIAlobGlzdF9mb3JfZWFjaF9lbnRy eV9yY3UobW4sICZtbS0+bW11X25vdGlmaWVyX21tLT5saXN0LCBobGlzdCkgewo+IC0JCWlmICht bi0+b3BzLT5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KQo+IC0JCQltbi0+b3BzLT5pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KG1uLCBtbSwgc3RhcnQsIGVuZCk7Cj4gKwkJaWYgKG1uLT5vcHMtPmludmFs aWRhdGVfcmFuZ2Vfc3RhcnQpIHsKPiArCQkJaW50IF9yZXQgPSBtbi0+b3BzLT5pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KG1uLCBtbSwgc3RhcnQsIGVuZCwgYmxvY2thYmxlKTsKPiArCQkJaWYgKF9y ZXQpCj4gKwkJCQlyZXQgPSBfcmV0Owo+ICsJCX0KPiAgIAl9Cj4gICAJc3JjdV9yZWFkX3VubG9j aygmc3JjdSwgaWQpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICBFWFBPUlRfU1lNQk9M X0dQTChfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KTsKPiAgIAo+IGRpZmYg LS1naXQgYS9tbS9vb21fa2lsbC5jIGIvbW0vb29tX2tpbGwuYwo+IGluZGV4IDg0MDgxZTc3YmM1 MS4uN2UwYzZlNzhhZTVjIDEwMDY0NAo+IC0tLSBhL21tL29vbV9raWxsLmMKPiArKysgYi9tbS9v b21fa2lsbC5jCj4gQEAgLTQ3OSw5ICs0NzksMTAgQEAgc3RhdGljIERFQ0xBUkVfV0FJVF9RVUVV RV9IRUFEKG9vbV9yZWFwZXJfd2FpdCk7Cj4gICBzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpv b21fcmVhcGVyX2xpc3Q7Cj4gICBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG9vbV9yZWFwZXJfbG9j ayk7Cj4gICAKPiAtdm9pZCBfX29vbV9yZWFwX3Rhc2tfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0p Cj4gK2Jvb2wgX19vb21fcmVhcF90YXNrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICAgewo+ ICAgCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwo+ICsJYm9vbCByZXQgPSB0cnVlOwo+ICAg Cj4gICAJLyoKPiAgIAkgKiBUZWxsIGFsbCB1c2VycyBvZiBnZXRfdXNlci9jb3B5X2Zyb21fdXNl ciBldGMuLi4gdGhhdCB0aGUgY29udGVudAo+IEBAIC01MTEsMTIgKzUxMiwxNyBAQCB2b2lkIF9f b29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgIAkJCXN0cnVjdCBtbXVf Z2F0aGVyIHRsYjsKPiAgIAo+ICAgCQkJdGxiX2dhdGhlcl9tbXUoJnRsYiwgbW0sIHN0YXJ0LCBl bmQpOwo+IC0JCQltbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgc3RhcnQs IGVuZCk7Cj4gKwkJCWlmIChtbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydF9ub25i bG9jayhtbSwgc3RhcnQsIGVuZCkpIHsKPiArCQkJCXJldCA9IGZhbHNlOwo+ICsJCQkJY29udGlu dWU7Cj4gKwkJCX0KPiAgIAkJCXVubWFwX3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCBzdGFydCwgZW5k LCBOVUxMKTsKPiAgIAkJCW1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZChtbSwgc3Rh cnQsIGVuZCk7Cj4gICAJCQl0bGJfZmluaXNoX21tdSgmdGxiLCBzdGFydCwgZW5kKTsKPiAgIAkJ fQo+ICAgCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgYm9vbCBv b21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0 ICptbSkKPiBAQCAtNTQ1LDE4ICs1NTEsNiBAQCBzdGF0aWMgYm9vbCBvb21fcmVhcF90YXNrX21t KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgIAkJZ290 byB1bmxvY2tfb29tOwo+ICAgCX0KPiAgIAo+IC0JLyoKPiAtCSAqIElmIHRoZSBtbSBoYXMgaW52 YWxpZGF0ZV97c3RhcnQsZW5kfSgpIG5vdGlmaWVycyB0aGF0IGNvdWxkIGJsb2NrLAo+IC0JICog c2xlZXAgdG8gZ2l2ZSB0aGUgb29tIHZpY3RpbSBzb21lIG1vcmUgdGltZS4KPiAtCSAqIFRPRE86 IHdlIHJlYWxseSB3YW50IHRvIGdldCByaWQgb2YgdGhpcyB1Z2x5IGhhY2sgYW5kIG1ha2Ugc3Vy ZSB0aGF0Cj4gLQkgKiBub3RpZmllcnMgY2Fubm90IGJsb2NrIGZvciB1bmJvdW5kZWQgYW1vdW50 IG9mIHRpbWUKPiAtCSAqLwo+IC0JaWYgKG1tX2hhc19ibG9ja2FibGVfaW52YWxpZGF0ZV9ub3Rp ZmllcnMobW0pKSB7Cj4gLQkJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKPiAtCQlzY2hlZHVsZV90 aW1lb3V0X2lkbGUoSFopOwo+IC0JCWdvdG8gdW5sb2NrX29vbTsKPiAtCX0KPiAtCj4gICAJLyoK PiAgIAkgKiBNTUZfT09NX1NLSVAgaXMgc2V0IGJ5IGV4aXRfbW1hcCB3aGVuIHRoZSBPT00gcmVh cGVyIGNhbid0Cj4gICAJICogd29yayBvbiB0aGUgbW0gYW55bW9yZS4gVGhlIGNoZWNrIGZvciBN TUZfT09NX1NLSVAgbXVzdCBydW4KPiBAQCAtNTcxLDcgKzU2NSwxMiBAQCBzdGF0aWMgYm9vbCBv b21fcmVhcF90YXNrX21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0 ICptbSkKPiAgIAo+ICAgCXRyYWNlX3N0YXJ0X3Rhc2tfcmVhcGluZyh0c2stPnBpZCk7Cj4gICAK PiAtCV9fb29tX3JlYXBfdGFza19tbShtbSk7Cj4gKwkvKiBmYWlsZWQgdG8gcmVhcCBwYXJ0IG9m IHRoZSBhZGRyZXNzIHNwYWNlLiBUcnkgYWdhaW4gbGF0ZXIgKi8KPiArCWlmICghX19vb21fcmVh cF90YXNrX21tKG1tKSkgewo+ICsJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7Cj4gKwkJcmV0ID0g ZmFsc2U7Cj4gKwkJZ290byBvdXRfdW5sb2NrOwo+ICsJfQo+ICAgCj4gICAJcHJfaW5mbygib29t X3JlYXBlcjogcmVhcGVkIHByb2Nlc3MgJWQgKCVzKSwgbm93IGFub24tcnNzOiVsdWtCLCBmaWxl LXJzczolbHVrQiwgc2htZW0tcnNzOiVsdWtCXG4iLAo+ICAgCQkJdGFza19waWRfbnIodHNrKSwg dHNrLT5jb21tLAo+IGRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0v a3ZtX21haW4uYwo+IGluZGV4IGFkYTIxZjQ3ZjIyYi4uNmY3ZTcwOWQyOTQ0IDEwMDY0NAo+IC0t LSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKPiArKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCj4gQEAg LTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBrdm1fdWV2ZW50X25vdGlmeV9jaGFuZ2UodW5z aWduZWQgaW50IHR5cGUsIHN0cnVjdCBrdm0gKmt2bSk7Cj4gICBzdGF0aWMgdW5zaWduZWQgbG9u ZyBsb25nIGt2bV9jcmVhdGV2bV9jb3VudDsKPiAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcg a3ZtX2FjdGl2ZV92bXM7Cj4gICAKPiAtX193ZWFrIHZvaWQga3ZtX2FyY2hfbW11X25vdGlmaWVy X2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLAo+ICtfX3dlYWsgaW50IGt2bV9hcmNo X21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwKPiAgIAkJdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gICB7Cj4gICB9Cj4gQEAgLTM1 NCwxMyArMzU0LDE1IEBAIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfY2hhbmdlX3B0ZShz dHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3Us IGlkeCk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICtzdGF0aWMgaW50IGt2 bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVy ICptbiwKPiAgIAkJCQkJCSAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAgIAkJCQkJCSAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJCQkgICAgdW5zaWduZWQgbG9uZyBlbmQpCj4gKwkJ CQkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiArCQkJCQkJICAgIGJvb2wgYmxvY2thYmxlKQo+ ICAgewo+ICAgCXN0cnVjdCBrdm0gKmt2bSA9IG1tdV9ub3RpZmllcl90b19rdm0obW4pOwo+ICAg CWludCBuZWVkX3RsYl9mbHVzaCA9IDAsIGlkeDsKPiArCWludCByZXQ7Cj4gICAKPiAgIAlpZHgg PSBzcmN1X3JlYWRfbG9jaygma3ZtLT5zcmN1KTsKPiAgIAlzcGluX2xvY2soJmt2bS0+bW11X2xv Y2spOwo+IEBAIC0zNzgsOSArMzgwLDExIEBAIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAo+ICAg CXNwaW5fdW5sb2NrKCZrdm0tPm1tdV9sb2NrKTsKPiAgIAo+IC0Ja3ZtX2FyY2hfbW11X25vdGlm aWVyX2ludmFsaWRhdGVfcmFuZ2Uoa3ZtLCBzdGFydCwgZW5kKTsKPiArCXJldCA9IGt2bV9hcmNo X21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKGt2bSwgc3RhcnQsIGVuZCwgYmxvY2thYmxl KTsKPiAgIAo+ICAgCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX2lu dmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=