From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH] dma-buf: Restore seqlock around dma_resv updates Date: Thu, 15 Aug 2019 07:30:22 +0000 Message-ID: <9716c7a5-e65b-7179-1550-e99e1306cb91@amd.com> 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: In-Reply-To: <156580720475.2301.10315695252933421468@skylake-alporthouse-com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , "dri-devel@lists.freedesktop.org" Cc: Daniel Vetter , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org QW0gMTQuMDguMTkgdW0gMjA6MjYgc2NocmllYiBDaHJpcyBXaWxzb246DQo+IFF1b3RpbmcgQ2hy aXMgV2lsc29uICgyMDE5LTA4LTE0IDE5OjI0OjAxKQ0KPj4gVGhpcyByZXZlcnRzDQo+PiA2N2M5 N2ZiNzlhN2YgKCJkbWEtYnVmOiBhZGQgcmVzZXJ2YXRpb25fb2JqZWN0X2ZlbmNlcyBoZWxwZXIi KQ0KPj4gZGQ3YTdkMWZmMmYxICgiZHJtL2k5MTU6IHVzZSBuZXcgcmVzZXJ2YXRpb25fb2JqZWN0 X2ZlbmNlcyBoZWxwZXIiKQ0KPj4gMGUxZDgwODNiZGRiICgiZG1hLWJ1ZjogZnVydGhlciByZWxh eCByZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZSIpDQo+PiA1ZDM0NGY1OGRhNzYg KCJkbWEtYnVmOiBudWtlIHJlc2VydmF0aW9uX29iamVjdCBzZXEgbnVtYmVyIikNCj4+DQo+PiBU aGUgc2NlbmFyaW8gdGhhdCBkZWZlYXRzIHNpbXBseSBncmFiYmluZyBhIHNldCBvZiBzaGFyZWQv ZXhjbHVzaXZlDQo+PiBmZW5jZXMgYW5kIHVzaW5nIHRoZW0gYmxpc3NmdWxseSB1bmRlciBSQ1Ug aXMgdGhhdCBhbnkgb2YgdGhvc2UgZmVuY2VzDQo+PiBtYXkgYmUgcmVhbGxvY2F0ZWQgYnkgYSBT TEFCX1RZUEVTQUZFX0JZX1JDVSBmZW5jZSBzbGFiIGNhY2hlLiBJbiB0aGlzDQo+PiBzY2VuYXJp bywgd2hpbGUga2VlcGluZyB0aGUgcmN1X3JlYWRfbG9jayB3ZSBuZWVkIHRvIGVzdGFibGlzaCB0 aGF0IG5vDQo+PiBmZW5jZSB3YXMgY2hhbmdlZCBpbiB0aGUgZG1hX3Jlc3YgYWZ0ZXIgYSByZWFk IChvciBmdWxsKSBtZW1vcnkgYmFycmllci4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4NCg0KQWNrZWQtYnk6IENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4NCg0KPj4gQ2M6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPg0KPiBJIHNhaWQgSSBuZWVkZWQgdG8gZ28gbGllIGRv d24sIHRoYXQgcHJvdmVzIGl0Lg0KPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPg0KPg0KPj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+DQo+PiAtLS0NCj4+ICAgZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyAgICAgICAg ICAgICAgICAgICAgIHwgIDMxICsrKystDQo+PiAgIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5j ICAgICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKystLS0tLQ0KPj4gICAuLi4vZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyAgfCAgIDcgKy0NCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYyAgICAgIHwgIDI0ICsrLS0NCj4+ ICAgaW5jbHVkZS9saW51eC9kbWEtcmVzdi5oICAgICAgICAgICAgICAgICAgICAgIHwgMTEzICsr KysrKysrLS0tLS0tLS0tLQ0KPj4gICA1IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25zKCsp LCAxMDkgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jDQo+PiBpbmRleCBiMzQwMGQ2NTI0 YWIuLjQzM2Q5MWQ3MTBlNCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMNCj4+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMNCj4+IEBAIC0xOTksNyArMTk5 LDcgQEAgc3RhdGljIF9fcG9sbF90IGRtYV9idWZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9s bF90YWJsZSAqcG9sbCkNCj4+ICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpmb2JqOw0K Pj4gICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2VfZXhjbDsNCj4+ICAgICAgICAgIF9f cG9sbF90IGV2ZW50czsNCj4+IC0gICAgICAgdW5zaWduZWQgc2hhcmVkX2NvdW50Ow0KPj4gKyAg ICAgICB1bnNpZ25lZCBzaGFyZWRfY291bnQsIHNlcTsNCj4+ICAgDQo+PiAgICAgICAgICBkbWFi dWYgPSBmaWxlLT5wcml2YXRlX2RhdGE7DQo+PiAgICAgICAgICBpZiAoIWRtYWJ1ZiB8fCAhZG1h YnVmLT5yZXN2KQ0KPj4gQEAgLTIxMyw4ICsyMTMsMjEgQEAgc3RhdGljIF9fcG9sbF90IGRtYV9i dWZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqcG9sbCkNCj4+ICAgICAgICAg IGlmICghZXZlbnRzKQ0KPj4gICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICAgDQo+PiAr cmV0cnk6DQo+PiArICAgICAgIHNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJnJlc3YtPnNlcSk7 DQo+PiAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7DQo+PiAtICAgICAgIGRtYV9yZXN2X2ZlbmNl cyhyZXN2LCAmZmVuY2VfZXhjbCwgJmZvYmosICZzaGFyZWRfY291bnQpOw0KPj4gKw0KPj4gKyAg ICAgICBmb2JqID0gcmN1X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlKTsNCj4+ICsgICAgICAgaWYg KGZvYmopDQo+PiArICAgICAgICAgICAgICAgc2hhcmVkX2NvdW50ID0gZm9iai0+c2hhcmVkX2Nv dW50Ow0KPj4gKyAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgICAgc2hhcmVkX2NvdW50ID0g MDsNCj4+ICsgICAgICAgZmVuY2VfZXhjbCA9IHJjdV9kZXJlZmVyZW5jZShyZXN2LT5mZW5jZV9l eGNsKTsNCj4+ICsgICAgICAgaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJnJlc3YtPnNlcSwgc2Vx KSkgew0KPj4gKyAgICAgICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOw0KPj4gKyAgICAgICAg ICAgICAgIGdvdG8gcmV0cnk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICAgICAgICAgIGlmIChm ZW5jZV9leGNsICYmICghKGV2ZW50cyAmIEVQT0xMT1VUKSB8fCBzaGFyZWRfY291bnQgPT0gMCkp IHsNCj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9idWZfcG9sbF9jYl90ICpkY2IgPSAm ZG1hYnVmLT5jYl9leGNsOw0KPj4gICAgICAgICAgICAgICAgICBfX3BvbGxfdCBwZXZlbnRzID0g RVBPTExJTjsNCj4+IEBAIC0xMTQ0LDYgKzExNTcsNyBAQCBzdGF0aWMgaW50IGRtYV9idWZfZGVi dWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZCkNCj4+ICAgICAgICAgIHN0 cnVjdCBkbWFfcmVzdiAqcm9iajsNCj4+ICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpm b2JqOw0KPj4gICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7DQo+PiArICAgICAgIHVu c2lnbmVkIHNlcTsNCj4+ICAgICAgICAgIGludCBjb3VudCA9IDAsIGF0dGFjaF9jb3VudCwgc2hh cmVkX2NvdW50LCBpOw0KPj4gICAgICAgICAgc2l6ZV90IHNpemUgPSAwOw0KPj4gICANCj4+IEBA IC0xMTc0LDkgKzExODgsMTYgQEAgc3RhdGljIGludCBkbWFfYnVmX2RlYnVnX3Nob3coc3RydWN0 IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBidWZfb2JqLT5uYW1lID86ICIiKTsNCj4+ICAgDQo+PiAgICAgICAgICAgICAgICAg IHJvYmogPSBidWZfb2JqLT5yZXN2Ow0KPj4gLSAgICAgICAgICAgICAgIHJjdV9yZWFkX2xvY2so KTsNCj4+IC0gICAgICAgICAgICAgICBkbWFfcmVzdl9mZW5jZXMocm9iaiwgJmZlbmNlLCAmZm9i aiwgJnNoYXJlZF9jb3VudCk7DQo+PiAtICAgICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7 DQo+PiArICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJnJvYmotPnNlcSk7DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBmb2JqID0gcmN1X2RlcmVmZXJlbmNlKHJvYmotPmZlbmNlKTsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9IGZvYmogPyBmb2JqLT5zaGFyZWRfY291bnQgOiAw Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZmVuY2UgPSByY3VfZGVyZWZlcmVuY2Uocm9i ai0+ZmVuY2VfZXhjbCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlYWRfc2Vx Y291bnRfcmV0cnkoJnJvYmotPnNlcSwgc2VxKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByY3VfcmVhZF91bmxv Y2soKTsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiAgIA0KPj4gICAgICAgICAgICAgICAgICBp ZiAoZmVuY2UpDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxX3ByaW50ZihzLCAiXHRF eGNsdXNpdmUgZmVuY2U6ICVzICVzICVzc2lnbmFsbGVkXG4iLA0KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMNCj4+ IGluZGV4IGY1MTQyNjgzYzg1MS4uNDJhOGYzZjExNjgxIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVy cy9kbWEtYnVmL2RtYS1yZXN2LmMNCj4+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5j DQo+PiBAQCAtNDksNiArNDksMTIgQEANCj4+ICAgREVGSU5FX1dEX0NMQVNTKHJlc2VydmF0aW9u X3d3X2NsYXNzKTsNCj4+ICAgRVhQT1JUX1NZTUJPTChyZXNlcnZhdGlvbl93d19jbGFzcyk7DQo+ PiAgIA0KPj4gK3N0cnVjdCBsb2NrX2NsYXNzX2tleSByZXNlcnZhdGlvbl9zZXFjb3VudF9jbGFz czsNCj4+ICtFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X2NsYXNzKTsNCj4+ICsN Cj4+ICtjb25zdCBjaGFyIHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZ1tdID0gInJlc2VydmF0 aW9uX3NlcWNvdW50IjsNCj4+ICtFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X3N0 cmluZyk7DQo+PiArDQo+PiAgIC8qKg0KPj4gICAgKiBkbWFfcmVzdl9saXN0X2FsbG9jIC0gYWxs b2NhdGUgZmVuY2UgbGlzdA0KPj4gICAgKiBAc2hhcmVkX21heDogbnVtYmVyIG9mIGZlbmNlcyB3 ZSBuZWVkIHNwYWNlIGZvcg0KPj4gQEAgLTk2LDYgKzEwMiw5IEBAIHN0YXRpYyB2b2lkIGRtYV9y ZXN2X2xpc3RfZnJlZShzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAqbGlzdCkNCj4+ICAgdm9pZCBkbWFf cmVzdl9pbml0KHN0cnVjdCBkbWFfcmVzdiAqb2JqKQ0KPj4gICB7DQo+PiAgICAgICAgICB3d19t dXRleF9pbml0KCZvYmotPmxvY2ssICZyZXNlcnZhdGlvbl93d19jbGFzcyk7DQo+PiArDQo+PiAr ICAgICAgIF9fc2VxY291bnRfaW5pdCgmb2JqLT5zZXEsIHJlc2VydmF0aW9uX3NlcWNvdW50X3N0 cmluZywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICZyZXNlcnZhdGlvbl9zZXFjb3VudF9j bGFzcyk7DQo+PiAgICAgICAgICBSQ1VfSU5JVF9QT0lOVEVSKG9iai0+ZmVuY2UsIE5VTEwpOw0K Pj4gICAgICAgICAgUkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlX2V4Y2wsIE5VTEwpOw0KPj4g ICB9DQo+PiBAQCAtMjI1LDYgKzIzNCw5IEBAIHZvaWQgZG1hX3Jlc3ZfYWRkX3NoYXJlZF9mZW5j ZShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpDQo+PiAgICAg ICAgICBmb2JqID0gZG1hX3Jlc3ZfZ2V0X2xpc3Qob2JqKTsNCj4+ICAgICAgICAgIGNvdW50ID0g Zm9iai0+c2hhcmVkX2NvdW50Ow0KPj4gICANCj4+ICsgICAgICAgcHJlZW1wdF9kaXNhYmxlKCk7 DQo+PiArICAgICAgIHdyaXRlX3NlcWNvdW50X2JlZ2luKCZvYmotPnNlcSk7DQo+PiArDQo+PiAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgew0KPj4gICANCj4+ICAgICAgICAg ICAgICAgICAgb2xkID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmb2JqLT5zaGFyZWRbaV0s DQo+PiBAQCAtMjQyLDYgKzI1NCw5IEBAIHZvaWQgZG1hX3Jlc3ZfYWRkX3NoYXJlZF9mZW5jZShz dHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpDQo+PiAgICAgICAg ICBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFtpXSwgZmVuY2UpOw0KPj4gICAgICAgICAg LyogcG9pbnRlciB1cGRhdGUgbXVzdCBiZSB2aXNpYmxlIGJlZm9yZSB3ZSBleHRlbmQgdGhlIHNo YXJlZF9jb3VudCAqLw0KPj4gICAgICAgICAgc21wX3N0b3JlX21iKGZvYmotPnNoYXJlZF9jb3Vu dCwgY291bnQpOw0KPj4gKw0KPj4gKyAgICAgICB3cml0ZV9zZXFjb3VudF9lbmQoJm9iai0+c2Vx KTsNCj4+ICsgICAgICAgcHJlZW1wdF9lbmFibGUoKTsNCj4+ICAgICAgICAgIGRtYV9mZW5jZV9w dXQob2xkKTsNCj4+ICAgfQ0KPj4gICBFWFBPUlRfU1lNQk9MKGRtYV9yZXN2X2FkZF9zaGFyZWRf ZmVuY2UpOw0KPj4gQEAgLTI2OSwxMCArMjg0LDEyIEBAIHZvaWQgZG1hX3Jlc3ZfYWRkX2V4Y2xf ZmVuY2Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQ0KPj4g ICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsNCj4+ICAgDQo+PiAgICAgICAg ICBwcmVlbXB0X2Rpc2FibGUoKTsNCj4+IC0gICAgICAgcmN1X2Fzc2lnbl9wb2ludGVyKG9iai0+ ZmVuY2VfZXhjbCwgZmVuY2UpOw0KPj4gLSAgICAgICAvKiBwb2ludGVyIHVwZGF0ZSBtdXN0IGJl IHZpc2libGUgYmVmb3JlIHdlIG1vZGlmeSB0aGUgc2hhcmVkX2NvdW50ICovDQo+PiArICAgICAg IHdyaXRlX3NlcWNvdW50X2JlZ2luKCZvYmotPnNlcSk7DQo+PiArICAgICAgIC8qIHdyaXRlX3Nl cWNvdW50X2JlZ2luIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVtb3J5IGJhcnJpZXIgKi8NCj4+ ICsgICAgICAgUkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlX2V4Y2wsIGZlbmNlKTsNCj4+ICAg ICAgICAgIGlmIChvbGQpDQo+PiAtICAgICAgICAgICAgICAgc21wX3N0b3JlX21iKG9sZC0+c2hh cmVkX2NvdW50LCAwKTsNCj4+ICsgICAgICAgICAgICAgICBvbGQtPnNoYXJlZF9jb3VudCA9IDA7 DQo+PiArICAgICAgIHdyaXRlX3NlcWNvdW50X2VuZCgmb2JqLT5zZXEpOw0KPj4gICAgICAgICAg cHJlZW1wdF9lbmFibGUoKTsNCj4+ICAgDQo+PiAgICAgICAgICAvKiBpbnBsYWNlIHVwZGF0ZSwg bm8gc2hhcmVkIGZlbmNlcyAqLw0KPj4gQEAgLTI5NSwxNSArMzEyLDE3IEBAIGludCBkbWFfcmVz dl9jb3B5X2ZlbmNlcyhzdHJ1Y3QgZG1hX3Jlc3YgKmRzdCwgc3RydWN0IGRtYV9yZXN2ICpzcmMp DQo+PiAgIHsNCj4+ICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpzcmNfbGlzdCwgKmRz dF9saXN0Ow0KPj4gICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqb2xkLCAqbmV3Ow0KPj4gLSAg ICAgICB1bnNpZ25lZCBpbnQgaSwgc2hhcmVkX2NvdW50Ow0KPj4gKyAgICAgICB1bnNpZ25lZCBp Ow0KPj4gICANCj4+ICAgICAgICAgIGRtYV9yZXN2X2Fzc2VydF9oZWxkKGRzdCk7DQo+PiAgIA0K Pj4gICAgICAgICAgcmN1X3JlYWRfbG9jaygpOw0KPj4gKyAgICAgICBzcmNfbGlzdCA9IHJjdV9k ZXJlZmVyZW5jZShzcmMtPmZlbmNlKTsNCj4+ICAgDQo+PiAgIHJldHJ5Og0KPj4gLSAgICAgICBk bWFfcmVzdl9mZW5jZXMoc3JjLCAmbmV3LCAmc3JjX2xpc3QsICZzaGFyZWRfY291bnQpOw0KPj4g LSAgICAgICBpZiAoc2hhcmVkX2NvdW50KSB7DQo+PiArICAgICAgIGlmIChzcmNfbGlzdCkgew0K Pj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIHNoYXJlZF9jb3VudCA9IHNyY19saXN0LT5zaGFy ZWRfY291bnQ7DQo+PiArDQo+PiAgICAgICAgICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOw0K Pj4gICANCj4+ICAgICAgICAgICAgICAgICAgZHN0X2xpc3QgPSBkbWFfcmVzdl9saXN0X2FsbG9j KHNoYXJlZF9jb3VudCk7DQo+PiBAQCAtMzExLDE0ICszMzAsMTQgQEAgaW50IGRtYV9yZXN2X2Nv cHlfZmVuY2VzKHN0cnVjdCBkbWFfcmVzdiAqZHN0LCBzdHJ1Y3QgZG1hX3Jlc3YgKnNyYykNCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICAgDQo+PiAgICAg ICAgICAgICAgICAgIHJjdV9yZWFkX2xvY2soKTsNCj4+IC0gICAgICAgICAgICAgICBkbWFfcmVz dl9mZW5jZXMoc3JjLCAmbmV3LCAmc3JjX2xpc3QsICZzaGFyZWRfY291bnQpOw0KPj4gLSAgICAg ICAgICAgICAgIGlmICghc3JjX2xpc3QgfHwgc2hhcmVkX2NvdW50ID4gZHN0X2xpc3QtPnNoYXJl ZF9tYXgpIHsNCj4+ICsgICAgICAgICAgICAgICBzcmNfbGlzdCA9IHJjdV9kZXJlZmVyZW5jZShz cmMtPmZlbmNlKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIXNyY19saXN0IHx8IHNyY19saXN0 LT5zaGFyZWRfY291bnQgPiBzaGFyZWRfY291bnQpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICBrZnJlZShkc3RfbGlzdCk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBy ZXRyeTsNCj4+ICAgICAgICAgICAgICAgICAgfQ0KPj4gICANCj4+ICAgICAgICAgICAgICAgICAg ZHN0X2xpc3QtPnNoYXJlZF9jb3VudCA9IDA7DQo+PiAtICAgICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7DQo+PiArICAgICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHNyY19saXN0LT5zaGFyZWRfY291bnQ7ICsraSkgew0KPj4gICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOw0KPj4gICANCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICBmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShzcmNfbGlzdC0+c2hhcmVkW2ld KTsNCj4+IEBAIC0zMjgsNiArMzQ3LDcgQEAgaW50IGRtYV9yZXN2X2NvcHlfZmVuY2VzKHN0cnVj dCBkbWFfcmVzdiAqZHN0LCBzdHJ1Y3QgZG1hX3Jlc3YgKnNyYykNCj4+ICAgDQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCFkbWFfZmVuY2VfZ2V0X3JjdShmZW5jZSkpIHsNCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9yZXN2X2xpc3RfZnJlZShkc3RfbGlz dCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19saXN0ID0gcmN1X2Rl cmVmZXJlbmNlKHNyYy0+ZmVuY2UpOw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ290byByZXRyeTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiAgIA0KPj4g QEAgLTM0MiwxOCArMzYyLDE4IEBAIGludCBkbWFfcmVzdl9jb3B5X2ZlbmNlcyhzdHJ1Y3QgZG1h X3Jlc3YgKmRzdCwgc3RydWN0IGRtYV9yZXN2ICpzcmMpDQo+PiAgICAgICAgICAgICAgICAgIGRz dF9saXN0ID0gTlVMTDsNCj4+ICAgICAgICAgIH0NCj4+ICAgDQo+PiAtICAgICAgIGlmIChuZXcg JiYgIWRtYV9mZW5jZV9nZXRfcmN1KG5ldykpIHsNCj4+IC0gICAgICAgICAgICAgICBkbWFfcmVz dl9saXN0X2ZyZWUoZHN0X2xpc3QpOw0KPj4gLSAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7DQo+ PiAtICAgICAgIH0NCj4+ICsgICAgICAgbmV3ID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmc3Jj LT5mZW5jZV9leGNsKTsNCj4+ICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOw0KPj4gICANCj4+ ICAgICAgICAgIHNyY19saXN0ID0gZG1hX3Jlc3ZfZ2V0X2xpc3QoZHN0KTsNCj4+ICAgICAgICAg IG9sZCA9IGRtYV9yZXN2X2dldF9leGNsKGRzdCk7DQo+PiAgIA0KPj4gICAgICAgICAgcHJlZW1w dF9kaXNhYmxlKCk7DQo+PiAtICAgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihkc3QtPmZlbmNlX2V4 Y2wsIG5ldyk7DQo+PiAtICAgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihkc3QtPmZlbmNlLCBkc3Rf bGlzdCk7DQo+PiArICAgICAgIHdyaXRlX3NlcWNvdW50X2JlZ2luKCZkc3QtPnNlcSk7DQo+PiAr ICAgICAgIC8qIHdyaXRlX3NlcWNvdW50X2JlZ2luIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVt b3J5IGJhcnJpZXIgKi8NCj4+ICsgICAgICAgUkNVX0lOSVRfUE9JTlRFUihkc3QtPmZlbmNlX2V4 Y2wsIG5ldyk7DQo+PiArICAgICAgIFJDVV9JTklUX1BPSU5URVIoZHN0LT5mZW5jZSwgZHN0X2xp c3QpOw0KPj4gKyAgICAgICB3cml0ZV9zZXFjb3VudF9lbmQoJmRzdC0+c2VxKTsNCj4+ICAgICAg ICAgIHByZWVtcHRfZW5hYmxlKCk7DQo+PiAgIA0KPj4gICAgICAgICAgZG1hX3Jlc3ZfbGlzdF9m cmVlKHNyY19saXN0KTsNCj4+IEBAIC0zODgsMTggKzQwOCwxOSBAQCBpbnQgZG1hX3Jlc3ZfZ2V0 X2ZlbmNlc19yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosDQo+PiAgIA0KPj4gICAgICAgICAgZG8g ew0KPj4gICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAqZm9iajsNCj4+IC0g ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsNCj4+ICsgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgaSwgc2VxOw0KPj4gICAgICAgICAgICAgICAgICBzaXplX3Qgc3ogPSAwOw0KPj4gICAN Cj4+IC0gICAgICAgICAgICAgICBpID0gMDsNCj4+ICsgICAgICAgICAgICAgICBzaGFyZWRfY291 bnQgPSBpID0gMDsNCj4+ICAgDQo+PiAgICAgICAgICAgICAgICAgIHJjdV9yZWFkX2xvY2soKTsN Cj4+IC0gICAgICAgICAgICAgICBkbWFfcmVzdl9mZW5jZXMob2JqLCAmZmVuY2VfZXhjbCwgJmZv YmosDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcmVk X2NvdW50KTsNCj4+ICsgICAgICAgICAgICAgICBzZXEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZv YmotPnNlcSk7DQo+PiAgIA0KPj4gKyAgICAgICAgICAgICAgIGZlbmNlX2V4Y2wgPSByY3VfZGVy ZWZlcmVuY2Uob2JqLT5mZW5jZV9leGNsKTsNCj4+ICAgICAgICAgICAgICAgICAgaWYgKGZlbmNl X2V4Y2wgJiYgIWRtYV9mZW5jZV9nZXRfcmN1KGZlbmNlX2V4Y2wpKQ0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gdW5sb2NrOw0KPj4gICANCj4+ICsgICAgICAgICAgICAgICBmb2Jq ID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2UpOw0KPj4gICAgICAgICAgICAgICAgICBpZiAo Zm9iaikNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzeiArPSBzaXplb2YoKnNoYXJlZCkg KiBmb2JqLT5zaGFyZWRfbWF4Ow0KPj4gICANCj4+IEBAIC00MjcsNiArNDQ4LDcgQEAgaW50IGRt YV9yZXN2X2dldF9mZW5jZXNfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLA0KPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCA9IG5zaGFyZWQ7DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRfY291bnQgPSBmb2JqID8gZm9iai0+c2hhcmVk X2NvdW50IDogMDsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg c2hhcmVkX2NvdW50OyArK2kpIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNoYXJlZFtpXSA9IHJjdV9kZXJlZmVyZW5jZShmb2JqLT5zaGFyZWRbaV0pOw0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkbWFfZmVuY2VfZ2V0X3JjdShzaGFyZWRb aV0pKQ0KPj4gQEAgLTQzNCw3ICs0NTYsNyBAQCBpbnQgZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3Uo c3RydWN0IGRtYV9yZXN2ICpvYmosDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPj4g ICAgICAgICAgICAgICAgICB9DQo+PiAgIA0KPj4gLSAgICAgICAgICAgICAgIGlmIChpICE9IHNo YXJlZF9jb3VudCkgew0KPj4gKyAgICAgICAgICAgICAgIGlmIChpICE9IHNoYXJlZF9jb3VudCB8 fCByZWFkX3NlcWNvdW50X3JldHJ5KCZvYmotPnNlcSwgc2VxKSkgew0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgIHdoaWxlIChpLS0pDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkbWFfZmVuY2VfcHV0KHNoYXJlZFtpXSk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgZG1hX2ZlbmNlX3B1dChmZW5jZV9leGNsKTsNCj4+IEBAIC00NzgsMTcgKzUwMCwxOCBAQCBs b25nIGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosDQo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd2FpdF9hbGwsIGJvb2wgaW50ciwN Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0 KQ0KPj4gICB7DQo+PiAtICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpmb2JqOw0KPj4gICAg ICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7DQo+PiAtICAgICAgIHVuc2lnbmVkIHNoYXJl ZF9jb3VudDsNCj4+ICsgICAgICAgdW5zaWduZWQgc2VxLCBzaGFyZWRfY291bnQ7DQo+PiAgICAg ICAgICBsb25nIHJldCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogMTsNCj4+ICAgICAgICAgIGludCBp Ow0KPj4gICANCj4+ICAgcmV0cnk6DQo+PiArICAgICAgIHNoYXJlZF9jb3VudCA9IDA7DQo+PiAr ICAgICAgIHNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsNCj4+ICAgICAgICAg IHJjdV9yZWFkX2xvY2soKTsNCj4+ICAgICAgICAgIGkgPSAtMTsNCj4+ICAgDQo+PiAtICAgICAg IGRtYV9yZXN2X2ZlbmNlcyhvYmosICZmZW5jZSwgJmZvYmosICZzaGFyZWRfY291bnQpOw0KPj4g KyAgICAgICBmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlX2V4Y2wpOw0KPj4gICAg ICAgICAgaWYgKGZlbmNlICYmICF0ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19TSUdOQUxFRF9CSVQs ICZmZW5jZS0+ZmxhZ3MpKSB7DQo+PiAgICAgICAgICAgICAgICAgIGlmICghZG1hX2ZlbmNlX2dl dF9yY3UoZmVuY2UpKQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrX3Jl dHJ5Ow0KPj4gQEAgLTUwMyw2ICs1MjYsMTEgQEAgbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRf cmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLA0KPj4gICAgICAgICAgfQ0KPj4gICANCj4+ICAgICAg ICAgIGlmICh3YWl0X2FsbCkgew0KPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9s aXN0ICpmb2JqID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2UpOw0KPj4gKw0KPj4gKyAgICAg ICAgICAgICAgIGlmIChmb2JqKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX2Nv dW50ID0gZm9iai0+c2hhcmVkX2NvdW50Ow0KPj4gKw0KPj4gICAgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyAhZmVuY2UgJiYgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7DQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqbGZlbmNlID0gcmN1X2RlcmVmZXJlbmNl KGZvYmotPnNoYXJlZFtpXSk7DQo+PiAgIA0KPj4gQEAgLTUyNSw2ICs1NTMsMTEgQEAgbG9uZyBk bWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLA0KPj4gICANCj4+ ICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOw0KPj4gICAgICAgICAgaWYgKGZlbmNlKSB7DQo+ PiArICAgICAgICAgICAgICAgaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBzZXEp KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7DQo+PiArICAgICAgICAgICAgICAg fQ0KPj4gKw0KPj4gICAgICAgICAgICAgICAgICByZXQgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0 KGZlbmNlLCBpbnRyLCByZXQpOw0KPj4gICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZl bmNlKTsNCj4+ICAgICAgICAgICAgICAgICAgaWYgKHJldCA+IDAgJiYgd2FpdF9hbGwgJiYgKGkg KyAxIDwgc2hhcmVkX2NvdW50KSkNCj4+IEBAIC01NjcsMTkgKzYwMCwyMyBAQCBzdGF0aWMgaW5s aW5lIGludCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3NpbmdsZShzdHJ1Y3QgZG1hX2ZlbmNlICpw YXNzZWRfZmVuY2UpDQo+PiAgICAqLw0KPj4gICBib29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRf cmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQ0KPj4gICB7DQo+PiAtICAg ICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICpmb2JqOw0KPj4gLSAgICAgICBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZV9leGNsOw0KPj4gLSAgICAgICB1bnNpZ25lZCBzaGFyZWRfY291bnQ7DQo+PiAr ICAgICAgIHVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50Ow0KPj4gICAgICAgICAgaW50IHJldDsN Cj4+ICAgDQo+PiAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7DQo+PiAgIHJldHJ5Og0KPj4gICAg ICAgICAgcmV0ID0gdHJ1ZTsNCj4+ICsgICAgICAgc2hhcmVkX2NvdW50ID0gMDsNCj4+ICsgICAg ICAgc2VxID0gcmVhZF9zZXFjb3VudF9iZWdpbigmb2JqLT5zZXEpOw0KPj4gICANCj4+IC0gICAg ICAgZG1hX3Jlc3ZfZmVuY2VzKG9iaiwgJmZlbmNlX2V4Y2wsICZmb2JqLCAmc2hhcmVkX2NvdW50 KTsNCj4+ICAgICAgICAgIGlmICh0ZXN0X2FsbCkgew0KPj4gICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpOw0KPj4gICANCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAq Zm9iaiA9IHJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlKTsNCj4+ICsNCj4+ICsgICAgICAgICAg ICAgICBpZiAoZm9iaikNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9jb3VudCA9 IGZvYmotPnNoYXJlZF9jb3VudDsNCj4+ICsNCj4+ICAgICAgICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSByY3VfZGVyZWZlcmVuY2UoZm9iai0+c2hhcmVkW2ld KTsNCj4+ICAgDQo+PiBAQCAtNTg5LDE0ICs2MjYsMjQgQEAgYm9vbCBkbWFfcmVzdl90ZXN0X3Np Z25hbGVkX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgYm9vbCB0ZXN0X2FsbCkNCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghcmV0KQ0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+PiAgICAgICAgICAgICAgICAgIH0NCj4+IC0gICAgICAg fQ0KPj4gICANCj4+IC0gICAgICAgaWYgKCFzaGFyZWRfY291bnQgJiYgZmVuY2VfZXhjbCkgew0K Pj4gLSAgICAgICAgICAgICAgIHJldCA9IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKGZl bmNlX2V4Y2wpOw0KPj4gLSAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KPj4gKyAgICAgICAg ICAgICAgIGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZvYmotPnNlcSwgc2VxKSkNCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHJ5Ow0KPj4gICAgICAgICAgfQ0KPj4gICANCj4+ ICsgICAgICAgaWYgKCFzaGFyZWRfY291bnQpIHsNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg ZG1hX2ZlbmNlICpmZW5jZV9leGNsID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2VfZXhjbCk7 DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKGZlbmNlX2V4Y2wpIHsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldCA9IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKGZlbmNl X2V4Y2wpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7DQo+PiArDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICBpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmb2JqLT5zZXEsIHNlcSkp DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7DQo+PiArICAg ICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+PiArDQo+PiAgICAgICAgICByY3VfcmVhZF91 bmxvY2soKTsNCj4+ICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAgIH0NCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4+IGluZGV4IGJj NGVjNmIyMGE4Ny4uNzZlMzUxNjQ4NGU3IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4+IEBAIC0yNTEsNyArMjUxLDEy IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2FtZGtmZF9yZW1vdmVfZXZpY3Rpb25fZmVuY2Uoc3RydWN0 IGFtZGdwdV9ibyAqYm8sDQo+PiAgICAgICAgICBuZXctPnNoYXJlZF9tYXggPSBvbGQtPnNoYXJl ZF9tYXg7DQo+PiAgICAgICAgICBuZXctPnNoYXJlZF9jb3VudCA9IGs7DQo+PiAgIA0KPj4gLSAg ICAgICByY3VfYXNzaWduX3BvaW50ZXIocmVzdi0+ZmVuY2UsIG5ldyk7DQo+PiArICAgICAgIC8q IEluc3RhbGwgdGhlIG5ldyBmZW5jZSBsaXN0LCBzZXFjb3VudCBwcm92aWRlcyB0aGUgYmFycmll cnMgKi8NCj4+ICsgICAgICAgcHJlZW1wdF9kaXNhYmxlKCk7DQo+PiArICAgICAgIHdyaXRlX3Nl cWNvdW50X2JlZ2luKCZyZXN2LT5zZXEpOw0KPj4gKyAgICAgICBSQ1VfSU5JVF9QT0lOVEVSKHJl c3YtPmZlbmNlLCBuZXcpOw0KPj4gKyAgICAgICB3cml0ZV9zZXFjb3VudF9lbmQoJnJlc3YtPnNl cSk7DQo+PiArICAgICAgIHByZWVtcHRfZW5hYmxlKCk7DQo+PiAgIA0KPj4gICAgICAgICAgLyog RHJvcCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgcmVtb3ZlZCBmZW5jZXMgb3IgbW92ZSB0aGVtIHRv IGVmX2xpc3QgKi8NCj4+ICAgICAgICAgIGZvciAoaSA9IGosIGsgPSAwOyBpIDwgb2xkLT5zaGFy ZWRfY291bnQ7ICsraSkgew0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9idXN5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fYnVz eS5jDQo+PiBpbmRleCBhMmFmZjFkODI5MGUuLjNkNGY1Nzc1YTRiYSAxMDA2NDQNCj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMNCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMNCj4+IEBAIC04Myw4ICs4Myw3IEBA IGk5MTVfZ2VtX2J1c3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwN Cj4+ICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRhdGE7DQo+PiAg ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOw0KPj4gICAgICAgICAgc3Ry dWN0IGRtYV9yZXN2X2xpc3QgKmxpc3Q7DQo+PiAtICAgICAgIHVuc2lnbmVkIGludCBpLCBzaGFy ZWRfY291bnQ7DQo+PiAtICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmV4Y2w7DQo+PiArICAgICAg IHVuc2lnbmVkIGludCBzZXE7DQo+PiAgICAgICAgICBpbnQgZXJyOw0KPj4gICANCj4+ICAgICAg ICAgIGVyciA9IC1FTk9FTlQ7DQo+PiBAQCAtMTEwLDE4ICsxMDksMjkgQEAgaTkxNV9nZW1fYnVz eV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KPj4gICAgICAgICAg ICogdG8gcmVwb3J0IHRoZSBvdmVyYWxsIGJ1c3luZXNzLiBUaGlzIGlzIHdoYXQgdGhlIHdhaXQt aW9jdGwgZG9lcy4NCj4+ICAgICAgICAgICAqDQo+PiAgICAgICAgICAgKi8NCj4+IC0gICAgICAg ZG1hX3Jlc3ZfZmVuY2VzKG9iai0+YmFzZS5yZXN2LCAmZXhjbCwgJmxpc3QsICZzaGFyZWRfY291 bnQpOw0KPj4gK3JldHJ5Og0KPj4gKyAgICAgICBzZXEgPSByYXdfcmVhZF9zZXFjb3VudCgmb2Jq LT5iYXNlLnJlc3YtPnNlcSk7DQo+PiAgIA0KPj4gICAgICAgICAgLyogVHJhbnNsYXRlIHRoZSBl eGNsdXNpdmUgZmVuY2UgdG8gdGhlIFJFQUQgKmFuZCogV1JJVEUgZW5naW5lICovDQo+PiAtICAg ICAgIGFyZ3MtPmJ1c3kgPSBidXN5X2NoZWNrX3dyaXRlcihleGNsKTsNCj4+ICsgICAgICAgYXJn cy0+YnVzeSA9DQo+PiArICAgICAgICAgICAgICAgYnVzeV9jaGVja193cml0ZXIocmN1X2RlcmVm ZXJlbmNlKG9iai0+YmFzZS5yZXN2LT5mZW5jZV9leGNsKSk7DQo+PiAgIA0KPj4gICAgICAgICAg LyogVHJhbnNsYXRlIHNoYXJlZCBmZW5jZXMgdG8gUkVBRCBzZXQgb2YgZW5naW5lcyAqLw0KPj4g LSAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcmVkX2NvdW50OyArK2kpIHsNCj4+IC0gICAgICAg ICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShsaXN0LT5z aGFyZWRbaV0pOw0KPj4gKyAgICAgICBsaXN0ID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+YmFzZS5y ZXN2LT5mZW5jZSk7DQo+PiArICAgICAgIGlmIChsaXN0KSB7DQo+PiArICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IHNoYXJlZF9jb3VudCA9IGxpc3QtPnNoYXJlZF9jb3VudCwgaTsNCj4+ICAg DQo+PiAtICAgICAgICAgICAgICAgYXJncy0+YnVzeSB8PSBidXN5X2NoZWNrX3JlYWRlcihmZW5j ZSk7DQo+PiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNoYXJlZF9jb3VudDsgKytp KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9 DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdV9kZXJlZmVyZW5jZShsaXN0 LT5zaGFyZWRbaV0pOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+YnVz eSB8PSBidXN5X2NoZWNrX3JlYWRlcihmZW5jZSk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4g ICAgICAgICAgfQ0KPj4gICANCj4+ICsgICAgICAgaWYgKGFyZ3MtPmJ1c3kgJiYgcmVhZF9zZXFj b3VudF9yZXRyeSgmb2JqLT5iYXNlLnJlc3YtPnNlcSwgc2VxKSkNCj4+ICsgICAgICAgICAgICAg ICBnb3RvIHJldHJ5Ow0KPj4gKw0KPj4gICAgICAgICAgZXJyID0gMDsNCj4+ICAgb3V0Og0KPj4g ICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7DQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9kbWEtcmVzdi5oIGIvaW5jbHVkZS9saW51eC9kbWEtcmVzdi5oDQo+PiBpbmRleCAzOGYyODAy YWZhYmIuLmVlNTBkMTBmMDUyYiAxMDA2NDQNCj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLXJl c3YuaA0KPj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtcmVzdi5oDQo+PiBAQCAtNDYsNiArNDYs OCBAQA0KPj4gICAjaW5jbHVkZSA8bGludXgvcmN1cGRhdGUuaD4NCj4+ICAgDQo+PiAgIGV4dGVy biBzdHJ1Y3Qgd3dfY2xhc3MgcmVzZXJ2YXRpb25fd3dfY2xhc3M7DQo+PiArZXh0ZXJuIHN0cnVj dCBsb2NrX2NsYXNzX2tleSByZXNlcnZhdGlvbl9zZXFjb3VudF9jbGFzczsNCj4+ICtleHRlcm4g Y29uc3QgY2hhciByZXNlcnZhdGlvbl9zZXFjb3VudF9zdHJpbmdbXTsNCj4+ICAgDQo+PiAgIC8q Kg0KPj4gICAgKiBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAtIGEgbGlzdCBvZiBzaGFyZWQgZmVuY2Vz DQo+PiBAQCAtNjksNiArNzEsNyBAQCBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCB7DQo+PiAgICAqLw0K Pj4gICBzdHJ1Y3QgZG1hX3Jlc3Ygew0KPj4gICAgICAgICAgc3RydWN0IHd3X211dGV4IGxvY2s7 DQo+PiArICAgICAgIHNlcWNvdW50X3Qgc2VxOw0KPj4gICANCj4+ICAgICAgICAgIHN0cnVjdCBk bWFfZmVuY2UgX19yY3UgKmZlbmNlX2V4Y2w7DQo+PiAgICAgICAgICBzdHJ1Y3QgZG1hX3Jlc3Zf bGlzdCBfX3JjdSAqZmVuY2U7DQo+PiBAQCAtNzcsMjQgKzgwLDYgQEAgc3RydWN0IGRtYV9yZXN2 IHsNCj4+ICAgI2RlZmluZSBkbWFfcmVzdl9oZWxkKG9iaikgbG9ja2RlcF9pc19oZWxkKCYob2Jq KS0+bG9jay5iYXNlKQ0KPj4gICAjZGVmaW5lIGRtYV9yZXN2X2Fzc2VydF9oZWxkKG9iaikgbG9j a2RlcF9hc3NlcnRfaGVsZCgmKG9iaiktPmxvY2suYmFzZSkNCj4+ICAgDQo+PiAtLyoqDQo+PiAt ICogZG1hX3Jlc3ZfZ2V0X2V4Y2wgLSBnZXQgdGhlIHJlc2VydmF0aW9uIG9iamVjdCdzDQo+PiAt ICogZXhjbHVzaXZlIGZlbmNlLCB3aXRoIHVwZGF0ZS1zaWRlIGxvY2sgaGVsZA0KPj4gLSAqIEBv Ymo6IHRoZSByZXNlcnZhdGlvbiBvYmplY3QNCj4+IC0gKg0KPj4gLSAqIFJldHVybnMgdGhlIGV4 Y2x1c2l2ZSBmZW5jZSAoaWYgYW55KS4gIERvZXMgTk9UIHRha2UgYQ0KPj4gLSAqIHJlZmVyZW5j ZS4gV3JpdGVycyBtdXN0IGhvbGQgb2JqLT5sb2NrLCByZWFkZXJzIG1heSBvbmx5DQo+PiAtICog aG9sZCBhIFJDVSByZWFkIHNpZGUgbG9jay4NCj4+IC0gKg0KPj4gLSAqIFJFVFVSTlMNCj4+IC0g KiBUaGUgZXhjbHVzaXZlIGZlbmNlIG9yIE5VTEwNCj4+IC0gKi8NCj4+IC1zdGF0aWMgaW5saW5l IHN0cnVjdCBkbWFfZmVuY2UgKmRtYV9yZXN2X2dldF9leGNsKHN0cnVjdCBkbWFfcmVzdiAqb2Jq KQ0KPj4gLXsNCj4+IC0gICAgICAgcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQob2Jq LT5mZW5jZV9leGNsLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkbWFfcmVzdl9oZWxkKG9iaikpOw0KPj4gLX0NCj4+IC0NCj4+ICAgLyoqDQo+PiAgICAqIGRt YV9yZXN2X2dldF9saXN0IC0gZ2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qncw0KPj4gICAgKiBz aGFyZWQgZmVuY2UgbGlzdCwgd2l0aCB1cGRhdGUtc2lkZSBsb2NrIGhlbGQNCj4+IEBAIC0xMDks NTMgKzk0LDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX3Jlc3ZfbGlzdCAqZG1hX3Jlc3Zf Z2V0X2xpc3Qoc3RydWN0IGRtYV9yZXN2ICpvYmopDQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkbWFfcmVzdl9oZWxkKG9iaikpOw0KPj4gICB9DQo+PiAgIA0K Pj4gLS8qKg0KPj4gLSAqIGRtYV9yZXN2X2ZlbmNlcyAtIHJlYWQgY29uc2lzdGVudCBmZW5jZSBw b2ludGVycw0KPj4gLSAqIEBvYmo6IHJlc2VydmF0aW9uIG9iamVjdCB3aGVyZSB3ZSBnZXQgdGhl IGZlbmNlcyBmcm9tDQo+PiAtICogQGV4Y2w6IHBvaW50ZXIgZm9yIHRoZSBleGNsdXNpdmUgZmVu Y2UNCj4+IC0gKiBAbGlzdDogcG9pbnRlciBmb3IgdGhlIHNoYXJlZCBmZW5jZSBsaXN0DQo+PiAt ICoNCj4+IC0gKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbnNpc3RlbiBleGNsdXNpdmUgZmVuY2Ug YW5kIHNoYXJlZCBmZW5jZSBsaXN0Lg0KPj4gLSAqIE11c3QgYmUgY2FsbGVkIHdpdGggcmN1IHJl YWQgc2lkZSBsb2NrIGhlbGQuDQo+PiAtICovDQo+PiAtc3RhdGljIGlubGluZSB2b2lkIGRtYV9y ZXN2X2ZlbmNlcyhzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmV4Y2wsDQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfcmVzdl9saXN0ICoqbGlzdCwNCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICpzaGFyZWRfY291bnQpDQo+PiAt ew0KPj4gLSAgICAgICBkbyB7DQo+PiAtICAgICAgICAgICAgICAgKmV4Y2wgPSByY3VfZGVyZWZl cmVuY2Uob2JqLT5mZW5jZV9leGNsKTsNCj4+IC0gICAgICAgICAgICAgICAqbGlzdCA9IHJjdV9k ZXJlZmVyZW5jZShvYmotPmZlbmNlKTsNCj4+IC0gICAgICAgICAgICAgICAqc2hhcmVkX2NvdW50 ID0gKmxpc3QgPyAoKmxpc3QpLT5zaGFyZWRfY291bnQgOiAwOw0KPj4gLSAgICAgICAgICAgICAg IHNtcF9ybWIoKTsgLyogU2VlIGRtYV9yZXN2X2FkZF9leGNsX2ZlbmNlICovDQo+PiAtICAgICAg IH0gd2hpbGUgKHJjdV9hY2Nlc3NfcG9pbnRlcihvYmotPmZlbmNlX2V4Y2wpICE9ICpleGNsKTsN Cj4+IC19DQo+PiAtDQo+PiAtLyoqDQo+PiAtICogZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1IC0gZ2V0 IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qncw0KPj4gLSAqIGV4Y2x1c2l2ZSBmZW5jZSwgd2l0aG91 dCBsb2NrIGhlbGQuDQo+PiAtICogQG9iajogdGhlIHJlc2VydmF0aW9uIG9iamVjdA0KPj4gLSAq DQo+PiAtICogSWYgdGhlcmUgaXMgYW4gZXhjbHVzaXZlIGZlbmNlLCB0aGlzIGF0b21pY2FsbHkg aW5jcmVtZW50cyBpdCdzDQo+PiAtICogcmVmZXJlbmNlIGNvdW50IGFuZCByZXR1cm5zIGl0Lg0K Pj4gLSAqDQo+PiAtICogUkVUVVJOUw0KPj4gLSAqIFRoZSBleGNsdXNpdmUgZmVuY2Ugb3IgTlVM TCBpZiBub25lDQo+PiAtICovDQo+PiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICpk bWFfcmVzdl9nZXRfZXhjbF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmopDQo+PiAtew0KPj4gLSAg ICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsNCj4+IC0NCj4+IC0gICAgICAgaWYgKCFyY3Vf YWNjZXNzX3BvaW50ZXIob2JqLT5mZW5jZV9leGNsKSkNCj4+IC0gICAgICAgICAgICAgICByZXR1 cm4gTlVMTDsNCj4+IC0NCj4+IC0gICAgICAgcmN1X3JlYWRfbG9jaygpOw0KPj4gLSAgICAgICBm ZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJm9iai0+ZmVuY2VfZXhjbCk7DQo+PiAtICAg ICAgIHJjdV9yZWFkX3VubG9jaygpOw0KPj4gLQ0KPj4gLSAgICAgICByZXR1cm4gZmVuY2U7DQo+ PiAtfQ0KPj4gLQ0KPj4gICAvKioNCj4+ICAgICogZG1hX3Jlc3ZfbG9jayAtIGxvY2sgdGhlIHJl c2VydmF0aW9uIG9iamVjdA0KPj4gICAgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0DQo+ PiBAQCAtMjkwLDYgKzIyOCw1MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG1hX3Jlc3ZfdW5sb2Nr KHN0cnVjdCBkbWFfcmVzdiAqb2JqKQ0KPj4gICAgICAgICAgd3dfbXV0ZXhfdW5sb2NrKCZvYmot PmxvY2spOw0KPj4gICB9DQo+PiAgIA0KPj4gKy8qKg0KPj4gKyAqIGRtYV9yZXN2X2dldF9leGNs IC0gZ2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qncw0KPj4gKyAqIGV4Y2x1c2l2ZSBmZW5jZSwg d2l0aCB1cGRhdGUtc2lkZSBsb2NrIGhlbGQNCj4+ICsgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24g b2JqZWN0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIHRoZSBleGNsdXNpdmUgZmVuY2UgKGlmIGFu eSkuICBEb2VzIE5PVCB0YWtlIGENCj4+ICsgKiByZWZlcmVuY2UuIFdyaXRlcnMgbXVzdCBob2xk IG9iai0+bG9jaywgcmVhZGVycyBtYXkgb25seQ0KPj4gKyAqIGhvbGQgYSBSQ1UgcmVhZCBzaWRl IGxvY2suDQo+PiArICoNCj4+ICsgKiBSRVRVUk5TDQo+PiArICogVGhlIGV4Y2x1c2l2ZSBmZW5j ZSBvciBOVUxMDQo+PiArICovDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoN Cj4+ICtkbWFfcmVzdl9nZXRfZXhjbChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikNCj4+ICt7DQo+PiAr ICAgICAgIHJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG9iai0+ZmVuY2VfZXhjbCwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX3Jlc3ZfaGVs ZChvYmopKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogZG1hX3Jlc3ZfZ2V0X2V4Y2xf cmN1IC0gZ2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qncw0KPj4gKyAqIGV4Y2x1c2l2ZSBmZW5j ZSwgd2l0aG91dCBsb2NrIGhlbGQuDQo+PiArICogQG9iajogdGhlIHJlc2VydmF0aW9uIG9iamVj dA0KPj4gKyAqDQo+PiArICogSWYgdGhlcmUgaXMgYW4gZXhjbHVzaXZlIGZlbmNlLCB0aGlzIGF0 b21pY2FsbHkgaW5jcmVtZW50cyBpdCdzDQo+PiArICogcmVmZXJlbmNlIGNvdW50IGFuZCByZXR1 cm5zIGl0Lg0KPj4gKyAqDQo+PiArICogUkVUVVJOUw0KPj4gKyAqIFRoZSBleGNsdXNpdmUgZmVu Y2Ugb3IgTlVMTCBpZiBub25lDQo+PiArICovDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1h X2ZlbmNlICoNCj4+ICtkbWFfcmVzdl9nZXRfZXhjbF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmop DQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsNCj4+ICsNCj4+ICsg ICAgICAgaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIob2JqLT5mZW5jZV9leGNsKSkNCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4+ICsNCj4+ICsgICAgICAgcmN1X3JlYWRfbG9jaygp Ow0KPj4gKyAgICAgICBmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJm9iai0+ZmVuY2Vf ZXhjbCk7DQo+PiArICAgICAgIHJjdV9yZWFkX3VubG9jaygpOw0KPj4gKw0KPj4gKyAgICAgICBy ZXR1cm4gZmVuY2U7DQo+PiArfQ0KPj4gKw0KPj4gICB2b2lkIGRtYV9yZXN2X2luaXQoc3RydWN0 IGRtYV9yZXN2ICpvYmopOw0KPj4gICB2b2lkIGRtYV9yZXN2X2Zpbmkoc3RydWN0IGRtYV9yZXN2 ICpvYmopOw0KPj4gICBpbnQgZG1hX3Jlc3ZfcmVzZXJ2ZV9zaGFyZWQoc3RydWN0IGRtYV9yZXN2 ICpvYmosIHVuc2lnbmVkIGludCBudW1fZmVuY2VzKTsNCj4+IC0tIA0KPj4gMi4yMy4wLnJjMQ0K Pj4NCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4