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: Mon, 2 Jul 2018 11:14:58 +0200 Message-ID: <71f4184c-21ea-5af1-eeb6-bf7787614e2d__35346.6828274124$1530522863$gmane$org@amd.com> References: <20180622150242.16558-1-mhocko@kernel.org> <20180627074421.GF32348@dhcp22.suse.cz> 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 1fZuvX-0002Yb-UL for xen-devel@lists.xenproject.org; Mon, 02 Jul 2018 09:15:20 +0000 In-Reply-To: <20180627074421.GF32348@dhcp22.suse.cz> 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: 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 , Dennis List-Id: xen-devel@lists.xenproject.org QW0gMjcuMDYuMjAxOCB1bSAwOTo0NCBzY2hyaWViIE1pY2hhbCBIb2NrbzoKPiBUaGlzIGlzIHRo ZSB2MiBvZiBSRkMgYmFzZWQgb24gdGhlIGZlZWRiYWNrIEkndmUgcmVjZWl2ZWQgc28gZmFyLiBU aGUKPiBjb2RlIGV2ZW4gY29tcGlsZXMgYXMgYSBib251cyA7KSBJIGhhdmVuJ3QgcnVudGltZSB0 ZXN0ZWQgaXQgeWV0LCBtb3N0bHkKPiBiZWNhdXNlIEkgaGF2ZSBubyBpZGVhIGhvdy4KPgo+IEFu eSBmdXJ0aGVyIGZlZWRiYWNrIGlzIGhpZ2hseSBhcHByZWNpYXRlZCBvZiBjb3Vyc2UuCgpUaGF0 IHNvdW5kcyBsaWtlIGl0IHNob3VsZCB3b3JrIGFuZCBhdCBsZWFzdCB0aGUgYW1kZ3B1IGNoYW5n ZXMgbm93IGxvb2sgCmdvb2QgdG8gbWUgb24gZmlyc3QgZ2xhbmNlLgoKQ2FuIHlvdSBzcGxpdCB0 aGF0IHVwIGZ1cnRoZXIgaW4gdGhlIHVzdWFsIHdheT8gRS5nLiBhZGRpbmcgdGhlIApibG9ja2Fi bGUgZmxhZyBpbiBvbmUgcGF0Y2ggYW5kIGZpeGluZyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHRo ZSBNTVUgCm5vdGlmaWVyIGluIGZvbGxvdyB1cCBwYXRjaGVzLgoKVGhpcyB3YXkgSSdtIHByZXR0 eSBzdXJlIEZlbGl4IGFuZCBJIGNhbiBnaXZlIGFuIHJiIG9uIHRoZSBhbWRncHUvYW1ka2ZkIApj aGFuZ2VzLgoKVGhhbmtzLApDaHJpc3RpYW4uCgo+IC0tLQo+ICBGcm9tIGVjOWE3MjQxYmY0MjJi OTA4NTMyYzRjMzM5NTNiMGRhMjY1NWFkMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gRnJv bTogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+Cj4gRGF0ZTogV2VkLCAyMCBKdW4gMjAx OCAxNTowMzoyMCArMDIwMAo+IFN1YmplY3Q6IFtQQVRDSF0gbW0sIG9vbTogZGlzdGluZ3Vpc2gg YmxvY2thYmxlIG1vZGUgZm9yIG1tdSBub3RpZmllcnMKPiBNSU1FLVZlcnNpb246IDEuMAo+IENv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAo+IENvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKPgo+IFRoZXJlIGFyZSBzZXZlcmFsIGJsb2NrYWJsZSBtbXUgbm90aWZp ZXJzIHdoaWNoIG1pZ2h0IHNsZWVwIGluCj4gbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQgYW5kIHRoYXQgaXMgYSBwcm9ibGVtIGZvciB0aGUKPiBvb21fcmVhcGVyIGJlY2F1c2Ug aXQgbmVlZHMgdG8gZ3VhcmFudGVlIGEgZm9yd2FyZCBwcm9ncmVzcyBzbyBpdCBjYW5ub3QKPiBk ZXBlbmQgb24gYW55IHNsZWVwYWJsZSBsb2Nrcy4KPgo+IEN1cnJlbnRseSB3ZSBzaW1wbHkgYmFj ayBvZmYgYW5kIG1hcmsgYW4gb29tIHZpY3RpbSB3aXRoIGJsb2NrYWJsZSBtbXUKPiBub3RpZmll cnMgYXMgZG9uZSBhZnRlciBhIHNob3J0IHNsZWVwLiBUaGF0IGNhbiByZXN1bHQgaW4gc2VsZWN0 aW5nIGEKPiBuZXcgb29tIHZpY3RpbSBwcmVtYXR1cmVseSBiZWNhdXNlIHRoZSBwcmV2aW91cyBv bmUgc3RpbGwgaGFzbid0IHRvcm4KPiBpdHMgbWVtb3J5IGRvd24geWV0Lgo+Cj4gV2UgY2FuIGRv IG11Y2ggYmV0dGVyIHRob3VnaC4gRXZlbiBpZiBtbXUgbm90aWZpZXJzIHVzZSBzbGVlcGFibGUg bG9ja3MKPiB0aGVyZSBpcyBubyByZWFzb24gdG8gYXV0b21hdGljYWxseSBhc3N1bWUgdGhvc2Ug bG9ja3MgYXJlIGhlbGQuCj4gTW9yZW92ZXIgbWFqb3JpdHkgb2Ygbm90aWZpZXJzIG9ubHkgY2Fy ZSBhYm91dCBhIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MKPiBzcGFjZSBhbmQgdGhlcmUgaXMgYWJz b2x1dGVseSB6ZXJvIHJlYXNvbiB0byBmYWlsIHdoZW4gd2UgYXJlIHVubWFwcGluZyBhbgo+IHVu cmVsYXRlZCByYW5nZS4gTWFueSBub3RpZmllcnMgZG8gcmVhbGx5IGJsb2NrIGFuZCB3YWl0IGZv ciBIVyB3aGljaCBpcwo+IGhhcmRlciB0byBoYW5kbGUgYW5kIHdlIGhhdmUgdG8gYmFpbCBvdXQg dGhvdWdoLgo+Cj4gVGhpcyBwYXRjaCBoYW5kbGVzIHRoZSBsb3cgaGFuZ2luZyBmcnVpZC4gX19t bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydAo+IGdldHMgYSBibG9ja2FibGUgZmxh ZyBhbmQgY2FsbGJhY2tzIGFyZSBub3QgYWxsb3dlZCB0byBzbGVlcCBpZiB0aGUKPiBmbGFnIGlz IHNldCB0byBmYWxzZS4gVGhpcyBpcyBhY2hpZXZlZCBieSB1c2luZyB0cnlsb2NrIGluc3RlYWQg b2YgdGhlCj4gc2xlZXBhYmxlIGxvY2sgZm9yIG1vc3QgY2FsbGJhY2tzIGFuZCBjb250aW51ZSBh cyBsb25nIGFzIHdlIGRvIG5vdAo+IGJsb2NrIGRvd24gdGhlIGNhbGwgY2hhaW4uCj4KPiBJIHRo aW5rIHdlIGNhbiBpbXByb3ZlIHRoYXQgZXZlbiBmdXJ0aGVyIGJlY2F1c2UgdGhlcmUgaXMgYSBj b21tb24KPiBwYXR0ZXJuIHRvIGRvIGEgcmFuZ2UgbG9va3VwIGZpcnN0IGFuZCB0aGVuIGRvIHNv bWV0aGluZyBhYm91dCB0aGF0Lgo+IFRoZSBmaXJzdCBwYXJ0IGNhbiBiZSBkb25lIHdpdGhvdXQg YSBzbGVlcGluZyBsb2NrIGluIG1vc3QgY2FzZXMgQUZBSUNTLgo+Cj4gVGhlIG9vbV9yZWFwZXIg ZW5kIHRoZW4gc2ltcGx5IHJldHJpZXMgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vdGlmaWVy Cj4gd2hpY2ggY291bGRuJ3QgbWFrZSBhbnkgcHJvZ3Jlc3MgaW4gIWJsb2NrYWJsZSBtb2RlLiBB IHJldHJ5IGxvb3AgaXMKPiBhbHJlYWR5IGltcGxlbWVudGVkIHRvIHdhaXQgZm9yIHRoZSBtbWFw X3NlbSBhbmQgdGhpcyBpcyBiYXNpY2FsbHkgdGhlCj4gc2FtZSB0aGluZy4KPgo+IENoYW5nZXMg c2luY2UgcmZjIHYxCj4gLSBncHUgbm90aWZpZXJzIGNhbiBzbGVlcCB3aGlsZSB3YWl0aW5nIGZv ciBIVyAoZXZpY3RfcHJvY2Vzc19xdWV1ZXNfY3BzY2gKPiAgICBvbiBhIGxvY2sgYW5kIGFtZGdw dV9tbl9pbnZhbGlkYXRlX25vZGUgb24gdW5ib3VuZCB0aW1lb3V0KSBtYWtlIHN1cmUKPiAgICB3 ZSBiYWlsIG91dCB3aGVuIHdlIGhhdmUgYW4gaW50ZXJzZWN0aW5nIHJhbmdlIGZvciBzdGFydGVy Cj4gLSBub3RlIHRoYXQgYSBub3RpZmllciBmYWlsZWQgdG8gdGhlIGxvZyBmb3IgZWFzaWVyIGRl YnVnZ2luZwo+IC0gYmFjayBvZmYgZWFybHkgaW4gaWJfdW1lbV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0IGlmIHRoZQo+ICAgIGNhbGxiYWNrIGlzIGNhbGxlZAo+IC0gbW5faW52bF9y YW5nZV9zdGFydCB3YWl0cyBmb3IgY29tcGxldGlvbiBkb3duIHRoZSB1bm1hcF9ncmFudF9wYWdl cwo+ICAgIHBhdGggc28gd2UgaGF2ZSB0byBiYWNrIG9mZiBlYXJseSBvbiBvdmVybGFwcGluZyBy YW5nZXMKPgo+IENjOiAiRGF2aWQgKENodW5NaW5nKSBaaG91IiA8RGF2aWQxLlpob3VAYW1kLmNv bT4KPiBDYzogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KPiBDYzogIlJhZGlt IEtyxI1tw6HFmSIgPHJrcmNtYXJAcmVkaGF0LmNvbT4KPiBDYzogQWxleCBEZXVjaGVyIDxhbGV4 YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+IENjOiAiQ2hyaXN0aWFuIEvDtm5pZyIgPGNocmlzdGlh bi5rb2VuaWdAYW1kLmNvbT4KPiBDYzogRGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgo+ IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+IENjOiBKb29u YXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFJvZHJp Z28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBDYzogRG91ZyBMZWRmb3JkIDxkbGVk Zm9yZEByZWRoYXQuY29tPgo+IENjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5jYT4KPiBD YzogTWlrZSBNYXJjaW5pc3p5biA8bWlrZS5tYXJjaW5pc3p5bkBpbnRlbC5jb20+Cj4gQ2M6IERl bm5pcyBEYWxlc3NhbmRybyA8ZGVubmlzLmRhbGVzc2FuZHJvQGludGVsLmNvbT4KPiBDYzogU3Vk ZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KPiBDYzogQXNodXRvc2ggRGl4aXQgPGFz aHV0b3NoLmRpeGl0QGludGVsLmNvbT4KPiBDYzogRGltaXRyaSBTaXZhbmljaCA8c2l2YW5pY2hA c2dpLmNvbT4KPiBDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNv bT4KPiBDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgo+IENjOiAiSsOpcsO0bWUg R2xpc3NlIiA8amdsaXNzZUByZWRoYXQuY29tPgo+IENjOiBBbmRyZWEgQXJjYW5nZWxpIDxhYXJj YW5nZUByZWRoYXQuY29tPgo+IENjOiBGZWxpeCBLdWVobGluZyA8ZmVsaXgua3VlaGxpbmdAYW1k LmNvbT4KPiBDYzoga3ZtQHZnZXIua2VybmVsLm9yZyAob3BlbiBsaXN0OktFUk5FTCBWSVJUVUFM IE1BQ0hJTkUgRk9SIFg4NiAoS1ZNL3g4NikpCj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5l bC5vcmcgKG9wZW4gbGlzdDpYODYgQVJDSElURUNUVVJFICgzMi1CSVQgQU5EIDY0LUJJVCkpCj4g Q2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnIChvcGVuIGxpc3Q6UkFERU9OIGFuZCBB TURHUFUgRFJNIERSSVZFUlMpCj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcg KG9wZW4gbGlzdDpEUk0gRFJJVkVSUykKPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZyAob3BlbiBsaXN0OklOVEVMIERSTSBEUklWRVJTIChleGNsdWRpbmcgUG91bHNibywgTW9v cmVzdG93Li4uKQo+IENjOiBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZyAob3BlbiBsaXN0OklO RklOSUJBTkQgU1VCU1lTVEVNKQo+IENjOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcg KG1vZGVyYXRlZCBsaXN0OlhFTiBIWVBFUlZJU09SIElOVEVSRkFDRSkKPiBDYzogbGludXgtbW1A a3ZhY2sub3JnIChvcGVuIGxpc3Q6SE1NIC0gSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVu dCkKPiBSZXBvcnRlZC1ieTogRGF2aWQgUmllbnRqZXMgPHJpZW50amVzQGdvb2dsZS5jb20+Cj4g U2lnbmVkLW9mZi1ieTogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+Cj4gLS0tCj4gICBh cmNoL3g4Ni9rdm0veDg2LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyAgfCA0MyArKysrKysrKysrKysrKysr KysrLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyB8IDEz ICsrKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jICAgICAgfCAy MiArKysrKysrKysrKy0tCj4gICBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jICAg ICAgfCAzMyArKysrKysrKysrKysrKystLS0tCj4gICBkcml2ZXJzL2luZmluaWJhbmQvaHcvaGZp MS9tbXVfcmIuYyAgICAgfCAxMSArKysrLS0tCj4gICBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4 NS9vZHAuYyAgICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9taXNjL21pYy9zY2lmL3NjaWZfZG1h LmMgICAgICAgIHwgIDcgKystLQo+ICAgZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGxicHVyZ2Uu YyAgICAgIHwgIDcgKystLQo+ICAgZHJpdmVycy94ZW4vZ250ZGV2LmMgICAgICAgICAgICAgICAg ICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKystLS0tLQo+ICAgaW5jbHVkZS9saW51eC9rdm1f aG9zdC5oICAgICAgICAgICAgICAgIHwgIDQgKy0tCj4gICBpbmNsdWRlL2xpbnV4L21tdV9ub3Rp Zmllci5oICAgICAgICAgICAgfCAzNSArKysrKysrKysrKysrKystLS0tLQo+ICAgaW5jbHVkZS9s aW51eC9vb20uaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgIGluY2x1ZGUvcmRtYS9p Yl91bWVtX29kcC5oICAgICAgICAgICAgICB8ICAzICstCj4gICBtbS9obW0uYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0tCj4gICBtbS9tbWFwLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICAgbW0vbW11X25vdGlmaWVyLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgMTkgKysrKysrKystLS0KPiAgIG1tL29vbV9raWxsLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrLS0tLS0tLS0KPiAgIHZpcnQva3ZtL2t2bV9t YWluLmMgICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKy0tLQo+ICAgMTkgZmlsZXMgY2hh bmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwo+IGluZGV4IDZiY2VjYzMy NWU3ZS4uYWMwOGY1ZDcxMWJlIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwo+ICsr KyBiL2FyY2gveDg2L2t2bS94ODYuYwo+IEBAIC03MjAzLDggKzcyMDMsOSBAQCBzdGF0aWMgdm9p ZCB2Y3B1X2xvYWRfZW9pX2V4aXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ICAgCWt2bV94 ODZfb3BzLT5sb2FkX2VvaV9leGl0bWFwKHZjcHUsIGVvaV9leGl0X2JpdG1hcCk7Cj4gICB9Cj4g ICAKPiAtdm9pZCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qg a3ZtICprdm0sCj4gLQkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4g K2ludCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICpr dm0sCj4gKwkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJYm9v bCBibG9ja2FibGUpCj4gICB7Cj4gICAJdW5zaWduZWQgbG9uZyBhcGljX2FkZHJlc3M7Cj4gICAK PiBAQCAtNzIxNSw2ICs3MjE2LDggQEAgdm9pZCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxp ZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4gICAJYXBpY19hZGRyZXNzID0gZ2ZuX3RvX2h2 YShrdm0sIEFQSUNfREVGQVVMVF9QSFlTX0JBU0UgPj4gUEFHRV9TSElGVCk7Cj4gICAJaWYgKHN0 YXJ0IDw9IGFwaWNfYWRkcmVzcyAmJiBhcGljX2FkZHJlc3MgPCBlbmQpCj4gICAJCWt2bV9tYWtl X2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0FQSUNfUEFHRV9SRUxPQUQpOwo+ICsKPiAr CXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICB2b2lkIGt2bV92Y3B1X3JlbG9hZF9hcGljX2FjY2Vz c19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfbW4uYwo+IGluZGV4IDgzZTM0NGZiYjUwYS4uMzM5OWE0YTkyN2ZiIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKPiBAQCAtMTM2LDEyICsxMzYsMTggQEAg dm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKQo+ICAgICoKPiAgICAq IFRha2UgdGhlIHJtbiByZWFkIHNpZGUgbG9jay4KPiAgICAqLwo+IC1zdGF0aWMgdm9pZCBhbWRn cHVfbW5fcmVhZF9sb2NrKHN0cnVjdCBhbWRncHVfbW4gKnJtbikKPiArc3RhdGljIGludCBhbWRn cHVfbW5fcmVhZF9sb2NrKHN0cnVjdCBhbWRncHVfbW4gKnJtbiwgYm9vbCBibG9ja2FibGUpCj4g ICB7Cj4gLQltdXRleF9sb2NrKCZybW4tPnJlYWRfbG9jayk7Cj4gKwlpZiAoYmxvY2thYmxlKQo+ ICsJCW11dGV4X2xvY2soJnJtbi0+cmVhZF9sb2NrKTsKPiArCWVsc2UgaWYgKCFtdXRleF90cnls b2NrKCZybW4tPnJlYWRfbG9jaykpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gKwo+ICAgCWlmIChh dG9taWNfaW5jX3JldHVybigmcm1uLT5yZWN1cnNpb24pID09IDEpCj4gICAJCWRvd25fcmVhZF9u b25fb3duZXIoJnJtbi0+bG9jayk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZybW4tPnJlYWRfbG9jayk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0xOTcsMTAgKzIwMywx MSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVf bW5fbm9kZSAqbm9kZSwKPiAgICAqIFdlIGJsb2NrIGZvciBhbGwgQk9zIGJldHdlZW4gc3RhcnQg YW5kIGVuZCB0byBiZSBpZGxlIGFuZAo+ICAgICogdW5tYXAgdGhlbSBieSBtb3ZlIHRoZW0gaW50 byBzeXN0ZW0gZG9tYWluIGFnYWluLgo+ICAgICovCj4gLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3Rh dGljIGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9u b3RpZmllciAqbW4sCj4gICAJCQkJCQkgc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJCQkg dW5zaWduZWQgbG9uZyBzdGFydCwKPiAtCQkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJ CQkgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSBib29sIGJsb2NrYWJsZSkKPiAgIHsKPiAg IAlzdHJ1Y3QgYW1kZ3B1X21uICpybW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVf bW4sIG1uKTsKPiAgIAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKPiBAQCAtMjA4LDE3 ICsyMTUsMjggQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRf Z2Z4KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNs dXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8KPiAgIAllbmQgLT0gMTsKPiAgIAo+ IC0JYW1kZ3B1X21uX3JlYWRfbG9jayhybW4pOwo+ICsJLyogVE9ETyB3ZSBzaG91bGQgYmUgYWJs ZSB0byBzcGxpdCBsb2NraW5nIGZvciBpbnRlcnZhbCB0cmVlIGFuZAo+ICsJICogYW1kZ3B1X21u X2ludmFsaWRhdGVfbm9kZQo+ICsJICovCj4gKwlpZiAoYW1kZ3B1X21uX3JlYWRfbG9jayhybW4s IGJsb2NrYWJsZSkpCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gICAKPiAgIAlpdCA9IGludGVydmFs X3RyZWVfaXRlcl9maXJzdCgmcm1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsKPiAgIAl3aGlsZSAo aXQpIHsKPiAgIAkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2RlOwo+ICAgCj4gKwkJaWYgKCFi bG9ja2FibGUpIHsKPiArCQkJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKHJtbik7Cj4gKwkJCXJldHVy biAtRUFHQUlOOwo+ICsJCX0KPiArCj4gICAJCW5vZGUgPSBjb250YWluZXJfb2YoaXQsIHN0cnVj dCBhbWRncHVfbW5fbm9kZSwgaXQpOwo+ICAgCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0 KGl0LCBzdGFydCwgZW5kKTsKPiAgIAo+ICAgCQlhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKG5v ZGUsIHN0YXJ0LCBlbmQpOwo+ICAgCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAg LyoqCj4gQEAgLTIzMywxMCArMjUxLDExIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgICAqIG5lY2Vz c2l0YXRlcyBldmljdGluZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhl IEJPcwo+ICAgICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9l bmRfaHNhLgo+ICAgICovCj4gLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0X2hzYShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiArc3RhdGljIGludCBhbWRncHVf bW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4g ICAJCQkJCQkgc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJCQkgdW5zaWduZWQgbG9uZyBz dGFydCwKPiAtCQkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJCQkgdW5zaWduZWQgbG9u ZyBlbmQsCj4gKwkJCQkJCSBib29sIGJsb2NrYWJsZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgYW1kZ3B1 X21uICpybW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1uKTsKPiAgIAlz dHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKPiBAQCAtMjQ0LDEzICsyNjMsMTkgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBtbXVf bm90aWZpZXIgKm1uLAo+ICAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1dCBpbnRl cnZhbCBpcyBpbmNsdXNpdmUgKi8KPiAgIAllbmQgLT0gMTsKPiAgIAo+IC0JYW1kZ3B1X21uX3Jl YWRfbG9jayhybW4pOwo+ICsJaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2socm1uLCBibG9ja2FibGUp KQo+ICsJCXJldHVybiAtRUFHQUlOOwo+ICAgCj4gICAJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJf Zmlyc3QoJnJtbi0+b2JqZWN0cywgc3RhcnQsIGVuZCk7Cj4gICAJd2hpbGUgKGl0KSB7Cj4gICAJ CXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZTsKPiAgIAkJc3RydWN0IGFtZGdwdV9ibyAqYm87 Cj4gICAKPiArCQlpZiAoIWJsb2NrYWJsZSkgewo+ICsJCQlhbWRncHVfbW5fcmVhZF91bmxvY2so cm1uKTsKPiArCQkJcmV0dXJuIC1FQUdBSU47Cj4gKwkJfQo+ICsKPiAgIAkJbm9kZSA9IGNvbnRh aW5lcl9vZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7Cj4gICAJCWl0ID0gaW50ZXJ2 YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOwo+ICAgCj4gQEAgLTI2Miw2ICsyODcs OCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3Ry dWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJYW1kZ3B1X2FtZGtmZF9ldmljdF91c2VycHRy KG1lbSwgbW0pOwo+ICAgCQl9Cj4gICAJfQo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0 ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCj4gaW5kZXggODU0 YmQ1MWI5NDc4Li45Y2JmZjY4ZjZiNDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdXNlcnB0ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdXNlcnB0ci5jCj4gQEAgLTExMiwxMCArMTEyLDExIEBAIHN0YXRpYyB2b2lkIGRlbF9vYmpl Y3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4gICAJbW8tPmF0dGFjaGVkID0gZmFsc2U7 Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiArc3RhdGljIGludCBpOTE1 X2dlbV91c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmll ciAqX21uLAo+ICAgCQkJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCQkJ ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJCSAgICAgICB1bnNpZ25lZCBsb25n IGVuZCkKPiArCQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgICAgICAg Ym9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9 Cj4gICAJCWNvbnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+ IEBAIC0xMjQsNyArMTI1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiAgIAlMSVNUX0hF QUQoY2FuY2VsbGVkKTsKPiAgIAo+ICAgCWlmIChSQl9FTVBUWV9ST09UKCZtbi0+b2JqZWN0cy5y Yl9yb290KSkKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIDA7Cj4gICAKPiAgIAkvKiBpbnRlcnZh bCByYW5nZXMgYXJlIGluY2x1c2l2ZSwgYnV0IGludmFsaWRhdGUgcmFuZ2UgaXMgZXhjbHVzaXZl ICovCj4gICAJZW5kLS07Cj4gQEAgLTEzMiw2ICsxMzMsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9n ZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIg Kl9tbiwKPiAgIAlzcGluX2xvY2soJm1uLT5sb2NrKTsKPiAgIAlpdCA9IGludGVydmFsX3RyZWVf aXRlcl9maXJzdCgmbW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOwo+ICAgCXdoaWxlIChpdCkgewo+ ICsJCWlmICghYmxvY2thYmxlKSB7Cj4gKwkJCXNwaW5fdW5sb2NrKCZtbi0+bG9jayk7Cj4gKwkJ CXJldHVybiAtRUFHQUlOOwo+ICsJCX0KPiAgIAkJLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFz ZWQgbGF0ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCj4gICAJCSAqIEdFTSBvYmplY3Qgc28gaXQgaXMg ZW50aXJlbHkgcG9zc2libGUgdG8gZ2FpbiBhCj4gICAJCSAqIHJlZmVyZW5jZSBvbiBhbiBvYmpl Y3QgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZnJlZWQKPiBAQCAtMTU0LDYgKzE1OSw4IEBAIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX3VzZXJwdHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1 Y3QgbW11X25vdGlmaWVyICpfbW4sCj4gICAKPiAgIAlpZiAoIWxpc3RfZW1wdHkoJmNhbmNlbGxl ZCkpCj4gICAJCWZsdXNoX3dvcmtxdWV1ZShtbi0+d3EpOwo+ICsKPiArCXJldHVybiAwOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMgaTkxNV9nZW1f dXNlcnB0cl9ub3RpZmllciA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKPiBpbmRl eCBhYmQyNDk3NWM5YjEuLmY4YjM1ZGY0NGM2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9tbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fbW4uYwo+IEBAIC0xMTgsMTkgKzExOCwyNyBAQCBzdGF0aWMgdm9pZCByYWRlb25fbW5fcmVs ZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgICAqIFdlIGJsb2NrIGZvciBhbGwgQk9z IGJldHdlZW4gc3RhcnQgYW5kIGVuZCB0byBiZSBpZGxlIGFuZAo+ICAgICogdW5tYXAgdGhlbSBi eSBtb3ZlIHRoZW0gaW50byBzeXN0ZW0gZG9tYWluIGFnYWluLgo+ICAgICovCj4gLXN0YXRpYyB2 b2lkIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIg Km1uLAo+ICtzdGF0aWMgaW50IHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVj dCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCQkJCQkgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ ICAgCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJICAgICB1bnNpZ25lZCBs b25nIGVuZCkKPiArCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCSAgICAgYm9v bCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IHJhZGVvbl9tbiAqcm1uID0gY29udGFpbmVy X29mKG1uLCBzdHJ1Y3QgcmFkZW9uX21uLCBtbik7Cj4gICAJc3RydWN0IHR0bV9vcGVyYXRpb25f Y3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Cj4gICAJc3RydWN0IGludGVydmFsX3RyZWVfbm9k ZSAqaXQ7Cj4gKwlpbnQgcmV0ID0gMDsKPiAgIAo+ICAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNs dXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8KPiAgIAllbmQgLT0gMTsKPiAgIAo+ IC0JbXV0ZXhfbG9jaygmcm1uLT5sb2NrKTsKPiArCS8qIFRPRE8gd2Ugc2hvdWxkIGJlIGFibGUg dG8gc3BsaXQgbG9ja2luZyBmb3IgaW50ZXJ2YWwgdHJlZSBhbmQKPiArCSAqIHRoZSB0ZWFyIGRv d24uCj4gKwkgKi8KPiArCWlmIChibG9ja2FibGUpCj4gKwkJbXV0ZXhfbG9jaygmcm1uLT5sb2Nr KTsKPiArCWVsc2UgaWYgKCFtdXRleF90cnlsb2NrKCZybW4tPmxvY2spKQo+ICsJCXJldHVybiAt RUFHQUlOOwo+ICAgCj4gICAJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJnJtbi0+b2Jq ZWN0cywgc3RhcnQsIGVuZCk7Cj4gICAJd2hpbGUgKGl0KSB7Cj4gQEAgLTEzOCw2ICsxNDYsMTEg QEAgc3RhdGljIHZvaWQgcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sCj4gICAJCXN0cnVjdCByYWRlb25fYm8gKmJvOwo+ICAgCQlsb25nIHI7 Cj4gICAKPiArCQlpZiAoIWJsb2NrYWJsZSkgewo+ICsJCQlyZXQgPSAtRUFHQUlOOwo+ICsJCQln b3RvIG91dF91bmxvY2s7Cj4gKwkJfQo+ICsKPiAgIAkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwg c3RydWN0IHJhZGVvbl9tbl9ub2RlLCBpdCk7Cj4gICAJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVy X25leHQoaXQsIHN0YXJ0LCBlbmQpOwo+ICAgCj4gQEAgLTE2Niw3ICsxNzksMTAgQEAgc3RhdGlj IHZvaWQgcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmll ciAqbW4sCj4gICAJCX0KPiAgIAl9Cj4gICAJCj4gK291dF91bmxvY2s6Cj4gICAJbXV0ZXhfdW5s b2NrKCZybW4tPmxvY2spOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jIGIvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvdW1lbV9vZHAuYwo+IGluZGV4IDE4MjQzNmI5MmJhOS4uNmVjNzQ4ZWNjZmY3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMKPiArKysg Yi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jCj4gQEAgLTE4Niw2ICsxODYsNyBA QCBzdGF0aWMgdm9pZCBpYl91bWVtX25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmll ciAqbW4sCj4gICAJcmJ0X2liX3VtZW1fZm9yX2VhY2hfaW5fcmFuZ2UoJmNvbnRleHQtPnVtZW1f dHJlZSwgMCwKPiAgIAkJCQkgICAgICBVTExPTkdfTUFYLAo+ICAgCQkJCSAgICAgIGliX3VtZW1f bm90aWZpZXJfcmVsZWFzZV90cmFtcG9saW5lLAo+ICsJCQkJICAgICAgdHJ1ZSwKPiAgIAkJCQkg ICAgICBOVUxMKTsKPiAgIAl1cF9yZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiAgIH0KPiBA QCAtMjA3LDIyICsyMDgsMzEgQEAgc3RhdGljIGludCBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X3Ry YW1wb2xpbmUoc3RydWN0IGliX3VtZW0gKml0ZW0sIHU2NCBzdGFydCwKPiAgIAlyZXR1cm4gMDsK PiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpYl91bWVtX25vdGlmaWVyX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgaWJfdW1lbV9u b3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ ICAgCQkJCQkJICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCQkJICAgIHVuc2lnbmVk IGxvbmcgc3RhcnQsCj4gLQkJCQkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCQkJICAg IHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJCQkJCQkgICAgYm9vbCBibG9ja2FibGUpCj4gICB7Cj4g ICAJc3RydWN0IGliX3Vjb250ZXh0ICpjb250ZXh0ID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg aWJfdWNvbnRleHQsIG1uKTsKPiArCWludCByZXQ7Cj4gICAKPiAgIAlpZiAoIWNvbnRleHQtPmlu dmFsaWRhdGVfcmFuZ2UpCj4gLQkJcmV0dXJuOwo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChi bG9ja2FibGUpCj4gKwkJZG93bl9yZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiArCWVsc2Ug aWYgKCFkb3duX3JlYWRfdHJ5bG9jaygmY29udGV4dC0+dW1lbV9yd3NlbSkpCj4gKwkJcmV0dXJu IC1FQUdBSU47Cj4gICAKPiAgIAlpYl91Y29udGV4dF9ub3RpZmllcl9zdGFydF9hY2NvdW50KGNv bnRleHQpOwo+IC0JZG93bl9yZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiAtCXJidF9pYl91 bWVtX2Zvcl9lYWNoX2luX3JhbmdlKCZjb250ZXh0LT51bWVtX3RyZWUsIHN0YXJ0LAo+ICsJcmV0 ID0gcmJ0X2liX3VtZW1fZm9yX2VhY2hfaW5fcmFuZ2UoJmNvbnRleHQtPnVtZW1fdHJlZSwgc3Rh cnQsCj4gICAJCQkJICAgICAgZW5kLAo+IC0JCQkJICAgICAgaW52YWxpZGF0ZV9yYW5nZV9zdGFy dF90cmFtcG9saW5lLCBOVUxMKTsKPiArCQkJCSAgICAgIGludmFsaWRhdGVfcmFuZ2Vfc3RhcnRf dHJhbXBvbGluZSwKPiArCQkJCSAgICAgIGJsb2NrYWJsZSwgTlVMTCk7Cj4gICAJdXBfcmVhZCgm Y29udGV4dC0+dW1lbV9yd3NlbSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIGludCBpbnZhbGlkYXRlX3JhbmdlX2VuZF90cmFtcG9saW5lKHN0cnVjdCBpYl91bWVt ICppdGVtLCB1NjQgc3RhcnQsCj4gQEAgLTI0MiwxMCArMjUyLDE1IEBAIHN0YXRpYyB2b2lkIGli X3VtZW1fbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAq bW4sCj4gICAJaWYgKCFjb250ZXh0LT5pbnZhbGlkYXRlX3JhbmdlKQo+ICAgCQlyZXR1cm47Cj4g ICAKPiArCS8qCj4gKwkgKiBUT0RPOiB3ZSBjdXJyZW50bHkgYmFpbCBvdXQgaWYgdGhlcmUgaXMg YW55IHNsZWVwYWJsZSB3b3JrIHRvIGJlIGRvbmUKPiArCSAqIGluIGliX3VtZW1fbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydCBzbyB3ZSBzaG91bGRuJ3QgcmVhbGx5IGJsb2NrCj4gKwkg KiBoZXJlLiBCdXQgdGhpcyBpcyB1Z2x5IGFuZCBmcmFnaWxlLgo+ICsJICovCj4gICAJZG93bl9y ZWFkKCZjb250ZXh0LT51bWVtX3J3c2VtKTsKPiAgIAlyYnRfaWJfdW1lbV9mb3JfZWFjaF9pbl9y YW5nZSgmY29udGV4dC0+dW1lbV90cmVlLCBzdGFydCwKPiAgIAkJCQkgICAgICBlbmQsCj4gLQkJ CQkgICAgICBpbnZhbGlkYXRlX3JhbmdlX2VuZF90cmFtcG9saW5lLCBOVUxMKTsKPiArCQkJCSAg ICAgIGludmFsaWRhdGVfcmFuZ2VfZW5kX3RyYW1wb2xpbmUsIHRydWUsIE5VTEwpOwo+ICAgCXVw X3JlYWQoJmNvbnRleHQtPnVtZW1fcndzZW0pOwo+ICAgCWliX3Vjb250ZXh0X25vdGlmaWVyX2Vu ZF9hY2NvdW50KGNvbnRleHQpOwo+ICAgfQo+IEBAIC03OTgsNiArODEzLDcgQEAgRVhQT1JUX1NZ TUJPTChpYl91bWVtX29kcF91bm1hcF9kbWFfcGFnZXMpOwo+ICAgaW50IHJidF9pYl91bWVtX2Zv cl9lYWNoX2luX3JhbmdlKHN0cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCwKPiAgIAkJCQkgIHU2 NCBzdGFydCwgdTY0IGxhc3QsCj4gICAJCQkJICB1bWVtX2NhbGxfYmFjayBjYiwKPiArCQkJCSAg Ym9vbCBibG9ja2FibGUsCj4gICAJCQkJICB2b2lkICpjb29raWUpCj4gICB7Cj4gICAJaW50IHJl dF92YWwgPSAwOwo+IEBAIC04MDksNiArODI1LDkgQEAgaW50IHJidF9pYl91bWVtX2Zvcl9lYWNo X2luX3JhbmdlKHN0cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCwKPiAgIAo+ICAgCWZvciAobm9k ZSA9IHJidF9pYl91bWVtX2l0ZXJfZmlyc3Qocm9vdCwgc3RhcnQsIGxhc3QgLSAxKTsKPiAgIAkJ CW5vZGU7IG5vZGUgPSBuZXh0KSB7Cj4gKwkJLyogVE9ETyBtb3ZlIHRoZSBibG9ja2FibGUgZGVj aXNpb24gdXAgdG8gdGhlIGNhbGxiYWNrICovCj4gKwkJaWYgKCFibG9ja2FibGUpCj4gKwkJCXJl dHVybiAtRUFHQUlOOwo+ICAgCQluZXh0ID0gcmJ0X2liX3VtZW1faXRlcl9uZXh0KG5vZGUsIHN0 YXJ0LCBsYXN0IC0gMSk7Cj4gICAJCXVtZW0gPSBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGli X3VtZW1fb2RwLCBpbnRlcnZhbF90cmVlKTsKPiAgIAkJcmV0X3ZhbCA9IGNiKHVtZW0tPnVtZW0s IHN0YXJ0LCBsYXN0LCBjb29raWUpIHx8IHJldF92YWw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5maW5pYmFuZC9ody9oZmkxL21tdV9yYi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEv bW11X3JiLmMKPiBpbmRleCA3MGFjZWVmZTE0ZDUuLmUxYzc5OTZjMDE4ZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9tbXVfcmIuYwo+ICsrKyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9oZmkxL21tdV9yYi5jCj4gQEAgLTY3LDkgKzY3LDkgQEAgc3RydWN0IG1tdV9y Yl9oYW5kbGVyIHsKPiAgIAo+ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbW11X25vZGVfc3RhcnQo c3RydWN0IG1tdV9yYl9ub2RlICopOwo+ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbW11X25vZGVf bGFzdChzdHJ1Y3QgbW11X3JiX25vZGUgKik7Cj4gLXN0YXRpYyB2b2lkIG1tdV9ub3RpZmllcl9y YW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICosCj4gK3N0YXRpYyBpbnQgbW11X25vdGlm aWVyX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKiwKPiAgIAkJCQkgICAgIHN0cnVj dCBtbV9zdHJ1Y3QgKiwKPiAtCQkJCSAgICAgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7 Cj4gKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGJvb2wpOwo+ICAgc3Rh dGljIHN0cnVjdCBtbXVfcmJfbm9kZSAqX19tbXVfcmJfc2VhcmNoKHN0cnVjdCBtbXVfcmJfaGFu ZGxlciAqLAo+ICAgCQkJCQkgICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKPiAgIHN0 YXRpYyB2b2lkIGRvX3JlbW92ZShzdHJ1Y3QgbW11X3JiX2hhbmRsZXIgKmhhbmRsZXIsCj4gQEAg LTI4NCwxMCArMjg0LDExIEBAIHZvaWQgaGZpMV9tbXVfcmJfcmVtb3ZlKHN0cnVjdCBtbXVfcmJf aGFuZGxlciAqaGFuZGxlciwKPiAgIAloYW5kbGVyLT5vcHMtPnJlbW92ZShoYW5kbGVyLT5vcHNf YXJnLCBub2RlKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfcmFuZ2Vf c3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgbW11X25vdGlmaWVy X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCQkJCSAgICAgc3RydWN0 IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJ ICAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4g KwkJCQkgICAgIGJvb2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBtbXVfcmJfaGFuZGxl ciAqaGFuZGxlciA9Cj4gICAJCWNvbnRhaW5lcl9vZihtbiwgc3RydWN0IG1tdV9yYl9oYW5kbGVy LCBtbik7Cj4gQEAgLTMxMyw2ICszMTQsOCBAQCBzdGF0aWMgdm9pZCBtbXVfbm90aWZpZXJfcmFu Z2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAKPiAgIAlpZiAoYWRkZWQpCj4g ICAJCXF1ZXVlX3dvcmsoaGFuZGxlci0+d3EsICZoYW5kbGVyLT5kZWxfd29yayk7Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9tbHg1L29kcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMKPiBp bmRleCBmMWE4N2E2OTBhNGMuLmQyMTZlMGQyOTIxZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lu ZmluaWJhbmQvaHcvbWx4NS9vZHAuYwo+ICsrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1 L29kcC5jCj4gQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIG1seDVfaWJfZnJlZV9pbXBsaWNpdF9t cihzdHJ1Y3QgbWx4NV9pYl9tciAqaW1yKQo+ICAgCj4gICAJZG93bl9yZWFkKCZjdHgtPnVtZW1f cndzZW0pOwo+ICAgCXJidF9pYl91bWVtX2Zvcl9lYWNoX2luX3JhbmdlKCZjdHgtPnVtZW1fdHJl ZSwgMCwgVUxMT05HX01BWCwKPiAtCQkJCSAgICAgIG1yX2xlYWZfZnJlZSwgaW1yKTsKPiArCQkJ CSAgICAgIG1yX2xlYWZfZnJlZSwgdHJ1ZSwgaW1yKTsKPiAgIAl1cF9yZWFkKCZjdHgtPnVtZW1f cndzZW0pOwo+ICAgCj4gICAJd2FpdF9ldmVudChpbXItPnFfbGVhZl9mcmVlLCAhYXRvbWljX3Jl YWQoJmltci0+bnVtX2xlYWZfZnJlZSkpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvbWlj L3NjaWYvc2NpZl9kbWEuYyBiL2RyaXZlcnMvbWlzYy9taWMvc2NpZi9zY2lmX2RtYS5jCj4gaW5k ZXggNjNkNjI0NmQ2ZGZmLi42MzY5YWVhYTcwNTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNj L21pYy9zY2lmL3NjaWZfZG1hLmMKPiArKysgYi9kcml2ZXJzL21pc2MvbWljL3NjaWYvc2NpZl9k bWEuYwo+IEBAIC0yMDAsMTUgKzIwMCwxOCBAQCBzdGF0aWMgdm9pZCBzY2lmX21tdV9ub3RpZmll cl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCXNjaGVkdWxlX3dvcmsoJnNj aWZfaW5mby5taXNjX3dvcmspOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIHNjaWZfbW11X25v dGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4g K3N0YXRpYyBpbnQgc2NpZl9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1 Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAkJCQkJCSAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0s Cj4gICAJCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkJCSAgICAgdW5zaWdu ZWQgbG9uZyBlbmQpCj4gKwkJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkJCSAg ICAgYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IHNjaWZfbW11X25vdGlmCSptbW47 Cj4gICAKPiAgIAltbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBzY2lmX21tdV9ub3RpZiwg ZXBfbW11X25vdGlmaWVyKTsKPiAgIAlzY2lmX3JtYV9kZXN0cm95X3RjdyhtbW4sIHN0YXJ0LCBl bmQgLSBzdGFydCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lk IHNjaWZfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZp ZXIgKm1uLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5j IGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGxicHVyZ2UuYwo+IGluZGV4IGEzNDU0ZWI1NmZi Zi4uYmUyOGYwNWJmYWZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydXRs YnB1cmdlLmMKPiArKysgYi9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0bGJwdXJnZS5jCj4gQEAg LTIxOSw5ICsyMTksMTAgQEAgdm9pZCBncnVfZmx1c2hfYWxsX3RsYihzdHJ1Y3QgZ3J1X3N0YXRl ICpncnUpCj4gICAvKgo+ICAgICogTU1VT1BTIG5vdGlmaWVyIGNhbGxvdXQgZnVuY3Rpb25zCj4g ICAgKi8KPiAtc3RhdGljIHZvaWQgZ3J1X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgZ3J1X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQo c3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAo+IC0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k KQo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ ICsJCQkJICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBncnVfbW1fc3Ry dWN0ICpnbXMgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBncnVfbW1fc3RydWN0LAo+ICAgCQkJ CQkJIG1zX25vdGlmaWVyKTsKPiBAQCAtMjMxLDYgKzIzMiw4IEBAIHN0YXRpYyB2b2lkIGdydV9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCWdydV9k YmcoZ3J1ZGV2LCAiZ21zICVwLCBzdGFydCAweCVseCwgZW5kIDB4JWx4LCBhY3QgJWRcbiIsIGdt cywKPiAgIAkJc3RhcnQsIGVuZCwgYXRvbWljX3JlYWQoJmdtcy0+bXNfcmFuZ2VfYWN0aXZlKSk7 Cj4gICAJZ3J1X2ZsdXNoX3RsYl9yYW5nZShnbXMsIHN0YXJ0LCBlbmQgLSBzdGFydCk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGdydV9pbnZhbGlkYXRlX3Jh bmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94 ZW4vZ250ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwo+IGluZGV4IGJkNTY2NTNiOWJiYy4u NTViNGYwZTNmNGQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5jCj4gKysrIGIv ZHJpdmVycy94ZW4vZ250ZGV2LmMKPiBAQCAtNDQxLDE4ICs0NDEsMjUgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBnbnRkZXZfdm1vcHMgPSB7Cj4gICAKPiAgIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwo+ICAgCj4gK3N0YXRpYyBib29sIGluX3JhbmdlKHN0cnVjdCBncmFudF9t YXAgKm1hcCwKPiArCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQpCj4gK3sKPiArCWlmICghbWFwLT52bWEpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYgKG1h cC0+dm1hLT52bV9zdGFydCA+PSBlbmQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYgKG1hcC0+ dm1hLT52bV9lbmQgPD0gc3RhcnQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgdW5tYXBfaWZfaW5fcmFuZ2Uoc3RydWN0IGdy YW50X21hcCAqbWFwLAo+ICAgCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg bG9uZyBlbmQpCj4gICB7Cj4gICAJdW5zaWduZWQgbG9uZyBtc3RhcnQsIG1lbmQ7Cj4gICAJaW50 IGVycjsKPiAgIAo+IC0JaWYgKCFtYXAtPnZtYSkKPiAtCQlyZXR1cm47Cj4gLQlpZiAobWFwLT52 bWEtPnZtX3N0YXJ0ID49IGVuZCkKPiAtCQlyZXR1cm47Cj4gLQlpZiAobWFwLT52bWEtPnZtX2Vu ZCA8PSBzdGFydCkKPiAtCQlyZXR1cm47Cj4gICAJbXN0YXJ0ID0gbWF4KHN0YXJ0LCBtYXAtPnZt YS0+dm1fc3RhcnQpOwo+ICAgCW1lbmQgICA9IG1pbihlbmQsICAgbWFwLT52bWEtPnZtX2VuZCk7 Cj4gICAJcHJfZGVidWcoIm1hcCAlZCslZCAoJWx4ICVseCksIHJhbmdlICVseCAlbHgsIG1yYW5n ZSAlbHggJWx4XG4iLAo+IEBAIC00NjUsMjEgKzQ3Miw0MCBAQCBzdGF0aWMgdm9pZCB1bm1hcF9p Zl9pbl9yYW5nZShzdHJ1Y3QgZ3JhbnRfbWFwICptYXAsCj4gICAJV0FSTl9PTihlcnIpOwo+ICAg fQo+ICAgCj4gLXN0YXRpYyB2b2lkIG1uX2ludmxfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3Rp ZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgbW5faW52bF9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKPiAgIAkJCQlzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAtCQkJCXVuc2lnbmVk IGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJdW5zaWduZWQgbG9uZyBzdGFy dCwgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQlib29sIGJsb2NrYWJsZSkKPiAgIHsKPiAgIAlz dHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBnbnRkZXZf cHJpdiwgbW4pOwo+ICAgCXN0cnVjdCBncmFudF9tYXAgKm1hcDsKPiArCWludCByZXQgPSAwOwo+ ICsKPiArCS8qIFRPRE8gZG8gd2UgcmVhbGx5IG5lZWQgYSBtdXRleCBoZXJlPyAqLwo+ICsJaWYg KGJsb2NrYWJsZSkKPiArCQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsKPiArCWVsc2UgaWYgKCFt dXRleF90cnlsb2NrKCZwcml2LT5sb2NrKSkKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiAgIAo+IC0J bXV0ZXhfbG9jaygmcHJpdi0+bG9jayk7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZw cml2LT5tYXBzLCBuZXh0KSB7Cj4gKwkJaWYgKGluX3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpIHsK PiArCQkJcmV0ID0gLUVBR0FJTjsKPiArCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCX0KPiAgIAkJ dW5tYXBfaWZfaW5fcmFuZ2UobWFwLCBzdGFydCwgZW5kKTsKPiAgIAl9Cj4gICAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShtYXAsICZwcml2LT5mcmVlYWJsZV9tYXBzLCBuZXh0KSB7Cj4gKwkJaWYgKGlu X3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpIHsKPiArCQkJcmV0ID0gLUVBR0FJTjsKPiArCQkJZ290 byBvdXRfdW5sb2NrOwo+ICsJCX0KPiAgIAkJdW5tYXBfaWZfaW5fcmFuZ2UobWFwLCBzdGFydCwg ZW5kKTsKPiAgIAl9Cj4gKwo+ICtvdXRfdW5sb2NrOgo+ICAgCW11dGV4X3VubG9jaygmcHJpdi0+ bG9jayk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgbW5f cmVsZWFzZShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9rdm1faG9zdC5oIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCj4gaW5kZXggNGVlN2Jj NTQ4YTgzLi4xNDg5MzUwODUxOTQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9z dC5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCj4gQEAgLTEyNzUsOCArMTI3NSw4 IEBAIHN0YXRpYyBpbmxpbmUgbG9uZyBrdm1fYXJjaF92Y3B1X2FzeW5jX2lvY3RsKHN0cnVjdCBm aWxlICpmaWxwLAo+ICAgfQo+ICAgI2VuZGlmIC8qIENPTkZJR19IQVZFX0tWTV9WQ1BVX0FTWU5D X0lPQ1RMICovCj4gICAKPiAtdm9pZCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZShzdHJ1Y3Qga3ZtICprdm0sCj4gLQkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg bG9uZyBlbmQpOwo+ICtpbnQga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uo c3RydWN0IGt2bSAqa3ZtLAo+ICsJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcg ZW5kLCBib29sIGJsb2NrYWJsZSk7Cj4gICAKPiAgICNpZmRlZiBDT05GSUdfSEFWRV9LVk1fVkNQ VV9SVU5fUElEX0NIQU5HRQo+ICAgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXVfbm90 aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbW11X25vdGlmaWVyLmgKPiBpbmRleCAzOTJlNmFmODI3 MDEuLjJlYjFhMmQwMTc1OSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21tdV9ub3RpZmll ci5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9tbXVfbm90aWZpZXIuaAo+IEBAIC0xNTEsMTMgKzE1 MSwxNSBAQCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyB7Cj4gICAJICogYWRkcmVzcyBzcGFjZSBi dXQgbWF5IHN0aWxsIGJlIHJlZmVyZW5jZWQgYnkgc3B0ZXMgdW50aWwKPiAgIAkgKiB0aGUgbGFz dCByZWZjb3VudCBpcyBkcm9wcGVkLgo+ICAgCSAqCj4gLQkgKiBJZiBib3RoIG9mIHRoZXNlIGNh bGxiYWNrcyBjYW5ub3QgYmxvY2ssIGFuZCBpbnZhbGlkYXRlX3JhbmdlCj4gLQkgKiBjYW5ub3Qg YmxvY2ssIG1tdV9ub3RpZmllcl9vcHMuZmxhZ3Mgc2hvdWxkIGhhdmUKPiAtCSAqIE1NVV9JTlZB TElEQVRFX0RPRVNfTk9UX0JMT0NLIHNldC4KPiArCSAqIElmIGJsb2NrYWJsZSBhcmd1bWVudCBp cyBzZXQgdG8gZmFsc2UgdGhlbiB0aGUgY2FsbGJhY2sgY2Fubm90Cj4gKwkgKiBzbGVlcCBhbmQg aGFzIHRvIHJldHVybiB3aXRoIC1FQUdBSU4uIDAgc2hvdWxkIGJlIHJldHVybmVkCj4gKwkgKiBv dGhlcndpc2UuCj4gKwkgKgo+ICAgCSAqLwo+IC0Jdm9pZCAoKmludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQpKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICsJaW50ICgqaW52YWxpZGF0ZV9yYW5nZV9z dGFydCkoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJICAgICAgIHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLAo+IC0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxv bmcgZW5kKTsKPiArCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n IGVuZCwKPiArCQkJCSAgICAgICBib29sIGJsb2NrYWJsZSk7Cj4gICAJdm9pZCAoKmludmFsaWRh dGVfcmFuZ2VfZW5kKShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPiAgIAkJCQkgICAgIHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCSAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu ZWQgbG9uZyBlbmQpOwo+IEBAIC0yMjksOCArMjMxLDkgQEAgZXh0ZXJuIGludCBfX21tdV9ub3Rp Zmllcl90ZXN0X3lvdW5nKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCSAgICAgdW5zaWdu ZWQgbG9uZyBhZGRyZXNzKTsKPiAgIGV4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2NoYW5nZV9w dGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJICAgICAgdW5zaWduZWQgbG9uZyBhZGRy ZXNzLCBwdGVfdCBwdGUpOwo+IC1leHRlcm4gdm9pZCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+IC0JCQkJICB1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7Cj4gK2V4dGVybiBpbnQgX19tbXVfbm90aWZpZXJf aW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiArCQkJCSAgdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkgIGJvb2wgYmxvY2th YmxlKTsKPiAgIGV4dGVybiB2b2lkIF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5k KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z aWduZWQgbG9uZyBlbmQsCj4gICAJCQkJICBib29sIG9ubHlfZW5kKTsKPiBAQCAtMjgxLDcgKzI4 NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gICAJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0 LCB1bnNpZ25lZCBsb25nIGVuZCkKPiAgIHsKPiAgIAlpZiAobW1faGFzX25vdGlmaWVycyhtbSkp Cj4gLQkJX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgc3RhcnQsIGVu ZCk7Cj4gKwkJX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgc3RhcnQs IGVuZCwgdHJ1ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IG1tdV9ub3RpZmllcl9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25vbmJsb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICsJ CQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKPiArewo+ICsJaW50 IHJldCA9IDA7Cj4gKwlpZiAobW1faGFzX25vdGlmaWVycyhtbSkpCj4gKwkJcmV0ID0gX19tbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbSwgc3RhcnQsIGVuZCwgZmFsc2UpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBtbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gQEAg LTQ2MSw2ICs0NzQsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgewo+ICAgfQo+ICAgCj4g K3N0YXRpYyBpbmxpbmUgaW50IG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X25v bmJsb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICsJCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0 LCB1bnNpZ25lZCBsb25nIGVuZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gICBzdGF0 aWMgaW5saW5lIHZvaWQgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBlbmQpCj4gICB7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvb29tLmggYi9pbmNsdWRl L2xpbnV4L29vbS5oCj4gaW5kZXggNmFkYWMxMTNlOTZkLi45MmY3MGU0YzYyNTIgMTAwNjQ0Cj4g LS0tIGEvaW5jbHVkZS9saW51eC9vb20uaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvb29tLmgKPiBA QCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBjaGVja19zdGFibGVfYWRkcmVzc19z cGFjZShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC12 b2lkIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7Cj4gK2Jvb2wgX19v b21fcmVhcF90YXNrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKPiAgIAo+ICAgZXh0ZXJuIHVu c2lnbmVkIGxvbmcgb29tX2JhZG5lc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLAo+ICAgCQlzdHJ1 Y3QgbWVtX2Nncm91cCAqbWVtY2csIGNvbnN0IG5vZGVtYXNrX3QgKm5vZGVtYXNrLAo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3JkbWEvaWJfdW1lbV9vZHAuaCBiL2luY2x1ZGUvcmRtYS9pYl91bWVt X29kcC5oCj4gaW5kZXggNmExN2Y4NTZmODQxLi4zODFjZGY1YTliZDEgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9yZG1hL2liX3VtZW1fb2RwLmgKPiArKysgYi9pbmNsdWRlL3JkbWEvaWJfdW1lbV9v ZHAuaAo+IEBAIC0xMTksNyArMTE5LDggQEAgdHlwZWRlZiBpbnQgKCp1bWVtX2NhbGxfYmFjayko c3RydWN0IGliX3VtZW0gKml0ZW0sIHU2NCBzdGFydCwgdTY0IGVuZCwKPiAgICAqLwo+ICAgaW50 IHJidF9pYl91bWVtX2Zvcl9lYWNoX2luX3JhbmdlKHN0cnVjdCByYl9yb290X2NhY2hlZCAqcm9v dCwKPiAgIAkJCQkgIHU2NCBzdGFydCwgdTY0IGVuZCwKPiAtCQkJCSAgdW1lbV9jYWxsX2JhY2sg Y2IsIHZvaWQgKmNvb2tpZSk7Cj4gKwkJCQkgIHVtZW1fY2FsbF9iYWNrIGNiLAo+ICsJCQkJICBi b29sIGJsb2NrYWJsZSwgdm9pZCAqY29va2llKTsKPiAgIAo+ICAgLyoKPiAgICAqIEZpbmQgZmly c3QgcmVnaW9uIGludGVyc2VjdGluZyB3aXRoIGFkZHJlc3MgcmFuZ2UuCj4gZGlmZiAtLWdpdCBh L21tL2htbS5jIGIvbW0vaG1tLmMKPiBpbmRleCBkZTdiNmJmNzcyMDEuLjgxZmQ1N2JkMjYzNCAx MDA2NDQKPiAtLS0gYS9tbS9obW0uYwo+ICsrKyBiL21tL2htbS5jCj4gQEAgLTE3NywxNiArMTc3 LDE5IEBAIHN0YXRpYyB2b2lkIGhtbV9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBz dHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgIAl1cF93cml0ZSgmaG1tLT5taXJyb3JzX3NlbSk7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaG1tX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0 IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQgaG1tX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4gICAJCQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLAo+ICAgCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0JCQkJICAgICAg IHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsJ CQkJICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBobW0gKmhtbSA9IG1t LT5obW07Cj4gICAKPiAgIAlWTV9CVUdfT04oIWhtbSk7Cj4gICAKPiAgIAlhdG9taWNfaW5jKCZo bW0tPnNlcXVlbmNlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZv aWQgaG1tX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+IGRp ZmYgLS1naXQgYS9tbS9tbWFwLmMgYi9tbS9tbWFwLmMKPiBpbmRleCBkMWViODdlZjRiMWEuLjMz NmJlZThjNGUyNSAxMDA2NDQKPiAtLS0gYS9tbS9tbWFwLmMKPiArKysgYi9tbS9tbWFwLmMKPiBA QCAtMzA3NCw3ICszMDc0LDcgQEAgdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqbW0p Cj4gICAJCSAqIHJlbGlhYmx5IHRlc3QgaXQuCj4gICAJCSAqLwo+ICAgCQltdXRleF9sb2NrKCZv b21fbG9jayk7Cj4gLQkJX19vb21fcmVhcF90YXNrX21tKG1tKTsKPiArCQkodm9pZClfX29vbV9y ZWFwX3Rhc2tfbW0obW0pOwo+ICAgCQltdXRleF91bmxvY2soJm9vbV9sb2NrKTsKPiAgIAo+ICAg CQlzZXRfYml0KE1NRl9PT01fU0tJUCwgJm1tLT5mbGFncyk7Cj4gZGlmZiAtLWdpdCBhL21tL21t dV9ub3RpZmllci5jIGIvbW0vbW11X25vdGlmaWVyLmMKPiBpbmRleCBlZmY2Yjg4YTk5M2YuLjEw M2IyYjQ1MDA0MyAxMDA2NDQKPiAtLS0gYS9tbS9tbXVfbm90aWZpZXIuYwo+ICsrKyBiL21tL21t dV9ub3RpZmllci5jCj4gQEAgLTE3NCwxOCArMTc0LDI5IEBAIHZvaWQgX19tbXVfbm90aWZpZXJf Y2hhbmdlX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAo+ ICAgCXNyY3VfcmVhZF91bmxvY2soJnNyY3UsIGlkKTsKPiAgIH0KPiAgIAo+IC12b2lkIF9fbW11 X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4g LQkJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICtpbnQgX19t bXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW1fc3RydWN0ICptbSwK PiArCQkJCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCj4gKwkJCQkg IGJvb2wgYmxvY2thYmxlKQo+ICAgewo+ICAgCXN0cnVjdCBtbXVfbm90aWZpZXIgKm1uOwo+ICsJ aW50IHJldCA9IDA7Cj4gICAJaW50IGlkOwo+ICAgCj4gICAJaWQgPSBzcmN1X3JlYWRfbG9jaygm c3JjdSk7Cj4gICAJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1uLCAmbW0tPm1tdV9ub3RpZmll cl9tbS0+bGlzdCwgaGxpc3QpIHsKPiAtCQlpZiAobW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9z dGFydCkKPiAtCQkJbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbiwgbW0sIHN0YXJ0 LCBlbmQpOwo+ICsJCWlmIChtbi0+b3BzLT5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KSB7Cj4gKwkJ CWludCBfcmV0ID0gbW4tPm9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydChtbiwgbW0sIHN0YXJ0 LCBlbmQsIGJsb2NrYWJsZSk7Cj4gKwkJCWlmIChfcmV0KSB7Cj4gKwkJCQlwcl9pbmZvKCIlcFMg Y2FsbGJhY2sgZmFpbGVkIHdpdGggJWQgaW4gJXNibG9ja2FibGUgY29udGV4dC5cbiIsCj4gKwkJ CQkJCW1uLT5vcHMtPmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQsIF9yZXQsCj4gKwkJCQkJCSFibG9j a2FibGUgPyAibm9uLSI6ICIiKTsKPiArCQkJCXJldCA9IF9yZXQ7Cj4gKwkJCX0KPiArCQl9Cj4g ICAJfQo+ICAgCXNyY3VfcmVhZF91bmxvY2soJnNyY3UsIGlkKTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICAgfQo+ICAgRVhQT1JUX1NZTUJPTF9HUEwoX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9y YW5nZV9zdGFydCk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9r aWxsLmMKPiBpbmRleCA4NDA4MWU3N2JjNTEuLjVhOTM2Y2YyNGQ3OSAxMDA2NDQKPiAtLS0gYS9t bS9vb21fa2lsbC5jCj4gKysrIGIvbW0vb29tX2tpbGwuYwo+IEBAIC00NzksOSArNDc5LDEwIEBA IHN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChvb21fcmVhcGVyX3dhaXQpOwo+ICAgc3Rh dGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqb29tX3JlYXBlcl9saXN0Owo+ICAgc3RhdGljIERFRklO RV9TUElOTE9DSyhvb21fcmVhcGVyX2xvY2spOwo+ICAgCj4gLXZvaWQgX19vb21fcmVhcF90YXNr X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICtib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1 Y3QgbW1fc3RydWN0ICptbSkKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsK PiArCWJvb2wgcmV0ID0gdHJ1ZTsKPiAgIAo+ICAgCS8qCj4gICAJICogVGVsbCBhbGwgdXNlcnMg b2YgZ2V0X3VzZXIvY29weV9mcm9tX3VzZXIgZXRjLi4uIHRoYXQgdGhlIGNvbnRlbnQKPiBAQCAt NTExLDEyICs1MTIsMTcgQEAgdm9pZCBfX29vbV9yZWFwX3Rhc2tfbW0oc3RydWN0IG1tX3N0cnVj dCAqbW0pCj4gICAJCQlzdHJ1Y3QgbW11X2dhdGhlciB0bGI7Cj4gICAKPiAgIAkJCXRsYl9nYXRo ZXJfbW11KCZ0bGIsIG1tLCBzdGFydCwgZW5kKTsKPiAtCQkJbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Vfc3RhcnQobW0sIHN0YXJ0LCBlbmQpOwo+ICsJCQlpZiAobW11X25vdGlmaWVyX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnRfbm9uYmxvY2sobW0sIHN0YXJ0LCBlbmQpKSB7Cj4gKwkJCQly ZXQgPSBmYWxzZTsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gICAJCQl1bm1hcF9wYWdlX3Jh bmdlKCZ0bGIsIHZtYSwgc3RhcnQsIGVuZCwgTlVMTCk7Cj4gICAJCQltbXVfbm90aWZpZXJfaW52 YWxpZGF0ZV9yYW5nZV9lbmQobW0sIHN0YXJ0LCBlbmQpOwo+ICAgCQkJdGxiX2ZpbmlzaF9tbXUo JnRsYiwgc3RhcnQsIGVuZCk7Cj4gICAJCX0KPiAgIAl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAg IH0KPiAgIAo+ICAgc3RhdGljIGJvb2wgb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gQEAgLTU0NSwxOCArNTUxLDYgQEAgc3Rh dGljIGJvb2wgb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0 IG1tX3N0cnVjdCAqbW0pCj4gICAJCWdvdG8gdW5sb2NrX29vbTsKPiAgIAl9Cj4gICAKPiAtCS8q Cj4gLQkgKiBJZiB0aGUgbW0gaGFzIGludmFsaWRhdGVfe3N0YXJ0LGVuZH0oKSBub3RpZmllcnMg dGhhdCBjb3VsZCBibG9jaywKPiAtCSAqIHNsZWVwIHRvIGdpdmUgdGhlIG9vbSB2aWN0aW0gc29t ZSBtb3JlIHRpbWUuCj4gLQkgKiBUT0RPOiB3ZSByZWFsbHkgd2FudCB0byBnZXQgcmlkIG9mIHRo aXMgdWdseSBoYWNrIGFuZCBtYWtlIHN1cmUgdGhhdAo+IC0JICogbm90aWZpZXJzIGNhbm5vdCBi bG9jayBmb3IgdW5ib3VuZGVkIGFtb3VudCBvZiB0aW1lCj4gLQkgKi8KPiAtCWlmIChtbV9oYXNf YmxvY2thYmxlX2ludmFsaWRhdGVfbm90aWZpZXJzKG1tKSkgewo+IC0JCXVwX3JlYWQoJm1tLT5t bWFwX3NlbSk7Cj4gLQkJc2NoZWR1bGVfdGltZW91dF9pZGxlKEhaKTsKPiAtCQlnb3RvIHVubG9j a19vb207Cj4gLQl9Cj4gLQo+ICAgCS8qCj4gICAJICogTU1GX09PTV9TS0lQIGlzIHNldCBieSBl eGl0X21tYXAgd2hlbiB0aGUgT09NIHJlYXBlciBjYW4ndAo+ICAgCSAqIHdvcmsgb24gdGhlIG1t IGFueW1vcmUuIFRoZSBjaGVjayBmb3IgTU1GX09PTV9TS0lQIG11c3QgcnVuCj4gQEAgLTU3MSw3 ICs1NjUsMTIgQEAgc3RhdGljIGJvb2wgb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gICAKPiAgIAl0cmFjZV9zdGFydF90YXNr X3JlYXBpbmcodHNrLT5waWQpOwo+ICAgCj4gLQlfX29vbV9yZWFwX3Rhc2tfbW0obW0pOwo+ICsJ LyogZmFpbGVkIHRvIHJlYXAgcGFydCBvZiB0aGUgYWRkcmVzcyBzcGFjZS4gVHJ5IGFnYWluIGxh dGVyICovCj4gKwlpZiAoIV9fb29tX3JlYXBfdGFza19tbShtbSkpIHsKPiArCQl1cF9yZWFkKCZt bS0+bW1hcF9zZW0pOwo+ICsJCXJldCA9IGZhbHNlOwo+ICsJCWdvdG8gdW5sb2NrX29vbTsKPiAr CX0KPiAgIAo+ICAgCXByX2luZm8oIm9vbV9yZWFwZXI6IHJlYXBlZCBwcm9jZXNzICVkICglcyks IG5vdyBhbm9uLXJzczolbHVrQiwgZmlsZS1yc3M6JWx1a0IsIHNobWVtLXJzczolbHVrQlxuIiwK PiAgIAkJCXRhc2tfcGlkX25yKHRzayksIHRzay0+Y29tbSwKPiBkaWZmIC0tZ2l0IGEvdmlydC9r dm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKPiBpbmRleCBhZGEyMWY0N2YyMmIu LjE2Y2UzOGYxNzhkMSAxMDA2NDQKPiAtLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCj4gKysrIGIv dmlydC9rdm0va3ZtX21haW4uYwo+IEBAIC0xMzUsOSArMTM1LDEwIEBAIHN0YXRpYyB2b2lkIGt2 bV91ZXZlbnRfbm90aWZ5X2NoYW5nZSh1bnNpZ25lZCBpbnQgdHlwZSwgc3RydWN0IGt2bSAqa3Zt KTsKPiAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcga3ZtX2NyZWF0ZXZtX2NvdW50Owo+ICAg c3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBrdm1fYWN0aXZlX3ZtczsKPiAgIAo+IC1fX3dlYWsg dm9pZCBrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShzdHJ1Y3Qga3ZtICpr dm0sCj4gLQkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gK19fd2Vh ayBpbnQga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Uoc3RydWN0IGt2bSAq a3ZtLAo+ICsJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBib29sIGJs b2NrYWJsZSkKPiAgIHsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICBib29sIGt2bV9pc19y ZXNlcnZlZF9wZm4oa3ZtX3Bmbl90IHBmbikKPiBAQCAtMzU0LDEzICszNTUsMTUgQEAgc3RhdGlj IHZvaWQga3ZtX21tdV9ub3RpZmllcl9jaGFuZ2VfcHRlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1u LAo+ICAgCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKPiAgIH0KPiAgIAo+IC1z dGF0aWMgdm9pZCBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0 IG1tdV9ub3RpZmllciAqbW4sCj4gK3N0YXRpYyBpbnQga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCQkJCQkJICAgIHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ICAgCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4g LQkJCQkJCSAgICB1bnNpZ25lZCBsb25nIGVuZCkKPiArCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcg ZW5kLAo+ICsJCQkJCQkgICAgYm9vbCBibG9ja2FibGUpCj4gICB7Cj4gICAJc3RydWN0IGt2bSAq a3ZtID0gbW11X25vdGlmaWVyX3RvX2t2bShtbik7Cj4gICAJaW50IG5lZWRfdGxiX2ZsdXNoID0g MCwgaWR4Owo+ICsJaW50IHJldDsKPiAgIAo+ICAgCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZrdm0t PnNyY3UpOwo+ICAgCXNwaW5fbG9jaygma3ZtLT5tbXVfbG9jayk7Cj4gQEAgLTM3OCw5ICszODEs MTEgQEAgc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0 KHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+ICAgCj4gICAJc3Bpbl91bmxvY2soJmt2bS0+bW11 X2xvY2spOwo+ICAgCj4gLQlrdm1fYXJjaF9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShr dm0sIHN0YXJ0LCBlbmQpOwo+ICsJcmV0ID0ga3ZtX2FyY2hfbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Uoa3ZtLCBzdGFydCwgZW5kLCBibG9ja2FibGUpOwo+ICAgCj4gICAJc3JjdV9yZWFk X3VubG9jaygma3ZtLT5zcmN1LCBpZHgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyB2b2lkIGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoc3Ry dWN0IG1tdV9ub3RpZmllciAqbW4sCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==