From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 12/32] drm/i915: Invert the GEM wakeref hierarchy Date: Thu, 18 Apr 2019 13:42:59 +0100 Message-ID: <07b1d8d6-eb75-e5c1-1792-6d1d0ebfa499@linux.intel.com> References: <20190417075657.19456-1-chris@chris-wilson.co.uk> <20190417075657.19456-12-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5CEE06E138 for ; Thu, 18 Apr 2019 12:43:02 +0000 (UTC) In-Reply-To: <20190417075657.19456-12-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgY3VycmVu dCBzY2hlbWUsIG9uIHN1Ym1pdHRpbmcgYSByZXF1ZXN0IHdlIHRha2UgYSBzaW5nbGUgZ2xvYmFs Cj4gR0VNIHdha2VyZWYsIHdoaWNoIHRyaWNrbGVzIGRvd24gdG8gd2FrZSB1cCBhbGwgR1QgcG93 ZXIgZG9tYWlucy4gVGhpcwo+IGlzIHVuZGVzaXJhYmxlIGFzIHdlIHdvdWxkIGxpa2UgdG8gYmUg YWJsZSB0byBsb2NhbGlzZSBvdXIgcG93ZXIKPiBtYW5hZ2VtZW50IHRvIHRoZSBhdmFpbGFibGUg cG93ZXIgZG9tYWlucyBhbmQgdG8gcmVtb3ZlIHRoZSBnbG9iYWwgR0VNCj4gb3BlcmF0aW9ucyBm cm9tIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyLiAoVGhlIGludGVudCB0aGVyZSBpcyB0byBwdXNo Cj4gZ2xvYmFsIEdFTSBkZWNpc2lvbnMgdG8gdGhlIGJvdW5kYXJ5IGFzIHVzZWQgYnkgdGhlIEdF TSB1c2VyIGludGVyZmFjZS4pCj4gCj4gTm93IGR1cmluZyByZXF1ZXN0IGNvbnN0cnVjdGlvbiwg ZWFjaCByZXF1ZXN0IGlzIHJlc3BvbnNpYmxlIHZpYSBpdHMKPiBsb2dpY2FsIGNvbnRleHQgdG8g YWNxdWlyZSBhIHdha2VyZWYgb24gZWFjaCBwb3dlciBkb21haW4gaXQgaW50ZW5kcyB0bwo+IHV0 aWxpemUuIEN1cnJlbnRseSwgZWFjaCByZXF1ZXN0IHRha2VzIGEgd2FrZXJlZiBvbiB0aGUgZW5n aW5lKHMpIGFuZAo+IHRoZSBlbmdpbmVzIHRoZW1zZWx2ZXMgdGFrZSBhIGNoaXBzZXQgd2FrZXJl Zi4gVGhpcyBnaXZlcyB1cyBhCj4gdHJhbnNpdGlvbiBvbiBlYWNoIGVuZ2luZSB3aGljaCB3ZSBj YW4gZXh0ZW5kIGlmIHdlIHdhbnQgdG8gaW5zZXJ0IG1vcmUKPiBwb3dlcm1hbmdlbWVudCBjb250 cm9sIChzdWNoIGFzIHNvZnQgcmM2KS4gVGhlIGdsb2JhbCBHRU0gb3BlcmF0aW9ucwo+IHRoYXQg Y3VycmVudGx5IHJlcXVpcmUgYSBzdHJ1Y3RfbXV0ZXggYXJlIHJlZHVjZWQgdG8gbGlzdGVuaW5n IHRvIHBtCj4gZXZlbnRzIGZyb20gdGhlIGNoaXBzZXQgR1Qgd2FrZXJlZi4gQXMgd2UgcmVkdWNl IHRoZSBzdHJ1Y3RfbXV0ZXgKPiByZXF1aXJlbWVudCwgdGhlc2UgbGlzdGVuZXJzIHNob3VsZCBl dmFwb3JhdGUuCj4gCj4gUGVyaGFwcyB0aGUgYmlnZ2VzdCBpbW1lZGlhdGUgY2hhbmdlIGlzIHRo YXQgdGhpcyByZW1vdmVzIHRoZQo+IHN0cnVjdF9tdXRleCByZXF1aXJlbWVudCBhcm91bmQgR1Qg cG93ZXIgbWFuYWdlbWVudCwgYWxsb3dpbmcgdXMgZ3JlYXRlcgo+IGZsZXhpYmlsaXR5IGluIHJl cXVlc3QgY29uc3RydWN0aW9uLiBBbm90aGVyIGltcG9ydGFudCBrbm9jay1vbiBlZmZlY3QsCj4g aXMgdGhhdCBieSB0cmFja2luZyBlbmdpbmUgdXNhZ2UsIHdlIGNhbiBpbnNlcnQgYSBzd2l0Y2gg YmFjayB0byB0aGUKPiBrZXJuZWwgY29udGV4dCBvbiB0aGF0IGVuZ2luZSBpbW1lZGlhdGVseSwg YXZvaWRpbmcgYW55IGV4dHJhIGRlbGF5IG9yCj4gaW5zZXJ0aW5nIGdsb2JhbCBzeW5jaHJvbmlz YXRpb24gYmFycmllcnMuIFRoaXMgbWFrZXMgdHJhY2tpbmcgd2hlbiBhbgo+IGVuZ2luZSBhbmQg aXRzIGFzc29jaWF0ZWQgY29udGV4dHMgYXJlIGlkbGUgbXVjaCBlYXNpZXIgLS0gaW1wb3J0YW50 IGZvcgo+IHdoZW4gd2UgZm9yZ28gb3VyIGFzc3VtZWQgZXhlY3V0aW9uIG9yZGVyaW5nIGFuZCBu ZWVkIGlkbGUgYmFycmllcnMgdG8KPiB1bnBpbiB1c2VkIGNvbnRleHRzLiBJbiB0aGUgcHJvY2Vz cywgaXQgbWVhbnMgd2UgcmVtb3ZlIGEgbGFyZ2UgY2h1bmsgb2YKPiBjb2RlIHdob3NlIG9ubHkg cHVycG9zZSB3YXMgdG8gc3dpdGNoIGJhY2sgdG8gdGhlIGtlcm5lbCBjb250ZXh0Lgo+IAo+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwgIDE4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmUuaCAgICAgICAgfCAgIDkgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8IDE0MiArLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyAgICAgfCAxNTMgKysrKysrKysrKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmggICAgIHwgIDIwICsr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgfCAgIDcg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgICAgICAgICB8IDE0 MyArKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5oICAg ICAgICAgfCAgMjcgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVj ay5jICAgICB8ICAgNyArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAg ICAgICAgICAgfCAgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0 LmMgICAgICAgICB8IDEwMSArLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yZXNldC5oICAgICAgICAgfCAgIDEgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmluZ2J1ZmZlci5jICAgIHwgIDE2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9t b2NrX2VuZ2luZS5jICAgICAgICAgfCAgIDMgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfaGFuZ2NoZWNrLmMgIHwgIDQ5ICstLS0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3Rfd29ya2Fyb3VuZHMuYyAgICB8ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDE2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDUgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgOCArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDQxICstLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uaCAgICAgICAgICAgICAgIHwgICAzIC0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICA4NSArLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAgNCAtCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jICAgICAgICAgfCAgNDcgKy0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uYyAgICAgICAgICAgIHwgMjY0ICsr KysrKy0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uaCAg ICAgICAgICAgIHwgICAzIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmggICAgICAgICB8ICAgNCAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu YyAgICAgICAgICAgfCAgMTAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5oICAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu YyAgICAgICAgICAgICAgIHwgIDIyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5oICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbS5jICAgICB8ICAxNiArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMTE0ICstLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAgfCAgMjkgKy0KPiAgIC4uLi9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMgICB8ICAzMiArKy0KPiAgIC4uLi9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAxNSArLQo+ICAgMzcgZmlsZXMg Y2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKyksIDgzMyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9w bS5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3RfcG0uYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3BtLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDg1ODY0MmM3YmM0MC4u ZGQ4ZDkyM2FhMWM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNzEsNiArNzEsOCBA QCBndC15ICs9IFwKPiAgIAlndC9pbnRlbF9icmVhZGNydW1icy5vIFwKPiAgIAlndC9pbnRlbF9j b250ZXh0Lm8gXAo+ICAgCWd0L2ludGVsX2VuZ2luZV9jcy5vIFwKPiArCWd0L2ludGVsX2VuZ2lu ZV9wbS5vIFwKPiArCWd0L2ludGVsX2d0X3BtLm8gXAo+ICAgCWd0L2ludGVsX2hhbmdjaGVjay5v IFwKPiAgIAlndC9pbnRlbF9scmMubyBcCj4gICAJZ3QvaW50ZWxfcmVzZXQubyBcCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwo+IGluZGV4IDQ0MTBlMjBlOGUxMy4uMjk4 ZTQ2M2FkMDgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Nv bnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwo+ IEBAIC0xMCw2ICsxMCw3IEBACj4gICAKPiAgICNpbmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCj4g ICAjaW5jbHVkZSAiaW50ZWxfZW5naW5lLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0u aCIKPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X2dsb2JhbF9jb250ZXh0IHsKPiAgIAlzdHJ1 Y3QgaTkxNV9nbG9iYWwgYmFzZTsKPiBAQCAtMTYyLDcgKzE2MywxMSBAQCBpbnRlbF9jb250ZXh0 X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQlyZXR1cm4gRVJSX1BUUigt RUlOVFIpOwo+ICAgCj4gICAJaWYgKGxpa2VseSghYXRvbWljX3JlYWQoJmNlLT5waW5fY291bnQp KSkgewo+IC0JCWVyciA9IGNlLT5vcHMtPnBpbihjZSk7Cj4gKwkJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gKwo+ICsJCWVyciA9IDA7Cj4gKwkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGNlLT5l bmdpbmUtPmk5MTUsIHdha2VyZWYpCj4gKwkJCWVyciA9IGNlLT5vcHMtPnBpbihjZSk7Cj4gICAJ CWlmIChlcnIpCj4gICAJCQlnb3RvIGVycjsKPiAgIAo+IEBAIC0yNjksMTcgKzI3NCwxMCBAQCBp bnQgX19pbml0IGk5MTVfZ2xvYmFsX2NvbnRleHRfaW5pdCh2b2lkKQo+ICAgCj4gICB2b2lkIGlu dGVsX2NvbnRleHRfZW50ZXJfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPmdlbV9jb250ZXh0LT5pOTE1 Owo+IC0KPiAtCWlmICghaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKyspCj4gLQkJaTkxNV9nZW1f dW5wYXJrKGk5MTUpOwo+ICsJaW50ZWxfZW5naW5lX3BtX2dldChjZS0+ZW5naW5lKTsKPiAgIH0K PiAgIAo+ICAgdm9pZCBpbnRlbF9jb250ZXh0X2V4aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPmdl bV9jb250ZXh0LT5pOTE1Owo+IC0KPiAtCUdFTV9CVUdfT04oIWk5MTUtPmd0LmFjdGl2ZV9yZXF1 ZXN0cyk7Cj4gLQlpZiAoIS0taTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKQo+IC0JCWk5MTVfZ2Vt X3BhcmsoaTkxNSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGNlLT5lbmdpbmUpOwo+ICAgfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCj4gaW5kZXggNzJjN2MzMzdhY2U5 Li5hMjI4ZGMxNzc0ZDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUu aAo+IEBAIC0zODIsNiArMzgyLDggQEAgdTY0IGludGVsX2VuZ2luZV9nZXRfbGFzdF9iYXRjaF9o ZWFkKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICB2b2lkIGludGVs X2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAg CQkJICAgICAgIHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpOwo+ICAgCj4gK3ZvaWQg aW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4gKwo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfZmluaV9icmVhZGNy dW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgCj4gQEAgLTQ1OCwxOSAr NDYwLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcmVzZXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgewo+ICAgCWlmIChlbmdpbmUtPnJlc2V0LnJlc2V0 KQo+ICAgCQllbmdpbmUtPnJlc2V0LnJlc2V0KGVuZ2luZSwgc3RhbGxlZCk7Cj4gKwllbmdpbmUt PnNlcmlhbCsrOyAvKiBjb250ZXh0cyBsb3N0ICovCj4gICB9Cj4gICAKPiAtdm9pZCBpbnRlbF9l bmdpbmVzX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGZvcmNl KTsKPiAtdm9pZCBpbnRlbF9ndF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Owo+IC0KPiAgIGJvb2wgaW50ZWxfZW5naW5lX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiAgIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgCj4gICB2b2lkIGludGVsX2VuZ2luZV9sb3N0X2Nv bnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+IC12b2lkIGludGVs X2VuZ2luZXNfcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLXZvaWQgaW50 ZWxfZW5naW5lc191bnBhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+IC0KPiAg IHZvaWQgaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgdW5zaWduZWQgaW50IGludGVsX2VuZ2luZXNfaGFzX2Nv bnRleHRfaXNvbGF0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggMjFkZDNmMjVl NjQxLi4yNjhkZmI4ZTE2ZmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYwo+IEBAIC0yNyw2ICsyNyw3IEBACj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIK PiAgIAo+ICAgI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZW5n aW5lX3BtLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf cmVzZXQuaCIKPiAgIAo+IEBAIC00NTEsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5n aW5lX2luaXRfYmF0Y2hfcG9vbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJ aTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KCZlbmdpbmUtPmJhdGNoX3Bvb2wsIGVuZ2luZSk7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3Qoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0X2V4ZWNs aXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGlu dGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlz dHM7Cj4gICAKPiBAQCAtNTg0LDEwICs1ODUsMTEgQEAgaW50IGludGVsX2VuZ2luZV9zZXR1cF9j b21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWk5MTVfdGltZWxpbmVf c2V0X3N1YmNsYXNzKCZlbmdpbmUtPnRpbWVsaW5lLCBUSU1FTElORV9FTkdJTkUpOwo+ICAgCj4g ICAJaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoZW5naW5lKTsKPiAtCWludGVsX2VuZ2lu ZV9pbml0X2V4ZWNsaXN0KGVuZ2luZSk7Cj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMo ZW5naW5lKTsKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKPiAgIAlp bnRlbF9lbmdpbmVfaW5pdF9iYXRjaF9wb29sKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2lu aXRfY21kX3BhcnNlcihlbmdpbmUpOwo+ICsJaW50ZWxfZW5naW5lX2luaXRfX3BtKGVuZ2luZSk7 Cj4gICAKPiAgIAkvKiBVc2UgdGhlIHdob2xlIGRldmljZSBieSBkZWZhdWx0ICovCj4gICAJZW5n aW5lLT5zc2V1ID0KPiBAQCAtNzU4LDMwICs3NjAsNiBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRf Y29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlyZXR1cm4gcmV0Owo+ ICAgfQo+ICAgCj4gLXZvaWQgaW50ZWxfZ3RfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCj4gLQkvKgo+IC0JICogQWZ0ZXIgcmVzdW1lLCB3ZSBt YXkgbmVlZCB0byBwb2tlIGludG8gdGhlIHBpbm5lZCBrZXJuZWwKPiAtCSAqIGNvbnRleHRzIHRv IHBhcGVyIG92ZXIgYW55IGRhbWFnZSBjYXVzZWQgYnkgdGhlIHN1ZGRlbiBzdXNwZW5kLgo+IC0J ICogT25seSB0aGUga2VybmVsIGNvbnRleHRzIHNob3VsZCByZW1haW4gcGlubmVkIG92ZXIgc3Vz cGVuZCwKPiAtCSAqIGFsbG93aW5nIHVzIHRvIGZpeHVwIHRoZSB1c2VyIGNvbnRleHRzIG9uIHRo ZWlyIGZpcnN0IHBpbi4KPiAtCSAqLwo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gLQo+IC0JCWNlID0gZW5naW5l LT5rZXJuZWxfY29udGV4dDsKPiAtCQlpZiAoY2UpCj4gLQkJCWNlLT5vcHMtPnJlc2V0KGNlKTsK PiAtCj4gLQkJY2UgPSBlbmdpbmUtPnByZWVtcHRfY29udGV4dDsKPiAtCQlpZiAoY2UpCj4gLQkJ CWNlLT5vcHMtPnJlc2V0KGNlKTsKPiAtCX0KPiAtfQo+IC0KPiAgIC8qKgo+ICAgICogaW50ZWxf ZW5naW5lc19jbGVhbnVwX2NvbW1vbiAtIGNsZWFucyB1cCB0aGUgZW5naW5lIHN0YXRlIGNyZWF0 ZWQgYnkKPiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbW9uIGlu aXRpYWlsaXplcnMuCj4gQEAgLTExMjgsMTE3ICsxMTA2LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVz X3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIAkJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKGVuZ2luZSk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIGJvb2wgcmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAtewo+IC0JaWYgKElOVEVMX0lORk8oaTkxNSktPmdwdV9yZXNldF9jbG9iYmVyc19kaXNw bGF5KQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gLQlyZXR1cm4gaW50ZWxfZ3B1X3Jlc2V0KGk5 MTUsIEFMTF9FTkdJTkVTKSA9PSAwOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaW50ZWxfZW5naW5l c19zYW5pdGl6ZTogY2FsbGVkIGFmdGVyIHRoZSBHUFUgaGFzIGxvc3QgcG93ZXIKPiAtICogQGk5 MTU6IHRoZSBpOTE1IGRldmljZQo+IC0gKiBAZm9yY2U6IGlnbm9yZSBhIGZhaWxlZCByZXNldCBh bmQgc2FuaXRpemUgZW5naW5lIHN0YXRlIGFueXdheQo+IC0gKgo+IC0gKiBBbnl0aW1lIHdlIHJl c2V0IHRoZSBHUFUsIGVpdGhlciB3aXRoIGFuIGV4cGxpY2l0IEdQVSByZXNldCBvciB0aHJvdWdo IGEKPiAtICogUENJIHBvd2VyIGN5Y2xlLCB0aGUgR1BVIGxvc2VzIHN0YXRlIGFuZCB3ZSBtdXN0 IHJlc2V0IG91ciBzdGF0ZSB0cmFja2luZwo+IC0gKiB0byBtYXRjaC4gTm90ZSB0aGF0IGNhbGxp bmcgaW50ZWxfZW5naW5lc19zYW5pdGl6ZSgpIGlmIHRoZSBHUFUgaGFzIG5vdAo+IC0gKiBiZWVu IHJlc2V0IHJlc3VsdHMgaW4gbXVjaCBjb25mdXNpb24hCj4gLSAqLwo+IC12b2lkIGludGVsX2Vu Z2luZXNfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wgZm9yY2Up Cj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwo+IC0KPiAtCUdFTV9UUkFDRSgiXG4iKTsKPiAtCj4gLQlpZiAoIXJlc2V0 X2VuZ2luZXMoaTkxNSkgJiYgIWZvcmNlKQo+IC0JCXJldHVybjsKPiAtCj4gLQlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiAtCQlpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBm YWxzZSk7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpbnRlbF9lbmdpbmVzX3Bhcms6IGNhbGxlZCB3 aGVuIHRoZSBHVCBpcyB0cmFuc2l0aW9uaW5nIGZyb20gYnVzeS0+aWRsZQo+IC0gKiBAaTkxNTog dGhlIGk5MTUgZGV2aWNlCj4gLSAqCj4gLSAqIFRoZSBHVCBpcyBub3cgaWRsZSBhbmQgYWJvdXQg dG8gZ28gdG8gc2xlZXAgKG1heWJlIG5ldmVyIHRvIHdha2UgYWdhaW4/KS4KPiAtICogVGltZSBm b3IgdXMgdG8gdGlkeSBhbmQgcHV0IGF3YXkgb3VyIHRveXMgKHJlbGVhc2UgcmVzb3VyY2VzIGJh Y2sgdG8gdGhlCj4gLSAqIHN5c3RlbSkuCj4gLSAqLwo+IC12b2lkIGludGVsX2VuZ2luZXNfcGFy ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQo+IC0JZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAtCQkvKiBGbHVzaCB0aGUgcmVzaWR1 YWwgaXJxIHRhc2tsZXRzIGZpcnN0LiAqLwo+IC0JCWludGVsX2VuZ2luZV9kaXNhcm1fYnJlYWRj cnVtYnMoZW5naW5lKTsKPiAtCQl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2ts ZXQpOwo+IC0KPiAtCQkvKgo+IC0JCSAqIFdlIGFyZSBjb21taXR0ZWQgbm93IHRvIHBhcmtpbmcg dGhlIGVuZ2luZXMsIG1ha2Ugc3VyZSB0aGVyZQo+IC0JCSAqIHdpbGwgYmUgbm8gbW9yZSBpbnRl cnJ1cHRzIGFycml2aW5nIGxhdGVyIGFuZCB0aGUgZW5naW5lcwo+IC0JCSAqIGFyZSB0cnVseSBp ZGxlLgo+IC0JCSAqLwo+IC0JCWlmICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdp bmUpLCAxMCkpIHsKPiAtCQkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRl cihfX2Z1bmNfXyk7Cj4gLQo+IC0JCQlkZXZfZXJyKGk5MTUtPmRybS5kZXYsCj4gLQkJCQkiJXMg aXMgbm90IGlkbGUgYmVmb3JlIHBhcmtpbmdcbiIsCj4gLQkJCQllbmdpbmUtPm5hbWUpOwo+IC0J CQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLCBOVUxMKTsKPiAtCQl9Cj4gLQo+IC0JCS8q IE11c3QgYmUgcmVzZXQgdXBvbiBpZGxpbmcsIG9yIHdlIG1heSBtaXNzIHRoZSBidXN5IHdha2V1 cC4gKi8KPiAtCQlHRU1fQlVHX09OKGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hp bnQgIT0gSU5UX01JTik7Cj4gLQo+IC0JCWlmIChlbmdpbmUtPnBhcmspCj4gLQkJCWVuZ2luZS0+ cGFyayhlbmdpbmUpOwo+IC0KPiAtCQlpZiAoZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSkg ewo+IC0JCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7 Cj4gLQkJCWVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUgPSBOVUxMOwo+IC0JCX0KPiAtCj4g LQkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+IC0JCWVu Z2luZS0+ZXhlY2xpc3RzLm5vX3ByaW9saXN0ID0gZmFsc2U7Cj4gLQl9Cj4gLQo+IC0JaTkxNS0+ Z3QuYWN0aXZlX2VuZ2luZXMgPSAwOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaW50ZWxfZW5naW5l c191bnBhcms6IGNhbGxlZCB3aGVuIHRoZSBHVCBpcyB0cmFuc2l0aW9uaW5nIGZyb20gaWRsZS0+ YnVzeQo+IC0gKiBAaTkxNTogdGhlIGk5MTUgZGV2aWNlCj4gLSAqCj4gLSAqIFRoZSBHVCB3YXMg aWRsZSBhbmQgbm93IGFib3V0IHRvIGZpcmUgdXAgd2l0aCBzb21lIG5ldyB1c2VyIHJlcXVlc3Rz Lgo+IC0gKi8KPiAtdm9pZCBpbnRlbF9lbmdpbmVzX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0J ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg aTkxNSwgaWQpIHsKPiAtCQl2b2lkICptYXA7Cj4gLQo+IC0JCS8qIFBpbiB0aGUgZGVmYXVsdCBz dGF0ZSBmb3IgZmFzdCByZXNldHMgZnJvbSBhdG9taWMgY29udGV4dC4gKi8KPiAtCQltYXAgPSBO VUxMOwo+IC0JCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCj4gLQkJCW1hcCA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSwKPiAtCQkJCQkJICAgICAgSTkx NV9NQVBfV0IpOwo+IC0JCWlmICghSVNfRVJSX09SX05VTEwobWFwKSkKPiAtCQkJZW5naW5lLT5w aW5uZWRfZGVmYXVsdF9zdGF0ZSA9IG1hcDsKPiAtCj4gLQkJaWYgKGVuZ2luZS0+dW5wYXJrKQo+ IC0JCQllbmdpbmUtPnVucGFyayhlbmdpbmUpOwo+IC0KPiAtCQlpbnRlbF9lbmdpbmVfaW5pdF9o YW5nY2hlY2soZW5naW5lKTsKPiAtCX0KPiAtfQo+IC0KPiAgIC8qKgo+ICAgICogaW50ZWxfZW5n aW5lX2xvc3RfY29udGV4dDogY2FsbGVkIHdoZW4gdGhlIEdQVSBpcyByZXNldCBpbnRvIHVua25v d24gc3RhdGUKPiAgICAqIEBlbmdpbmU6IHRoZSBlbmdpbmUKPiBAQCAtMTUyMyw2ICsxMzkwLDcg QEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4gICAJaWYgKGk5MTVfcmVzZXRfZmFpbGVkKGVuZ2luZS0+aTkxNSkpCj4gICAJCWRybV9wcmlu dGYobSwgIioqKiBXRURHRUQgKioqXG4iKTsKPiAgIAo+ICsJZHJtX3ByaW50ZihtLCAiXHRBd2Fr ZT8gJWRcbiIsIGF0b21pY19yZWFkKCZlbmdpbmUtPndha2VyZWYuY291bnQpKTsKPiAgIAlkcm1f cHJpbnRmKG0sICJcdEhhbmdjaGVjayAleDoleCBbJWQgbXNdXG4iLAo+ICAgCQkgICBlbmdpbmUt PmhhbmdjaGVjay5sYXN0X3NlcW5vLAo+ICAgCQkgICBlbmdpbmUtPmhhbmdjaGVjay5uZXh0X3Nl cW5vLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmNjMGFkZmExNDk0Nwo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0u Ywo+IEBAIC0wLDAgKzEsMTUzIEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBNSVQKPiArICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiAr ICovCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArCj4gKyNpbmNsdWRlICJpbnRlbF9l bmdpbmUuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICsjaW5jbHVkZSAiaW50 ZWxfZ3RfcG0uaCIKPiArCj4gK3N0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3VucGFyayhzdHJ1Y3Qg aW50ZWxfd2FrZXJlZiAqd2YpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9Cj4gKwkJY29udGFpbmVyX29mKHdmLCB0eXBlb2YoKmVuZ2luZSksIHdha2VyZWYpOwo+ICsJ dm9pZCAqbWFwOwo+ICsKPiArCUdFTV9UUkFDRSgiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4gKwo+ ICsJaW50ZWxfZ3RfcG1fZ2V0KGVuZ2luZS0+aTkxNSk7Cj4gKwo+ICsJLyogUGluIHRoZSBkZWZh dWx0IHN0YXRlIGZvciBmYXN0IHJlc2V0cyBmcm9tIGF0b21pYyBjb250ZXh0LiAqLwo+ICsJbWFw ID0gTlVMTDsKPiArCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCj4gKwkJbWFwID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0YXRlLAo+ICsJCQkJCSAgICAgIEk5 MTVfTUFQX1dCKTsKPiArCWlmICghSVNfRVJSX09SX05VTEwobWFwKSkKPiArCQllbmdpbmUtPnBp bm5lZF9kZWZhdWx0X3N0YXRlID0gbWFwOwo+ICsKPiArCWlmIChlbmdpbmUtPnVucGFyaykKPiAr CQllbmdpbmUtPnVucGFyayhlbmdpbmUpOwo+ICsKPiArCWludGVsX2VuZ2luZV9pbml0X2hhbmdj aGVjayhlbmdpbmUpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZW5naW5l X3BtX2dldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludGVsX3dh a2VyZWZfZ2V0KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+d2FrZXJlZiwgaW50ZWxfZW5naW5lX3Vu cGFyayk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOwo+ICsKPiArCS8qIEFscmVhZHkgaW5zaWRlIHRoZSBrZXJuZWwgY29udGV4dCwgc2Fm ZSB0byBwb3dlciBkb3duLiAqLwo+ICsJaWYgKGVuZ2luZS0+d2FrZXJlZl9zZXJpYWwgPT0gZW5n aW5lLT5zZXJpYWwpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJLyogR1BVIGlzIHBvaW50aW5n IHRvIHRoZSB2b2lkLCBhcyBnb29kIGFzIGluIHRoZSBrZXJuZWwgY29udGV4dC4gKi8KPiArCWlm IChpOTE1X3Jlc2V0X2ZhaWxlZChlbmdpbmUtPmk5MTUpKQo+ICsJCXJldHVybiB0cnVlOwo+ICsK PiArCS8qCj4gKwkgKiBOb3RlLCB3ZSBkbyB0aGlzIHdpdGhvdXQgdGFraW5nIHRoZSB0aW1lbGlu ZS0+bXV0ZXguIFdlIGNhbm5vdAo+ICsJICogYXMgd2UgbWF5IGJlIGNhbGxlZCB3aGlsZSByZXRp cmluZyB0aGUga2VybmVsIGNvbnRleHQgYW5kIHNvCj4gKwkgKiBhbHJlYWR5IHVuZGVybmVhdGgg dGhlIHRpbWVsaW5lLT5tdXRleC4gSW5zdGVhZCB3ZSByZWx5IG9uIHRoZQo+ICsJICogZXhjbHVz aXZlIHByb3BlcnR5IG9mIHRoZSBpbnRlbF9lbmdpbmVfcGFyayB0aGF0IHByZXZlbnRzIGFueW9u ZQo+ICsJICogZWxzZSBmcm9tIGNyZWF0aW5nIGEgcmVxdWVzdCBvbiB0aGlzIGVuZ2luZS4gVGhp cyBhbHNvIHJlcXVpcmVzCj4gKwkgKiB0aGF0IHRoZSByaW5nIGlzIGVtcHR5IGFuZCB3ZSBhdm9p ZCBhbnkgd2FpdHMgd2hpbGUgY29uc3RydWN0aW5nCj4gKwkgKiB0aGUgY29udGV4dCwgYXMgdGhl eSBhc3N1bWUgcHJvdGVjdGlvbiBieSB0aGUgdGltZWxpbmUtPm11dGV4Lgo+ICsJICogVGhpcyBz aG91bGQgaG9sZCB0cnVlIGFzIHdlIGNhbiBvbmx5IHBhcmsgdGhlIGVuZ2luZSBhZnRlcgo+ICsJ ICogcmV0aXJpbmcgdGhlIGxhc3QgcmVxdWVzdCwgdGh1cyBhbGwgcmluZ3Mgc2hvdWxkIGJlIGVt cHR5IGFuZAo+ICsJICogYWxsIHRpbWVsaW5lcyBpZGxlLgo+ICsJICovCj4gKwlycSA9IF9faTkx NV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0LCBHRlBfTk9XQUlUKTsKPiAr CWlmIChJU19FUlIocnEpKQo+ICsJCS8qIENvbnRleHQgc3dpdGNoIGZhaWxlZCwgaG9wZSBmb3Ig dGhlIGJlc3QhIE1heWJlIHJlc2V0PyAqLwo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCS8qIENo ZWNrIGFnYWluIG9uIHRoZSBuZXh0IHJldGlyZW1lbnQuICovCj4gKwllbmdpbmUtPndha2VyZWZf c2VyaWFsID0gZW5naW5lLT5zZXJpYWwgKyAxOwoKSXMgZW5naW5lLT5zZXJpYWwgZ3VhcmFudGVl ZCB0byBiZSBzdGFibGUgYXQgdGhpcyBwb2ludD8gSSBndWVzcyBzbyAKc2luY2UgdGhlcmUgY2Fu IG9ubHkgYmUgb25lIHBhcmsgYXQgYSB0aW1lLgoKPiArCV9faTkxNV9yZXF1ZXN0X2NvbW1pdChy cSk7Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2Vu Z2luZV9wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiArewo+ICsJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0KPiArCQljb250YWluZXJfb2Yod2YsIHR5cGVvZigqZW5naW5l KSwgd2FrZXJlZik7Cj4gKwo+ICsJLyoKPiArCSAqIElmIG9uZSBhbmQgb25seSBvbmUgcmVxdWVz dCBpcyBjb21wbGV0ZWQgYmV0d2VlbiBwbSBldmVudHMsCj4gKwkgKiB3ZSBrbm93IHRoYXQgd2Ug YXJlIGluc2lkZSB0aGUga2VybmVsIGNvbnRleHQgYW5kIGl0IGlzCj4gKwkgKiBzYWZlIHRvIHBv d2VyIGRvd24uIChXZSBhcmUgcGFyYW5vaWQgaW4gY2FzZSB0aGF0IHJ1bnRpbWUKPiArCSAqIHN1 c3BlbmQgY2F1c2VzIGNvcnJ1cHRpb24gdG8gdGhlIGFjdGl2ZSBjb250ZXh0IGltYWdlLCBhbmQK PiArCSAqIHdhbnQgdG8gYXZvaWQgdGhhdCBpbXBhY3RpbmcgdXNlcnNwYWNlLikKPiArCSAqLwo+ ICsJaWYgKCFzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoZW5naW5lKSkKPiArCQlyZXR1cm4gLUVC VVNZOwoKQnV0IGl0IGlzIGlnbm9yZWQgYnkgaW50ZWxfZW5naW5lX3BtX3B1dC4gU2hvdWxkIGl0 IGJlIGEgV0FSTl9PTiBvciAKc29tZXRoaW5nPwoKPiArCj4gKwlHRU1fVFJBQ0UoIiVzXG4iLCBl bmdpbmUtPm5hbWUpOwo+ICsKPiArCWludGVsX2VuZ2luZV9kaXNhcm1fYnJlYWRjcnVtYnMoZW5n aW5lKTsKPiArCj4gKwkvKiBNdXN0IGJlIHJlc2V0IHVwb24gaWRsaW5nLCBvciB3ZSBtYXkgbWlz cyB0aGUgYnVzeSB3YWtldXAuICovCj4gKwlHRU1fQlVHX09OKGVuZ2luZS0+ZXhlY2xpc3RzLnF1 ZXVlX3ByaW9yaXR5X2hpbnQgIT0gSU5UX01JTik7Cj4gKwo+ICsJaWYgKGVuZ2luZS0+cGFyaykK PiArCQllbmdpbmUtPnBhcmsoZW5naW5lKTsKPiArCj4gKwlpZiAoZW5naW5lLT5waW5uZWRfZGVm YXVsdF9zdGF0ZSkgewo+ICsJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5lLT5kZWZh dWx0X3N0YXRlKTsKPiArCQllbmdpbmUtPnBpbm5lZF9kZWZhdWx0X3N0YXRlID0gTlVMTDsKPiAr CX0KPiArCj4gKwllbmdpbmUtPmV4ZWNsaXN0cy5ub19wcmlvbGlzdCA9IGZhbHNlOwo+ICsKPiAr CWludGVsX2d0X3BtX3B1dChlbmdpbmUtPmk5MTUpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3ZvaWQgaW50ZWxfZW5naW5lX3BtX3B1dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gK3sKPiArCWludGVsX3dha2VyZWZfcHV0KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+d2FrZXJl ZiwgaW50ZWxfZW5naW5lX3BhcmspOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0 X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludGVsX3dha2Vy ZWZfaW5pdCgmZW5naW5lLT53YWtlcmVmKTsKPiArfQo+ICsKPiAraW50IGludGVsX2VuZ2luZXNf cmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCWlu dCBlcnIgPSAwOwo+ICsKPiArCS8qCj4gKwkgKiBBZnRlciByZXN1bWUsIHdlIG1heSBuZWVkIHRv IHBva2UgaW50byB0aGUgcGlubmVkIGtlcm5lbAo+ICsJICogY29udGV4dHMgdG8gcGFwZXIgb3Zl ciBhbnkgZGFtYWdlIGNhdXNlZCBieSB0aGUgc3VkZGVuIHN1c3BlbmQuCj4gKwkgKiBPbmx5IHRo ZSBrZXJuZWwgY29udGV4dHMgc2hvdWxkIHJlbWFpbiBwaW5uZWQgb3ZlciBzdXNwZW5kLAo+ICsJ ICogYWxsb3dpbmcgdXMgdG8gZml4dXAgdGhlIHVzZXIgY29udGV4dHMgb24gdGhlaXIgZmlyc3Qg cGluLgo+ICsJICovCj4gKwlpbnRlbF9ndF9wbV9nZXQoaTkxNSk7Cj4gKwlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsK PiArCQllbmdpbmUtPnNlcmlhbCsrOyAvKiBrZXJuZWwgY29udGV4dCBsb3N0ICovCj4gKwkJZXJy ID0gZW5naW5lLT5yZXN1bWUoZW5naW5lKTsKPiArCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2lu ZSk7Cj4gKwkJaWYgKGVycikgewo+ICsJCQlkZXZfZXJyKGk5MTUtPmRybS5kZXYsCj4gKwkJCQki RmFpbGVkIHRvIHJlc3RhcnQgJXMgKCVkKVxuIiwKPiArCQkJCWVuZ2luZS0+bmFtZSwgZXJyKTsK PiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsJaW50ZWxfZ3RfcG1fcHV0KGk5MTUpOwo+ICsK PiArCXJldHVybiBlcnI7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfcG0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xNDNh YzkwYmExMTcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3BtLmgKPiBAQCAtMCwwICsxLDIwIEBACj4gKy8qCj4gKyAqIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwg Q29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaWZuZGVmIElOVEVMX0VOR0lORV9QTV9ICj4gKyNk ZWZpbmUgSU5URUxfRU5HSU5FX1BNX0gKPiArCj4gK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwo+ICsKPiArdm9pZCBpbnRlbF9lbmdpbmVfcG1fZ2V0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gK3ZvaWQgaW50ZWxfZW5naW5lX3Bt X3B1dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICsKPiArdm9pZCBpbnRlbF9l bmdpbmVfaW5pdF9fcG0oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArCj4gK2lu dCBpbnRlbF9lbmdpbmVzX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4g Kwo+ICsjZW5kaWYgLyogSU5URUxfRU5HSU5FX1BNX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IGluZGV4IDNhZGY1OGRhNmQyYy4uZDk3MmMz MzkzMDljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5 cGVzLmgKPiBAQCAtMjAsNiArMjAsNyBAQAo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIK PiAgICNpbmNsdWRlICJpOTE1X3RpbWVsaW5lX3R5cGVzLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf c3NldS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgo+ICAgI2luY2x1ZGUgImludGVs X3dvcmthcm91bmRzX3R5cGVzLmgiCj4gICAKPiAgICNkZWZpbmUgSTkxNV9NQVhfU0xJQ0VTCTMK PiBAQCAtMjg3LDYgKzI4OCwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqa2VybmVsX2NvbnRleHQ7IC8qIHBpbm5lZCAqLwo+ICAgCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpwcmVlbXB0X2NvbnRleHQ7IC8qIHBpbm5lZDsgb3B0aW9uYWwgKi8K PiAgIAo+ICsJdW5zaWduZWQgbG9uZyBzZXJpYWw7Cj4gKwo+ICsJdW5zaWduZWQgbG9uZyB3YWtl cmVmX3NlcmlhbDsKPiArCXN0cnVjdCBpbnRlbF93YWtlcmVmIHdha2VyZWY7Cj4gICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmRlZmF1bHRfc3RhdGU7Cj4gICAJdm9pZCAqcGlubmVkX2Rl ZmF1bHRfc3RhdGU7Cj4gICAKPiBAQCAtMzU5LDcgKzM2NCw3IEBAIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3Mgewo+ICAgCXZvaWQJCSgqaXJxX2VuYWJsZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPiAgIAl2b2lkCQkoKmlycV9kaXNhYmxlKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+ICAgCj4gLQlpbnQJCSgqaW5pdF9odykoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiArCWludAkJKCpyZXN1bWUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7Cj4gICAKPiAgIAlzdHJ1Y3Qgewo+ICAgCQl2b2lkICgqcHJlcGFyZSkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3Bt LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYWU3MTU1ZjBl MDYzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3BtLmMKPiBAQCAtMCwwICsxLDE0MyBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpbnRl bF9ndF9wbS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfcG0uaCIKPiArI2luY2x1ZGUgImludGVsX3dh a2VyZWYuaCIKPiArCj4gK3N0YXRpYyB2b2lkIHBtX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgaW50IHN0YXRlKQo+ICt7Cj4gKwlibG9ja2luZ19ub3RpZmllcl9jYWxsX2No YWluKCZpOTE1LT5ndC5wbV9ub3RpZmljYXRpb25zLCBzdGF0ZSwgaTkxNSk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgaW50ZWxfZ3RfdW5wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQo+ICsJCWNvbnRhaW5lcl9vZih3 ZiwgdHlwZW9mKCppOTE1KSwgZ3Qud2FrZXJlZik7Cj4gKwo+ICsJR0VNX1RSQUNFKCJcbiIpOwo+ ICsKPiArCS8qCj4gKwkgKiBJdCBzZWVtcyB0aGF0IHRoZSBETUMgbGlrZXMgdG8gdHJhbnNpdGlv biBiZXR3ZWVuIHRoZSBEQyBzdGF0ZXMgYSBsb3QKPiArCSAqIHdoZW4gdGhlcmUgYXJlIG5vIGNv bm5lY3RlZCBkaXNwbGF5cyAobm8gYWN0aXZlIHBvd2VyIGRvbWFpbnMpIGR1cmluZwo+ICsJICog Y29tbWFuZCBzdWJtaXNzaW9uLgo+ICsJICoKPiArCSAqIFRoaXMgYWN0aXZpdHkgaGFzIG5lZ2F0 aXZlIGltcGFjdCBvbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGNoaXAgd2l0aAo+ICsJICogaHVn ZSBsYXRlbmNpZXMgb2JzZXJ2ZWQgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIGFuZCBlbHNld2hl cmUuCj4gKwkgKgo+ICsJICogV29yayBhcm91bmQgaXQgYnkgZ3JhYmJpbmcgYSBHVCBJUlEgcG93 ZXIgZG9tYWluIHdoaWxzdCB0aGVyZSBpcyBhbnkKPiArCSAqIEdUIGFjdGl2aXR5LCBwcmV2ZW50 aW5nIGFueSBEQyBzdGF0ZSB0cmFuc2l0aW9ucy4KPiArCSAqLwo+ICsJaTkxNS0+Z3QuYXdha2Ug PSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJRKTsKPiAr CUdFTV9CVUdfT04oIWk5MTUtPmd0LmF3YWtlKTsKPiArCj4gKwlpbnRlbF9lbmFibGVfZ3RfcG93 ZXJzYXZlKGk5MTUpOwo+ICsKPiArCWk5MTVfdXBkYXRlX2dmeF92YWwoaTkxNSk7Cj4gKwlpZiAo SU5URUxfR0VOKGk5MTUpID49IDYpCj4gKwkJZ2VuNl9ycHNfYnVzeShpOTE1KTsKPiArCj4gKwlp OTE1X3BtdV9ndF91bnBhcmtlZChpOTE1KTsKPiArCj4gKwlpOTE1X3F1ZXVlX2hhbmdjaGVjayhp OTE1KTsKPiArCj4gKwlwbV9ub3RpZnkoaTkxNSwgSU5URUxfR1RfVU5QQVJLKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndF9wbV9nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWludGVsX3dha2VyZWZfZ2V0KGk5MTUsICZpOTE1LT5n dC53YWtlcmVmLCBpbnRlbF9ndF91bnBhcmspOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVs X2d0X3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gKwkJY29udGFpbmVyX29mKHdmLCB0eXBlb2YoKmk5MTUpLCBn dC53YWtlcmVmKTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmID0gZmV0Y2hfYW5kX3plcm8o Jmk5MTUtPmd0LmF3YWtlKTsKPiArCj4gKwlHRU1fVFJBQ0UoIlxuIik7Cj4gKwo+ICsJcG1fbm90 aWZ5KGk5MTUsIElOVEVMX0dUX1BBUkspOwo+ICsKPiArCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1 KTsKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPiArCQlnZW42X3Jwc19pZGxlKGk5MTUp Owo+ICsKPiArCUdFTV9CVUdfT04oIXdha2VyZWYpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9w dXQoaTkxNSwgUE9XRVJfRE9NQUlOX0dUX0lSUSwgd2FrZXJlZik7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZ3RfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICt7Cj4gKwlpbnRlbF93YWtlcmVmX3B1dChpOTE1LCAmaTkxNS0+Z3Qud2FrZXJl ZiwgaW50ZWxfZ3RfcGFyayk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZ3RfcG1faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJaW50ZWxfd2FrZXJlZl9pbml0KCZp OTE1LT5ndC53YWtlcmVmKTsKPiArCUJMT0NLSU5HX0lOSVRfTk9USUZJRVJfSEVBRCgmaTkxNS0+ Z3QucG1fbm90aWZpY2F0aW9ucyk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHJlc2V0X2VuZ2lu ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWlmIChJTlRFTF9JTkZP KGk5MTUpLT5ncHVfcmVzZXRfY2xvYmJlcnNfZGlzcGxheSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJcmV0dXJuIGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5HSU5FUykgPT0gMDsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2d0X3Nhbml0aXplOiBjYWxsZWQgYWZ0ZXIgdGhlIEdQ VSBoYXMgbG9zdCBwb3dlcgo+ICsgKiBAaTkxNTogdGhlIGk5MTUgZGV2aWNlCj4gKyAqIEBmb3Jj ZTogaWdub3JlIGEgZmFpbGVkIHJlc2V0IGFuZCBzYW5pdGl6ZSBlbmdpbmUgc3RhdGUgYW55d2F5 Cj4gKyAqCj4gKyAqIEFueXRpbWUgd2UgcmVzZXQgdGhlIEdQVSwgZWl0aGVyIHdpdGggYW4gZXhw bGljaXQgR1BVIHJlc2V0IG9yIHRocm91Z2ggYQo+ICsgKiBQQ0kgcG93ZXIgY3ljbGUsIHRoZSBH UFUgbG9zZXMgc3RhdGUgYW5kIHdlIG11c3QgcmVzZXQgb3VyIHN0YXRlIHRyYWNraW5nCj4gKyAq IHRvIG1hdGNoLiBOb3RlIHRoYXQgY2FsbGluZyBpbnRlbF9ndF9zYW5pdGl6ZSgpIGlmIHRoZSBH UFUgaGFzIG5vdAo+ICsgKiBiZWVuIHJlc2V0IHJlc3VsdHMgaW4gbXVjaCBjb25mdXNpb24hCj4g KyAqLwo+ICt2b2lkIGludGVsX2d0X3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBib29sIGZvcmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCj4gKwlHRU1fVFJBQ0UoIlxuIik7Cj4g Kwo+ICsJaWYgKCFyZXNldF9lbmdpbmVzKGk5MTUpICYmICFmb3JjZSkKPiArCQlyZXR1cm47Cj4g Kwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpCj4gKwkJaW50ZWxfZW5naW5l X3Jlc2V0KGVuZ2luZSwgZmFsc2UpOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2d0X3Jlc3VtZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwo+ICsJLyoKPiAr CSAqIEFmdGVyIHJlc3VtZSwgd2UgbWF5IG5lZWQgdG8gcG9rZSBpbnRvIHRoZSBwaW5uZWQga2Vy bmVsCj4gKwkgKiBjb250ZXh0cyB0byBwYXBlciBvdmVyIGFueSBkYW1hZ2UgY2F1c2VkIGJ5IHRo ZSBzdWRkZW4gc3VzcGVuZC4KPiArCSAqIE9ubHkgdGhlIGtlcm5lbCBjb250ZXh0cyBzaG91bGQg cmVtYWluIHBpbm5lZCBvdmVyIHN1c3BlbmQsCj4gKwkgKiBhbGxvd2luZyB1cyB0byBmaXh1cCB0 aGUgdXNlciBjb250ZXh0cyBvbiB0aGVpciBmaXJzdCBwaW4uCj4gKwkgKi8KPiArCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNl Owo+ICsKPiArCQljZSA9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQ7Cj4gKwkJaWYgKGNlKQo+ICsJ CQljZS0+b3BzLT5yZXNldChjZSk7Cj4gKwo+ICsJCWNlID0gZW5naW5lLT5wcmVlbXB0X2NvbnRl eHQ7Cj4gKwkJaWYgKGNlKQo+ICsJCQljZS0+b3BzLT5yZXNldChjZSk7Cj4gKwl9Cj4gK30KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uN2RkMTEzMGExOWE0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmgKPiBAQCAtMCwwICsxLDI3IEBA Cj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArICoKPiArICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaWZuZGVmIElO VEVMX0dUX1BNX0gKPiArI2RlZmluZSBJTlRFTF9HVF9QTV9ICj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvdHlwZXMuaD4KPiArCj4gK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICsKPiArZW51bSB7 Cj4gKwlJTlRFTF9HVF9VTlBBUkssCj4gKwlJTlRFTF9HVF9QQVJLLAo+ICt9Owo+ICsKPiArdm9p ZCBpbnRlbF9ndF9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICt2b2lk IGludGVsX2d0X3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gKwo+ICt2 b2lkIGludGVsX2d0X3BtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsK PiArdm9pZCBpbnRlbF9ndF9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg Ym9vbCBmb3JjZSk7Cj4gK3ZvaWQgaW50ZWxfZ3RfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKPiArCj4gKyNlbmRpZiAvKiBJTlRFTF9HVF9QTV9IICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCAzMDUzYTcwNmE1NjEuLmU1 ZWFhMDZmZTc0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9o YW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVj ay5jCj4gQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVja19lbGFw c2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAJdW5zaWduZWQgaW50 IGh1bmcgPSAwLCBzdHVjayA9IDAsIHdlZGdlZCA9IDA7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAgIAo+ICAgCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykKPiAg IAkJcmV0dXJuOwo+IEBAIC0yNjYsNiArMjY3LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2No ZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCWlmIChpOTE1X3Rlcm1p bmFsbHlfd2VkZ2VkKGRldl9wcml2KSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKGRldl9wcml2KTsKPiArCWlmICghd2FrZXJl ZikKPiArCQlyZXR1cm47Cj4gKwo+ICAgCS8qIEFzIGVuYWJsaW5nIHRoZSBHUFUgcmVxdWlyZXMg ZmFpcmx5IGV4dGVuc2l2ZSBtbWlvIGFjY2VzcywKPiAgIAkgKiBwZXJpb2RpY2FsbHkgYXJtIHRo ZSBtbWlvIGNoZWNrZXIgdG8gc2VlIGlmIHdlIGFyZSB0cmlnZ2VyaW5nCj4gICAJICogYW55IGlu dmFsaWQgYWNjZXNzLgo+IEBAIC0zMTMsNiArMzE4LDggQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5n Y2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJaWYgKGh1bmcpCj4g ICAJCWhhbmdjaGVja19kZWNsYXJlX2hhbmcoZGV2X3ByaXYsIGh1bmcsIHN0dWNrKTsKPiAgIAo+ ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsKPiAgIAkvKiBS ZXNldCB0aW1lciBpbiBjYXNlIEdQVSBoYW5ncyB3aXRob3V0IGFub3RoZXIgcmVxdWVzdCBiZWlu ZyBhZGRlZCAqLwo+ICAgCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGRldl9wcml2KTsKPiAgIH0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IGVkZWM3ZjE4MzY4OC4uZDE3YzA4 ZTI2OTM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMTc4OSw3 ICsxNzg5LDcgQEAgc3RhdGljIGJvb2wgdW5leHBlY3RlZF9zdGFydGluZ19zdGF0ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJcmV0dXJuIHVuZXhwZWN0ZWQ7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXN1bWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCWludGVsX2VuZ2luZV9hcHBseV93b3JrYXJv dW5kcyhlbmdpbmUpOwo+ICAgCWludGVsX2VuZ2luZV9hcHBseV93aGl0ZWxpc3QoZW5naW5lKTsK PiBAQCAtMTgyMiw3ICsxODIyLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X3ByZXBh cmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAqIGNvbXBsZXRlZCB0aGUg cmVzZXQgaW4gaTkxNV9nZW1fcmVzZXRfZmluaXNoKCkuIElmIGEgcmVxdWVzdAo+ICAgCSAqIGlz IGNvbXBsZXRlZCBieSBvbmUgZW5naW5lLCBpdCBtYXkgdGhlbiBxdWV1ZSBhIHJlcXVlc3QKPiAg IAkgKiB0byBhIHNlY29uZCB2aWEgaXRzIGV4ZWNsaXN0cy0+dGFza2xldCAqanVzdCogYXMgd2Ug YXJlCj4gLQkgKiBjYWxsaW5nIGVuZ2luZS0+aW5pdF9odygpIGFuZCBhbHNvIHdyaXRpbmcgdGhl IEVMU1AuCj4gKwkgKiBjYWxsaW5nIGVuZ2luZS0+cmVzdW1lKCkgYW5kIGFsc28gd3JpdGluZyB0 aGUgRUxTUC4KPiAgIAkgKiBUdXJuaW5nIG9mZiB0aGUgZXhlY2xpc3RzLT50YXNrbGV0IHVudGls IHRoZSByZXNldCBpcyBvdmVyCj4gICAJICogcHJldmVudHMgdGhlIHJhY2UuCj4gICAJICovCj4g QEAgLTIzOTEsNyArMjM5MSw3IEBAIHN0YXRpYyB2b2lkCj4gICBsb2dpY2FsX3JpbmdfZGVmYXVs dF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCS8qIERl ZmF1bHQgdmZ1bmNzIHdoaWNoIGNhbiBiZSBvdmVycmlkZW4gYnkgZWFjaCBlbmdpbmUuICovCj4g LQllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9uX3Jpbmc7Cj4gKwllbmdpbmUtPnJl c3VtZSA9IGV4ZWNsaXN0c19yZXN1bWU7Cj4gICAKPiAgIAllbmdpbmUtPnJlc2V0LnByZXBhcmUg PSBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZTsKPiAgIAllbmdpbmUtPnJlc2V0LnJlc2V0ID0gZXhl Y2xpc3RzX3Jlc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+IGluZGV4 IDk5NjE2NGQwNzM5Ny4uYWY4NTcyM2M3ZTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yZXNldC5jCj4gQEAgLTksNiArOSw4IEBACj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2Ry di5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ3B1X2Vycm9yLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9l bmdpbmVfcG0uaCIKPiArI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCj4gICAjaW5jbHVkZSAiaW50 ZWxfcmVzZXQuaCIKPiAgIAo+ICAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+IEBAIC02ODMsNiAr Njg1LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRfcHJlcGFyZV9lbmdpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgCSAqIHdyaXR0ZW4gdG8gdGhlIHBvd2VyY29udGV4dCBpcyB1 bmRlZmluZWQgYW5kIHNvIHdlIG1heSBsb3NlCj4gICAJICogR1BVIHN0YXRlIHVwb24gcmVzdW1l LCBpLmUuIGZhaWwgdG8gcmVzdGFydCBhZnRlciBhIHJlc2V0Lgo+ICAgCSAqLwo+ICsJaW50ZWxf ZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICAgCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGVu Z2luZS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgIAllbmdpbmUtPnJlc2V0LnByZXBhcmUo ZW5naW5lKTsKPiAgIH0KPiBAQCAtNzE4LDYgKzcyMSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3By ZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCj4gKwlp bnRlbF9ndF9wbV9nZXQoaTkxNSk7CgpJdCdzIG5vdCBpbiB0aGUgc3Bpcml0IG9mIHRoZSBwYXRj aCB0byBsZXQgZW5naW5lcyB3YWtlIHVwIHRoZSBndD8KCj4gICAJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgaTkxNSwgaWQpCj4gICAJCXJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7Cj4gICAK PiBAQCAtNzU1LDQ4ICs3NTksMTAgQEAgc3RhdGljIGludCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIHN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCWVuZ2luZS0+cmVzZXQuZmlu aXNoKGVuZ2luZSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoZW5naW5lLT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAg fQo+ICAgCj4gLXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0IHsKPiAtCXN0cnVjdCB3b3JrX3N0cnVj dCB3b3JrOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gLX07Cj4gLQo+IC1z dGF0aWMgdm9pZCByZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoKT2ggd293 IEkgZGlkIG5vdCBzZWUgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIHNvIGZhci4gQXNrIGEgc2Vjb25k IHBhaXIgb2YgCmV5ZXMgdG8gY2hlY2sgb24gaXQ/Cgo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9ncHVf cmVzdGFydCAqYXJnID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqYXJnKSwgd29yayk7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZy0+aTkxNTsKPiAtCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0J aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gLQo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQlXUklURV9PTkNFKGk5MTUtPmdwdV9lcnJvci5yZXN0YXJ0LCBOVUxMKTsKPiAtCj4gLQlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+IC0KPiAtCQkvKgo+IC0JCSAqIE9zdGVuc2liaWx5LCB3ZSBhbHdheXMgd2FudCBhIGNv bnRleHQgbG9hZGVkIGZvciBwb3dlcnNhdmluZywKPiAtCQkgKiBzbyBpZiB0aGUgZW5naW5lIGlz IGlkbGUgYWZ0ZXIgdGhlIHJlc2V0LCBzZW5kIGEgcmVxdWVzdAo+IC0JCSAqIHRvIGxvYWQgb3Vy IHNjcmF0Y2gga2VybmVsX2NvbnRleHQuCj4gLQkJICovCj4gLQkJaWYgKCFpbnRlbF9lbmdpbmVf aXNfaWRsZShlbmdpbmUpKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJcnEgPSBpOTE1X3JlcXVl c3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+IC0JCWlmICghSVNfRVJSKHJxKSkK PiAtCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gLQl9Cj4gLQo+IC0JbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwo+IC0KPiAtCWtmcmVlKGFyZyk7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdm9pZCByZXNl dF9maW5pc2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IEBAIC04MDYsMjkgKzc3Miw3IEBAIHN0YXRpYyB2 b2lkIHJlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkJcmVz ZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOwo+ICAgCQlpbnRlbF9lbmdpbmVfc2lnbmFsX2JyZWFk Y3J1bWJzKGVuZ2luZSk7Cj4gICAJfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCByZXNldF9yZXN0 YXJ0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9n cHVfcmVzdGFydCAqYXJnOwo+IC0KPiAtCS8qCj4gLQkgKiBGb2xsb3dpbmcgdGhlIHJlc2V0LCBl bnN1cmUgdGhhdCB3ZSBhbHdheXMgcmVsb2FkIGNvbnRleHQgZm9yCj4gLQkgKiBwb3dlcnNhdmlu ZywgYW5kIHRvIGNvcnJlY3QgZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dC4gU2luY2UKPiAt CSAqIHRoaXMgcmVxdWlyZXMgdXMgdG8gc3VibWl0IGEgcmVxdWVzdCwgcXVldWUgYSB3b3JrZXIg dG8gZG8gdGhhdAo+IC0JICogdGFzayBmb3IgdXMgdG8gZXZhZGUgYW55IGxvY2tpbmcgaGVyZS4K PiAtCSAqLwo+IC0JaWYgKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpCj4gLQkJ cmV0dXJuOwo+IC0KPiAtCWFyZyA9IGttYWxsb2Moc2l6ZW9mKCphcmcpLCBHRlBfS0VSTkVMKTsK PiAtCWlmIChhcmcpIHsKPiAtCQlhcmctPmk5MTUgPSBpOTE1Owo+IC0JCUlOSVRfV09SSygmYXJn LT53b3JrLCByZXN0YXJ0X3dvcmspOwo+IC0KPiAtCQlXUklURV9PTkNFKGk5MTUtPmdwdV9lcnJv ci5yZXN0YXJ0LCBhcmcpOwo+IC0JCXF1ZXVlX3dvcmsoaTkxNS0+d3EsICZhcmctPndvcmspOwo+ IC0JfQo+ICsJaW50ZWxfZ3RfcG1fcHV0KGk5MTUpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9p ZCBub3Bfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiBAQCAt ODg5LDYgKzgzMyw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiBpbiBub3Bfc3VibWl0X3JlcXVlc3QuCj4g ICAJICovCj4gICAJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOwo+ICsJc2V0X2JpdChJOTE1 X1dFREdFRCwgJmVycm9yLT5mbGFncyk7Cj4gICAKPiAgIAkvKiBNYXJrIGFsbCBleGVjdXRpbmcg cmVxdWVzdHMgYXMgc2tpcHBlZCAqLwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKQo+IEBAIC04OTYsOSArODQxLDYgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9zZXRfd2Vk Z2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCj4gICAJcmVzZXRfZmluaXNo KGk5MTUpOwo+ICAgCj4gLQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKPiAtCXNldF9iaXQoSTkx NV9XRURHRUQsICZlcnJvci0+ZmxhZ3MpOwo+IC0KPiAgIAlHRU1fVFJBQ0UoImVuZFxuIik7Cj4g ICB9Cj4gICAKPiBAQCAtOTU2LDcgKzg5OCw3IEBAIHN0YXRpYyBib29sIF9faTkxNV9nZW1fdW5z ZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCX0KPiAgIAltdXRl eF91bmxvY2soJmk5MTUtPmd0LnRpbWVsaW5lcy5tdXRleCk7Cj4gICAKPiAtCWludGVsX2VuZ2lu ZXNfc2FuaXRpemUoaTkxNSwgZmFsc2UpOwo+ICsJaW50ZWxfZ3Rfc2FuaXRpemUoaTkxNSwgZmFs c2UpOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBVbmRvIG5vcF9zdWJtaXRfcmVxdWVzdC4gV2UgcHJl dmVudCBhbGwgbmV3IGk5MTUgcmVxdWVzdHMgZnJvbQo+IEBAIC0xMDM0LDcgKzk3Niw2IEBAIHZv aWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlHRU1fVFJB Q0UoImZsYWdzPSVseFxuIiwgZXJyb3ItPmZsYWdzKTsKPiAgIAo+ICAgCW1pZ2h0X3NsZWVwKCk7 Cj4gLQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoaTkxNSk7Cj4gICAJR0VNX0JVR19PTighdGVz dF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSk7Cj4gICAKPiAgIAkvKiBD bGVhciBhbnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHRzIGF0IHJlY292ZXJ5LiBUaW1lIHRvIHRy eSBhZ2Fpbi4gKi8KPiBAQCAtMTA4Nyw4ICsxMDI4LDYgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICBmaW5pc2g6Cj4gICAJcmVzZXRfZmlu aXNoKGk5MTUpOwo+IC0JaWYgKCFfX2k5MTVfd2VkZ2VkKGVycm9yKSkKPiAtCQlyZXNldF9yZXN0 YXJ0KGk5MTUpOwo+ICAgCXJldHVybjsKPiAgIAo+ICAgdGFpbnQ6Cj4gQEAgLTExMzcsNiArMTA3 Niw5IEBAIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGNvbnN0IGNoYXIgKm1zZykKPiAgIAlHRU1fVFJBQ0UoIiVzIGZsYWdzPSVseFxuIiwgZW5n aW5lLT5uYW1lLCBlcnJvci0+ZmxhZ3MpOwo+ICAgCUdFTV9CVUdfT04oIXRlc3RfYml0KEk5MTVf UkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwgJmVycm9yLT5mbGFncykpOwo+ICAgCj4gKwlpZiAo IWludGVsX3dha2VyZWZfYWN0aXZlKCZlbmdpbmUtPndha2VyZWYpKQo+ICsJCXJldHVybiAwOwoK SSBndWVzcyB0aGVyZSBjYW4ndCBiZSBhbnkgcmFjZXMgaGVyZSBzaW5jZSBzdHVjayBlbmdpbmUg Y2FuJ3QgYmUgCnBhcmtlZC4gRG8gd2UgaGF2ZSBhbnkgdGVzdHMgd2hpY2ggdHJpZ2dlciB0aGlz IHdpdGhvdXQgYSBndWlsdHkgCnJlcXVlc3Q/IEkga2luZCBvZiByZW1lbWJlciB0aGF0IGlzbid0 IHBvc3NpYmxlIHNvIHByb2JhYmx5IG5vdC4KCj4gKwo+ICAgCXJlc2V0X3ByZXBhcmVfZW5naW5l KGVuZ2luZSk7Cj4gICAKPiAgIAlpZiAobXNnKQo+IEBAIC0xMTY4LDcgKzExMTAsNyBAQCBpbnQg aTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBj aGFyICptc2cpCj4gICAJICogaGF2ZSBiZWVuIHJlc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVz LiBGb2xsb3cgdGhlIGluaXRfcmluZwo+ICAgCSAqIHByb2Nlc3MgdG8gcHJvZ3JhbSBSSU5HX01P REUsIEhXU1AgYW5kIHJlLWVuYWJsZSBzdWJtaXNzaW9uLgo+ICAgCSAqLwo+IC0JcmV0ID0gZW5n aW5lLT5pbml0X2h3KGVuZ2luZSk7Cj4gKwlyZXQgPSBlbmdpbmUtPnJlc3VtZShlbmdpbmUpOwo+ ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gb3V0Owo+ICAgCj4gQEAgLTE0MjUsMjUgKzEzNjcsNiBA QCBpbnQgaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgIAlyZXR1cm4gX19pOTE1X3dlZGdlZChlcnJvcikgPyAtRUlPIDogMDsKPiAgIH0KPiAg IAo+IC1ib29sIGk5MTVfcmVzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gLXsKPiAtCWludCBlcnI7Cj4gLQo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1 LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOwo+IC0KPiAtCWZsdXNoX3dvcmtxdWV1ZShpOTE1 LT53cSk7Cj4gLQlHRU1fQlVHX09OKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkp Owo+IC0KPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JZXJyID0g aTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAo+IC0JCQkJICAgICBJOTE1X1dBSVRfTE9DS0VE IHwKPiAtCQkJCSAgICAgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NULAo+IC0JCQkJICAgICBNQVhf U0NIRURVTEVfVElNRU9VVCk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+IC0KPiAtCXJldHVybiAhZXJyOwo+IC19Cj4gLQo+ICAgc3RhdGljIHZvaWQgaTkxNV93 ZWRnZV9tZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICB7Cj4gICAJc3RydWN0IGk5MTVf d2VkZ2VfbWUgKncgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp3KSwgd29yay53b3JrKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmgKPiBpbmRleCA4ZTY2MmJiNDNhOWIu LmI1MmVmYWFiNDk0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yZXNldC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaAo+ IEBAIC0zNCw3ICszNCw2IEBAIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gICAJCSAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7Cj4gICAKPiAg IHZvaWQgaTkxNV9yZXNldF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBib29sIGd1 aWx0eSk7Cj4gLWJvb2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cj4gICAKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9yZXNldF90cnlsb2NrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIHZvaWQgaTkxNV9yZXNldF91bmxvY2soc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCB0YWcpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBiMmJiN2Q0YmZiZTMuLmYxNjRkYmU5 MDA1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVm ZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtNjM3LDEyICs2MzcsMTUgQEAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlyZXR1cm4gKEVOR0lORV9SRUFEKGVuZ2luZSwgUklO R19IRUFEKSAmIEhFQURfQUREUikgPT0gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGluaXRf cmluZ19jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgaW50 IHhjc19yZXN1bWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1 Y3QgaW50ZWxfcmluZyAqcmluZyA9IGVuZ2luZS0+YnVmZmVyOwo+ICAgCWludCByZXQgPSAwOwo+ ICAgCj4gKwlHRU1fVFJBQ0UoIiVzOiByaW5nOntIRUFEOiUwNHgsIFRBSUw6JTA0eH1cbiIsCj4g KwkJICBlbmdpbmUtPm5hbWUsIHJpbmctPmhlYWQsIHJpbmctPnRhaWwpOwo+ICsKPiAgIAlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChlbmdpbmUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4g ICAKPiAgIAlpZiAoIXN0b3BfcmluZyhlbmdpbmUpKSB7Cj4gQEAgLTgyNywxMiArODMwLDkgQEAg c3RhdGljIGludCBpbnRlbF9yY3NfY3R4X2luaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g ICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIGludCByY3NfcmVzdW1lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQlpbnQgcmV0ID0gaW5pdF9yaW5n X2NvbW1vbihlbmdpbmUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJ LyogV2FUaW1lZFNpbmdsZVZlcnRleERpc3BhdGNoOmNsLGJ3LGN0ZyxlbGssaWxrLHNuYiAqLwo+ ICAgCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDQsIDYpKQo+IEBAIC04NzUsNyArODc1LDcg QEAgc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICAgCQlFTkdJTkVfV1JJ VEUoZW5naW5lLCBSSU5HX0lNUiwgfmVuZ2luZS0+aXJxX2tlZXBfbWFzayk7Cj4gICAKPiAtCXJl dHVybiAwOwo+ICsJcmV0dXJuIHhjc19yZXN1bWUoZW5naW5lKTsKClRoaXMgaW52ZXJ0cyB0aGUg b3JkZXIgYmV0d2VlbiB0aGUgY29tbW9uIGFuZCByY3MgaW5pdC4gT25lIHRoaW5nIHdoaWNoIApq dW1wIG91dCBpcyB0aGUgUklOR19JTVIgd2hpY2ggaXMgbm93IGRvbmUgYWZ0ZXIgc3RhcnRpbmcg dGhlIGVuZ2luZS4gCkNhbiB3ZSBsb3NlIGFuIGludGVycnVwdCBub3c/Cgo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgdm9pZCBjYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+IEBAIC0yMjA3LDcgKzIyMDcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2RlZmF1 bHRfdmZ1bmNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAo+ICAgCWlu dGVsX3JpbmdfaW5pdF9pcnEoZGV2X3ByaXYsIGVuZ2luZSk7Cj4gICAKPiAtCWVuZ2luZS0+aW5p dF9odyA9IGluaXRfcmluZ19jb21tb247Cj4gKwllbmdpbmUtPnJlc3VtZSA9IHhjc19yZXN1bWU7 Cj4gICAJZW5naW5lLT5yZXNldC5wcmVwYXJlID0gcmVzZXRfcHJlcGFyZTsKPiAgIAllbmdpbmUt PnJlc2V0LnJlc2V0ID0gcmVzZXRfcmluZzsKPiAgIAllbmdpbmUtPnJlc2V0LmZpbmlzaCA9IHJl c2V0X2ZpbmlzaDsKPiBAQCAtMjI2OSw3ICsyMjY5LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVy X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikpCj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGhzd19lbWl0 X2JiX3N0YXJ0Owo+ICAgCj4gLQllbmdpbmUtPmluaXRfaHcgPSBpbml0X3JlbmRlcl9yaW5nOwo+ ICsJZW5naW5lLT5yZXN1bWUgPSByY3NfcmVzdW1lOwo+ICAgCj4gICAJcmV0ID0gaW50ZWxfaW5p dF9yaW5nX2J1ZmZlcihlbmdpbmUpOwo+ICAgCWlmIChyZXQpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9tb2NrX2VuZ2luZS5jCj4gaW5kZXggYmNmZWIwYzY3OTk3Li5hOTdhMGFiMzU3MDMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKPiBAQCAtMjQsNiArMjQsNyBAQAo+ ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9jb250ZXh0 LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIKPiAgIAo+ICAgI2luY2x1ZGUgIm1v Y2tfZW5naW5lLmgiCj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfcmVxdWVzdC5oIgo+IEBA IC0yNjgsNiArMjY5LDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJaTkxNV90aW1lbGluZV9zZXRfc3ViY2xh c3MoJmVuZ2luZS0+YmFzZS50aW1lbGluZSwgVElNRUxJTkVfRU5HSU5FKTsKPiAgIAo+ICAgCWlu dGVsX2VuZ2luZV9pbml0X2JyZWFkY3J1bWJzKCZlbmdpbmUtPmJhc2UpOwo+ICsJaW50ZWxfZW5n aW5lX2luaXRfZXhlY2xpc3RzKCZlbmdpbmUtPmJhc2UpOwo+ICsJaW50ZWxfZW5naW5lX2luaXRf X3BtKCZlbmdpbmUtPmJhc2UpOwo+ICAgCj4gICAJLyogZmFrZSBodyBxdWV1ZSAqLwo+ICAgCXNw aW5fbG9ja19pbml0KCZlbmdpbmUtPmh3X2xvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4gaW5kZXggODdjMjY5MjAyMTJmLi42MDA0ZDY5MDdl OWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2No ZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2su Ywo+IEBAIC0yNCw2ICsyNCw4IEBACj4gICAKPiAgICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+ Cj4gICAKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICsKPiAgICNpbmNsdWRlICJp OTE1X3NlbGZ0ZXN0LmgiCj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCj4g ICAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgiCj4gQEAgLTQ3OSwxOSArNDgx LDYgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfbm9wKHZvaWQgKmFyZykKPiAgIAkJCWJyZWFrOwo+ ICAgCQl9Cj4gICAKPiAtCQlpZiAoIWk5MTVfcmVzZXRfZmx1c2goaTkxNSkpIHsKPiAtCQkJc3Ry dWN0IGRybV9wcmludGVyIHAgPQo+IC0JCQkJZHJtX2luZm9fcHJpbnRlcihpOTE1LT5kcm0uZGV2 KTsKPiAtCj4gLQkJCXByX2VycigiJXMgZmFpbGVkIHRvIGlkbGUgYWZ0ZXIgcmVzZXRcbiIsCj4g LQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+IC0JCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUs ICZwLAo+IC0JCQkJCSAgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+IC0KPiAtCQkJZXJyID0gLUVJ TzsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0KPiAgIAkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoaTkx NSwgMCk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiBAQCAtNTk0LDE5ICs1ODMsNiBA QCBzdGF0aWMgaW50IGlndF9yZXNldF9ub3BfZW5naW5lKHZvaWQgKmFyZykKPiAgIAkJCQllcnIg PSAtRUlOVkFMOwo+ICAgCQkJCWJyZWFrOwo+ICAgCQkJfQo+IC0KPiAtCQkJaWYgKCFpOTE1X3Jl c2V0X2ZsdXNoKGk5MTUpKSB7Cj4gLQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9Cj4gLQkJCQkJ ZHJtX2luZm9fcHJpbnRlcihpOTE1LT5kcm0uZGV2KTsKPiAtCj4gLQkJCQlwcl9lcnIoIiVzIGZh aWxlZCB0byBpZGxlIGFmdGVyIHJlc2V0XG4iLAo+IC0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7 Cj4gLQkJCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLAo+IC0JCQkJCQkgICIlc1xuIiwg ZW5naW5lLT5uYW1lKTsKPiAtCj4gLQkJCQllcnIgPSAtRUlPOwo+IC0JCQkJYnJlYWs7Cj4gLQkJ CX0KPiAgIAkJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgZW5kX3RpbWUpKTsKPiAgIAkJ Y2xlYXJfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3Mp Owo+ICAgCQlwcl9pbmZvKCIlcyglcyk6ICVkIHJlc2V0c1xuIiwgX19mdW5jX18sIGVuZ2luZS0+ bmFtZSwgY291bnQpOwo+IEBAIC02NjksNiArNjQ1LDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNl dF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wgYWN0aXZlKQo+ICAg CQlyZXNldF9lbmdpbmVfY291bnQgPSBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudCgmaTkxNS0+Z3B1 X2Vycm9yLAo+ICAgCQkJCQkJCSAgICAgZW5naW5lKTsKPiAgIAo+ICsJCWludGVsX2VuZ2luZV9w bV9nZXQoZW5naW5lKTsKPiAgIAkJc2V0X2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGlkLCAmaTkx NS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgIAkJZG8gewo+ICAgCQkJaWYgKGFjdGl2ZSkgewo+IEBA IC03MjEsMjEgKzY5OCw5IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGFjdGl2ZSkKPiAgIAkJCQllcnIgPSAtRUlOVkFM Owo+ICAgCQkJCWJyZWFrOwo+ICAgCQkJfQo+IC0KPiAtCQkJaWYgKCFpOTE1X3Jlc2V0X2ZsdXNo KGk5MTUpKSB7Cj4gLQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9Cj4gLQkJCQkJZHJtX2luZm9f cHJpbnRlcihpOTE1LT5kcm0uZGV2KTsKPiAtCj4gLQkJCQlwcl9lcnIoIiVzIGZhaWxlZCB0byBp ZGxlIGFmdGVyIHJlc2V0XG4iLAo+IC0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7Cj4gLQkJCQlp bnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLAo+IC0JCQkJCQkgICIlc1xuIiwgZW5naW5lLT5u YW1lKTsKPiAtCj4gLQkJCQllcnIgPSAtRUlPOwo+IC0JCQkJYnJlYWs7Cj4gLQkJCX0KPiAgIAkJ fSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgZW5kX3RpbWUpKTsKPiAgIAkJY2xlYXJfYml0 KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpOwo+ICsJCWlu dGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJYnJl YWs7Cj4gQEAgLTk0Miw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQlnZXRfdGFza19zdHJ1Y3QodHNr KTsKPiAgIAkJfQo+ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICAgCQlz ZXRfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpOwo+ ICAgCQlkbyB7Cj4gICAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4gQEAgLTEw MTgsNiArOTg0LDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJfQo+ICAgCQl9IHdoaWxlICh0aW1lX2JlZm9yZShq aWZmaWVzLCBlbmRfdGltZSkpOwo+ICAgCQljbGVhcl9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBp ZCwgJmk5MTUtPmdwdV9lcnJvci5mbGFncyk7Cj4gKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdp bmUpOwo+ICAgCQlwcl9pbmZvKCJpOTE1X3Jlc2V0X2VuZ2luZSglczolcyk6ICVsdSByZXNldHNc biIsCj4gICAJCQllbmdpbmUtPm5hbWUsIHRlc3RfbmFtZSwgY291bnQpOwo+ICAgCj4gQEAgLTEw NjksNyArMTAzNiw5IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4g LQkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgMCk7Cj4gKwkJbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9X QUlUX0xPQ0tFRCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPiBpbmRleCA5NmM2MjgyZjNhMTAuLjQ2 MWQ5MTczNzA3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf d29ya2Fyb3VuZHMuYwo+IEBAIC03MSw3ICs3MSw2IEBAIHJlYWRfbm9ucHJpdnMoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg ewo+ICAgCWNvbnN0IHUzMiBiYXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7Cj4gICAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKnJlc3VsdDsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ ICAgCXUzMiBzcm0sICpjczsKPiBAQCAtMTAzLDkgKzEwMiw3IEBAIHJlYWRfbm9ucHJpdnMoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gZXJyX29iajsKPiAgIAo+IC0JcnEgPSBFUlJfUFRS KC1FTk9ERVYpOwo+IC0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKGVuZ2luZS0+aTkxNSwgd2FrZXJl ZikKPiAtCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gKwlycSA9IGk5 MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAg IAkJZXJyID0gUFRSX0VSUihycSk7Cj4gICAJCWdvdG8gZXJyX3BpbjsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDhkY2JhNzhmYjQzYi4uMDBkM2ZmNzQ2ZWIxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjA0MSw4ICsyMDQxLDcgQEAg c3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKPiAgIAl9Cj4gICAKPiAgIAlzZXFfcHJpbnRmKG0sICJSUFMgZW5hYmxlZD8gJWRcbiIs IHJwcy0+ZW5hYmxlZCk7Cj4gLQlzZXFfcHJpbnRmKG0sICJHUFUgYnVzeT8gJXMgWyVkIHJlcXVl c3RzXVxuIiwKPiAtCQkgICB5ZXNubyhkZXZfcHJpdi0+Z3QuYXdha2UpLCBkZXZfcHJpdi0+Z3Qu YWN0aXZlX3JlcXVlc3RzKTsKPiArCXNlcV9wcmludGYobSwgIkdQVSBidXN5PyAlc1xuIiwgeWVz bm8oZGV2X3ByaXYtPmd0LmF3YWtlKSk7Cj4gICAJc2VxX3ByaW50ZihtLCAiQm9vc3RzIG91dHN0 YW5kaW5nPyAlZFxuIiwKPiAgIAkJICAgYXRvbWljX3JlYWQoJnJwcy0+bnVtX3dhaXRlcnMpKTsK PiAgIAlzZXFfcHJpbnRmKG0sICJJbnRlcmFjdGl2ZT8gJWRcbiIsIFJFQURfT05DRShycHMtPnBv d2VyLmludGVyYWN0aXZlKSk7Cj4gQEAgLTIwNjEsOSArMjA2MCw3IEBAIHN0YXRpYyBpbnQgaTkx NV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICAKPiAg IAlzZXFfcHJpbnRmKG0sICJXYWl0IGJvb3N0czogJWRcbiIsIGF0b21pY19yZWFkKCZycHMtPmJv b3N0cykpOwo+ICAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmCj4gLQkgICAg cnBzLT5lbmFibGVkICYmCj4gLQkgICAgZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewo+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJiBycHMtPmVuYWJsZWQgJiYgZGV2X3By aXYtPmd0LmF3YWtlKSB7Cj4gICAJCXUzMiBycHVwLCBycHVwZWk7Cj4gICAJCXUzMiBycGRvd24s IHJwZG93bmVpOwo+ICAgCj4gQEAgLTMwOTIsOSArMzA4OSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9l bmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgIAo+ICAgCXdh a2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gICAKPiAtCXNlcV9wcmlu dGYobSwgIkdUIGF3YWtlPyAlc1xuIiwgeWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSk7Cj4gLQlz ZXFfcHJpbnRmKG0sICJHbG9iYWwgYWN0aXZlIHJlcXVlc3RzOiAlZFxuIiwKPiAtCQkgICBkZXZf cHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKPiArCXNlcV9wcmludGYobSwgIkdUIGF3YWtlPyAl cyBbJWRdXG4iLAo+ICsJCSAgIHllc25vKGRldl9wcml2LT5ndC5hd2FrZSksCj4gKwkJICAgYXRv bWljX3JlYWQoJmRldl9wcml2LT5ndC53YWtlcmVmLmNvdW50KSk7Cj4gICAJc2VxX3ByaW50Ziht LCAiQ1MgdGltZXN0YW1wIGZyZXF1ZW5jeTogJXUga0h6XG4iLAo+ICAgCQkgICBSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7Cj4gICAKPiBAQCAtMzk0 MCw4ICszOTM3LDcgQEAgaTkxNV9kcm9wX2NhY2hlc19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkK PiAgIAo+ICAgCWlmICh2YWwgJiBEUk9QX0lETEUpIHsKPiAgIAkJZG8gewo+IC0JCQlpZiAoUkVB RF9PTkNFKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykpCj4gLQkJCQlmbHVzaF9kZWxheWVkX3dv cmsoJmk5MTUtPmdlbS5yZXRpcmVfd29yayk7Cj4gKwkJCWZsdXNoX2RlbGF5ZWRfd29yaygmaTkx NS0+Z2VtLnJldGlyZV93b3JrKTsKPiAgIAkJCWRyYWluX2RlbGF5ZWRfd29yaygmaTkxNS0+Z2Vt LmlkbGVfd29yayk7Cj4gICAJCX0gd2hpbGUgKFJFQURfT05DRShpOTE1LT5ndC5hd2FrZSkpOwo+ ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA5OGI5OTc1MjZkYWEuLmM4Y2I3 MGQ0ZmU5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC00Nyw4ICs0Nyw5IEBA Cj4gICAjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4KPiAgICNpbmNsdWRlIDxkcm0v aTkxNV9kcm0uaD4KPiAgIAo+IC0jaW5jbHVkZSAiZ3QvaW50ZWxfd29ya2Fyb3VuZHMuaCIKPiAr I2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfcmVzZXQu aCIKPiArI2luY2x1ZGUgImd0L2ludGVsX3dvcmthcm91bmRzLmgiCj4gICAKPiAgICNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+ICAgI2luY2x1ZGUgImk5MTVfcG11LmgiCj4gQEAgLTIzMjMsNyArMjMy NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fcmVzdW1lX2Vhcmx5KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAKPiAgIAlpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZShkZXZfcHJpdik7Cj4g ICAKPiAtCWludGVsX2VuZ2luZXNfc2FuaXRpemUoZGV2X3ByaXYsIHRydWUpOwo+ICsJaW50ZWxf Z3Rfc2FuaXRpemUoZGV2X3ByaXYsIHRydWUpOwo+ICAgCj4gICAJZW5hYmxlX3JwbV93YWtlcmVm X2Fzc2VydHMoZGV2X3ByaXYpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXgg Y2JhZTliZTA1MmUwLi5lNWFlNmMzNmU5NTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtMjAwNiwxMCArMjAwNiwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gICAJ CQlzdHJ1Y3QgbGlzdF9oZWFkIGh3c3BfZnJlZV9saXN0Owo+ICAgCQl9IHRpbWVsaW5lczsKPiAg IAo+IC0JCWludGVsX2VuZ2luZV9tYXNrX3QgYWN0aXZlX2VuZ2luZXM7Cj4gICAJCXN0cnVjdCBs aXN0X2hlYWQgYWN0aXZlX3JpbmdzOwo+ICAgCQlzdHJ1Y3QgbGlzdF9oZWFkIGNsb3NlZF92bWE7 Cj4gLQkJdTMyIGFjdGl2ZV9yZXF1ZXN0czsKPiArCj4gKwkJc3RydWN0IGludGVsX3dha2VyZWYg d2FrZXJlZjsKPiAgIAo+ICAgCQkvKioKPiAgIAkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29u c2lkZXJlZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwo+IEBAIC0yMDIwLDEyICsyMDIwLDE2IEBA IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgIAkJICovCj4gICAJCWludGVsX3dha2VyZWZf dCBhd2FrZTsKPiAgIAo+ICsJCXN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkIHBtX25vdGlm aWNhdGlvbnM7Cj4gKwo+ICAgCQlrdGltZV90IGxhc3RfaW5pdF90aW1lOwo+ICAgCj4gICAJCXN0 cnVjdCBpOTE1X3ZtYSAqc2NyYXRjaDsKPiAgIAl9IGd0Owo+ICAgCj4gICAJc3RydWN0IHsKPiAr CQlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgcG1fbm90aWZpZXI7Cj4gKwo+ICAgCQkvKioKPiAgIAkJ ICogV2UgbGVhdmUgdGhlIHVzZXIgSVJRIG9mZiBhcyBtdWNoIGFzIHBvc3NpYmxlLAo+ICAgCQkg KiBidXQgdGhpcyBtZWFucyB0aGF0IHJlcXVlc3RzIHdpbGwgZmluaXNoIGFuZCBuZXZlcgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDc0Yjk5MTI2ODMwYi4uZDAyMTEyNzFmMTAzIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTM5LDYgKzM5LDggQEAKPiAgICNpbmNs dWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvbW1hbi5oPgo+ICAgCj4g KyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2d0 X3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfbW9jcy5oIgo+ICAgI2luY2x1ZGUgImd0L2lu dGVsX3Jlc2V0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfd29ya2Fyb3VuZHMuaCIKPiBAQCAt MjkxMSw5ICsyOTEzLDYgQEAgd2FpdF9mb3JfdGltZWxpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgCXN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSAmaTkxNS0+Z3Qu dGltZWxpbmVzOwo+ICAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKPiAgIAo+IC0JaWYgKCFS RUFEX09OQ0UoaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSkKPiAtCQlyZXR1cm4gdGltZW91dDsK PiAtCj4gICAJbXV0ZXhfbG9jaygmZ3QtPm11dGV4KTsKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHRsLCAmZ3QtPmFjdGl2ZV9saXN0LCBsaW5rKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+IEBAIC0yOTUzLDkgKzI5NTIsMTAgQEAgd2FpdF9mb3JfdGltZWxpbmVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms IGxvbmcgdGltZW91dCkKPiAgIHsKPiAtCUdFTV9UUkFDRSgiZmxhZ3M9JXggKCVzKSwgdGltZW91 dD0lbGQlc1xuIiwKPiArCUdFTV9UUkFDRSgiZmxhZ3M9JXggKCVzKSwgdGltZW91dD0lbGQlcywg YXdha2U/PSVzXG4iLAo+ICAgCQkgIGZsYWdzLCBmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgPyAi bG9ja2VkIiA6ICJ1bmxvY2tlZCIsCj4gLQkJICB0aW1lb3V0LCB0aW1lb3V0ID09IE1BWF9TQ0hF RFVMRV9USU1FT1VUID8gIiAoZm9yZXZlcikiIDogIiIpOwo+ICsJCSAgdGltZW91dCwgdGltZW91 dCA9PSBNQVhfU0NIRURVTEVfVElNRU9VVCA/ICIgKGZvcmV2ZXIpIiA6ICIiLAo+ICsJCSAgeWVz bm8oaTkxNS0+Z3QuYXdha2UpKTsKPiAgIAo+ICAgCS8qIElmIHRoZSBkZXZpY2UgaXMgYXNsZWVw LCB3ZSBoYXZlIG5vIHJlcXVlc3RzIG91dHN0YW5kaW5nICovCj4gICAJaWYgKCFSRUFEX09OQ0Uo aTkxNS0+Z3QuYXdha2UpKQo+IEBAIC00MTc3LDcgKzQxNzcsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nh bml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCSAqIGl0IG1heSBpbXBh Y3QgdGhlIGRpc3BsYXkgYW5kIHdlIGFyZSB1bmNlcnRhaW4gYWJvdXQgdGhlIHN0YWJpbGl0eQo+ ICAgCSAqIG9mIHRoZSByZXNldCwgc28gdGhpcyBjb3VsZCBiZSBhcHBsaWVkIHRvIGV2ZW4gZWFy bGllciBnZW4uCj4gICAJICovCj4gLQlpbnRlbF9lbmdpbmVzX3Nhbml0aXplKGk5MTUsIGZhbHNl KTsKPiArCWludGVsX2d0X3Nhbml0aXplKGk5MTUsIGZhbHNlKTsKPiAgIAo+ICAgCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KCZpOTE1LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAgCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+IEBAIC00MjM1LDI3ICs0MjM1LDYg QEAgc3RhdGljIHZvaWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgCX0KPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IF9faTkxNV9nZW1fcmVz dGFydF9lbmdpbmVzKHZvaWQgKmRhdGEpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZGF0YTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0JaW50IGVycjsKPiAtCj4gLQlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCWVyciA9IGVuZ2luZS0+aW5pdF9odyhlbmdpbmUp Owo+IC0JCWlmIChlcnIpIHsKPiAtCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVzdGFydCAlcyAo JWQpXG4iLAo+IC0JCQkJICBlbmdpbmUtPm5hbWUsIGVycik7Cj4gLQkJCXJldHVybiBlcnI7Cj4g LQkJfQo+IC0JfQo+IC0KPiAtCWludGVsX2VuZ2luZXNfc2V0X3NjaGVkdWxlcl9jYXBzKGk5MTUp Owo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCWludCByZXQ7Cj4gQEAg LTQzMTQsMTIgKzQyOTMsMTMgQEAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWludGVsX21vY3NfaW5pdF9sM2NjX3RhYmxlKGRldl9w cml2KTsKPiAgIAo+ICAgCS8qIE9ubHkgd2hlbiB0aGUgSFcgaXMgcmUtaW5pdGlhbGlzZWQsIGNh biB3ZSByZXBsYXkgdGhlIHJlcXVlc3RzICovCj4gLQlyZXQgPSBfX2k5MTVfZ2VtX3Jlc3RhcnRf ZW5naW5lcyhkZXZfcHJpdik7Cj4gKwlyZXQgPSBpbnRlbF9lbmdpbmVzX3Jlc3VtZShkZXZfcHJp dik7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBjbGVhbnVwX3VjOwo+ICAgCj4gICAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ ICAgCj4gKwlpbnRlbF9lbmdpbmVzX3NldF9zY2hlZHVsZXJfY2FwcyhkZXZfcHJpdik7Cj4gICAJ cmV0dXJuIDA7Cj4gICAKPiAgIGNsZWFudXBfdWM6Cj4gQEAgLTQ2MjUsNiArNDYwNSw3IEBAIGlu dCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIGVy cl9pbml0X2h3Ogo+ICAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgCj4gKwlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9wcml2KTsKPiAgIAlpOTE1X2dlbV9z dXNwZW5kKGRldl9wcml2KTsKPiAgIAlpOTE1X2dlbV9zdXNwZW5kX2xhdGUoZGV2X3ByaXYpOwo+ ICAgCj4gQEAgLTQ2ODYsNiArNDY2Nyw4IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgdm9pZCBpOTE1X2dlbV9maW5pKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiArCUdFTV9CVUdfT04oZGV2X3By aXYtPmd0LmF3YWtlKTsKPiArCj4gICAJaTkxNV9nZW1fc3VzcGVuZF9sYXRlKGRldl9wcml2KTsK PiAgIAlpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gICAKPiBAQCAtNDc4 MCw2ICs0NzYzLDggQEAgaW50IGk5MTVfZ2VtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCWludCBlcnI7Cj4gICAKPiArCWludGVsX2d0X3Bt X2luaXQoZGV2X3ByaXYpOwo+ICsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LmFj dGl2ZV9yaW5ncyk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5jbG9zZWRfdm1h KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaAo+IGluZGV4IDkwNzRlYjFlODQzZi4uNjdm OGE0YTgwN2EwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCj4gQEAgLTc1LDkgKzc1LDYg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gICAKPiAgICNkZWZpbmUgSTkxNV9HRU1fSURM RV9USU1FT1VUIChIWiAvIDUpCj4gICAKPiAtdm9pZCBpOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KTsKPiAtdm9pZCBpOTE1X2dlbV91bnBhcmsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+IC0KPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3Rhc2tsZXRf ZGlzYWJsZV9zeW5jX29uY2Uoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQo+ICAgewo+ICAgCWlm ICghYXRvbWljX2ZldGNoX2luYygmdC0+Y291bnQpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKPiBpbmRleCAzZWIxYTY2NGI1ZmEuLjc2ZWQ3NGU3NWQ4MiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtODI0LDI2ICs4MjQs NiBAQCBpbnQgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoKPiAtbGFzdF9yZXF1ZXN0X29uX2VuZ2luZShzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGltZWxpbmUsCj4gLQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAtewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQo+IC0JR0VNX0JVR19PTih0 aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gLQo+IC0JcnEgPSBpOTE1X2FjdGl2ZV9y ZXF1ZXN0X3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAtCQkJCSAgICAgJmVuZ2luZS0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocnEgJiYgcnEtPmVuZ2luZS0+bWFzayAm IGVuZ2luZS0+bWFzaykgewo+IC0JCUdFTV9UUkFDRSgibGFzdCByZXF1ZXN0IG9uIGVuZ2luZSAl czogJWxseDolbGx1XG4iLAo+IC0JCQkgIGVuZ2luZS0+bmFtZSwgcnEtPmZlbmNlLmNvbnRleHQs IHJxLT5mZW5jZS5zZXFubyk7Cj4gLQkJR0VNX0JVR19PTihycS0+dGltZWxpbmUgIT0gdGltZWxp bmUpOwo+IC0JCXJldHVybiBycTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gTlVMTDsKPiAtfQo+IC0K PiAgIHN0cnVjdCBjb250ZXh0X2JhcnJpZXJfdGFzayB7Cj4gICAJc3RydWN0IGk5MTVfYWN0aXZl IGJhc2U7Cj4gICAJdm9pZCAoKnRhc2spKHZvaWQgKmRhdGEpOwo+IEBAIC04NzEsNyArODUxLDYg QEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1Owo+ ICAgCXN0cnVjdCBjb250ZXh0X2JhcnJpZXJfdGFzayAqY2I7Cj4gICAJc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLCAqbmV4dDsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAgCWludCBl cnIgPSAwOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gQEAgLTg4NCw3ICs4NjMsNiBAQCBzdGF0aWMgaW50IGNvbnRleHRfYmFycmllcl90 YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJaTkxNV9hY3RpdmVfaW5pdChp OTE1LCAmY2ItPmJhc2UsIGNiX3JldGlyZSk7Cj4gICAJaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2It PmJhc2UpOwo+ICAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4g ICAJcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGNlLCBuZXh0LCAmY3R4LT5o d19jb250ZXh0cywgbm9kZSkgewo+ICAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSBjZS0+ZW5naW5lOwo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtOTE0LDcg Kzg5Miw2IEBAIHN0YXRpYyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAgCj4gICAJY2ItPnRhc2sgPSBl cnIgPyBOVUxMIDogdGFzazsgLyogY2FsbGVyIG5lZWRzIHRvIHVud2luZCBpbnN0ZWFkICovCj4g ICAJY2ItPmRhdGEgPSBkYXRhOwo+IEBAIC05MjQsNTQgKzkwMSw2IEBAIHN0YXRpYyBpbnQgY29u dGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1 cm4gZXJyOwo+ICAgfQo+ICAgCj4gLWludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJCQkgICAgICBpbnRlbF9lbmdp bmVfbWFza190IG1hc2spCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiAtCj4gLQlHRU1fVFJBQ0UoImF3YWtlPz0lc1xuIiwgeWVzbm8oaTkxNS0+Z3QuYXdha2UpKTsK PiAtCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAt CUdFTV9CVUdfT04oIWk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiAtCj4gLQkvKiBJbm9wZXJhYmxl LCBzbyBwcmVzdW1lIHRoZSBHUFUgaXMgc2FmZWx5IHBvaW50aW5nIGludG8gdGhlIHZvaWQhICov Cj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1KSkKPiAtCQlyZXR1cm4gMDsKPiAt Cj4gLQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgaTkxNSwgbWFzaywgbWFzaykgewo+ IC0JCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+IC0JCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx Owo+IC0KPiAtCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4 dCk7Cj4gLQkJaWYgKElTX0VSUihycSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiAtCj4g LQkJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5ICovCj4gLQkJ bGlzdF9mb3JfZWFjaF9lbnRyeShyaW5nLCAmaTkxNS0+Z3QuYWN0aXZlX3JpbmdzLCBhY3RpdmVf bGluaykgewo+IC0JCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwcmV2Owo+IC0KPiAtCQkJcHJldiA9 IGxhc3RfcmVxdWVzdF9vbl9lbmdpbmUocmluZy0+dGltZWxpbmUsIGVuZ2luZSk7Cj4gLQkJCWlm ICghcHJldikKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkJaWYgKHByZXYtPmdlbV9jb250ZXh0 ID09IGk5MTUtPmtlcm5lbF9jb250ZXh0KQo+IC0JCQkJY29udGludWU7Cj4gLQo+IC0JCQlHRU1f VFJBQ0UoImFkZCBiYXJyaWVyIG9uICVzIGZvciAlbGx4OiVsbGRcbiIsCj4gLQkJCQkgIGVuZ2lu ZS0+bmFtZSwKPiAtCQkJCSAgcHJldi0+ZmVuY2UuY29udGV4dCwKPiAtCQkJCSAgcHJldi0+ZmVu Y2Uuc2Vxbm8pOwo+IC0JCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1 Ym1pdCwKPiAtCQkJCQkJCSAmcHJldi0+c3VibWl0LAo+IC0JCQkJCQkJIEk5MTVfRkVOQ0VfR0ZQ KTsKPiAtCQl9Cj4gLQo+IC0JCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+IC0JfQo+IC0KPiAtCXJl dHVybiAwOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBnZXRfcHBndHQoc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICAgCQkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsCj4gICAJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICph cmdzKQo+IEBAIC0xMTY5LDkgKzEwOTgsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2Nv bmZpZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgIHN0YXRpYyBpbnQKPiAgIGdlbjhfbW9k aWZ5X3JwY3Moc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1 KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjZS0+ZW5naW5lLT5p OTE1Owo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5w aW5fbXV0ZXgpOwo+IEBAIC0xMTg1LDE0ICsxMTEyLDkgQEAgZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCj4gICAJaWYgKCFp bnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQkvKiBT dWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdha2UuICovCj4gLQl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gLQo+ICAgCXJxID0gaTkxNV9yZXF1ZXN0 X2NyZWF0ZShjZS0+ZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gLQlpZiAoSVNfRVJSKHJxKSkg ewo+IC0JCXJldCA9IFBUUl9FUlIocnEpOwo+IC0JCWdvdG8gb3V0X3B1dDsKPiAtCX0KPiArCWlm IChJU19FUlIocnEpKQo+ICsJCXJldHVybiBQVFJfRVJSKHJxKTsKPiAgIAo+ICAgCS8qIFF1ZXVl IHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSBieSB0aGlzIGNvbnRleHQuICov Cj4gICAJcmV0ID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJmNlLT5yaW5nLT50aW1lbGluZS0+ bGFzdF9yZXF1ZXN0LCBycSk7Cj4gQEAgLTEyMTYsOSArMTEzOCw2IEBAIGdlbjhfbW9kaWZ5X3Jw Y3Moc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQo+ICAg Cj4gICBvdXRfYWRkOgo+ICAgCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+IC1vdXRfcHV0Ogo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gLQo+ICAgCXJldHVybiByZXQ7 Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gaW5k ZXggY2VjMjc4YWIwNGUyLi41YThlMDgwNDk5ZmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTE0MSwxMCArMTQxLDYgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRfb3BlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJCSAgc3RydWN0 IGRybV9maWxlICpmaWxlKTsKPiAgIHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUpOwo+ICAgCj4gLWludCBpOTE1X3N3aXRjaF9jb250ZXh0KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKTsKPiAtaW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJCSAgICAgIGludGVsX2VuZ2lu ZV9tYXNrX3QgZW5naW5lX21hc2spOwo+IC0KPiAgIHZvaWQgaTkxNV9nZW1fY29udGV4dF9yZWxl YXNlKHN0cnVjdCBrcmVmICpjdHhfcmVmKTsKPiAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoK PiAgIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBpbmRleCAwNjBmNTkwMzU0NGEu LjBiZGIzZTA3MmJhNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+ IEBAIC0zNiwxNSArMzYsOCBAQCBJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RhdGljIHN0cnVjdCBp Z3RfZXZpY3RfY3RsIHsKPiAgIAlib29sIGZhaWxfaWZfYnVzeToxOwo+ICAgfSBpZ3RfZXZpY3Rf Y3RsOykKPiAgIAo+IC1zdGF0aWMgYm9vbCBnZ3R0X2lzX2lkbGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gLXsKPiAtCXJldHVybiAhaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzOwo+ IC19Cj4gLQo+ICAgc3RhdGljIGludCBnZ3R0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAgewo+IC0JaW50IGVycjsKPiAtCj4gICAJLyoKPiAgIAkgKiBOb3QgZXZlcnl0 aGluZyBpbiB0aGUgR0dUVCBpcyB0cmFja2VkIHZpYSB2bWEgKG90aGVyd2lzZSB3ZQo+ICAgCSAq IGNvdWxkIGV2aWN0IGFzIHJlcXVpcmVkIHdpdGggbWluaW1hbCBzdGFsbGluZykgc28gd2UgYXJl IGZvcmNlZAo+IEBAIC01MiwxOSArNDUsMTAgQEAgc3RhdGljIGludCBnZ3R0X2ZsdXNoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCSAqIHRoZSBob3BlcyB0aGF0IHdlIGNhbiB0 aGVuIHJlbW92ZSBjb250ZXh0cyBhbmQgdGhlIGxpa2Ugb25seQo+ICAgCSAqIGJvdW5kIGJ5IHRo ZWlyIGFjdGl2ZSByZWZlcmVuY2UuCj4gICAJICovCj4gLQllcnIgPSBpOTE1X2dlbV9zd2l0Y2hf dG9fa2VybmVsX2NvbnRleHQoaTkxNSwgaTkxNS0+Z3QuYWN0aXZlX2VuZ2luZXMpOwo+IC0JaWYg KGVycikKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCWVyciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoaTkxNSwKPiAtCQkJCSAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+IC0JCQkJICAg ICBJOTE1X1dBSVRfTE9DS0VELAo+IC0JCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4g LQlpZiAoZXJyKQo+IC0JCXJldHVybiBlcnI7Cj4gLQo+IC0JR0VNX0JVR19PTighZ2d0dF9pc19p ZGxlKGk5MTUpKTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoaTkxNSwKPiArCQkJCSAgICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPiArCQkJCSAg ICAgIEk5MTVfV0FJVF9MT0NLRUQsCj4gKwkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7 Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBib29sCj4gQEAgLTIyMiwyNCArMjA2LDE3IEBAIGk5MTVf Z2VtX2V2aWN0X3NvbWV0aGluZyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAkg KiB1cyBhIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiwgd2hlbiB0aGUgbGFzdCByZXRpcmVkIGNvbnRl eHQgaXMKPiAgIAkgKiB0aGUga2VybmVsJ3MgdGhlcmUgaXMgbm8gbW9yZSB3ZSBjYW4gZXZpY3Qu Cj4gICAJICovCj4gLQlpZiAoIWdndHRfaXNfaWRsZShkZXZfcHJpdikpIHsKPiAtCQlpZiAoSTkx NV9TRUxGVEVTVF9PTkxZKGlndF9ldmljdF9jdGwuZmFpbF9pZl9idXN5KSkKPiAtCQkJcmV0dXJu IC1FQlVTWTsKPiArCWlmIChJOTE1X1NFTEZURVNUX09OTFkoaWd0X2V2aWN0X2N0bC5mYWlsX2lm X2J1c3kpKQo+ICsJCXJldHVybiAtRUJVU1k7Cj4gICAKPiAtCQlyZXQgPSBnZ3R0X2ZsdXNoKGRl dl9wcml2KTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+ICsJcmV0ID0gZ2d0dF9m bHVzaChkZXZfcHJpdik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gICAKPiAtCQlj b25kX3Jlc2NoZWQoKTsKPiAtCQlnb3RvIHNlYXJjaF9hZ2FpbjsKPiAtCX0KPiArCWNvbmRfcmVz Y2hlZCgpOwo+ICAgCj4gLQkvKgo+IC0JICogSWYgd2Ugc3RpbGwgaGF2ZSBwZW5kaW5nIHBhZ2Vm bGlwIGNvbXBsZXRpb25zLCBkcm9wCj4gLQkgKiBiYWNrIHRvIHVzZXJzcGFjZSB0byBnaXZlIG91 ciB3b3JrcXVldWVzIHRpbWUgdG8KPiAtCSAqIGFjcXVpcmUgb3VyIGxvY2tzIGFuZCB1bnBpbiB0 aGUgb2xkIHNjYW5vdXRzLgo+IC0JICovCj4gLQlyZXR1cm4gaW50ZWxfaGFzX3BlbmRpbmdfZmJf dW5waW4oZGV2X3ByaXYpID8gLUVBR0FJTiA6IC1FTk9TUEM7Cj4gKwlmbGFncyB8PSBQSU5fTk9O QkxPQ0s7Cj4gKwlnb3RvIHNlYXJjaF9hZ2FpbjsKPiAgIAo+ICAgZm91bmQ6Cj4gICAJLyogZHJt X21tIGRvZXNuJ3QgYWxsb3cgYW55IG90aGVyIG90aGVyIG9wZXJhdGlvbnMgd2hpbGUKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmMKPiBpbmRleCA5ZmIwZThkNTY3YTIuLjM1NTRkNTVkYWUz NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9wbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uYwo+IEBAIC00LDEzNiArNCw2MyBA QAo+ICAgICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiAgICAqLwo+ICAg Cj4gKyNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgo+ICsKPiAgICNpbmNsdWRlICJpOTE1X2Ry di5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ2VtX3BtLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nbG9i YWxzLmgiCj4gLSNpbmNsdWRlICJpbnRlbF9wbS5oIgo+ICAgCj4gLXN0YXRpYyB2b2lkIF9faTkx NV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGljIHZvaWQg aTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0KPiAtCUdFTV9UUkFDRSgiXG4iKTsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQlHRU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7Cj4gLQlHRU1fQlVHX09OKCFs aXN0X2VtcHR5KCZpOTE1LT5ndC5hY3RpdmVfcmluZ3MpKTsKPiAtCj4gLQlpZiAoIWk5MTUtPmd0 LmF3YWtlKQo+IC0JCXJldHVybjsKPiAtCj4gLQkvKgo+IC0JICogQmUgcGFyYW5vaWQgYW5kIGZs dXNoIGEgY29uY3VycmVudCBpbnRlcnJ1cHQgdG8gbWFrZSBzdXJlCj4gLQkgKiB3ZSBkb24ndCBy ZWFjdGl2YXRlIGFueSBpcnEgdGFza2xldHMgYWZ0ZXIgcGFya2luZy4KPiAtCSAqCj4gLQkgKiBG SVhNRTogTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHdlIGhhdmUgd2FpdGVkIGZvciBleGVjbGlzdHMg dG8gYmUgaWRsZSwKPiAtCSAqIHRoZXJlIG1heSBzdGlsbCBiZSBhbiBpbi1mbGlnaHQgaW50ZXJy dXB0IGV2ZW4gdGhvdWdoIHRoZSBDU0IKPiAtCSAqIGlzIG5vdyBlbXB0eS4gc3luY2hyb25pemVf aXJxKCkgbWFrZXMgc3VyZSB0aGF0IGEgcmVzaWR1YWwgaW50ZXJydXB0Cj4gLQkgKiBpcyBjb21w bGV0ZWQgYmVmb3JlIHdlIGNvbnRpbnVlLCBidXQgaXQgZG9lc24ndCBwcmV2ZW50IHRoZSBIVyBm cm9tCj4gLQkgKiByYWlzaW5nIGEgc3B1cmlvdXMgaW50ZXJydXB0IGxhdGVyLiBUbyBjb21wbGV0 ZSB0aGUgc2hpZWxkIHdlIHNob3VsZAo+IC0JICogY29vcmRpbmF0ZSBkaXNhYmxpbmcgdGhlIENT IGlycSB3aXRoIGZsdXNoaW5nIHRoZSBpbnRlcnJ1cHRzLgo+IC0JICovCj4gLQlzeW5jaHJvbml6 ZV9pcnEoaTkxNS0+ZHJtLmlycSk7Cj4gLQo+IC0JaW50ZWxfZW5naW5lc19wYXJrKGk5MTUpOwo+ IC0JaTkxNV90aW1lbGluZXNfcGFyayhpOTE1KTsKPiAtCj4gLQlpOTE1X3BtdV9ndF9wYXJrZWQo aTkxNSk7Cj4gLQlpOTE1X3ZtYV9wYXJrZWQoaTkxNSk7Cj4gLQo+IC0Jd2FrZXJlZiA9IGZldGNo X2FuZF96ZXJvKCZpOTE1LT5ndC5hd2FrZSk7Cj4gLQlHRU1fQlVHX09OKCF3YWtlcmVmKTsKPiAt Cj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4gLQkJZ2VuNl9ycHNfaWRsZShpOTE1KTsK PiAtCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJR LCB3YWtlcmVmKTsKPiAtCj4gLQlpOTE1X2dsb2JhbHNfcGFyaygpOwo+IC19Cj4gLQo+IC1zdGF0 aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHRfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAtCQkJCQkgIHVuc2lnbmVkIGxvbmcgbWFzaykKPiAtewo+IC0JYm9vbCBy ZXN1bHQgPSB0cnVlOwo+IC0KPiAtCS8qCj4gLQkgKiBFdmVuIGlmIHdlIGZhaWwgdG8gc3dpdGNo LCBnaXZlIHdoYXRldmVyIGlzIHJ1bm5pbmcgYSBzbWFsbCBjaGFuY2UKPiAtCSAqIHRvIHNhdmUg aXRzZWxmIGJlZm9yZSB3ZSByZXBvcnQgdGhlIGZhaWx1cmUuIFllcywgdGhpcyBtYXkgYmUgYQo+ IC0JICogZmFsc2UgcG9zaXRpdmUgZHVlIHRvIGUuZy4gRU5PTUVNLCBjYXZlYXQgZW1wdG9yIQo+ IC0JICovCj4gLQlpZiAoaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KGk5MTUsIG1h c2spKQo+IC0JCXJlc3VsdCA9IGZhbHNlOwo+ICAgCj4gLQlpZiAoaTkxNV9nZW1fd2FpdF9mb3Jf aWRsZShpOTE1LAo+IC0JCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8Cj4gLQkJCQkgICBJOTE1X1dB SVRfRk9SX0lETEVfQk9PU1QsCj4gLQkJCQkgICBJOTE1X0dFTV9JRExFX1RJTUVPVVQpKQo+IC0J CXJlc3VsdCA9IGZhbHNlOwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsK PiArCQkvKgo+ICsJCSAqIFdlIGFyZSBjb21taXR0ZWQgbm93IHRvIHBhcmtpbmcgdGhlIGVuZ2lu ZXMsIG1ha2Ugc3VyZSB0aGVyZQo+ICsJCSAqIHdpbGwgYmUgbm8gbW9yZSBpbnRlcnJ1cHRzIGFy cml2aW5nIGxhdGVyIGFuZCB0aGUgZW5naW5lcwo+ICsJCSAqIGFyZSB0cnVseSBpZGxlLgo+ICsJ CSAqLwo+ICsJCWlmICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpLCAxMCkp IHsKPiArCQkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRlcihfX2Z1bmNf Xyk7Cj4gICAKPiAtCWlmICghcmVzdWx0KSB7Cj4gLQkJaWYgKGk5MTVfbW9kcGFyYW1zLnJlc2V0 KSB7IC8qIFhYWCBoaWRlIHdhcm5pbmcgZnJvbSBnZW1fZWlvICovCj4gICAJCQlkZXZfZXJyKGk5 MTUtPmRybS5kZXYsCj4gLQkJCQkiRmFpbGVkIHRvIGlkbGUgZW5naW5lcywgZGVjbGFyaW5nIHdl ZGdlZCFcbiIpOwo+IC0JCQlHRU1fVFJBQ0VfRFVNUCgpOwo+ICsJCQkJIiVzIGlzIG5vdCBpZGxl IGJlZm9yZSBwYXJraW5nXG4iLAo+ICsJCQkJZW5naW5lLT5uYW1lKTsKPiArCQkJaW50ZWxfZW5n aW5lX2R1bXAoZW5naW5lLCAmcCwgTlVMTCk7Cj4gICAJCX0KPiArCQl0YXNrbGV0X2tpbGwoJmVu Z2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQpOwo+ICAgCj4gLQkJLyogRm9yY2libHkgY2FuY2VsIG91 dHN0YW5kaW5nIHdvcmsgYW5kIGxlYXZlIHRoZSBncHUgcXVpZXQuICovCj4gLQkJaTkxNV9nZW1f c2V0X3dlZGdlZChpOTE1KTsKPiArCQlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+ YmF0Y2hfcG9vbCk7Cj4gICAJfQo+ICAgCj4gLQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsg LyogZW5zdXJlIHdlIGZsdXNoIGFmdGVyIHdlZGdpbmcgKi8KPiAtCXJldHVybiByZXN1bHQ7Cj4g KwlpOTE1X3RpbWVsaW5lc19wYXJrKGk5MTUpOwo+ICsJaTkxNV92bWFfcGFya2VkKGk5MTUpOwo+ ICsKPiArCWk5MTVfZ2xvYmFsc19wYXJrKCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGlk bGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIHsKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gICAJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBl b2YoKmk5MTUpLCBnZW0uaWRsZV93b3JrLndvcmspOwo+IC0JYm9vbCByZWFybV9oYW5nY2hlY2s7 Cj4gLQo+IC0JaWYgKCFSRUFEX09OQ0UoaTkxNS0+Z3QuYXdha2UpKQo+IC0JCXJldHVybjsKPiAt Cj4gLQlpZiAoUkVBRF9PTkNFKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykpCj4gLQkJcmV0dXJu Owo+IC0KPiAtCXJlYXJtX2hhbmdjaGVjayA9Cj4gLQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5j KCZpOTE1LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOwo+ICAgCj4gICAJaWYgKCFtdXRleF90 cnlsb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KSkgewoKU2hvdWxkIHN0cnVjdF9tdXRleCBi ZSB0YWtlbiBieSBpOTE1X2dlbV9wYXJrLCBpbnNpZGUgdGhlIHdha2VyZWYgbG9jaz8gCk9yIHRo YXQgd291bGQgY3JlYXRlIGEgbG9jayBpbnZlcnNpb24gc29tZXdoZXJlIGVsc2U/Cgo+ICAgCQkv KiBDdXJyZW50bHkgYnVzeSwgY29tZSBiYWNrIGxhdGVyICovCj4gICAJCW1vZF9kZWxheWVkX3dv cmsoaTkxNS0+d3EsCj4gICAJCQkJICZpOTE1LT5nZW0uaWRsZV93b3JrLAo+ICAgCQkJCSBtc2Vj c190b19qaWZmaWVzKDUwKSk7Cj4gLQkJZ290byBvdXRfcmVhcm07Cj4gKwkJcmV0dXJuOwo+ICAg CX0KPiAgIAo+IC0JLyoKPiAtCSAqIEZsdXNoIG91dCB0aGUgbGFzdCB1c2VyIGNvbnRleHQsIGxl YXZpbmcgb25seSB0aGUgcGlubmVkCj4gLQkgKiBrZXJuZWwgY29udGV4dCByZXNpZGVudC4gU2hv dWxkIGFueXRoaW5nIHVuZm9ydHVuYXRlIGhhcHBlbgo+IC0JICogd2hpbGUgd2UgYXJlIGlkbGUg KHN1Y2ggYXMgdGhlIEdQVSBiZWluZyBwb3dlciBjeWNsZWQpLCBubyB1c2Vycwo+IC0JICogd2ls bCBiZSBoYXJtZWQuCj4gLQkgKi8KPiAtCWlmICghd29ya19wZW5kaW5nKCZpOTE1LT5nZW0uaWRs ZV93b3JrLndvcmspICYmCj4gLQkgICAgIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewo+IC0J CSsraTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzOyAvKiBkb24ndCByZXF1ZXVlIGlkbGUgKi8KPiAt Cj4gLQkJc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoaTkxNSwgaTkxNS0+Z3QuYWN0aXZl X2VuZ2luZXMpOwo+IC0KPiAtCQlpZiAoIS0taTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7Cj4g LQkJCV9faTkxNV9nZW1fcGFyayhpOTE1KTsKPiAtCQkJcmVhcm1faGFuZ2NoZWNrID0gZmFsc2U7 Cj4gLQkJfQo+IC0JfQo+ICsJaW50ZWxfd2FrZXJlZl9sb2NrKCZpOTE1LT5ndC53YWtlcmVmKTsK PiArCWlmICghaW50ZWxfd2FrZXJlZl9hY3RpdmUoJmk5MTUtPmd0Lndha2VyZWYpKQo+ICsJCWk5 MTVfZ2VtX3BhcmsoaTkxNSk7Cj4gKwlpbnRlbF93YWtlcmVmX3VubG9jaygmaTkxNS0+Z3Qud2Fr ZXJlZik7Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0KPiAtb3V0X3JlYXJtOgo+IC0JaWYgKHJlYXJtX2hhbmdjaGVjaykgewo+IC0JCUdFTV9CVUdf T04oIWk5MTUtPmd0LmF3YWtlKTsKPiAtCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhpOTE1KTsKPiAt CX0KPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCj4gQEAgLTE0Nyw5NyArNzQsNzYgQEAgc3RhdGljIHZvaWQgcmV0 aXJlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJfQo+ICAgCj4gLQkvKgo+IC0JICog S2VlcCB0aGUgcmV0aXJlIGhhbmRsZXIgcnVubmluZyB1bnRpbCB3ZSBhcmUgZmluYWxseSBpZGxl Lgo+IC0JICogV2UgZG8gbm90IG5lZWQgdG8gZG8gdGhpcyB0ZXN0IHVuZGVyIGxvY2tpbmcgYXMg aW4gdGhlIHdvcnN0LWNhc2UKPiAtCSAqIHdlIHF1ZXVlIHRoZSByZXRpcmUgd29ya2VyIG9uY2Ug dG9vIG9mdGVuLgo+IC0JICovCj4gLQlpZiAoUkVBRF9PTkNFKGk5MTUtPmd0LmF3YWtlKSkKPiAr CWlmIChpbnRlbF93YWtlcmVmX2FjdGl2ZSgmaTkxNS0+Z3Qud2FrZXJlZikpCj4gICAJCXF1ZXVl X2RlbGF5ZWRfd29yayhpOTE1LT53cSwKPiAgIAkJCQkgICAmaTkxNS0+Z2VtLnJldGlyZV93b3Jr LAo+ICAgCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiAgIH0KPiAgIAo+ IC12b2lkIGk5MTVfZ2VtX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0 YXRpYyBpbnQgcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKPiArCQkgICAg ICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sCj4gKwkJICAgICAgIHZvaWQgKmRhdGEpCj4gICB7Cj4g LQlHRU1fVFJBQ0UoIlxuIik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4g KwkJY29udGFpbmVyX29mKG5iLCB0eXBlb2YoKmk5MTUpLCBnZW0ucG1fbm90aWZpZXIpOwo+ICAg Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCUdF TV9CVUdfT04oaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKPiArCXN3aXRjaCAoYWN0aW9uKSB7 Cj4gKwljYXNlIElOVEVMX0dUX1VOUEFSSzoKPiArCQlpOTE1X2dsb2JhbHNfdW5wYXJrKCk7Cj4g KwkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLAo+ICsJCQkJICAgJmk5MTUtPmdlbS5yZXRp cmVfd29yaywKPiArCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiArCQli cmVhazsKPiAgIAo+IC0JaWYgKCFpOTE1LT5ndC5hd2FrZSkKPiAtCQlyZXR1cm47Cj4gKwljYXNl IElOVEVMX0dUX1BBUks6Cj4gKwkJbW9kX2RlbGF5ZWRfd29yayhpOTE1LT53cSwKPiArCQkJCSAm aTkxNS0+Z2VtLmlkbGVfd29yaywKPiArCQkJCSBtc2Vjc190b19qaWZmaWVzKDEwMCkpOwo+ICsJ CWJyZWFrOwo+ICsJfQo+ICAgCj4gLQkvKiBEZWZlciB0aGUgYWN0dWFsIGNhbGwgdG8gX19pOTE1 X2dlbV9wYXJrKCkgdG8gcHJldmVudCBwaW5nLXBvbmdzICovCj4gLQltb2RfZGVsYXllZF93b3Jr KGk5MTUtPndxLCAmaTkxNS0+Z2VtLmlkbGVfd29yaywgbXNlY3NfdG9famlmZmllcygxMDApKTsK PiArCXJldHVybiBOT1RJRllfT0s7Cj4gICB9Cj4gICAKPiAtdm9pZCBpOTE1X2dlbV91bnBhcmso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyBib29sIHN3aXRjaF90b19r ZXJuZWxfY29udGV4dF9zeW5jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ IC0JR0VNX1RSQUNFKCJcbiIpOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JR0VNX0JVR19PTighaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3Rz KTsKPiAtCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChpOTE1KTsKPiAtCj4gLQlpZiAoaTkxNS0+ Z3QuYXdha2UpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCS8qCj4gLQkgKiBJdCBzZWVtcyB0aGF0IHRo ZSBETUMgbGlrZXMgdG8gdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZSBEQyBzdGF0ZXMgYSBsb3QKPiAt CSAqIHdoZW4gdGhlcmUgYXJlIG5vIGNvbm5lY3RlZCBkaXNwbGF5cyAobm8gYWN0aXZlIHBvd2Vy IGRvbWFpbnMpIGR1cmluZwo+IC0JICogY29tbWFuZCBzdWJtaXNzaW9uLgo+IC0JICoKPiAtCSAq IFRoaXMgYWN0aXZpdHkgaGFzIG5lZ2F0aXZlIGltcGFjdCBvbiB0aGUgcGVyZm9ybWFuY2Ugb2Yg dGhlIGNoaXAgd2l0aAo+IC0JICogaHVnZSBsYXRlbmNpZXMgb2JzZXJ2ZWQgaW4gdGhlIGludGVy cnVwdCBoYW5kbGVyIGFuZCBlbHNld2hlcmUuCj4gLQkgKgo+IC0JICogV29yayBhcm91bmQgaXQg YnkgZ3JhYmJpbmcgYSBHVCBJUlEgcG93ZXIgZG9tYWluIHdoaWxzdCB0aGVyZSBpcyBhbnkKPiAt CSAqIEdUIGFjdGl2aXR5LCBwcmV2ZW50aW5nIGFueSBEQyBzdGF0ZSB0cmFuc2l0aW9ucy4KPiAt CSAqLwo+IC0JaTkxNS0+Z3QuYXdha2UgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChpOTE1LCBQ T1dFUl9ET01BSU5fR1RfSVJRKTsKPiAtCUdFTV9CVUdfT04oIWk5MTUtPmd0LmF3YWtlKTsKPiAt Cj4gLQlpOTE1X2dsb2JhbHNfdW5wYXJrKCk7Cj4gLQo+IC0JaW50ZWxfZW5hYmxlX2d0X3Bvd2Vy c2F2ZShpOTE1KTsKPiAtCWk5MTVfdXBkYXRlX2dmeF92YWwoaTkxNSk7Cj4gLQlpZiAoSU5URUxf R0VOKGk5MTUpID49IDYpCj4gLQkJZ2VuNl9ycHNfYnVzeShpOTE1KTsKPiAtCWk5MTVfcG11X2d0 X3VucGFya2VkKGk5MTUpOwo+IC0KPiAtCWludGVsX2VuZ2luZXNfdW5wYXJrKGk5MTUpOwo+ICsJ Ym9vbCByZXN1bHQgPSB0cnVlOwo+ICAgCj4gLQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhpOTE1KTsK PiArCWRvIHsKPiArCQlpZiAoaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAo+ICsJCQkJCSAg IEk5MTVfV0FJVF9MT0NLRUQgfAo+ICsJCQkJCSAgIEk5MTVfV0FJVF9GT1JfSURMRV9CT09TVCwK PiArCQkJCQkgICBJOTE1X0dFTV9JRExFX1RJTUVPVVQpID09IC1FVElNRSkgewo+ICsJCQkvKiBY WFggaGlkZSB3YXJuaW5nIGZyb20gZ2VtX2VpbyAqLwo+ICsJCQlpZiAoaTkxNV9tb2RwYXJhbXMu cmVzZXQpIHsKPiArCQkJCWRldl9lcnIoaTkxNS0+ZHJtLmRldiwKPiArCQkJCQkiRmFpbGVkIHRv IGlkbGUgZW5naW5lcywgZGVjbGFyaW5nIHdlZGdlZCFcbiIpOwo+ICsJCQkJR0VNX1RSQUNFX0RV TVAoKTsKPiArCQkJfQo+ICsKPiArCQkJLyoKPiArCQkJICogRm9yY2libHkgY2FuY2VsIG91dHN0 YW5kaW5nIHdvcmsgYW5kIGxlYXZlCj4gKwkJCSAqIHRoZSBncHUgcXVpZXQuCj4gKwkJCSAqLwo+ ICsJCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwo+ICsJCQlyZXN1bHQgPSBmYWxzZTsKPiAr CQl9Cj4gKwl9IHdoaWxlIChpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KSAmJiByZXN1bHQpOwo+ ICAgCj4gLQlxdWV1ZV9kZWxheWVkX3dvcmsoaTkxNS0+d3EsCj4gLQkJCSAgICZpOTE1LT5nZW0u cmV0aXJlX3dvcmssCj4gLQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiAr CUdFTV9CVUdfT04oaTkxNS0+Z3QuYXdha2UpOwo+ICsJcmV0dXJuIHJlc3VsdDsKPiAgIH0KPiAg IAo+ICAgYm9vbCBpOTE1X2dlbV9sb2FkX3Bvd2VyX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICB7Cj4gLQkvKiBGb3JjZSBsb2FkaW5nIHRoZSBrZXJuZWwgY29udGV4 dCBvbiBhbGwgZW5naW5lcyAqLwo+IC0JaWYgKCFzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHRfc3lu YyhpOTE1LCBBTExfRU5HSU5FUykpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCS8qCj4gLQkg KiBJbW1lZGlhdGVseSBwYXJrIHRoZSBHUFUgc28gdGhhdCB3ZSBlbmFibGUgcG93ZXJzYXZpbmcg YW5kCj4gLQkgKiB0cmVhdCBpdCBhcyBpZGxlLiBUaGUgbmV4dCB0aW1lIHdlIGlzc3VlIGEgcmVx dWVzdCwgd2Ugd2lsbAo+IC0JICogdW5wYXJrIGFuZCBzdGFydCB1c2luZyB0aGUgZW5naW5lLT5w aW5uZWRfZGVmYXVsdF9zdGF0ZSwgb3RoZXJ3aXNlCj4gLQkgKiBpdCBpcyBpbiBsaW1ibyBhbmQg YW4gZWFybHkgcmVzZXQgbWF5IGZhaWwuCj4gLQkgKi8KPiAtCV9faTkxNV9nZW1fcGFyayhpOTE1 KTsKPiAtCj4gLQlyZXR1cm4gdHJ1ZTsKPiArCXJldHVybiBzd2l0Y2hfdG9fa2VybmVsX2NvbnRl eHRfc3luYyhpOTE1KTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Cj4gLQo+ICAgCUdFTV9UUkFDRSgiXG4iKTsKPiAgIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJZmx1c2hfd29ya3F1ZXVlKGk5MTUtPndxKTsKPiAgIAo+ ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gQEAgLTI1MCwx MCArMTU2LDE2IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgIAkgKiBzdGF0ZS4gRm9ydHVuYXRlbHksIHRoZSBrZXJuZWxfY29udGV4dCBp cyBkaXNwb3NhYmxlIGFuZCB3ZSBkbwo+ICAgCSAqIG5vdCByZWx5IG9uIGl0cyBzdGF0ZS4KPiAg IAkgKi8KPiAtCXN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKGk5MTUsIGk5MTUtPmd0LmFj dGl2ZV9lbmdpbmVzKTsKPiArCXN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKGk5MTUpOwo+ ICAgCj4gICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWk5MTVf cmVzZXRfZmx1c2goaTkxNSk7Cj4gKwo+ICsJLyoKPiArCSAqIEFzc2VydCB0aGF0IHdlIHN1Y2Nl c3NmdWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBhbmQKPiArCSAqIHJlc2V0IHRoZSBHUFUgYmFj ayB0byBpdHMgaWRsZSwgbG93IHBvd2VyIHN0YXRlLgo+ICsJICovCj4gKwlHRU1fQlVHX09OKGk5 MTUtPmd0LmF3YWtlKTsKPiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3B1X2Vy cm9yLmhhbmdjaGVja193b3JrKTsKPiAgIAo+ICAgCWRyYWluX2RlbGF5ZWRfd29yaygmaTkxNS0+ Z2VtLnJldGlyZV93b3JrKTsKPiAgIAo+IEBAIC0yNjMsMTcgKzE3NSw5IEBAIHZvaWQgaTkxNV9n ZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKi8KPiAgIAlk cmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwo+ICAgCj4gLQlmbHVzaF93 b3JrcXVldWUoaTkxNS0+d3EpOwo+IC0KPiAtCS8qCj4gLQkgKiBBc3NlcnQgdGhhdCB3ZSBzdWNj ZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCj4gLQkgKiByZXNldCB0aGUgR1BVIGJh Y2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4KPiAtCSAqLwo+IC0JR0VNX0JVR19PTihp OTE1LT5ndC5hd2FrZSk7Cj4gKwlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwo+ ICAgCj4gICAJaW50ZWxfdWNfc3VzcGVuZChpOTE1KTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X2dlbV9zdXNwZW5k X2xhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gQEAgLTM2Miw0ICsyNjYsOCBA QCB2b2lkIGk5MTVfZ2VtX2luaXRfX3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAgewo+ICAgCUlOSVRfREVMQVlFRF9XT1JLKCZpOTE1LT5nZW0uaWRsZV93b3JrLCBpZGxlX3dv cmtfaGFuZGxlcik7Cj4gICAJSU5JVF9ERUxBWUVEX1dPUksoJmk5MTUtPmdlbS5yZXRpcmVfd29y aywgcmV0aXJlX3dvcmtfaGFuZGxlcik7Cj4gKwo+ICsJaTkxNS0+Z2VtLnBtX25vdGlmaWVyLm5v dGlmaWVyX2NhbGwgPSBwbV9ub3RpZmllcjsKPiArCWJsb2NraW5nX25vdGlmaWVyX2NoYWluX3Jl Z2lzdGVyKCZpOTE1LT5ndC5wbV9ub3RpZmljYXRpb25zLAo+ICsJCQkJCSAmaTkxNS0+Z2VtLnBt X25vdGlmaWVyKTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmgKPiBpbmRleCA1 MmY2NWUzZjA2YjUuLjZmN2Q1ZDExYWMzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9wbS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cG0uaAo+IEBAIC0xNyw5ICsxNyw2IEBAIHZvaWQgaTkxNV9nZW1faW5pdF9fcG0oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgYm9vbCBpOTE1X2dlbV9sb2FkX3Bvd2VyX2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgdm9pZCBpOTE1X2dlbV9yZXN1 bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgCj4gLXZvaWQgaTkxNV9nZW1f dW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAtdm9pZCBpOTE1X2dlbV9w YXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAtCj4gICB2b2lkIGk5MTVfZ2Vt X2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7Cj4gICAKPiAgIHZv aWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4gaW5kZXggYjQxOWQwZjU5Mjc1Li4yZWNk MGM2YTFjOTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiBAQCAt MTc5LDggKzE3OSw2IEBAIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSB7Cj4gICAJc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZ2wsICpmaXQ7Cj4gICB9Owo+ICAgCj4gLXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0 Owo+IC0KPiAgIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gICAJLyogRm9yIGhhbmdjaGVjayB0 aW1lciAqLwo+ICAgI2RlZmluZSBEUk1fSTkxNV9IQU5HQ0hFQ0tfUEVSSU9EIDE1MDAgLyogaW4g bXMgKi8KPiBAQCAtMjQxLDggKzIzOSw2IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gICAJ d2FpdF9xdWV1ZV9oZWFkX3QgcmVzZXRfcXVldWU7Cj4gICAKPiAgIAlzdHJ1Y3Qgc3JjdV9zdHJ1 Y3QgcmVzZXRfYmFja29mZl9zcmN1Owo+IC0KPiAtCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICpy ZXN0YXJ0Owo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBpbmRleCA2NzJjOWVhNmMyNGYuLmQx MTZiNWU2OTgyNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gQEAgLTQz MSw2ICs0MzEsOCBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyZXF1ZXN0KQo+ICAgCS8qIFRyYW5zZmVyIGZyb20gcGVyLWNvbnRleHQgb250byB0aGUg Z2xvYmFsIHBlci1lbmdpbmUgdGltZWxpbmUgKi8KPiAgIAltb3ZlX3RvX3RpbWVsaW5lKHJlcXVl c3QsICZlbmdpbmUtPnRpbWVsaW5lKTsKPiAgIAo+ICsJZW5naW5lLT5zZXJpYWwrKzsKPiArCj4g ICAJdHJhY2VfaTkxNV9yZXF1ZXN0X2V4ZWN1dGUocmVxdWVzdCk7Cj4gICB9Cj4gICAKPiBAQCAt MTE0Niw3ICsxMTQ4LDYgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCAqX19pOTE1X3JlcXVlc3RfY29t bWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCWxpc3RfYWRkX3RhaWwoJnJxLT5yaW5n X2xpbmssICZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ICAgCWlmIChsaXN0X2lzX2ZpcnN0KCZycS0+ cmluZ19saW5rLCAmcmluZy0+cmVxdWVzdF9saXN0KSkKPiAgIAkJbGlzdF9hZGQoJnJpbmctPmFj dGl2ZV9saW5rLCAmcnEtPmk5MTUtPmd0LmFjdGl2ZV9yaW5ncyk7Cj4gLQlycS0+aTkxNS0+Z3Qu YWN0aXZlX2VuZ2luZXMgfD0gcnEtPmVuZ2luZS0+bWFzazsKPiAgIAlycS0+ZW1pdHRlZF9qaWZm aWVzID0gamlmZmllczsKPiAgIAo+ICAgCS8qCj4gQEAgLTE0MTgsMjEgKzE0MTksMjAgQEAgbG9u ZyBpOTE1X3JlcXVlc3Rfd2FpdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgIAlyZXR1cm4g dGltZW91dDsKPiAgIH0KPiAgIAo+IC12b2lkIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICtib29sIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nLCAqdG1wOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAKPiAtCWlmICghaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKQo+IC0JCXJl dHVybjsKCllvdSBkb24ndCB3YW50IHRvIHJlcGxhY2UgdGhpcyB3aXRoIGEgd2FrZXJlZl9hY3Rp dmUgY2hlY2s/Cgo+IC0KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmluZywgdG1wLAo+ ICAgCQkJCSAmaTkxNS0+Z3QuYWN0aXZlX3JpbmdzLCBhY3RpdmVfbGluaykgewo+ICAgCQlpbnRl bF9yaW5nX2dldChyaW5nKTsgLyogbGFzdCBycSBob2xkcyByZWZlcmVuY2UhICovCj4gICAJCXJp bmdfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwo+ICAgCQlpbnRlbF9yaW5nX3B1dChyaW5nKTsKPiAg IAl9Cj4gKwo+ICsJcmV0dXJuICFsaXN0X2VtcHR5KCZpOTE1LT5ndC5hY3RpdmVfcmluZ3MpOwo+ ICAgfQo+ICAgCj4gICAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBpbmRleCAzNmYxM2I3NGVjNTguLjFlZWU3 NDE2YWYzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gQEAgLTQyNSw2 ICs0MjUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJcnEtPmh3c3Bfc2Vxbm8gPSAodTMyICopJnJx LT5mZW5jZS5zZXFubzsgLyogZGVjb3VwbGUgZnJvbSBIV1NQICovCj4gICB9Cj4gICAKPiAtdm9p ZCBpOTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4g K2Jvb2wgaTkxNV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Owo+ICAgCj4gICAjZW5kaWYgLyogSTkxNV9SRVFVRVNUX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmMKPiBpbmRleCAxM2Y4MjNmZjgwODMuLmZkOWQzYjBkOWY0NyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWMuYwo+IEBAIC00NjYsMjYgKzQ2NiwyMiBAQCB2b2lkIGludGVsX3VjX3Jlc2V0 X3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJaW50ZWxfdWNfc2Fu aXRpemUoaTkxNSk7Cj4gICB9Cj4gICAKPiAtaW50IGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3ZvaWQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm aTkxNS0+Z3VjOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJaW50IGVycjsKPiAg IAo+IC0JaWYgKCFVU0VTX0dVQyhpOTE1KSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gICAJaWYgKGd1 Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPiAtCQlyZXR1 cm4gMDsKPiAtCj4gLQllcnIgPSBpbnRlbF9ndWNfc3VzcGVuZChndWMpOwo+IC0JaWYgKGVycikg ewo+IC0JCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0byBzdXNwZW5kIEd1QywgZXJyPSVkIiwg ZXJyKTsKPiAtCQlyZXR1cm4gZXJyOwo+IC0JfQo+ICsJCXJldHVybjsKPiAgIAo+IC0JZ3VjX2Rp c2FibGVfY29tbXVuaWNhdGlvbihndWMpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUs IHdha2VyZWYpIHsKPiArCQllcnIgPSBpbnRlbF9ndWNfc3VzcGVuZChndWMpOwo+ICsJCWlmIChl cnIpCj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0byBzdXNwZW5kIEd1QywgZXJyPSVk IiwgZXJyKTsKPiAgIAo+IC0JcmV0dXJuIDA7Cj4gKwkJZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlv bihndWMpOwo+ICsJfQo+ICAgfQo+ICAgCj4gICBpbnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAo+IGluZGV4IGMx NDcyOTc4NjY1Mi4uYzkyNDM2YjFmMWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCj4g QEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBpbnRlbF91Y19maW5pX2h3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gICBpbnQgaW50ZWxfdWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBpbnRlbF91Y19maW5pKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+IC1pbnQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGludGVsX3VjX3N1c3BlbmQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgaW50IGludGVsX3VjX3Jlc3VtZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgCj4gICBzdGF0aWMgaW5saW5l IGJvb2wgaW50ZWxfdWNfaXNfdXNpbmdfZ3VjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gaW5kZXggNmZk NzBkMzI2NDY4Li4wMzQyZGUzNjlkM2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW0uYwo+IEBAIC0xNiwyNiArMTYsMTggQEAgc3RhdGljIGludCBzd2l0Y2hf dG9fY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCWludCBlcnIgPSAwOwo+IC0KPiAtCXdh a2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgIAo+ICAgCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ ICAgCj4gICAJCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiAtCQlpZiAo SVNfRVJSKHJxKSkgewo+IC0JCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAtCQkJYnJlYWs7Cj4gLQkJ fQo+ICsJCWlmIChJU19FUlIocnEpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAKPiAg IAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gICAJfQo+ICAgCj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LCB3YWtlcmVmKTsKPiAtCj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIDA7Cj4g ICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIHRyYXNoX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiBAQCAtMTIwLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIHBtX3Jlc3VtZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiB0aGF0IHJ1bnRpbWUtcG0ganVz dCB3b3Jrcy4KPiAgIAkgKi8KPiAgIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJl Zikgewo+IC0JCWludGVsX2VuZ2luZXNfc2FuaXRpemUoaTkxNSwgZmFsc2UpOwo+ICsJCWludGVs X2d0X3Nhbml0aXplKGk5MTUsIGZhbHNlKTsKPiAgIAkJaTkxNV9nZW1fc2FuaXRpemUoaTkxNSk7 Cj4gICAJCWk5MTVfZ2VtX3Jlc3VtZShpOTE1KTsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggOWQ2NDZmYTFi NzRlLi43MWQ4OTZiYmFkZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTYwOCwxMTMgKzE2MDgsNiBAQCBfX2Vu Z2luZV9uYW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnRlbF9lbmdpbmVfbWFz a190IGVuZ2luZXMpCj4gICAJcmV0dXJuICJub25lIjsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50 IF9faWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAtCQkJCQkgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gLQkJCQkJICBp bnRlbF9lbmdpbmVfbWFza190IGVuZ2luZXMpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAtCWludGVsX2VuZ2luZV9tYXNrX3QgdG1wOwo+IC0JaW50IHBhc3M7Cj4g LQo+IC0JR0VNX1RSQUNFKCJUZXN0aW5nICVzXG4iLCBfX2VuZ2luZV9uYW1lKGk5MTUsIGVuZ2lu ZXMpKTsKPiAtCWZvciAocGFzcyA9IDA7IHBhc3MgPCA0OyBwYXNzKyspIHsgLyogT25jZSBidXN5 OyBvbmNlIGlkbGU7IHJlcGVhdCAqLwo+IC0JCWJvb2wgZnJvbV9pZGxlID0gcGFzcyAmIDE7Cj4g LQkJaW50IGVycjsKPiAtCj4gLQkJaWYgKCFmcm9tX2lkbGUpIHsKPiAtCQkJZm9yX2VhY2hfZW5n aW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIGVuZ2luZXMsIHRtcCkgewo+IC0JCQkJc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnE7Cj4gLQo+IC0JCQkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5l LCBjdHgpOwo+IC0JCQkJaWYgKElTX0VSUihycSkpCj4gLQkJCQkJcmV0dXJuIFBUUl9FUlIocnEp Owo+IC0KPiAtCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+IC0JCQl9Cj4gLQkJfQo+IC0KPiAt CQllcnIgPSBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwKPiAtCQkJCQkJ CWk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzKTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlyZXR1cm4gZXJy Owo+IC0KPiAtCQlpZiAoIWZyb21faWRsZSkgewo+IC0JCQllcnIgPSBpOTE1X2dlbV93YWl0X2Zv cl9pZGxlKGk5MTUsCj4gLQkJCQkJCSAgICAgSTkxNV9XQUlUX0xPQ0tFRCwKPiAtCQkJCQkJICAg ICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gLQkJCWlmIChlcnIpCj4gLQkJCQlyZXR1cm4gZXJy Owo+IC0JCX0KPiAtCj4gLQkJaWYgKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewo+IC0JCQlw cl9lcnIoIiVkIGFjdGl2ZSByZXF1ZXN0cyByZW1haW4gYWZ0ZXIgc3dpdGNoaW5nIHRvIGtlcm5l bCBjb250ZXh0LCBwYXNzICVkICglcykgb24gJXMgZW5naW5lJXNcbiIsCj4gLQkJCSAgICAgICBp OTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMsCj4gLQkJCSAgICAgICBwYXNzLCBmcm9tX2lkbGUgPyAi aWRsZSIgOiAiYnVzeSIsCj4gLQkJCSAgICAgICBfX2VuZ2luZV9uYW1lKGk5MTUsIGVuZ2luZXMp LAo+IC0JCQkgICAgICAgaXNfcG93ZXJfb2ZfMihlbmdpbmVzKSA/ICIiIDogInMiKTsKPiAtCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gLQkJfQo+IC0KPiAtCQkvKiBYWFggQm9udXMgcG9pbnRzIGZvciBw cm92aW5nIHdlIGFyZSB0aGUga2VybmVsIGNvbnRleHQhICovCj4gLQo+IC0JCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQkJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1 LT5nZW0uaWRsZV93b3JrKTsKPiAtCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCX0KPiAtCj4gLQlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tF RCkpCj4gLQkJcmV0dXJuIC1FSU87Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRp YyBpbnQgaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCh2b2lkICphcmcpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+IC0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAtCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gLQlpbnQg ZXJyOwo+IC0KPiAtCS8qCj4gLQkgKiBBIGNvcmUgcHJlbWlzZSBvZiBzd2l0Y2hpbmcgdG8gdGhl IGtlcm5lbCBjb250ZXh0IGlzIHRoYXQKPiAtCSAqIGlmIGFuIGVuZ2luZSBpcyBhbHJlYWR5IGlk bGluZyBpbiB0aGUga2VybmVsIGNvbnRleHQsIHdlCj4gLQkgKiBkbyBub3QgZW1pdCBhbm90aGVy IHJlcXVlc3QgYW5kIHdha2UgaXQgdXAuIFRoZSBvdGhlciBiZWluZwo+IC0JICogdGhhdCB3ZSBk byBpbmRlZWQgZW5kIHVwIGlkbGluZyBpbiB0aGUga2VybmVsIGNvbnRleHQuCj4gLQkgKi8KPiAt Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCj4gLQljdHggPSBrZXJuZWxfY29udGV4dChp OTE1KTsKPiAtCWlmIChJU19FUlIoY3R4KSkgewo+IC0JCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gLQkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKPiAtCX0KPiAtCj4gLQkv KiBGaXJzdCBjaGVjayBpZGxpbmcgZWFjaCBpbmRpdmlkdWFsIGVuZ2luZSAqLwo+IC0JZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAtCQllcnIgPSBfX2lndF9zd2l0Y2hfdG9f a2VybmVsX2NvbnRleHQoaTkxNSwgY3R4LCBCSVQoaWQpKTsKPiAtCQlpZiAoZXJyKQo+IC0JCQln b3RvIG91dF91bmxvY2s7Cj4gLQl9Cj4gLQo+IC0JLyogTm93IGVuIG1hc3NlICovCj4gLQllcnIg PSBfX2lndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwgY3R4LCBBTExfRU5HSU5FUyk7 Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiAtCj4gLW91dF91bmxvY2s6Cj4g LQlHRU1fVFJBQ0VfRFVNUF9PTihlcnIpOwo+IC0KPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5 MTUsIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gLQlrZXJuZWxfY29udGV4dF9jbG9zZShjdHgpOwo+IC0JcmV0dXJuIGVycjsKPiAtfQo+ IC0KPiAgIHN0YXRpYyB2b2lkIG1vY2tfYmFycmllcl90YXNrKHZvaWQgKmRhdGEpCj4gICB7Cj4g ICAJdW5zaWduZWQgaW50ICpjb3VudGVyID0gZGF0YTsKPiBAQCAtMTcyOSw3ICsxNjIyLDYgQEAg c3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCj4gICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCWludGVsX3dha2VyZWZfdCB3 YWtlcmVmOwo+ICAgCXVuc2lnbmVkIGludCBjb3VudGVyOwo+ICAgCWludCBlcnI7Cj4gICAKPiBA QCAtMTc3Miw5ICsxNjY0LDcgQEAgc3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lk ICphcmcpCj4gICAJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+IC0JcnEgPSBFUlJfUFRSKC1FTk9E RVYpOwo+IC0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpCj4gLQkJcnEgPSBp OTE1X3JlcXVlc3RfYWxsb2MoaTkxNS0+ZW5naW5lW1JDUzBdLCBjdHgpOwo+ICsJcnEgPSBpOTE1 X3JlcXVlc3RfYWxsb2MoaTkxNS0+ZW5naW5lW1JDUzBdLCBjdHgpOwo+ICAgCWlmIChJU19FUlIo cnEpKSB7Cj4gICAJCXByX2VycigiUmVxdWVzdCBhbGxvY2F0aW9uIGZhaWxlZCFcbiIpOwo+ICAg CQlnb3RvIG91dDsKPiBAQCAtMTgyNCw3ICsxNzE0LDYgQEAgc3RhdGljIGludCBtb2NrX2NvbnRl eHRfYmFycmllcih2b2lkICphcmcpCj4gICBpbnQgaTkxNV9nZW1fY29udGV4dF9tb2NrX3NlbGZ0 ZXN0cyh2b2lkKQo+ICAgewo+ICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRl c3RzW10gPSB7Cj4gLQkJU1VCVEVTVChpZ3Rfc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KSwKPiAg IAkJU1VCVEVTVChtb2NrX2NvbnRleHRfYmFycmllciksCj4gICAJfTsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiBAQCAtMTg0Myw3ICsxNzMyLDYgQEAgaW50IGk5MTVfZ2Vt X2NvbnRleHRfbW9ja19zZWxmdGVzdHModm9pZCkKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X2xp dmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAg IAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+IC0JCVNVQlRF U1QoaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCksCj4gICAJCVNVQlRFU1QobGl2ZV9ub3Bf c3dpdGNoKSwKPiAgIAkJU1VCVEVTVChpZ3RfY3R4X2V4ZWMpLAo+ICAgCQlTVUJURVNUKGlndF9j dHhfcmVhZG9ubHkpLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fb2JqZWN0LmMKPiBpbmRleCAxMjIwM2Q2NjVhNGUuLjA4OGIyYWEwNWRjZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMK PiBAQCAtMjQsNiArMjQsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSAiLi4vaTkxNV9zZWxmdGVzdC5o Igo+ICAgCj4gKyNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgo+ICAgI2luY2x1ZGUgIm1vY2tf Z2VtX2RldmljZS5oIgo+ICAgI2luY2x1ZGUgImh1Z2VfZ2VtX29iamVjdC5oIgo+ICAgCj4gQEAg LTUwNSwxOSArNTA2LDIzIEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcmV0aXJlX3dvcmtlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgIAlpOTE1X2dlbV9zaHJpbmtlcl91 bnJlZ2lzdGVyKGk5MTUpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAtCWlmICghaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKyspIHsKPiAtCQlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCj4gLQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdh a2VyZWYpCj4gLQkJCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsKPiAtCX0KPiAtCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpbnRlbF9ndF9wbV9nZXQoaTkxNSk7Cj4g ICAKPiAgIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUtPmdlbS5yZXRpcmVfd29yayk7 Cj4gICAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5nZW0uaWRsZV93b3JrKTsKPiAg IH0KPiAgIAo+ICtzdGF0aWMgdm9pZCByZXN0b3JlX3JldGlyZV93b3JrZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWludGVsX2d0X3BtX3B1dChpOTE1KTsKPiArCj4g KwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWlndF9mbHVzaF90ZXN0 KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiArCj4gKwlpOTE1X2dlbV9zaHJpbmtlcl9yZWdpc3RlcihpOTE1KTsKPiAr fQo+ICsKPiAgIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJn KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+IEBAIC02 MTUsMTMgKzYyMCw3IEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9p ZCAqYXJnKQo+ICAgb3V0Ogo+ICAgCWRybV9tbV9yZW1vdmVfbm9kZSgmcmVzdik7Cj4gICBvdXRf cGFyazoKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKC0t aTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKQo+IC0JCXF1ZXVlX2RlbGF5ZWRfd29yayhpOTE1LT53 cSwgJmk5MTUtPmdlbS5yZXRpcmVfd29yaywgMCk7Cj4gLQllbHNlCj4gLQkJcXVldWVfZGVsYXll ZF93b3JrKGk5MTUtPndxLCAmaTkxNS0+Z2VtLmlkbGVfd29yaywgMCk7Cj4gLQltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fc2hyaW5rZXJfcmVnaXN0 ZXIoaTkxNSk7Cj4gKwlyZXN0b3JlX3JldGlyZV93b3JrZXIoaTkxNSk7Cj4gICAJcmV0dXJuIGVy cjsKPiAgIGVycl9vYmo6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCj4gaW5kZXggOTRh ZWU0MDcxYTY2Li5lNDJmM2M1ODUzNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYwo+IEBAIC0xMSwyMyArMTEsMjkgQEAKPiAgIAo+ ICAgaW50IGlndF9mbHVzaF90ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNp Z25lZCBpbnQgZmxhZ3MpCj4gICB7Cj4gKwlpbnQgcmV0ID0gaTkxNV90ZXJtaW5hbGx5X3dlZGdl ZChpOTE1KSA/IC1FSU8gOiAwOwo+ICsJaW50IHJlcGVhdCA9ICEhKGZsYWdzICYgSTkxNV9XQUlU X0xPQ0tFRCk7Cj4gKwo+ICAgCWNvbmRfcmVzY2hlZCgpOwo+ICAgCj4gLQlpZiAoZmxhZ3MgJiBJ OTE1X1dBSVRfTE9DS0VEICYmCj4gLQkgICAgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250 ZXh0KGk5MTUsIGk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzKSkgewo+IC0JCXByX2VycigiRmFpbGVk IHRvIHN3aXRjaCBiYWNrIHRvIGtlcm5lbCBjb250ZXh0OyBkZWNsYXJpbmcgd2VkZ2VkXG4iKTsK PiAtCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwo+IC0JfQo+ICsJZG8gewo+ICsJCWlmIChp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIGZsYWdzLCBIWiAvIDUpID09IC1FVElNRSkgewo+ ICsJCQlwcl9lcnIoIiVwUyB0aW1lZCBvdXQsIGNhbmNlbGxpbmcgYWxsIGZ1cnRoZXIgdGVzdGlu Zy5cbiIsCj4gKwkJCSAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOwo+ICAgCj4g LQlpZiAoaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LCBmbGFncywgSFogLyA1KSA9PSAtRVRJ TUUpIHsKPiAtCQlwcl9lcnIoIiVwUyB0aW1lZCBvdXQsIGNhbmNlbGxpbmcgYWxsIGZ1cnRoZXIg dGVzdGluZy5cbiIsCj4gLQkJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7Cj4g KwkJCUdFTV9UUkFDRSgiJXBTIHRpbWVkIG91dC5cbiIsCj4gKwkJCQkgIF9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSk7Cj4gKwkJCUdFTV9UUkFDRV9EVU1QKCk7Cj4gICAKPiAtCQlHRU1fVFJB Q0UoIiVwUyB0aW1lZCBvdXQuXG4iLCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOwo+IC0J CUdFTV9UUkFDRV9EVU1QKCk7Cj4gKwkJCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Cj4gKwkJ CXJlcGVhdCA9IDA7Cj4gKwkJCXJldCA9IC1FSU87Cj4gKwkJfQo+ICAgCj4gLQkJaTkxNV9nZW1f c2V0X3dlZGdlZChpOTE1KTsKPiAtCX0KPiArCQkvKiBFbnN1cmUgd2UgYWxzbyBmbHVzaCBhZnRl ciB3ZWRnaW5nLiAqLwo+ICsJCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpCj4gKwkJCWk5 MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+ICsJfSB3aGlsZSAocmVwZWF0LS0pOwo+ICAgCj4g LQlyZXR1cm4gaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1KTsKPiArCXJldHVybiByZXQ7Cj4g ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dl bV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZp Y2UuYwo+IGluZGV4IGZiNjc3YjQwMTlhMC4uYzA3MjQyNGM2YjdjIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+IEBAIC00MSwx MSArNDEsMTAgQEAgdm9pZCBtb2NrX2RldmljZV9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiAtCQlt b2NrX2VuZ2luZV9mbHVzaChlbmdpbmUpOwo+IC0KPiAtCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5 MTUpOwo+IC0JR0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ICsJZG8gewo+ ICsJCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+ICsJCQltb2NrX2VuZ2luZV9m bHVzaChlbmdpbmUpOwo+ICsJfSB3aGlsZSAoaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSkpOwo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtb2NrX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gQEAgLTExMCwxMCArMTA5LDYgQEAgc3RhdGljIHZvaWQgbW9ja19yZXRp cmVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAo+ICAgc3RhdGlj IHZvaWQgbW9ja19pZGxlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gLQkJY29udGFpbmVyX29m KHdvcmssIHR5cGVvZigqaTkxNSksIGdlbS5pZGxlX3dvcmsud29yayk7Cj4gLQo+IC0JaTkxNS0+ Z3QuYWN0aXZlX2VuZ2luZXMgPSAwOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IHBtX2RvbWFp bl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+IEBAIC0xODUsNiArMTgwLDggQEAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAgCj4gICAJbW9ja191 bmNvcmVfaW5pdCgmaTkxNS0+dW5jb3JlKTsKPiAgIAlpOTE1X2dlbV9pbml0X19tbShpOTE1KTsK PiArCWludGVsX2d0X3BtX2luaXQoaTkxNSk7Cj4gKwlhdG9taWNfaW5jKCZpOTE1LT5ndC53YWtl cmVmLmNvdW50KTsgLyogZGlzYWJsZTsgbm8gaHcgc3VwcG9ydCAqLwo+ICAgCj4gICAJaW5pdF93 YWl0cXVldWVfaGVhZCgmaTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWUpOwo+ICAgCWluaXRfd2Fp dHF1ZXVlX2hlYWQoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9xdWV1ZSk7Cj4gCgpBcyBzYWlkIGJl Zm9yZSBjb25jZXB0IGlzIHZlcnkgZWxlZ2FudCBhbmQgSSBsaWtlIGl0LgoKQnV0IGl0IGlzIGEg bW9uc3RlciByZWZhY3RvciBhbmQgYXMgbXVjaCBhcyBkaWQgY3Jvc3MtcmVmZXJlbmNlIHRoZSBk aWZmIAp2ZXJzdXMgdGhlIHBhdGNoZWQgdHJlZSB0byBnZXQgYSBmdWxsIHBpY3R1cmUgSSBoYXZl IHRvIHNheSBteSByZXZpZXcgaXMgCm1vcmUgYWJvdXQgaGlnaCBsZXZlbCBhbmQgdHJ1c3Rpbmcg dGhlIENJIHRvIGNhdGNoIGFueSBkZXRhaWxzLiA6SQoKTXkgbWFpbiBjb25jZXJuaWcgaXMgbG9j ayBuZXN0aW5nLCBlc3BlY2lhbGx5IHRoZSBuZXN0ZWQgYW5ub3RhdGlvbiBpbiAKdGhlIHByZWNl ZGluZyBwYXRjaC4gRG9lcyBsb2NrZGVwIGNhdGNoIGFueXRoaW5nIGlmIHlvdSBkb24ndCBoYXZl IHRoYXQgCmFubm90YXRpb24/CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==