From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] dma-buf: Restore seqlock around dma_resv updates Date: Wed, 14 Aug 2019 22:07:42 +0200 Message-ID: <20190814200742.GX7444@phenom.ffwll.local> References: <20190814182401.25009-1-chris@chris-wilson.co.uk> <156580720475.2301.10315695252933421468@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id EEB6E6E827 for ; Wed, 14 Aug 2019 20:07:46 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id z51so295845edz.13 for ; Wed, 14 Aug 2019 13:07:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <156580720475.2301.10315695252933421468@skylake-alporthouse-com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, Christian =?iso-8859-1?Q?K=F6nig?= , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMDc6MjY6NDRQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFF1b3RpbmcgQ2hyaXMgV2lsc29uICgyMDE5LTA4LTE0IDE5OjI0OjAxKQo+ID4gVGhp cyByZXZlcnRzCj4gPiA2N2M5N2ZiNzlhN2YgKCJkbWEtYnVmOiBhZGQgcmVzZXJ2YXRpb25fb2Jq ZWN0X2ZlbmNlcyBoZWxwZXIiKQo+ID4gZGQ3YTdkMWZmMmYxICgiZHJtL2k5MTU6IHVzZSBuZXcg cmVzZXJ2YXRpb25fb2JqZWN0X2ZlbmNlcyBoZWxwZXIiKQo+ID4gMGUxZDgwODNiZGRiICgiZG1h LWJ1ZjogZnVydGhlciByZWxheCByZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZSIp Cj4gPiA1ZDM0NGY1OGRhNzYgKCJkbWEtYnVmOiBudWtlIHJlc2VydmF0aW9uX29iamVjdCBzZXEg bnVtYmVyIikKCk9oIEkgZGlkbid0IHJlYWxpemUgdGhleSBsYW5kZWQgYWxyZWFkeS4KCj4gPiBU aGUgc2NlbmFyaW8gdGhhdCBkZWZlYXRzIHNpbXBseSBncmFiYmluZyBhIHNldCBvZiBzaGFyZWQv ZXhjbHVzaXZlCj4gPiBmZW5jZXMgYW5kIHVzaW5nIHRoZW0gYmxpc3NmdWxseSB1bmRlciBSQ1Ug aXMgdGhhdCBhbnkgb2YgdGhvc2UgZmVuY2VzCj4gPiBtYXkgYmUgcmVhbGxvY2F0ZWQgYnkgYSBT TEFCX1RZUEVTQUZFX0JZX1JDVSBmZW5jZSBzbGFiIGNhY2hlLiBJbiB0aGlzCj4gPiBzY2VuYXJp bywgd2hpbGUga2VlcGluZyB0aGUgcmN1X3JlYWRfbG9jayB3ZSBuZWVkIHRvIGVzdGFibGlzaCB0 aGF0IG5vCj4gPiBmZW5jZSB3YXMgY2hhbmdlZCBpbiB0aGUgZG1hX3Jlc3YgYWZ0ZXIgYSByZWFk IChvciBmdWxsKSBtZW1vcnkgYmFycmllci4KClNvIGlmIEknbSByZWFkaW5nIGNvcnJlY3RseSB3 aGF0IENocmlzIGlzIHNheWluZyBoZXJlIEkgZ3Vlc3MgbXkgaGFsZgpjb21tZW50IGluIHRoYXQg b3RoZXIgdGhyZWFkIHBvaW50ZWQgYXQgYSByZWFsIG92ZXJzaWdodC4gU2luY2UgSSBzdGlsbApo YXZlbid0IGNoZWNrZWQgYW5kIGl0J3MgdG9vIGxhdGUgZm9yIHJlYWwgcmV2aWV3IG5vdCBtb3Jl IGZvciBub3cuCgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KPiAKPiBJIHNhaWQgSSBuZWVkZWQgdG8gZ28gbGllIGRvd24sIHRoYXQgcHJvdmVz IGl0LgoKWWVhaCBJIGd1ZXNzIHdlIG5lZWQgdG8gd2FpdCBmb3IgQ2hyaXN0aWFuIHRvIHdha2Ug dXAgYW4gaGF2ZSBhIHdvcmtpbmcKYnJhaW4uCi1EYW5pZWwKCj4gCj4gQ2M6IENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiAKPiA+IENjOiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYyAgICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKystCj4gPiAgZHJpdmVycy9kbWEt YnVmL2RtYS1yZXN2LmMgICAgICAgICAgICAgICAgICAgIHwgMTA5ICsrKysrKysrKysrKy0tLS0t Cj4gPiAgLi4uL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgIHwgICA3 ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYyAgICAgIHwg IDI0ICsrLS0KPiA+ICBpbmNsdWRlL2xpbnV4L2RtYS1yZXN2LmggICAgICAgICAgICAgICAgICAg ICAgfCAxMTMgKysrKysrKystLS0tLS0tLS0tCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5z ZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiA+IGluZGV4 IGIzNDAwZDY1MjRhYi4uNDMzZDkxZDcxMGU0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9kbWEt YnVmL2RtYS1idWYuYwo+ID4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ID4gQEAg LTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgX19wb2xsX3QgZG1hX2J1Zl9wb2xsKHN0cnVjdCBmaWxl ICpmaWxlLCBwb2xsX3RhYmxlICpwb2xsKQo+ID4gICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3ZfbGlz dCAqZm9iajsKPiA+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2VfZXhjbDsKPiA+ICAg ICAgICAgX19wb2xsX3QgZXZlbnRzOwo+ID4gLSAgICAgICB1bnNpZ25lZCBzaGFyZWRfY291bnQ7 Cj4gPiArICAgICAgIHVuc2lnbmVkIHNoYXJlZF9jb3VudCwgc2VxOwo+ID4gIAo+ID4gICAgICAg ICBkbWFidWYgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gPiAgICAgICAgIGlmICghZG1hYnVmIHx8 ICFkbWFidWYtPnJlc3YpCj4gPiBAQCAtMjEzLDggKzIxMywyMSBAQCBzdGF0aWMgX19wb2xsX3Qg ZG1hX2J1Zl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICpwb2xsKQo+ID4gICAg ICAgICBpZiAoIWV2ZW50cykKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICAKPiA+ ICtyZXRyeToKPiA+ICsgICAgICAgc2VxID0gcmVhZF9zZXFjb3VudF9iZWdpbigmcmVzdi0+c2Vx KTsKPiA+ICAgICAgICAgcmN1X3JlYWRfbG9jaygpOwo+ID4gLSAgICAgICBkbWFfcmVzdl9mZW5j ZXMocmVzdiwgJmZlbmNlX2V4Y2wsICZmb2JqLCAmc2hhcmVkX2NvdW50KTsKPiA+ICsKPiA+ICsg ICAgICAgZm9iaiA9IHJjdV9kZXJlZmVyZW5jZShyZXN2LT5mZW5jZSk7Cj4gPiArICAgICAgIGlm IChmb2JqKQo+ID4gKyAgICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9IGZvYmotPnNoYXJlZF9j b3VudDsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9 IDA7Cj4gPiArICAgICAgIGZlbmNlX2V4Y2wgPSByY3VfZGVyZWZlcmVuY2UocmVzdi0+ZmVuY2Vf ZXhjbCk7Cj4gPiArICAgICAgIGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZyZXN2LT5zZXEsIHNl cSkpIHsKPiA+ICsgICAgICAgICAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiA+ICsgICAgICAg ICAgICAgICBnb3RvIHJldHJ5Owo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiAgICAgICAgIGlmIChm ZW5jZV9leGNsICYmICghKGV2ZW50cyAmIEVQT0xMT1VUKSB8fCBzaGFyZWRfY291bnQgPT0gMCkp IHsKPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9wb2xsX2NiX3QgKmRjYiA9ICZk bWFidWYtPmNiX2V4Y2w7Cj4gPiAgICAgICAgICAgICAgICAgX19wb2xsX3QgcGV2ZW50cyA9IEVQ T0xMSU47Cj4gPiBAQCAtMTE0NCw2ICsxMTU3LDcgQEAgc3RhdGljIGludCBkbWFfYnVmX2RlYnVn X3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpCj4gPiAgICAgICAgIHN0cnVj dCBkbWFfcmVzdiAqcm9iajsKPiA+ICAgICAgICAgc3RydWN0IGRtYV9yZXN2X2xpc3QgKmZvYmo7 Cj4gPiAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ID4gKyAgICAgICB1bnNpZ25l ZCBzZXE7Cj4gPiAgICAgICAgIGludCBjb3VudCA9IDAsIGF0dGFjaF9jb3VudCwgc2hhcmVkX2Nv dW50LCBpOwo+ID4gICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7Cj4gPiAgCj4gPiBAQCAtMTE3NCw5 ICsxMTg4LDE2IEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9kZWJ1Z19zaG93KHN0cnVjdCBzZXFfZmls ZSAqcywgdm9pZCAqdW51c2VkKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZfb2JqLT5uYW1lID86ICIiKTsKPiA+ICAKPiA+ICAgICAgICAgICAgICAgICByb2JqID0gYnVm X29iai0+cmVzdjsKPiA+IC0gICAgICAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7Cj4gPiAtICAg ICAgICAgICAgICAgZG1hX3Jlc3ZfZmVuY2VzKHJvYmosICZmZW5jZSwgJmZvYmosICZzaGFyZWRf Y291bnQpOwo+ID4gLSAgICAgICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOwo+ID4gKyAgICAg ICAgICAgICAgIHdoaWxlICh0cnVlKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzZXEg PSByZWFkX3NlcWNvdW50X2JlZ2luKCZyb2JqLT5zZXEpOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmN1X3JlYWRfbG9jaygpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZm9iaiA9 IHJjdV9kZXJlZmVyZW5jZShyb2JqLT5mZW5jZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBzaGFyZWRfY291bnQgPSBmb2JqID8gZm9iai0+c2hhcmVkX2NvdW50IDogMDsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGZlbmNlID0gcmN1X2RlcmVmZXJlbmNlKHJvYmotPmZlbmNlX2V4 Y2wpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWFkX3NlcWNvdW50X3JldHJ5 KCZyb2JqLT5zZXEsIHNlcSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4gPiAr ICAgICAgICAgICAgICAgfQo+ID4gIAo+ID4gICAgICAgICAgICAgICAgIGlmIChmZW5jZSkKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcV9wcmludGYocywgIlx0RXhjbHVzaXZlIGZlbmNl OiAlcyAlcyAlc3NpZ25hbGxlZFxuIiwKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYv ZG1hLXJlc3YuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jCj4gPiBpbmRleCBmNTE0MjY4 M2M4NTEuLjQyYThmM2YxMTY4MSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEt cmVzdi5jCj4gPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYwo+ID4gQEAgLTQ5LDYg KzQ5LDEyIEBACj4gPiAgREVGSU5FX1dEX0NMQVNTKHJlc2VydmF0aW9uX3d3X2NsYXNzKTsKPiA+ ICBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3d3X2NsYXNzKTsKPiA+ICAKPiA+ICtzdHJ1Y3Qg bG9ja19jbGFzc19rZXkgcmVzZXJ2YXRpb25fc2VxY291bnRfY2xhc3M7Cj4gPiArRVhQT1JUX1NZ TUJPTChyZXNlcnZhdGlvbl9zZXFjb3VudF9jbGFzcyk7Cj4gPiArCj4gPiArY29uc3QgY2hhciBy ZXNlcnZhdGlvbl9zZXFjb3VudF9zdHJpbmdbXSA9ICJyZXNlcnZhdGlvbl9zZXFjb3VudCI7Cj4g PiArRVhQT1JUX1NZTUJPTChyZXNlcnZhdGlvbl9zZXFjb3VudF9zdHJpbmcpOwo+ID4gKwo+ID4g IC8qKgo+ID4gICAqIGRtYV9yZXN2X2xpc3RfYWxsb2MgLSBhbGxvY2F0ZSBmZW5jZSBsaXN0Cj4g PiAgICogQHNoYXJlZF9tYXg6IG51bWJlciBvZiBmZW5jZXMgd2UgbmVlZCBzcGFjZSBmb3IKPiA+ IEBAIC05Niw2ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBkbWFfcmVzdl9saXN0X2ZyZWUoc3RydWN0 IGRtYV9yZXN2X2xpc3QgKmxpc3QpCj4gPiAgdm9pZCBkbWFfcmVzdl9pbml0KHN0cnVjdCBkbWFf cmVzdiAqb2JqKQo+ID4gIHsKPiA+ICAgICAgICAgd3dfbXV0ZXhfaW5pdCgmb2JqLT5sb2NrLCAm cmVzZXJ2YXRpb25fd3dfY2xhc3MpOwo+ID4gKwo+ID4gKyAgICAgICBfX3NlcWNvdW50X2luaXQo Jm9iai0+c2VxLCByZXNlcnZhdGlvbl9zZXFjb3VudF9zdHJpbmcsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAmcmVzZXJ2YXRpb25fc2VxY291bnRfY2xhc3MpOwo+ID4gICAgICAgICBSQ1Vf SU5JVF9QT0lOVEVSKG9iai0+ZmVuY2UsIE5VTEwpOwo+ID4gICAgICAgICBSQ1VfSU5JVF9QT0lO VEVSKG9iai0+ZmVuY2VfZXhjbCwgTlVMTCk7Cj4gPiAgfQo+ID4gQEAgLTIyNSw2ICsyMzQsOSBA QCB2b2lkIGRtYV9yZXN2X2FkZF9zaGFyZWRfZmVuY2Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ID4gICAgICAgICBmb2JqID0gZG1hX3Jlc3ZfZ2V0X2xp c3Qob2JqKTsKPiA+ICAgICAgICAgY291bnQgPSBmb2JqLT5zaGFyZWRfY291bnQ7Cj4gPiAgCj4g PiArICAgICAgIHByZWVtcHRfZGlzYWJsZSgpOwo+ID4gKyAgICAgICB3cml0ZV9zZXFjb3VudF9i ZWdpbigmb2JqLT5zZXEpOwo+ID4gKwo+ID4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7 ICsraSkgewo+ID4gIAo+ID4gICAgICAgICAgICAgICAgIG9sZCA9IHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQoZm9iai0+c2hhcmVkW2ldLAo+ID4gQEAgLTI0Miw2ICsyNTQsOSBAQCB2b2lkIGRt YV9yZXN2X2FkZF9zaGFyZWRfZmVuY2Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlKQo+ID4gICAgICAgICBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFtp XSwgZmVuY2UpOwo+ID4gICAgICAgICAvKiBwb2ludGVyIHVwZGF0ZSBtdXN0IGJlIHZpc2libGUg YmVmb3JlIHdlIGV4dGVuZCB0aGUgc2hhcmVkX2NvdW50ICovCj4gPiAgICAgICAgIHNtcF9zdG9y ZV9tYihmb2JqLT5zaGFyZWRfY291bnQsIGNvdW50KTsKPiA+ICsKPiA+ICsgICAgICAgd3JpdGVf c2VxY291bnRfZW5kKCZvYmotPnNlcSk7Cj4gPiArICAgICAgIHByZWVtcHRfZW5hYmxlKCk7Cj4g PiAgICAgICAgIGRtYV9mZW5jZV9wdXQob2xkKTsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChk bWFfcmVzdl9hZGRfc2hhcmVkX2ZlbmNlKTsKPiA+IEBAIC0yNjksMTAgKzI4NCwxMiBAQCB2b2lk IGRtYV9yZXN2X2FkZF9leGNsX2ZlbmNlKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZSkKPiA+ICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsK PiA+ICAKPiA+ICAgICAgICAgcHJlZW1wdF9kaXNhYmxlKCk7Cj4gPiAtICAgICAgIHJjdV9hc3Np Z25fcG9pbnRlcihvYmotPmZlbmNlX2V4Y2wsIGZlbmNlKTsKPiA+IC0gICAgICAgLyogcG9pbnRl ciB1cGRhdGUgbXVzdCBiZSB2aXNpYmxlIGJlZm9yZSB3ZSBtb2RpZnkgdGhlIHNoYXJlZF9jb3Vu dCAqLwo+ID4gKyAgICAgICB3cml0ZV9zZXFjb3VudF9iZWdpbigmb2JqLT5zZXEpOwo+ID4gKyAg ICAgICAvKiB3cml0ZV9zZXFjb3VudF9iZWdpbiBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IG1lbW9y eSBiYXJyaWVyICovCj4gPiArICAgICAgIFJDVV9JTklUX1BPSU5URVIob2JqLT5mZW5jZV9leGNs LCBmZW5jZSk7Cj4gPiAgICAgICAgIGlmIChvbGQpCj4gPiAtICAgICAgICAgICAgICAgc21wX3N0 b3JlX21iKG9sZC0+c2hhcmVkX2NvdW50LCAwKTsKPiA+ICsgICAgICAgICAgICAgICBvbGQtPnNo YXJlZF9jb3VudCA9IDA7Cj4gPiArICAgICAgIHdyaXRlX3NlcWNvdW50X2VuZCgmb2JqLT5zZXEp Owo+ID4gICAgICAgICBwcmVlbXB0X2VuYWJsZSgpOwo+ID4gIAo+ID4gICAgICAgICAvKiBpbnBs YWNlIHVwZGF0ZSwgbm8gc2hhcmVkIGZlbmNlcyAqLwo+ID4gQEAgLTI5NSwxNSArMzEyLDE3IEBA IGludCBkbWFfcmVzdl9jb3B5X2ZlbmNlcyhzdHJ1Y3QgZG1hX3Jlc3YgKmRzdCwgc3RydWN0IGRt YV9yZXN2ICpzcmMpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAqc3Jj X2xpc3QsICpkc3RfbGlzdDsKPiA+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqb2xkLCAqbmV3 Owo+ID4gLSAgICAgICB1bnNpZ25lZCBpbnQgaSwgc2hhcmVkX2NvdW50Owo+ID4gKyAgICAgICB1 bnNpZ25lZCBpOwo+ID4gIAo+ID4gICAgICAgICBkbWFfcmVzdl9hc3NlcnRfaGVsZChkc3QpOwo+ ID4gIAo+ID4gICAgICAgICByY3VfcmVhZF9sb2NrKCk7Cj4gPiArICAgICAgIHNyY19saXN0ID0g cmN1X2RlcmVmZXJlbmNlKHNyYy0+ZmVuY2UpOwo+ID4gIAo+ID4gIHJldHJ5Ogo+ID4gLSAgICAg ICBkbWFfcmVzdl9mZW5jZXMoc3JjLCAmbmV3LCAmc3JjX2xpc3QsICZzaGFyZWRfY291bnQpOwo+ ID4gLSAgICAgICBpZiAoc2hhcmVkX2NvdW50KSB7Cj4gPiArICAgICAgIGlmIChzcmNfbGlzdCkg ewo+ID4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIHNoYXJlZF9jb3VudCA9IHNyY19saXN0LT5z aGFyZWRfY291bnQ7Cj4gPiArCj4gPiAgICAgICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7 Cj4gPiAgCj4gPiAgICAgICAgICAgICAgICAgZHN0X2xpc3QgPSBkbWFfcmVzdl9saXN0X2FsbG9j KHNoYXJlZF9jb3VudCk7Cj4gPiBAQCAtMzExLDE0ICszMzAsMTQgQEAgaW50IGRtYV9yZXN2X2Nv cHlfZmVuY2VzKHN0cnVjdCBkbWFfcmVzdiAqZHN0LCBzdHJ1Y3QgZG1hX3Jlc3YgKnNyYykKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gIAo+ID4gICAgICAg ICAgICAgICAgIHJjdV9yZWFkX2xvY2soKTsKPiA+IC0gICAgICAgICAgICAgICBkbWFfcmVzdl9m ZW5jZXMoc3JjLCAmbmV3LCAmc3JjX2xpc3QsICZzaGFyZWRfY291bnQpOwo+ID4gLSAgICAgICAg ICAgICAgIGlmICghc3JjX2xpc3QgfHwgc2hhcmVkX2NvdW50ID4gZHN0X2xpc3QtPnNoYXJlZF9t YXgpIHsKPiA+ICsgICAgICAgICAgICAgICBzcmNfbGlzdCA9IHJjdV9kZXJlZmVyZW5jZShzcmMt PmZlbmNlKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoIXNyY19saXN0IHx8IHNyY19saXN0LT5z aGFyZWRfY291bnQgPiBzaGFyZWRfY291bnQpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IGtmcmVlKGRzdF9saXN0KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7 Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gIAo+ID4gICAgICAgICAgICAgICAgIGRzdF9saXN0 LT5zaGFyZWRfY291bnQgPSAwOwo+ID4gLSAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBz aGFyZWRfY291bnQ7ICsraSkgewo+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBz cmNfbGlzdC0+c2hhcmVkX2NvdW50OyArK2kpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ID4gIAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgZmVuY2UgPSByY3VfZGVyZWZlcmVuY2Uoc3JjX2xpc3QtPnNoYXJlZFtpXSk7Cj4gPiBAQCAt MzI4LDYgKzM0Nyw3IEBAIGludCBkbWFfcmVzdl9jb3B5X2ZlbmNlcyhzdHJ1Y3QgZG1hX3Jlc3Yg KmRzdCwgc3RydWN0IGRtYV9yZXN2ICpzcmMpCj4gPiAgCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIWRtYV9mZW5jZV9nZXRfcmN1KGZlbmNlKSkgewo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbWFfcmVzdl9saXN0X2ZyZWUoZHN0X2xpc3QpOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfbGlzdCA9IHJjdV9kZXJlZmVyZW5jZShzcmMt PmZlbmNlKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXRyeTsK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICAKPiA+IEBAIC0zNDIsMTggKzM2Miwx OCBAQCBpbnQgZG1hX3Jlc3ZfY29weV9mZW5jZXMoc3RydWN0IGRtYV9yZXN2ICpkc3QsIHN0cnVj dCBkbWFfcmVzdiAqc3JjKQo+ID4gICAgICAgICAgICAgICAgIGRzdF9saXN0ID0gTlVMTDsKPiA+ ICAgICAgICAgfQo+ID4gIAo+ID4gLSAgICAgICBpZiAobmV3ICYmICFkbWFfZmVuY2VfZ2V0X3Jj dShuZXcpKSB7Cj4gPiAtICAgICAgICAgICAgICAgZG1hX3Jlc3ZfbGlzdF9mcmVlKGRzdF9saXN0 KTsKPiA+IC0gICAgICAgICAgICAgICBnb3RvIHJldHJ5Owo+ID4gLSAgICAgICB9Cj4gPiArICAg ICAgIG5ldyA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnNyYy0+ZmVuY2VfZXhjbCk7Cj4gPiAg ICAgICAgIHJjdV9yZWFkX3VubG9jaygpOwo+ID4gIAo+ID4gICAgICAgICBzcmNfbGlzdCA9IGRt YV9yZXN2X2dldF9saXN0KGRzdCk7Cj4gPiAgICAgICAgIG9sZCA9IGRtYV9yZXN2X2dldF9leGNs KGRzdCk7Cj4gPiAgCj4gPiAgICAgICAgIHByZWVtcHRfZGlzYWJsZSgpOwo+ID4gLSAgICAgICBy Y3VfYXNzaWduX3BvaW50ZXIoZHN0LT5mZW5jZV9leGNsLCBuZXcpOwo+ID4gLSAgICAgICByY3Vf YXNzaWduX3BvaW50ZXIoZHN0LT5mZW5jZSwgZHN0X2xpc3QpOwo+ID4gKyAgICAgICB3cml0ZV9z ZXFjb3VudF9iZWdpbigmZHN0LT5zZXEpOwo+ID4gKyAgICAgICAvKiB3cml0ZV9zZXFjb3VudF9i ZWdpbiBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IG1lbW9yeSBiYXJyaWVyICovCj4gPiArICAgICAg IFJDVV9JTklUX1BPSU5URVIoZHN0LT5mZW5jZV9leGNsLCBuZXcpOwo+ID4gKyAgICAgICBSQ1Vf SU5JVF9QT0lOVEVSKGRzdC0+ZmVuY2UsIGRzdF9saXN0KTsKPiA+ICsgICAgICAgd3JpdGVfc2Vx Y291bnRfZW5kKCZkc3QtPnNlcSk7Cj4gPiAgICAgICAgIHByZWVtcHRfZW5hYmxlKCk7Cj4gPiAg Cj4gPiAgICAgICAgIGRtYV9yZXN2X2xpc3RfZnJlZShzcmNfbGlzdCk7Cj4gPiBAQCAtMzg4LDE4 ICs0MDgsMTkgQEAgaW50IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHN0cnVjdCBkbWFfcmVzdiAq b2JqLAo+ID4gIAo+ID4gICAgICAgICBkbyB7Cj4gPiAgICAgICAgICAgICAgICAgc3RydWN0IGRt YV9yZXN2X2xpc3QgKmZvYmo7Cj4gPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Cj4g PiArICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGksIHNlcTsKPiA+ICAgICAgICAgICAgICAg ICBzaXplX3Qgc3ogPSAwOwo+ID4gIAo+ID4gLSAgICAgICAgICAgICAgIGkgPSAwOwo+ID4gKyAg ICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9IGkgPSAwOwo+ID4gIAo+ID4gICAgICAgICAgICAg ICAgIHJjdV9yZWFkX2xvY2soKTsKPiA+IC0gICAgICAgICAgICAgICBkbWFfcmVzdl9mZW5jZXMo b2JqLCAmZmVuY2VfZXhjbCwgJmZvYmosCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmc2hhcmVkX2NvdW50KTsKPiA+ICsgICAgICAgICAgICAgICBzZXEgPSBy ZWFkX3NlcWNvdW50X2JlZ2luKCZvYmotPnNlcSk7Cj4gPiAgCj4gPiArICAgICAgICAgICAgICAg ZmVuY2VfZXhjbCA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlX2V4Y2wpOwo+ID4gICAgICAg ICAgICAgICAgIGlmIChmZW5jZV9leGNsICYmICFkbWFfZmVuY2VfZ2V0X3JjdShmZW5jZV9leGNs KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrOwo+ID4gIAo+ID4gKyAg ICAgICAgICAgICAgIGZvYmogPSByY3VfZGVyZWZlcmVuY2Uob2JqLT5mZW5jZSk7Cj4gPiAgICAg ICAgICAgICAgICAgaWYgKGZvYmopCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzeiArPSBz aXplb2YoKnNoYXJlZCkgKiBmb2JqLT5zaGFyZWRfbWF4Owo+ID4gIAo+ID4gQEAgLTQyNyw2ICs0 NDgsNyBAQCBpbnQgZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmos Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkID0gbnNo YXJlZDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9IGZvYmogPyBm b2JqLT5zaGFyZWRfY291bnQgOiAwOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChp ID0gMDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNoYXJlZFtpXSA9IHJjdV9kZXJlZmVyZW5jZShmb2JqLT5zaGFyZWRbaV0pOwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRtYV9mZW5jZV9nZXRfcmN1 KHNoYXJlZFtpXSkpCj4gPiBAQCAtNDM0LDcgKzQ1Niw3IEBAIGludCBkbWFfcmVzdl9nZXRfZmVu Y2VzX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IH0KPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgCj4gPiAtICAgICAgICAgICAgICAgaWYgKGkg IT0gc2hhcmVkX2NvdW50KSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGkgIT0gc2hhcmVkX2Nv dW50IHx8IHJlYWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBzZXEpKSB7Cj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkbWFfZmVuY2VfcHV0KHNoYXJlZFtpXSk7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlX2V4Y2wpOwo+ID4gQEAgLTQ3OCwxNyArNTAwLDE4IEBA IGxvbmcgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHdhaXRfYWxsLCBib29sIGludHIs Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0 KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGRtYV9yZXN2X2xpc3QgKmZvYmo7Cj4gPiAgICAg ICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ID4gLSAgICAgICB1bnNpZ25lZCBzaGFyZWRf Y291bnQ7Cj4gPiArICAgICAgIHVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50Owo+ID4gICAgICAg ICBsb25nIHJldCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogMTsKPiA+ICAgICAgICAgaW50IGk7Cj4g PiAgCj4gPiAgcmV0cnk6Cj4gPiArICAgICAgIHNoYXJlZF9jb3VudCA9IDA7Cj4gPiArICAgICAg IHNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsKPiA+ICAgICAgICAgcmN1X3Jl YWRfbG9jaygpOwo+ID4gICAgICAgICBpID0gLTE7Cj4gPiAgCj4gPiAtICAgICAgIGRtYV9yZXN2 X2ZlbmNlcyhvYmosICZmZW5jZSwgJmZvYmosICZzaGFyZWRfY291bnQpOwo+ID4gKyAgICAgICBm ZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlX2V4Y2wpOwo+ID4gICAgICAgICBpZiAo ZmVuY2UgJiYgIXRlc3RfYml0KERNQV9GRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwgJmZlbmNlLT5m bGFncykpIHsKPiA+ICAgICAgICAgICAgICAgICBpZiAoIWRtYV9mZW5jZV9nZXRfcmN1KGZlbmNl KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrX3JldHJ5Owo+ID4gQEAg LTUwMyw2ICs1MjYsMTEgQEAgbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCBk bWFfcmVzdiAqb2JqLAo+ID4gICAgICAgICB9Cj4gPiAgCj4gPiAgICAgICAgIGlmICh3YWl0X2Fs bCkgewo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpmb2JqID0gcmN1 X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2UpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGlmIChm b2JqKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX2NvdW50ID0gZm9iai0+c2hh cmVkX2NvdW50Owo+ID4gKwo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7ICFmZW5jZSAm JiBpIDwgc2hhcmVkX2NvdW50OyArK2kpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkbWFfZmVuY2UgKmxmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShmb2JqLT5zaGFyZWRbaV0p Owo+ID4gIAo+ID4gQEAgLTUyNSw2ICs1NTMsMTEgQEAgbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVv dXRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLAo+ID4gIAo+ID4gICAgICAgICByY3VfcmVhZF91 bmxvY2soKTsKPiA+ICAgICAgICAgaWYgKGZlbmNlKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYg KHJlYWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBzZXEpKSB7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gcmV0cnk7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKwo+ID4gICAgICAgICAg ICAgICAgIHJldCA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZmVuY2UsIGludHIsIHJldCk7Cj4g PiAgICAgICAgICAgICAgICAgZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4gPiAgICAgICAgICAgICAg ICAgaWYgKHJldCA+IDAgJiYgd2FpdF9hbGwgJiYgKGkgKyAxIDwgc2hhcmVkX2NvdW50KSkKPiA+ IEBAIC01NjcsMTkgKzYwMCwyMyBAQCBzdGF0aWMgaW5saW5lIGludCBkbWFfcmVzdl90ZXN0X3Np Z25hbGVkX3NpbmdsZShzdHJ1Y3QgZG1hX2ZlbmNlICpwYXNzZWRfZmVuY2UpCj4gPiAgICovCj4g PiAgYm9vbCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwg Ym9vbCB0ZXN0X2FsbCkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpm b2JqOwo+ID4gLSAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZV9leGNsOwo+ID4gLSAgICAg ICB1bnNpZ25lZCBzaGFyZWRfY291bnQ7Cj4gPiArICAgICAgIHVuc2lnbmVkIHNlcSwgc2hhcmVk X2NvdW50Owo+ID4gICAgICAgICBpbnQgcmV0Owo+ID4gIAo+ID4gICAgICAgICByY3VfcmVhZF9s b2NrKCk7Cj4gPiAgcmV0cnk6Cj4gPiAgICAgICAgIHJldCA9IHRydWU7Cj4gPiArICAgICAgIHNo YXJlZF9jb3VudCA9IDA7Cj4gPiArICAgICAgIHNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm9i ai0+c2VxKTsKPiA+ICAKPiA+IC0gICAgICAgZG1hX3Jlc3ZfZmVuY2VzKG9iaiwgJmZlbmNlX2V4 Y2wsICZmb2JqLCAmc2hhcmVkX2NvdW50KTsKPiA+ICAgICAgICAgaWYgKHRlc3RfYWxsKSB7Cj4g PiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaTsKPiA+ICAKPiA+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAqZm9iaiA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlKTsK PiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZm9iaikKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHNoYXJlZF9jb3VudCA9IGZvYmotPnNoYXJlZF9jb3VudDsKPiA+ICsKPiA+ICAgICAg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcmVkX2NvdW50OyArK2kpIHsKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gcmN1X2RlcmVmZXJl bmNlKGZvYmotPnNoYXJlZFtpXSk7Cj4gPiAgCj4gPiBAQCAtNTg5LDE0ICs2MjYsMjQgQEAgYm9v bCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgYm9vbCB0 ZXN0X2FsbCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFyZXQpCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICAgICAgICAg IH0KPiA+IC0gICAgICAgfQo+ID4gIAo+ID4gLSAgICAgICBpZiAoIXNoYXJlZF9jb3VudCAmJiBm ZW5jZV9leGNsKSB7Cj4gPiAtICAgICAgICAgICAgICAgcmV0ID0gZG1hX3Jlc3ZfdGVzdF9zaWdu YWxlZF9zaW5nbGUoZmVuY2VfZXhjbCk7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKHJldCA8IDAp Cj4gPiArICAgICAgICAgICAgICAgaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBz ZXEpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXRyeTsKPiA+ICAgICAgICAg fQo+ID4gIAo+ID4gKyAgICAgICBpZiAoIXNoYXJlZF9jb3VudCkgewo+ID4gKyAgICAgICAgICAg ICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlX2V4Y2wgPSByY3VfZGVyZWZlcmVuY2Uob2JqLT5m ZW5jZV9leGNsKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZmVuY2VfZXhjbCkgewo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9z aW5nbGUoZmVuY2VfZXhjbCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwg MCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXRyeTsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZvYmot PnNlcSwgc2VxKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXRy eTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICAgICAgICAg cmN1X3JlYWRfdW5sb2NrKCk7Cj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwo+ID4g aW5kZXggYmM0ZWM2YjIwYTg3Li43NmUzNTE2NDg0ZTcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwo+ID4gQEAgLTI1MSw3 ICsyNTEsMTIgQEAgc3RhdGljIGludCBhbWRncHVfYW1ka2ZkX3JlbW92ZV9ldmljdGlvbl9mZW5j ZShzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPiA+ICAgICAgICAgbmV3LT5zaGFyZWRfbWF4ID0gb2xk LT5zaGFyZWRfbWF4Owo+ID4gICAgICAgICBuZXctPnNoYXJlZF9jb3VudCA9IGs7Cj4gPiAgCj4g PiAtICAgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihyZXN2LT5mZW5jZSwgbmV3KTsKPiA+ICsgICAg ICAgLyogSW5zdGFsbCB0aGUgbmV3IGZlbmNlIGxpc3QsIHNlcWNvdW50IHByb3ZpZGVzIHRoZSBi YXJyaWVycyAqLwo+ID4gKyAgICAgICBwcmVlbXB0X2Rpc2FibGUoKTsKPiA+ICsgICAgICAgd3Jp dGVfc2VxY291bnRfYmVnaW4oJnJlc3YtPnNlcSk7Cj4gPiArICAgICAgIFJDVV9JTklUX1BPSU5U RVIocmVzdi0+ZmVuY2UsIG5ldyk7Cj4gPiArICAgICAgIHdyaXRlX3NlcWNvdW50X2VuZCgmcmVz di0+c2VxKTsKPiA+ICsgICAgICAgcHJlZW1wdF9lbmFibGUoKTsKPiA+ICAKPiA+ICAgICAgICAg LyogRHJvcCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgcmVtb3ZlZCBmZW5jZXMgb3IgbW92ZSB0aGVt IHRvIGVmX2xpc3QgKi8KPiA+ICAgICAgICAgZm9yIChpID0gaiwgayA9IDA7IGkgPCBvbGQtPnNo YXJlZF9jb3VudDsgKytpKSB7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2J1c3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9i dXN5LmMKPiA+IGluZGV4IGEyYWZmMWQ4MjkwZS4uM2Q0ZjU3NzVhNGJhIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYwo+ID4gQEAgLTgzLDggKzgzLDcg QEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ID4gICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2J1c3kgKmFyZ3MgPSBkYXRhOwo+ID4g ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4gICAgICAgICBzdHJ1 Y3QgZG1hX3Jlc3ZfbGlzdCAqbGlzdDsKPiA+IC0gICAgICAgdW5zaWduZWQgaW50IGksIHNoYXJl ZF9jb3VudDsKPiA+IC0gICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZXhjbDsKPiA+ICsgICAgICAg dW5zaWduZWQgaW50IHNlcTsKPiA+ICAgICAgICAgaW50IGVycjsKPiA+ICAKPiA+ICAgICAgICAg ZXJyID0gLUVOT0VOVDsKPiA+IEBAIC0xMTAsMTggKzEwOSwyOSBAQCBpOTE1X2dlbV9idXN5X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiAgICAgICAgICAqIHRv IHJlcG9ydCB0aGUgb3ZlcmFsbCBidXN5bmVzcy4gVGhpcyBpcyB3aGF0IHRoZSB3YWl0LWlvY3Rs IGRvZXMuCj4gPiAgICAgICAgICAqCj4gPiAgICAgICAgICAqLwo+ID4gLSAgICAgICBkbWFfcmVz dl9mZW5jZXMob2JqLT5iYXNlLnJlc3YsICZleGNsLCAmbGlzdCwgJnNoYXJlZF9jb3VudCk7Cj4g PiArcmV0cnk6Cj4gPiArICAgICAgIHNlcSA9IHJhd19yZWFkX3NlcWNvdW50KCZvYmotPmJhc2Uu cmVzdi0+c2VxKTsKPiA+ICAKPiA+ICAgICAgICAgLyogVHJhbnNsYXRlIHRoZSBleGNsdXNpdmUg ZmVuY2UgdG8gdGhlIFJFQUQgKmFuZCogV1JJVEUgZW5naW5lICovCj4gPiAtICAgICAgIGFyZ3Mt PmJ1c3kgPSBidXN5X2NoZWNrX3dyaXRlcihleGNsKTsKPiA+ICsgICAgICAgYXJncy0+YnVzeSA9 Cj4gPiArICAgICAgICAgICAgICAgYnVzeV9jaGVja193cml0ZXIocmN1X2RlcmVmZXJlbmNlKG9i ai0+YmFzZS5yZXN2LT5mZW5jZV9leGNsKSk7Cj4gPiAgCj4gPiAgICAgICAgIC8qIFRyYW5zbGF0 ZSBzaGFyZWQgZmVuY2VzIHRvIFJFQUQgc2V0IG9mIGVuZ2luZXMgKi8KPiA+IC0gICAgICAgZm9y IChpID0gMDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7Cj4gPiAtICAgICAgICAgICAgICAgc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2UgPSByY3VfZGVyZWZlcmVuY2UobGlzdC0+c2hhcmVkW2ldKTsK PiA+ICsgICAgICAgbGlzdCA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmJhc2UucmVzdi0+ZmVuY2Up Owo+ID4gKyAgICAgICBpZiAobGlzdCkgewo+ID4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBzaGFyZWRfY291bnQgPSBsaXN0LT5zaGFyZWRfY291bnQsIGk7Cj4gPiAgCj4gPiAtICAgICAg ICAgICAgICAgYXJncy0+YnVzeSB8PSBidXN5X2NoZWNrX3JlYWRlcihmZW5jZSk7Cj4gPiArICAg ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJjdV9kZXJlZmVyZW5jZShsaXN0LT5zaGFyZWRbaV0p Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+YnVzeSB8PSBidXN5X2No ZWNrX3JlYWRlcihmZW5jZSk7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICB9Cj4g PiAgCj4gPiArICAgICAgIGlmIChhcmdzLT5idXN5ICYmIHJlYWRfc2VxY291bnRfcmV0cnkoJm9i ai0+YmFzZS5yZXN2LT5zZXEsIHNlcSkpCj4gPiArICAgICAgICAgICAgICAgZ290byByZXRyeTsK PiA+ICsKPiA+ICAgICAgICAgZXJyID0gMDsKPiA+ICBvdXQ6Cj4gPiAgICAgICAgIHJjdV9yZWFk X3VubG9jaygpOwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaCBiL2lu Y2x1ZGUvbGludXgvZG1hLXJlc3YuaAo+ID4gaW5kZXggMzhmMjgwMmFmYWJiLi5lZTUwZDEwZjA1 MmIgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYS1yZXN2LmgKPiA+ICsrKyBiL2lu Y2x1ZGUvbGludXgvZG1hLXJlc3YuaAo+ID4gQEAgLTQ2LDYgKzQ2LDggQEAKPiA+ICAjaW5jbHVk ZSA8bGludXgvcmN1cGRhdGUuaD4KPiA+ICAKPiA+ICBleHRlcm4gc3RydWN0IHd3X2NsYXNzIHJl c2VydmF0aW9uX3d3X2NsYXNzOwo+ID4gK2V4dGVybiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgcmVz ZXJ2YXRpb25fc2VxY291bnRfY2xhc3M7Cj4gPiArZXh0ZXJuIGNvbnN0IGNoYXIgcmVzZXJ2YXRp b25fc2VxY291bnRfc3RyaW5nW107Cj4gPiAgCj4gPiAgLyoqCj4gPiAgICogc3RydWN0IGRtYV9y ZXN2X2xpc3QgLSBhIGxpc3Qgb2Ygc2hhcmVkIGZlbmNlcwo+ID4gQEAgLTY5LDYgKzcxLDcgQEAg c3RydWN0IGRtYV9yZXN2X2xpc3Qgewo+ID4gICAqLwo+ID4gIHN0cnVjdCBkbWFfcmVzdiB7Cj4g PiAgICAgICAgIHN0cnVjdCB3d19tdXRleCBsb2NrOwo+ID4gKyAgICAgICBzZXFjb3VudF90IHNl cTsKPiA+ICAKPiA+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSBfX3JjdSAqZmVuY2VfZXhjbDsK PiA+ICAgICAgICAgc3RydWN0IGRtYV9yZXN2X2xpc3QgX19yY3UgKmZlbmNlOwo+ID4gQEAgLTc3 LDI0ICs4MCw2IEBAIHN0cnVjdCBkbWFfcmVzdiB7Cj4gPiAgI2RlZmluZSBkbWFfcmVzdl9oZWxk KG9iaikgbG9ja2RlcF9pc19oZWxkKCYob2JqKS0+bG9jay5iYXNlKQo+ID4gICNkZWZpbmUgZG1h X3Jlc3ZfYXNzZXJ0X2hlbGQob2JqKSBsb2NrZGVwX2Fzc2VydF9oZWxkKCYob2JqKS0+bG9jay5i YXNlKQo+ID4gIAo+ID4gLS8qKgo+ID4gLSAqIGRtYV9yZXN2X2dldF9leGNsIC0gZ2V0IHRoZSBy ZXNlcnZhdGlvbiBvYmplY3Qncwo+ID4gLSAqIGV4Y2x1c2l2ZSBmZW5jZSwgd2l0aCB1cGRhdGUt c2lkZSBsb2NrIGhlbGQKPiA+IC0gKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0Cj4gPiAt ICoKPiA+IC0gKiBSZXR1cm5zIHRoZSBleGNsdXNpdmUgZmVuY2UgKGlmIGFueSkuICBEb2VzIE5P VCB0YWtlIGEKPiA+IC0gKiByZWZlcmVuY2UuIFdyaXRlcnMgbXVzdCBob2xkIG9iai0+bG9jaywg cmVhZGVycyBtYXkgb25seQo+ID4gLSAqIGhvbGQgYSBSQ1UgcmVhZCBzaWRlIGxvY2suCj4gPiAt ICoKPiA+IC0gKiBSRVRVUk5TCj4gPiAtICogVGhlIGV4Y2x1c2l2ZSBmZW5jZSBvciBOVUxMCj4g PiAtICovCj4gPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICpkbWFfcmVzdl9nZXRf ZXhjbChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikKPiA+IC17Cj4gPiAtICAgICAgIHJldHVybiByY3Vf ZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG9iai0+ZmVuY2VfZXhjbCwKPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX3Jlc3ZfaGVsZChvYmopKTsKPiA+IC19Cj4g PiAtCj4gPiAgLyoqCj4gPiAgICogZG1hX3Jlc3ZfZ2V0X2xpc3QgLSBnZXQgdGhlIHJlc2VydmF0 aW9uIG9iamVjdCdzCj4gPiAgICogc2hhcmVkIGZlbmNlIGxpc3QsIHdpdGggdXBkYXRlLXNpZGUg bG9jayBoZWxkCj4gPiBAQCAtMTA5LDUzICs5NCw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRt YV9yZXN2X2xpc3QgKmRtYV9yZXN2X2dldF9saXN0KHN0cnVjdCBkbWFfcmVzdiAqb2JqKQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFfcmVzdl9oZWxkKG9i aikpOwo+ID4gIH0KPiA+ICAKPiA+IC0vKioKPiA+IC0gKiBkbWFfcmVzdl9mZW5jZXMgLSByZWFk IGNvbnNpc3RlbnQgZmVuY2UgcG9pbnRlcnMKPiA+IC0gKiBAb2JqOiByZXNlcnZhdGlvbiBvYmpl Y3Qgd2hlcmUgd2UgZ2V0IHRoZSBmZW5jZXMgZnJvbQo+ID4gLSAqIEBleGNsOiBwb2ludGVyIGZv ciB0aGUgZXhjbHVzaXZlIGZlbmNlCj4gPiAtICogQGxpc3Q6IHBvaW50ZXIgZm9yIHRoZSBzaGFy ZWQgZmVuY2UgbGlzdAo+ID4gLSAqCj4gPiAtICogTWFrZSBzdXJlIHdlIGhhdmUgYSBjb25zaXN0 ZW4gZXhjbHVzaXZlIGZlbmNlIGFuZCBzaGFyZWQgZmVuY2UgbGlzdC4KPiA+IC0gKiBNdXN0IGJl IGNhbGxlZCB3aXRoIHJjdSByZWFkIHNpZGUgbG9jayBoZWxkLgo+ID4gLSAqLwo+ID4gLXN0YXRp YyBpbmxpbmUgdm9pZCBkbWFfcmVzdl9mZW5jZXMoc3RydWN0IGRtYV9yZXN2ICpvYmosCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipleGNs LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3Zf bGlzdCAqKmxpc3QsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAq c2hhcmVkX2NvdW50KQo+ID4gLXsKPiA+IC0gICAgICAgZG8gewo+ID4gLSAgICAgICAgICAgICAg ICpleGNsID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2VfZXhjbCk7Cj4gPiAtICAgICAgICAg ICAgICAgKmxpc3QgPSByY3VfZGVyZWZlcmVuY2Uob2JqLT5mZW5jZSk7Cj4gPiAtICAgICAgICAg ICAgICAgKnNoYXJlZF9jb3VudCA9ICpsaXN0ID8gKCpsaXN0KS0+c2hhcmVkX2NvdW50IDogMDsK PiA+IC0gICAgICAgICAgICAgICBzbXBfcm1iKCk7IC8qIFNlZSBkbWFfcmVzdl9hZGRfZXhjbF9m ZW5jZSAqLwo+ID4gLSAgICAgICB9IHdoaWxlIChyY3VfYWNjZXNzX3BvaW50ZXIob2JqLT5mZW5j ZV9leGNsKSAhPSAqZXhjbCk7Cj4gPiAtfQo+ID4gLQo+ID4gLS8qKgo+ID4gLSAqIGRtYV9yZXN2 X2dldF9leGNsX3JjdSAtIGdldCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0J3MKPiA+IC0gKiBleGNs dXNpdmUgZmVuY2UsIHdpdGhvdXQgbG9jayBoZWxkLgo+ID4gLSAqIEBvYmo6IHRoZSByZXNlcnZh dGlvbiBvYmplY3QKPiA+IC0gKgo+ID4gLSAqIElmIHRoZXJlIGlzIGFuIGV4Y2x1c2l2ZSBmZW5j ZSwgdGhpcyBhdG9taWNhbGx5IGluY3JlbWVudHMgaXQncwo+ID4gLSAqIHJlZmVyZW5jZSBjb3Vu dCBhbmQgcmV0dXJucyBpdC4KPiA+IC0gKgo+ID4gLSAqIFJFVFVSTlMKPiA+IC0gKiBUaGUgZXhj bHVzaXZlIGZlbmNlIG9yIE5VTEwgaWYgbm9uZQo+ID4gLSAqLwo+ID4gLXN0YXRpYyBpbmxpbmUg c3RydWN0IGRtYV9mZW5jZSAqZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KHN0cnVjdCBkbWFfcmVzdiAq b2JqKQo+ID4gLXsKPiA+IC0gICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gPiAtCj4g PiAtICAgICAgIGlmICghcmN1X2FjY2Vzc19wb2ludGVyKG9iai0+ZmVuY2VfZXhjbCkpCj4gPiAt ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiAtCj4gPiAtICAgICAgIHJjdV9yZWFkX2xv Y2soKTsKPiA+IC0gICAgICAgZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZvYmotPmZl bmNlX2V4Y2wpOwo+ID4gLSAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiA+IC0KPiA+IC0gICAg ICAgcmV0dXJuIGZlbmNlOwo+ID4gLX0KPiA+IC0KPiA+ICAvKioKPiA+ICAgKiBkbWFfcmVzdl9s b2NrIC0gbG9jayB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0Cj4gPiAgICogQG9iajogdGhlIHJlc2Vy dmF0aW9uIG9iamVjdAo+ID4gQEAgLTI5MCw2ICsyMjgsNTEgQEAgc3RhdGljIGlubGluZSB2b2lk IGRtYV9yZXN2X3VubG9jayhzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikKPiA+ICAgICAgICAgd3dfbXV0 ZXhfdW5sb2NrKCZvYmotPmxvY2spOwo+ID4gIH0KPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBkbWFf cmVzdl9nZXRfZXhjbCAtIGdldCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0J3MKPiA+ICsgKiBleGNs dXNpdmUgZmVuY2UsIHdpdGggdXBkYXRlLXNpZGUgbG9jayBoZWxkCj4gPiArICogQG9iajogdGhl IHJlc2VydmF0aW9uIG9iamVjdAo+ID4gKyAqCj4gPiArICogUmV0dXJucyB0aGUgZXhjbHVzaXZl IGZlbmNlIChpZiBhbnkpLiAgRG9lcyBOT1QgdGFrZSBhCj4gPiArICogcmVmZXJlbmNlLiBXcml0 ZXJzIG11c3QgaG9sZCBvYmotPmxvY2ssIHJlYWRlcnMgbWF5IG9ubHkKPiA+ICsgKiBob2xkIGEg UkNVIHJlYWQgc2lkZSBsb2NrLgo+ID4gKyAqCj4gPiArICogUkVUVVJOUwo+ID4gKyAqIFRoZSBl eGNsdXNpdmUgZmVuY2Ugb3IgTlVMTAo+ID4gKyAqLwo+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGRtYV9mZW5jZSAqCj4gPiArZG1hX3Jlc3ZfZ2V0X2V4Y2woc3RydWN0IGRtYV9yZXN2ICpvYmop Cj4gPiArewo+ID4gKyAgICAgICByZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvYmot PmZlbmNlX2V4Y2wsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRtYV9yZXN2X2hlbGQob2JqKSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRtYV9y ZXN2X2dldF9leGNsX3JjdSAtIGdldCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0J3MKPiA+ICsgKiBl eGNsdXNpdmUgZmVuY2UsIHdpdGhvdXQgbG9jayBoZWxkLgo+ID4gKyAqIEBvYmo6IHRoZSByZXNl cnZhdGlvbiBvYmplY3QKPiA+ICsgKgo+ID4gKyAqIElmIHRoZXJlIGlzIGFuIGV4Y2x1c2l2ZSBm ZW5jZSwgdGhpcyBhdG9taWNhbGx5IGluY3JlbWVudHMgaXQncwo+ID4gKyAqIHJlZmVyZW5jZSBj b3VudCBhbmQgcmV0dXJucyBpdC4KPiA+ICsgKgo+ID4gKyAqIFJFVFVSTlMKPiA+ICsgKiBUaGUg ZXhjbHVzaXZlIGZlbmNlIG9yIE5VTEwgaWYgbm9uZQo+ID4gKyAqLwo+ID4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IGRtYV9mZW5jZSAqCj4gPiArZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KHN0cnVjdCBk bWFfcmVzdiAqb2JqKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7 Cj4gPiArCj4gPiArICAgICAgIGlmICghcmN1X2FjY2Vzc19wb2ludGVyKG9iai0+ZmVuY2VfZXhj bCkpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiArCj4gPiArICAgICAgIHJj dV9yZWFkX2xvY2soKTsKPiA+ICsgICAgICAgZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZl KCZvYmotPmZlbmNlX2V4Y2wpOwo+ID4gKyAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiA+ICsK PiA+ICsgICAgICAgcmV0dXJuIGZlbmNlOwo+ID4gK30KPiA+ICsKPiA+ICB2b2lkIGRtYV9yZXN2 X2luaXQoc3RydWN0IGRtYV9yZXN2ICpvYmopOwo+ID4gIHZvaWQgZG1hX3Jlc3ZfZmluaShzdHJ1 Y3QgZG1hX3Jlc3YgKm9iaik7Cj4gPiAgaW50IGRtYV9yZXN2X3Jlc2VydmVfc2hhcmVkKHN0cnVj dCBkbWFfcmVzdiAqb2JqLCB1bnNpZ25lZCBpbnQgbnVtX2ZlbmNlcyk7Cj4gPiAtLSAKPiA+IDIu MjMuMC5yYzEKPiA+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==