From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 16/21] drm/i915: Markup paired operations on display power domains Date: Thu, 10 Jan 2019 17:51:33 +0200 Message-ID: <875zuw1pfe.fsf@gaia.fi.intel.com> References: <20190110101152.15651-1-chris@chris-wilson.co.uk> <20190110101152.15651-17-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 365006F399 for ; Thu, 10 Jan 2019 15:53:16 +0000 (UTC) In-Reply-To: <20190110101152.15651-17-chris@chris-wilson.co.uk> 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 Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVGhlIG1h am9yaXR5IG9mIHJ1bnRpbWUtcG0gb3BlcmF0aW9ucyBhcmUgYm91bmRlZCBhbmQgc2NvcGVkIHdp dGhpbiBhCj4gZnVuY3Rpb247IHRoZXNlIGFyZSBlYXN5IHRvIHZlcmlmeSB0aGF0IHRoZSB3YWtl cmVmIGFyZSBoYW5kbGVkCj4gY29ycmVjdGx5LiBXZSBjYW4gZW1wbG95IHRoZSBjb21waWxlciB0 byBoZWxwIHVzLCBhbmQgcmVkdWNlIHRoZSBudW1iZXIKPiBvZiB3YWtlcmVmcyB0cmFja2VkIHdo ZW4gZGVidWdnaW5nLCBieSBwYXNzaW5nIGFyb3VuZCBjb29raWVzIHByb3ZpZGVkCj4gYnkgdGhl IHZhcmlvdXMgcnBtX2dldCBmdW5jdGlvbnMgdG8gdGhlaXIgcnBtX3B1dCBjb3VudGVycGFydC4g VGhpcwo+IG1ha2VzIHRoZSBwYWlyaW5nIGV4cGxpY2l0LCBhbmQgZ2l2ZW4gdGhlIHJlcXVpcmVk IHdha2VyZWYgY29va2llIHRoZQo+IGNvbXBpbGVyIGNhbiB2ZXJpZnkgdGhhdCB3ZSBwYXNzIGFu IGluaXRpYWxpc2VkIHZhbHVlIHRvIHRoZSBycG1fcHV0Cj4gKHF1aXRlIGhhbmR5IGZvciBkb3Vi bGUgY2hlY2tpbmcgZXJyb3IgcGF0aHMpLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j ICAgICB8IDM1ICsrKysrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgfCAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ljbF9kc2kuYyAgICAgICAgICB8IDM2 ICsrKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAg IHwgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgICAgIHwgMTAg KystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgICAgfCAyNSArKysr Ky0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgICAgICAgIHwgMjUgKysr KysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICB8IDM2ICsr KysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwg NjggKysrKysrKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyAgICAgICAgIHwgMzggKysrKysrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGxsX21nci5jICAgfCA2NiArKysrKysrKysrKysrKystLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgfCAxNyArKysrLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpLmggICAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZG1pLmMgICAgICAgfCAxOCArKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2kyYy5jICAgICAgICB8IDIwICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHZkcy5jICAgICAgIHwgIDggKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BpcGVfY3JjLmMgICB8ICA2ICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jICAgICAgICAgfCAgNiArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jIHwgNzEgKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgfCAyNCArKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdmRzYy5jICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv dmx2X2RzaS5jICAgICAgICAgIHwgMTQgKysrLS0KPiAgMjMgZmlsZXMgY2hhbmdlZCwgMzQ3IGlu c2VydGlvbnMoKyksIDE5MCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggMzRjYmQ5YTIwNTgzLi5iN2RjYWNmMmE1ZDMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC02MjYsMTAgKzYyNiwxMiBAQCBzdGF0aWMgdm9p ZCBnZW44X2Rpc3BsYXlfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptKQo+ICAKPiAg CWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiAgCQllbnVtIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiArCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK PiAgCj4gIAkJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGlwZSk7Cj4gLQkJaWYg KCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+IC0JCQkJCQkJ cG93ZXJfZG9tYWluKSkgewo+ICsJCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9p Zl9lbmFibGVkKGRldl9wcml2LAo+ICsJCQkJCQkJICAgICBwb3dlcl9kb21haW4pOwo+ICsJCWlm ICghd2FrZXJlZikgewo+ICAJCQlzZXFfcHJpbnRmKG0sICJQaXBlICVjIHBvd2VyIGRpc2FibGVk XG4iLAo+ICAJCQkJICAgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCQkJY29udGludWU7Cj4gQEAgLTY0 NCw3ICs2NDYsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2Rpc3BsYXlfaW50ZXJydXB0X2luZm8oc3Ry dWN0IHNlcV9maWxlICptKQo+ICAJCQkgICBwaXBlX25hbWUocGlwZSksCj4gIAkJCSAgIEk5MTVf UkVBRChHRU44X0RFX1BJUEVfSUVSKHBpcGUpKSk7Cj4gIAo+IC0JCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4sIHdha2VyZWYpOwo+ICAJfQo+ICAKPiAgCXNlcV9w cmludGYobSwgIkRpc3BsYXkgRW5naW5lIHBvcnQgaW50ZXJydXB0IG1hc2s6XHQlMDh4XG4iLAo+ IEBAIC02ODAsNiArNjgyLDggQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4g KwkJaW50ZWxfd2FrZXJlZl90IHByZWY7Cj4gKwoKSW4gaGVyZSB5b3UgYXJlIGludHJvZHVjaW5n IGEgbmV3LCBkZXNjcmlwdGl2ZSwgcG93ZXIgcmVmZXJlbmNlIGZvciBkaXNwbGF5LgpCdXQgdGhl biB5b3UgZHJvcCBpdCBhZnRlciB1c2luZyBpdCB0d2ljZS4gQW5kIGNhbid0IHNlZW0gdG8gZmlu ZApyZWFzb24gZm9yIGluY29uc2lzdGVuY3kuCgo+ICAJCXNlcV9wcmludGYobSwgIk1hc3RlciBJ bnRlcnJ1cHQgQ29udHJvbDpcdCUwOHhcbiIsCj4gIAkJCSAgIEk5MTVfUkVBRChHRU44X01BU1RF Ul9JUlEpKTsKPiAgCj4gQEAgLTY5NSw4ICs2OTksOSBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJy dXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQllbnVtIGludGVs X2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiAgCj4gIAkJCXBvd2VyX2RvbWFp biA9IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpOwo+IC0JCQlpZiAoIWludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCQkJcG93ZXJfZG9tYWluKSkgewo+ ICsJCQlwcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwK PiArCQkJCQkJCQkgIHBvd2VyX2RvbWFpbik7Cj4gKwkJCWlmICghcHJlZikgewo+ICAJCQkJc2Vx X3ByaW50ZihtLCAiUGlwZSAlYyBwb3dlciBkaXNhYmxlZFxuIiwKPiAgCQkJCQkgICBwaXBlX25h bWUocGlwZSkpOwo+ICAJCQkJY29udGludWU7Cj4gQEAgLTcwNiwxNyArNzExLDE3IEBAIHN0YXRp YyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gIAkJCQkgICBwaXBlX25hbWUocGlwZSksCj4gIAkJCQkgICBJOTE1X1JFQUQoUElQRVNUQVQo cGlwZSkpKTsKPiAgCj4gLQkJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dl cl9kb21haW4pOwo+ICsJCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJf ZG9tYWluLCBwcmVmKTsKPiAgCQl9Cj4gIAo+IC0JCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRl dl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gKwkJcHJlZiA9IGludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gIAkJc2VxX3ByaW50ZihtLCAi UG9ydCBob3RwbHVnOlx0JTA4eFxuIiwKPiAgCQkJICAgSTkxNV9SRUFEKFBPUlRfSE9UUExVR19F TikpOwo+ICAJCXNlcV9wcmludGYobSwgIkRQRkxJUFNUQVQ6XHQlMDh4XG4iLAo+ICAJCQkgICBJ OTE1X1JFQUQoVkxWX0RQRkxJUFNUQVQpKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJEUElOVkdUVDpc dCUwOHhcbiIsCj4gIAkJCSAgIEk5MTVfUkVBRChEUElOVkdUVCkpOwo+IC0JCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gKwkJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklULCBwcmVmKTsKPiAgCj4g IAkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICAJCQlzZXFfcHJpbnRmKG0sICJHVCBJbnRl cnJ1cHQgSU1SICVkOlx0JTA4eFxuIiwKPiBAQCAtNzc5LDEwICs3ODQsMTIgQEAgc3RhdGljIGlu dCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAg CQkJICAgSTkxNV9SRUFEKFZMVl9JTVIpKTsKPiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBw aXBlKSB7Cj4gIAkJCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWlu Owo+ICsJCQlpbnRlbF93YWtlcmVmX3QgcHJlZjsKPiAgCj4gIAkJCXBvd2VyX2RvbWFpbiA9IFBP V0VSX0RPTUFJTl9QSVBFKHBpcGUpOwo+IC0JCQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCQkJcG93ZXJfZG9tYWluKSkgewo+ICsJCQlw cmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJ CQkJCQkgIHBvd2VyX2RvbWFpbik7Cj4gKwkJCWlmICghcHJlZikgewo+ICAJCQkJc2VxX3ByaW50 ZihtLCAiUGlwZSAlYyBwb3dlciBkaXNhYmxlZFxuIiwKPiAgCQkJCQkgICBwaXBlX25hbWUocGlw ZSkpOwo+ICAJCQkJY29udGludWU7Cj4gQEAgLTc5MSw3ICs3OTgsNyBAQCBzdGF0aWMgaW50IGk5 MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQlz ZXFfcHJpbnRmKG0sICJQaXBlICVjIHN0YXQ6XHQlMDh4XG4iLAo+ICAJCQkJICAgcGlwZV9uYW1l KHBpcGUpLAo+ICAJCQkJICAgSTkxNV9SRUFEKFBJUEVTVEFUKHBpcGUpKSk7Cj4gLQkJCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJCQlpbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluLCBwcmVmKTsKPiAgCQl9Cj4g IAo+ICAJCXNlcV9wcmludGYobSwgIk1hc3RlciBJRVI6XHQlMDh4XG4iLAo+IEBAIC0xNzA5LDgg KzE3MTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIHNyX2Vu YWJsZWQgPSBmYWxzZTsKPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJ Tl9JTklUKTsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwg UE9XRVJfRE9NQUlOX0lOSVQpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp Cj4gIAkJLyogbm8gZ2xvYmFsIFNSIHN0YXR1czsgaW5zcGVjdCBwZXItcGxhbmUgV00gKi87Cj4g QEAgLTE3MjYsOCArMTczMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlzcl9lbmFibGVkID0gSTkxNV9S RUFEKEZXX0JMQ19TRUxGX1ZMVikgJiBGV19DU1BXUkRXTkVOOwo+ICAKPiAtCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQsIHdha2VyZWYpOwo+ICAKPiAgCXNlcV9wcmlu dGYobSwgInNlbGYtcmVmcmVzaDogJXNcbiIsIGVuYWJsZWRkaXNhYmxlZChzcl9lbmFibGVkKSk7 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGYwYTQwNTYwNGI3NS4uNDRjMWIy MWZlYmJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTM0NCw2ICszNDQsNyBA QCBzdHJ1Y3QgaW50ZWxfY3NyIHsKPiAgCXVpbnQzMl90IG1taW9kYXRhWzhdOwo+ICAJdWludDMy X3QgZGNfc3RhdGU7Cj4gIAl1aW50MzJfdCBhbGxvd2VkX2RjX21hc2s7Cj4gKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiAgfTsKPiAgCj4gIGVudW0gaTkxNV9jYWNoZV9sZXZlbCB7Cj4gQEAg LTE5ODIsNiArMTk4Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCQkgKiBpcyBh IHNsaWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCj4gIAkJICovCj4gIAkJaW50ZWxfd2FrZXJl Zl90IGF3YWtlOwo+ICsJCWludGVsX3dha2VyZWZfdCBwb3dlcjsKClRoaXMgcHJvbGx5IGV4cGxh aW5zIHRoZSBwcmVmcyBhYm92ZSA6KQoKPiAgCj4gIAkJLyoqCj4gIAkJICogVGhlIG51bWJlciBv ZiB0aW1lcyB3ZSBoYXZlIHdva2VuIHVwLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4 IDY3ZmQxMTliZGFkOC4uNWVkMWM4NTc2NTI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgdTMyIF9faTkxNV9nZW1fcGFyayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPiAg CQlnZW42X3Jwc19pZGxlKGk5MTUpOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5 MTUsIFBPV0VSX0RPTUFJTl9HVF9JUlEpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoaTkx NSwgUE9XRVJfRE9NQUlOX0dUX0lSUSwgaTkxNS0+Z3QucG93ZXIpOwo+ICAKPiAgCWludGVsX3J1 bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAKPiBAQCAtMjIxLDcgKzIyMSw3IEBAIHZv aWQgaTkxNV9nZW1fdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJICog V29yayBhcm91bmQgaXQgYnkgZ3JhYmJpbmcgYSBHVCBJUlEgcG93ZXIgZG9tYWluIHdoaWxzdCB0 aGVyZSBpcyBhbnkKPiAgCSAqIEdUIGFjdGl2aXR5LCBwcmV2ZW50aW5nIGFueSBEQyBzdGF0ZSB0 cmFuc2l0aW9ucy4KPiAgCSAqLwo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoaTkxNSwgUE9X RVJfRE9NQUlOX0dUX0lSUSk7Cj4gKwlpOTE1LT5ndC5wb3dlciA9IGludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0KGk5MTUsIFBPV0VSX0RPTUFJTl9HVF9JUlEpOwo+ICAKPiAgCWlmICh1bmxpa2VseSgr K2k5MTUtPmd0LmVwb2NoID09IDApKSAvKiBrZWVwIDAgYXMgaW52YWxpZCAqLwo+ICAJCWk5MTUt Pmd0LmVwb2NoID0gMTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2Rz aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jCj4gaW5kZXggNGRkNzkzYjc4OTk2 Li5mM2E1ZjAzNjQ2Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2Rz aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jCj4gQEAgLTMzNyw5ICsz MzcsMTEgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2VuYWJsZV9pb19wb3dlcihzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCX0KPiAgCj4gIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0 LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3By aXYsIHBvcnQgPT0gUE9SVF9BID8KPiAtCQkJCQlQT1dFUl9ET01BSU5fUE9SVF9ERElfQV9JTyA6 Cj4gLQkJCQkJUE9XRVJfRE9NQUlOX1BPUlRfRERJX0JfSU8pOwo+ICsJCWludGVsX2RzaS0+aW9f d2FrZXJlZltwb3J0XSA9Cj4gKwkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ ICsJCQkJCQlwb3J0ID09IFBPUlRfQSA/Cj4gKwkJCQkJCVBPV0VSX0RPTUFJTl9QT1JUX0RESV9B X0lPIDoKPiArCQkJCQkJUE9XRVJfRE9NQUlOX1BPUlRfRERJX0JfSU8pOwo+ICAJfQo+ICB9Cj4g IAo+IEBAIC0xMTI1LDEwICsxMTI3LDE4IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9kaXNhYmxl X2lvX3Bvd2VyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJZW51bSBwb3J0IHBv cnQ7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fUE9SVF9ERElfQV9JTyk7Cj4gLQo+IC0JaWYgKGludGVsX2RzaS0+ZHVh bF9saW5rKQo+IC0JCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01B SU5fUE9SVF9ERElfQl9JTyk7Cj4gKwlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2kt PnBvcnRzKSB7Cj4gKwkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJCXdha2VyZWYg PSBmZXRjaF9hbmRfemVybygmaW50ZWxfZHNpLT5pb193YWtlcmVmW3BvcnRdKTsKPiArCQlpZiAo d2FrZXJlZikgewo+ICsJCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwKPiArCQkJ CQkJcG9ydCA9PSBQT1JUX0EgPwo+ICsJCQkJCQlQT1dFUl9ET01BSU5fUE9SVF9ERElfQV9JTyA6 Cj4gKwkJCQkJCVBPV0VSX0RPTUFJTl9QT1JUX0RESV9CX0lPLAo+ICsJCQkJCQl3YWtlcmVmKTsK PiArCQl9Cj4gKwl9CgpPaywgd2VsbC4gSSBoYXZlIGJlZW4gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQg d2hhdCByZWFsbHkgaXMgZ29pbmcgb24gaGVyZS4KCkZpcnN0IGl0IHNlZW1zIHRoYXQgeW91IGZp eCBhIGJ1Zy4gV2UgdGFrZSByZWZzIGZvciBlYWNoIGRzaSBwb3J0IGJ1dApvbmx5IHJlbGVhc2Ug b25jZSBzcGVjaWFsIGNhc2luZyAnZHVhbF9saW5rJyB3aXRob3V0IHRoaXMgcGF0Y2guCgpTZWNv bmQsIGFsbCB0aGUgaHcgYWNjZXNzIGlzIGJlZm9yZSBnZXR0aW5nIHRoZSByZWZzLCBsb29raW5n CnN1c3BpY2lvdXMuCgo+ICAKPiAgCS8qIHNldCBtb2RlIHRvIERESSAqLwo+ICAJZm9yX2VhY2hf ZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IEBAIC0xMjI5LDEzICsxMjM5LDE1 IEBAIHN0YXRpYyBib29sIGdlbjExX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gLQl1MzIgdG1wOwo+IC0J ZW51bSBwb3J0IHBvcnQ7Cj4gIAllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zOwo+ICsJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiAgCWJvb2wgcmV0ID0gZmFs c2U7Cj4gKwl1MzIgdG1wOwo+ICAKPiAtCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZf ZW5hYmxlZChkZXZfcHJpdiwKPiAtCQkJCQkJZW5jb2Rlci0+cG93ZXJfZG9tYWluKSkKPiArCXdh a2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+ICsJ CQkJCQkgICAgIGVuY29kZXItPnBvd2VyX2RvbWFpbik7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJ cmV0dXJuIGZhbHNlOwo+ICAKPiAgCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+ cG9ydHMpIHsKPiBAQCAtMTI2MCw3ICsxMjcyLDcgQEAgc3RhdGljIGJvb2wgZ2VuMTFfZHNpX2dl dF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQlyZXQgPSB0bXAg JiBQSVBFQ09ORl9FTkFCTEU7Cj4gIAl9Cj4gIG91dDoKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9w b3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+IGluZGV4 IDIwMmE1OGNmMmQ5Zi4uZGUyNmNkMGE1NDk3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F1ZGlvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dWRpby5jCj4gQEAgLTc0OCw3ICs3NDgsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2F1ZGlvX2NvbXBv bmVudF9nZXRfcG93ZXIoc3RydWN0IGRldmljZSAqa2RldikKPiAgCj4gIHN0YXRpYyB2b2lkIGk5 MTVfYXVkaW9fY29tcG9uZW50X3B1dF9wb3dlcihzdHJ1Y3QgZGV2aWNlICprZGV2KQo+ICB7Cj4g LQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChrZGV2X3RvX2k5MTUoa2RldiksIFBPV0VSX0RPTUFJ Tl9BVURJTyk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoa2Rldl90b19p OTE1KGtkZXYpLAo+ICsJCQkJCSAgUE9XRVJfRE9NQUlOX0FVRElPKTsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfY29kZWNfd2FrZV9vdmVycmlkZShzdHJ1Y3Qg ZGV2aWNlICprZGV2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j ZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+IGluZGV4IDIwMjFl NDg0YTI4Ny4uNzNjYjcyNTAxMThlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5j Cj4gQEAgLTUyMCw2ICs1MjAsNyBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgewo+ICAJaW50IGNkY2xrID0gY2RjbGtfc3Rh dGUtPmNkY2xrOwo+ICAJdTMyIHZhbCwgY21kID0gY2RjbGtfc3RhdGUtPnZvbHRhZ2VfbGV2ZWw7 Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gIAlzd2l0Y2ggKGNkY2xrKSB7Cj4g IAljYXNlIDQwMDAwMDoKPiBAQCAtNTM5LDcgKzU0MCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICogYSBzeXN0ZW0g c3VzcGVuZC4gIFNvIGdyYWIgdGhlIFBJUEUtQSBkb21haW4sIHdoaWNoIGNvdmVycwo+ICAJICog dGhlIEhXIGJsb2NrcyBuZWVkZWQgZm9yIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbW1pbmcuCj4gIAkg Ki8KPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQ RV9BKTsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX1BJUEVfQSk7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKPiAgCXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQRlJFUSk7 Cj4gQEAgLTU5Myw3ICs1OTQsNyBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAl2bHZfcHJvZ3JhbV9wZmlfY3JlZGl0 cyhkZXZfcHJpdik7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBP V0VSX0RPTUFJTl9QSVBFX0EpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9QSVBFX0EsIHdha2VyZWYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBj aHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtNjAx LDYgKzYwMiw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICB7Cj4gIAlpbnQgY2RjbGsgPSBjZGNsa19zdGF0ZS0+Y2RjbGs7 Cj4gIAl1MzIgdmFsLCBjbWQgPSBjZGNsa19zdGF0ZS0+dm9sdGFnZV9sZXZlbDsKPiArCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAgCXN3aXRjaCAoY2RjbGspIHsKPiAgCWNhc2UgMzMz MzMzOgo+IEBAIC02MTksNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkgKiBhIHN5c3RlbSBzdXNwZW5kLiAg U28gZ3JhYiB0aGUgUElQRS1BIGRvbWFpbiwgd2hpY2ggY292ZXJzCj4gIAkgKiB0aGUgSFcgYmxv Y2tzIG5lZWRlZCBmb3IgdGhlIGZvbGxvd2luZyBwcm9ncmFtbWluZy4KPiAgCSAqLwo+IC0JaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QSVBFX0EpOwo+ICsJ d2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5f UElQRV9BKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAJdmFs ID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKTsKPiBAQCAtNjM3 LDcgKzYzOSw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCXZsdl9wcm9ncmFtX3BmaV9jcmVkaXRzKGRldl9wcml2 KTsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlO X1BJUEVfQSk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9N QUlOX1BJUEVfQSwgd2FrZXJlZik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgYmR3X2NhbGNfY2Rj bGsoaW50IG1pbl9jZGNsaykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IDk1MWU5 YmFlNjkyMS4uMzNiZDJhZGRjYmRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBA QCAtODMsMTUgKzgzLDE3IEBAIHN0YXRpYyBib29sIGludGVsX2NydF9nZXRfaHdfc3RhdGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGlu dGVsX2NydCAqY3J0ID0gaW50ZWxfZW5jb2Rlcl90b19jcnQoZW5jb2Rlcik7Cj4gKwlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJvb2wgcmV0Owo+ICAKPiAtCWlmICghaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiAtCQkJCQkJZW5jb2Rlci0+cG93ZXJf ZG9tYWluKSkKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVk KGRldl9wcml2LAo+ICsJCQkJCQkgICAgIGVuY29kZXItPnBvd2VyX2RvbWFpbik7Cj4gKwlpZiAo IXdha2VyZWYpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCXJldCA9IGludGVsX2NydF9wb3J0 X2VuYWJsZWQoZGV2X3ByaXYsIGNydC0+YWRwYV9yZWcsIHBpcGUpOwo+ICAKPiAtCWludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbiwgd2Fr ZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC03NzYsNiArNzc4LDcgQEAgaW50 ZWxfY3J0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmRldik7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRlbF9hdHRhY2hlZF9jcnQoY29ubmVjdG9yKTsK PiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmNydC0+YmFzZTsKPiAr CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IHN0YXR1cywgcmV0Owo+ICAJc3RydWN0 IGludGVsX2xvYWRfZGV0ZWN0X3BpcGUgdG1wOwo+ICAKPiBAQCAtNzg0LDcgKzc4Nyw4IEBAIGlu dGVsX2NydF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkgICAg ICBmb3JjZSk7Cj4gIAo+ICAJaWYgKGk5MTVfbW9kcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpIHsK PiAtCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgaW50ZWxfZW5jb2Rlci0+cG93 ZXJfZG9tYWluKTsKPiArCQl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3By aXYsCj4gKwkJCQkJCSAgaW50ZWxfZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiAgCQlnb3RvIGxv YWRfZGV0ZWN0Owo+ICAJfQo+ICAKPiBAQCAtNzkyLDcgKzc5Niw4IEBAIGludGVsX2NydF9kZXRl Y3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCWlmIChkbWlfY2hlY2tfc3lz dGVtKGludGVsX3NwdXJpb3VzX2NydF9kZXRlY3QpKQo+ICAJCXJldHVybiBjb25uZWN0b3Jfc3Rh dHVzX2Rpc2Nvbm5lY3RlZDsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJp diwgaW50ZWxfZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldChkZXZfcHJpdiwKPiArCQkJCQkgIGludGVsX2VuY29kZXItPnBvd2VyX2Rv bWFpbik7Cj4gIAo+ICAJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpKSB7Cj4gIAkJLyog V2UgY2FuIG5vdCByZWx5IG9uIHRoZSBIUEQgcGluIGFsd2F5cyBiZWluZyBjb3JyZWN0bHkgd2ly ZWQKPiBAQCAtODQ3LDcgKzg1Miw3IEBAIGludGVsX2NydF9kZXRlY3Qoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCX0KPiAgCj4gIG91dDoKPiAtCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBpbnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGludGVsX2VuY29kZXItPnBvd2VyX2RvbWFpbiwg d2FrZXJlZik7Cj4gIAlyZXR1cm4gc3RhdHVzOwo+ICB9Cj4gIAo+IEBAIC04NTcsMTAgKzg2Miwx MiBAQCBzdGF0aWMgaW50IGludGVsX2NydF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2F0dGFjaGVkX2NydChj b25uZWN0b3IpOwo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmY3J0 LT5iYXNlOwo+IC0JaW50IHJldDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3Ry dWN0IGkyY19hZGFwdGVyICppMmM7Cj4gKwlpbnQgcmV0Owo+ICAKPiAtCWludGVsX2Rpc3BsYXlf cG93ZXJfZ2V0KGRldl9wcml2LCBpbnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJd2Fr ZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ICsJCQkJCSAgaW50ZWxf ZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiAgCj4gIAlpMmMgPSBpbnRlbF9nbWJ1c19nZXRfYWRh cHRlcihkZXZfcHJpdiwgZGV2X3ByaXYtPnZidC5jcnRfZGRjX3Bpbik7Cj4gIAlyZXQgPSBpbnRl bF9jcnRfZGRjX2dldF9tb2Rlcyhjb25uZWN0b3IsIGkyYyk7Cj4gQEAgLTg3Miw3ICs4NzksNyBA QCBzdGF0aWMgaW50IGludGVsX2NydF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAgCXJldCA9IGludGVsX2NydF9kZGNfZ2V0X21vZGVzKGNvbm5lY3RvciwgaTJj KTsKPiAgCj4gIG91dDoKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBpbnRl bF9lbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2 X3ByaXYsIGludGVsX2VuY29kZXItPnBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAo+ICAJcmV0 dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j c3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gaW5kZXggYTUxNjY5N2Jm NTdkLi5lYTVmYjY0ZDMzZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3NyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+IEBAIC00 MDksNiArNDA5LDIxIEBAIHN0YXRpYyB1aW50MzJfdCAqcGFyc2VfY3NyX2Z3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldHVybiBtZW1jcHkoZG1jX3BheWxvYWQsICZm dy0+ZGF0YVtyZWFkY291bnRdLCBuYnl0ZXMpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpbnRl bF9jc3JfcnVudGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICt7Cj4gKwlXQVJOX09OKGRldl9wcml2LT5jc3Iud2FrZXJlZik7Cj4gKwlkZXZfcHJpdi0+Y3Ny Lndha2VyZWYgPQo+ICsJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9E T01BSU5fSU5JVCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsX2Nzcl9ydW50aW1lX3Bt X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmIF9fbWF5YmVfdW51c2VkID0KPiArCQlmZXRjaF9hbmRfemVybygmZGV2 X3ByaXYtPmNzci53YWtlcmVmKTsKPiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQsIHdha2VyZWYpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9p ZCBjc3JfbG9hZF93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+IEBAIC00MjQsOCArNDM5LDcgQEAgc3Rh dGljIHZvaWQgY3NyX2xvYWRfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAo+ ICAJaWYgKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpIHsKPiAgCQlpbnRlbF9jc3JfbG9hZF9w cm9ncmFtKGRldl9wcml2KTsKPiAtCj4gLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3By aXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiArCQlpbnRlbF9jc3JfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwo+ICAKPiAgCQlEUk1fSU5GTygiRmluaXNoZWQgbG9hZGluZyBETUMgZmlybXdhcmUg JXMgKHYldS4ldSlcbiIsCj4gIAkJCSBkZXZfcHJpdi0+Y3NyLmZ3X3BhdGgsCj4gQEAgLTQ2Nyw3 ICs0ODEsNyBAQCB2b2lkIGludGVsX2Nzcl91Y29kZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCSAqIHN1c3BlbmQgYXMgcnVudGltZSBzdXNwZW5kICpyZXF1aXJl cyogYSB3b3JraW5nIENTUiBmb3Igd2hhdGV2ZXIKPiAgCSAqIHJlYXNvbi4KPiAgCSAqLwo+IC0J aW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiAr CWludGVsX2Nzcl9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpIHsKPiAgCQkvKiBBbGxvdyB0byBsb2FkIGZ3IHZpYSBwYXJhbWV0 ZXIgdXNpbmcgdGhlIGxhc3Qga25vd24gc2l6ZSAqLwo+IEBAIC01MzgsNyArNTUyLDcgQEAgdm9p ZCBpbnRlbF9jc3JfdWNvZGVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAo+ICAJLyogRHJvcCB0aGUgcmVmZXJlbmNlIGhlbGQgaW4gY2FzZSBETUMgaXNuJ3Qg bG9hZGVkLiAqLwo+ICAJaWYgKCFkZXZfcHJpdi0+Y3NyLmRtY19wYXlsb2FkKQo+IC0JCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gKwkJaW50 ZWxfY3NyX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTU1 OCw3ICs1NzIsNyBAQCB2b2lkIGludGVsX2Nzcl91Y29kZV9yZXN1bWUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogbG9hZGVkLgo+ICAJICovCj4gIAlpZiAoIWRldl9w cml2LT5jc3IuZG1jX3BheWxvYWQpCj4gLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3By aXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiArCQlpbnRlbF9jc3JfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtNTc0LDYgKzU4OCw3IEBAIHZvaWQgaW50ZWxf Y3NyX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCXJl dHVybjsKPiAgCj4gIAlpbnRlbF9jc3JfdWNvZGVfc3VzcGVuZChkZXZfcHJpdik7Cj4gKwlXQVJO X09OKGRldl9wcml2LT5jc3Iud2FrZXJlZik7Cj4gIAo+ICAJa2ZyZWUoZGV2X3ByaXYtPmNzci5k bWNfcGF5bG9hZCk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDJkNmVk OTkwYTIzMi4uN2YzY2QwNTVkZTUwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBA QCAtMTg2MCwxMiArMTg2MCwxNCBAQCBpbnQgaW50ZWxfZGRpX3RvZ2dsZV9oZGNwX3NpZ25hbGxp bmcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwo+ICAJZW51bSBwaXBlIHBpcGUgPSAwOwo+ICAJaW50IHJldCA9IDA7Cj4gIAl1 aW50MzJfdCB0bXA7Cj4gIAo+IC0JaWYgKFdBUk5fT04oIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCWludGVsX2VuY29kZXItPnBvd2VyX2RvbWFp bikpKQo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsCj4gKwkJCQkJCSAgICAgaW50ZWxfZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiArCWlm IChXQVJOX09OKCF3YWtlcmVmKSkKPiAgCQlyZXR1cm4gLUVOWElPOwo+ICAKPiAgCWlmIChXQVJO X09OKCFpbnRlbF9lbmNvZGVyLT5nZXRfaHdfc3RhdGUoaW50ZWxfZW5jb2RlciwgJnBpcGUpKSkg ewo+IEBAIC0xODgwLDcgKzE4ODIsNyBAQCBpbnQgaW50ZWxfZGRpX3RvZ2dsZV9oZGNwX3NpZ25h bGxpbmcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIAkJdG1wICY9IH5U UkFOU19ERElfSERDUF9TSUdOQUxMSU5HOwo+ICAJSTkxNV9XUklURShUUkFOU19ERElfRlVOQ19D VEwocGlwZSksIHRtcCk7Cj4gIG91dDoKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9w cml2LCBpbnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQoZGV2X3ByaXYsIGludGVsX2VuY29kZXItPnBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0xODkxLDEzICsxODkzLDE1IEBAIGJvb2wgaW50 ZWxfZGRpX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfY29ubmVjdG9yKQo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBpbnRlbF9j b25uZWN0b3ItPmVuY29kZXI7Cj4gIAlpbnQgdHlwZSA9IGludGVsX2Nvbm5lY3Rvci0+YmFzZS5j b25uZWN0b3JfdHlwZTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKPiAtCWVu dW0gcGlwZSBwaXBlID0gMDsKPiAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlcjsKPiAr CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJZW51bSBwaXBlIHBpcGUgPSAwOwo+ICAJdWlu dDMyX3QgdG1wOwo+ICAJYm9vbCByZXQ7Cj4gIAo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+IC0JCQkJCQllbmNvZGVyLT5wb3dlcl9kb21haW4p KQo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3By aXYsCj4gKwkJCQkJCSAgICAgZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiArCWlmICghd2FrZXJl ZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKCFlbmNvZGVyLT5nZXRfaHdfc3RhdGUo ZW5jb2RlciwgJnBpcGUpKSB7Cj4gQEAgLTE5MzksNyArMTk0Myw3IEBAIGJvb2wgaW50ZWxfZGRp X2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+ICAJfQo+ICAKPiAgb3V0Ogo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2 X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwgZW5jb2Rlci0+cG93ZXJfZG9tYWluLCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1 cm4gcmV0Owo+ICB9Cj4gQEAgLTE5NTAsNiArMTk1NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rk aV9nZXRfZW5jb2Rlcl9waXBlcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCWVudW0gcG9ydCBwb3J0 ID0gZW5jb2Rlci0+cG9ydDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJZW51bSBw aXBlIHA7Cj4gIAl1MzIgdG1wOwo+ICAJdTggbXN0X3BpcGVfbWFzazsKPiBAQCAtMTk1Nyw4ICsx OTYyLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BpcGVzKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJKnBpcGVfbWFzayA9IDA7Cj4gIAkqaXNfZHBfbXN0 ID0gZmFsc2U7Cj4gIAo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVk KGRldl9wcml2LAo+IC0JCQkJCQllbmNvZGVyLT5wb3dlcl9kb21haW4pKQo+ICsJd2FrZXJlZiA9 IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gKwkJCQkJCSAg ICAgZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiArCWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm47 Cj4gIAo+ICAJdG1wID0gSTkxNV9SRUFEKERESV9CVUZfQ1RMKHBvcnQpKTsKPiBAQCAtMjAyOSw3 ICsyMDM1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BpcGVzKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAiKFBIWV9DVEwgJTA4eClcbiIsIHBv cnRfbmFtZShwb3J0KSwgdG1wKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwgZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKPiArCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4sIHdha2VyZWYpOwo+ICB9Cj4g IAo+ICBib29sIGludGVsX2RkaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gQEAgLTMyODYsNyArMzI5Miw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0 X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpbnRlbF9lZHBf cGFuZWxfdmRkX29uKGludGVsX2RwKTsKPiAgCWludGVsX2VkcF9wYW5lbF9vZmYoaW50ZWxfZHAp Owo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBkaWdfcG9ydC0+ZGRp X2lvX3Bvd2VyX2RvbWFpbik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQo ZGV2X3ByaXYsCj4gKwkJCQkJICBkaWdfcG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7Cj4gIAo+ ICAJaW50ZWxfZGRpX2Nsa19kaXNhYmxlKGVuY29kZXIpOwo+ICB9Cj4gQEAgLTMzMDYsNyArMzMx Myw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2FibGVfaGRtaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAlpbnRlbF9kaXNhYmxlX2RkaV9idWYoZW5jb2Rl ciwgb2xkX2NydGNfc3RhdGUpOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9w cml2LCBkaWdfcG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsCj4gKwkJCQkJICBkaWdfcG9ydC0+ZGRpX2lvX3Bv d2VyX2RvbWFpbik7Cj4gIAo+ICAJaW50ZWxfZGRpX2Nsa19kaXNhYmxlKGVuY29kZXIpOwo+ICAK PiBAQCAtMzYyNiw4ICszNjM0LDggQEAgaW50ZWxfZGRpX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJaWYgKGludGVsX2NydGNfaGFzX2RwX2Vu Y29kZXIoY3J0Y19zdGF0ZSkgfHwKPiAgCSAgICBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBl bmNvZGVyLT5wb3J0KSkKPiAtCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwKPiAt CQkJCQlpbnRlbF9kZGlfbWFpbl9saW5rX2F1eF9kb21haW4oZGlnX3BvcnQpKTsKPiArCQlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsCj4gKwkJCQkJCSAgaW50ZWxf ZGRpX21haW5fbGlua19hdXhfZG9tYWluKGRpZ19wb3J0KSk7Cj4gIH0KPiAgCj4gIHZvaWQgaW50 ZWxfZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGIwYjhmOWZmZDg3My4uMzZj NTZkMTYzN2I4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0x MTk3LDE3ICsxMTk3LDE5IEBAIHZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxf cGlwZV90b19jcHVfdHJhbnNjb2RlcihkZXZfcHJpdiwKPiAgCQkJCQkJCQkgICAgICBwaXBlKTsK PiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ICsJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAo+ICAJLyogd2Uga2VlcCBib3RoIHBpcGVzIGVuYWJs ZWQgb24gODMwICovCj4gIAlpZiAoSVNfSTgzMChkZXZfcHJpdikpCj4gIAkJc3RhdGUgPSB0cnVl Owo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9UUkFOU0NPREVSKGNwdV90cmFu c2NvZGVyKTsKPiAtCWlmIChpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9w cml2LCBwb3dlcl9kb21haW4pKSB7Cj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiArCWlmICh3YWtlcmVmKSB7 Cj4gIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChQSVBFQ09ORihjcHVfdHJhbnNjb2RlcikpOwo+ICAJ CWN1cl9zdGF0ZSA9ICEhKHZhbCAmIFBJUEVDT05GX0VOQUJMRSk7Cj4gIAo+IC0JCWludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4sIHdha2VyZWYpOwo+ICAJfSBlbHNl IHsKPiAgCQljdXJfc3RhdGUgPSBmYWxzZTsKPiAgCX0KPiBAQCAtMzQxMiw2ICszNDE0LDcgQEAg c3RhdGljIGJvb2wgaTl4eF9wbGFuZV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmUtPmJhc2UuZGV2KTsKPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJf ZG9tYWluOwo+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9w bGFuZTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJYm9vbCByZXQ7Cj4gIAl1MzIg dmFsOwo+ICAKPiBAQCAtMzQyMSw3ICszNDI0LDggQEAgc3RhdGljIGJvb2wgaTl4eF9wbGFuZV9n ZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCSAqIGRpc3BsYXkgcG93 ZXIgd2VsbHMuCj4gIAkgKi8KPiAgCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBs YW5lLT5waXBlKTsKPiAtCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChk ZXZfcHJpdiwgcG93ZXJfZG9tYWluKSkKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVm KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihpOXh4 X3BsYW5lKSk7Cj4gQEAgLTM0MzQsNyArMzQzOCw3IEBAIHN0YXRpYyBib29sIGk5eHhfcGxhbmVf Z2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJKnBpcGUgPSAodmFs ICYgRElTUFBMQU5FX1NFTF9QSVBFX01BU0spID4+Cj4gIAkJCURJU1BQTEFORV9TRUxfUElQRV9T SElGVDsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9t YWluKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4s IHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtNjEwNyw3ICs2MTExLDcg QEAgc3RhdGljIHZvaWQgbW9kZXNldF9wdXRfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbjsKPiAgCj4gIAlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBkb21haW5zKQo+IC0J CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBkb21haW4pOwo+ICsJCWludGVsX2Rp c3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChkZXZfcHJpdiwgZG9tYWluKTsKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcsCj4gQEAgLTYzNTQsNyArNjM1OCw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJZG9t YWlucyA9IGludGVsX2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWluczsKPiAgCWZvcl9lYWNoX3Bv d2VyX2RvbWFpbihkb21haW4sIGRvbWFpbnMpCj4gLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIGRvbWFpbik7Cj4gKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2Vk KGRldl9wcml2LCBkb21haW4pOwo+ICAJaW50ZWxfY3J0Yy0+ZW5hYmxlZF9wb3dlcl9kb21haW5z ID0gMDsKPiAgCj4gIAlkZXZfcHJpdi0+YWN0aXZlX2NydGNzICY9IH4oMSA8PCBpbnRlbF9jcnRj LT5waXBlKTsKPiBAQCAtNzk2NiwxMSArNzk3MCwxMyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9w aXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVt IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiArCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+ICAJdWludDMyX3QgdG1wOwo+ICAJYm9vbCByZXQ7Cj4gIAo+ICAJcG93 ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUoY3J0Yy0+cGlwZSk7Cj4gLQlpZiAoIWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpCj4g Kwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwg cG93ZXJfZG9tYWluKTsKPiArCWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ ICAJcGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsK PiBAQCAtODA3MSw3ICs4MDc3LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlyZXQgPSB0cnVlOwo+ICAKPiAgb3V0Ogo+IC0J aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gKwlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluLCB3YWtlcmVmKTsKPiAg Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTkwMzgsMTEgKzkwNDQsMTMgQEAgc3RhdGljIGJv b2wgaXJvbmxha2VfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAgCXVpbnQzMl90IHRtcDsKPiAgCWJvb2wgcmV0Owo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9 IFBPV0VSX0RPTUFJTl9QSVBFKGNydGMtPnBpcGUpOwo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bv d2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKQo+ICsJd2FrZXJlZiA9 IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFp bik7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCXBpcGVfY29u ZmlnLT5vdXRwdXRfZm9ybWF0ID0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0I7Cj4gQEAgLTkxMjUs NyArOTEzMyw3IEBAIHN0YXRpYyBib29sIGlyb25sYWtlX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCXJldCA9IHRydWU7Cj4gIAo+ICBvdXQ6Cj4gLQlpbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiArCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4sIHdha2VyZWYpOwo+ICAKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiBAQCAtOTczNCw3ICs5NzQyLDcgQEAgc3RhdGljIGJvb2wgaGFzd2Vs bF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICBvdXQ6Cj4g IAlmb3JfZWFjaF9wb3dlcl9kb21haW4ocG93ZXJfZG9tYWluLCBwb3dlcl9kb21haW5fbWFzaykK PiAtCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiAr CQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFp bik7Cj4gIAo+ICAJcmV0dXJuIGFjdGl2ZTsKPiAgfQo+IEBAIC05OTg0LDE3ICs5OTkyLDE5IEBA IHN0YXRpYyBib29sIGk4NDVfY3Vyc29yX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IHBvd2VyX2RvbWFpbjsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJYm9vbCByZXQ7 Cj4gIAo+ICAJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUoUElQRV9BKTsKPiAtCWlm ICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9t YWluKSkKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRl dl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gIAlyZXQgPSBJOTE1X1JFQUQoQ1VSQ05UUihQSVBFX0EpKSAmIENVUlNPUl9FTkFC TEU7Cj4gIAo+ICAJKnBpcGUgPSBQSVBFX0E7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9w dXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChk ZXZfcHJpdiwgcG93ZXJfZG9tYWluLCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9 Cj4gQEAgLTEwMjE3LDYgKzEwMjI3LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9jdXJzb3JfZ2V0X2h3 X3N0YXRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWVudW0g aW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ICsJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gIAlib29sIHJldDsKPiAgCXUzMiB2YWw7Cj4gIAo+IEBAIC0xMDIyNiw3 ICsxMDIzNyw4IEBAIHN0YXRpYyBib29sIGk5eHhfY3Vyc29yX2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJICogZGlzcGxheSBwb3dlciB3ZWxscy4KPiAgCSAqLwo+ ICAJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGxhbmUtPnBpcGUpOwo+IC0JaWYg KCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21h aW4pKQo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0dXJuIGZhbHNl Owo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChDVVJDTlRSKHBsYW5lLT5waXBlKSk7Cj4gQEAgLTEw MjM5LDcgKzEwMjUxLDcgQEAgc3RhdGljIGJvb2wgaTl4eF9jdXJzb3JfZ2V0X2h3X3N0YXRlKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJKnBpcGUgPSAodmFsICYgTUNVUlNPUl9QSVBF X1NFTEVDVF9NQVNLKSA+Pgo+ICAJCQlNQ1VSU09SX1BJUEVfU0VMRUNUX1NISUZUOwo+ICAKPiAt CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4g IAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xMjk1MCw2ICsxMjk2Miw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YzsKPiAgCXU2NCBwdXRfZG9tYWluc1tJOTE1X01BWF9QSVBFU10gPSB7fTsKPiArCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmID0gMDsKPiAgCWludCBpOwo+ICAKPiAgCWludGVsX2F0b21p Y19jb21taXRfZmVuY2Vfd2FpdChpbnRlbF9zdGF0ZSk7Cj4gQEAgLTEyOTU3LDcgKzEyOTcwLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiAgCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVuY2ll cyhzdGF0ZSk7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KQo+IC0JCWludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7Cj4gKwkJd2Fr ZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9E RVNFVCk7Cj4gIAo+ICAJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCW9sZF9pbnRlbF9jcnRj X3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gQEAgLTEzMDk0 LDcgKzEzMTA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQkgKiB0aGUgY3VscHJpdC4KPiAgCQkgKi8K PiAgCQlpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihkZXZfcHJpdik7 Cj4gLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9NT0RF U0VUKTsKPiArCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlO X01PREVTRVQsIHdha2VyZWYpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE1NDk2LDE5ICsxNTUw OSwyNSBAQCB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYV9wb3dlcl9vbihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCS8qIFRoaXMgZnVuY3Rpb24gY2Fu IGJlIGNhbGxlZCBib3RoIGZyb20gaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZSBvcgo+ICsJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJLyoKPiArCSAqIFRoaXMgZnVuY3Rpb24g Y2FuIGJlIGNhbGxlZCBib3RoIGZyb20gaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZSBvcgo+ ICAJICogYXQgYSB2ZXJ5IGVhcmx5IHBvaW50IGluIG91ciByZXN1bWUgc2VxdWVuY2UsIHdoZXJl IHRoZSBwb3dlciB3ZWxsCj4gIAkgKiBzdHJ1Y3R1cmVzIGFyZSBub3QgeWV0IHJlc3RvcmVkLiBT aW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGF0IGEgdmVyeQo+ICAJICogcGFyYW5vaWQgInNvbWVvbmUg bWlnaHQgaGF2ZSBlbmFibGVkIFZHQSB3aGlsZSB3ZSB3ZXJlIG5vdCBsb29raW5nIgo+ICAJICog bGV2ZWwsIGp1c3QgY2hlY2sgaWYgdGhlIHBvd2VyIHdlbGwgaXMgZW5hYmxlZCBpbnN0ZWFkIG9m IHRyeWluZyB0bwo+ICAJICogZm9sbG93IHRoZSAiZG9uJ3QgdG91Y2ggdGhlIHBvd2VyIHdlbGwg aWYgd2UgZG9uJ3QgbmVlZCBpdCIgcG9saWN5Cj4gLQkgKiB0aGUgcmVzdCBvZiB0aGUgZHJpdmVy IHVzZXMuICovCj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsIFBPV0VSX0RPTUFJTl9WR0EpKQo+ICsJICogdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciB1 c2VzLgo+ICsJICovCj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5h YmxlZChkZXZfcHJpdiwKPiArCQkJCQkJICAgICBQT1dFUl9ET01BSU5fVkdBKTsKPiArCWlmICgh d2FrZXJlZikKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29u KGRldl9wcml2KTsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX1ZHQSk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX1ZHQSwgd2FrZXJlZik7Cj4gIH0KPiAgCj4gIC8qIEZJWE1FIHJlYWQgb3V0IGZ1 bGwgcGxhbmUgc3RhdGUgZm9yIGFsbCBwbGFuZXMgKi8KPiBAQCAtMTU4MDgsMTIgKzE1ODI3LDEz IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQkJICAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGM7CgpOb3QgdGhhdCBJIG1pbmQgYnV0IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUg cmVhc29uaW5nCmJlaGluZCB0aGUgY2hhbmdlIG9mIG9yZGVyIG9uIHRoaXMgYW5kIG9uIGZldyBv dGhlciBwbGFjZXMgaW4gdGhpcwpwYXRjaC4KCgo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAlpbnQgaTsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX0lOSVQpOwo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRl dl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gIAo+ICAJaW50ZWxfZWFybHlfZGlzcGxheV93 YXMoZGV2X3ByaXYpOwo+ICAJaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKGRldik7Cj4g QEAgLTE1ODgzLDcgKzE1OTAzLDcgQEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQltb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5zKGRldl9w cml2LCBwdXRfZG9tYWlucyk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCwgd2FrZXJlZik7Cj4gIAo+ICAJaW50ZWxfZmJj X2luaXRfcGlwZV9zdGF0ZShkZXZfcHJpdik7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiBpbmRleCBkM2NkNDBlNjU2ZmUuLmZjODVmZDc3YTY2MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC02MjEsOCArNjIxLDggQEAgc3RhdGljIHZvaWQgcHBzX3VubG9jayhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBw c19tdXRleCk7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsCj4gLQkJ CQlpbnRlbF9hdXhfcG93ZXJfZG9tYWluKGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKSkpOwo+ICsJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2VkKGRldl9wcml2LAo+ICsJCQkJCSAgaW50 ZWxfYXV4X3Bvd2VyX2RvbWFpbihkcF90b19kaWdfcG9ydChpbnRlbF9kcCkpKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQKPiBAQCAtMjUxMSw4ICsyNTExLDggQEAgc3RhdGljIHZvaWQgZWRwX3Bh bmVsX3ZkZF9vZmZfc3luYyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKChwcCAm IFBBTkVMX1BPV0VSX09OKSA9PSAwKQo+ICAJCWludGVsX2RwLT5wYW5lbF9wb3dlcl9vZmZfdGlt ZSA9IGt0aW1lX2dldF9ib290dGltZSgpOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KGRldl9wcml2LAo+IC0JCQkJaW50ZWxfYXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9kaWdfcG9ydCkp Owo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2VkKGRldl9wcml2LAo+ICsJCQkJ CSAgaW50ZWxfYXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9kaWdfcG9ydCkpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBlZHBfcGFuZWxfdmRkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmsp Cj4gQEAgLTI2NTcsNyArMjY1Nyw3IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vZmYoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWludGVsX2RwLT5wYW5lbF9wb3dlcl9vZmZfdGltZSA9 IGt0aW1lX2dldF9ib290dGltZSgpOwo+ICAKPiAgCS8qIFdlIGdvdCBhIHJlZmVyZW5jZSB3aGVu IHdlIGVuYWJsZWQgdGhlIFZERC4gKi8KPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9w cml2LCBpbnRlbF9hdXhfcG93ZXJfZG9tYWluKGRpZ19wb3J0KSk7Cj4gKwlpbnRlbF9kaXNwbGF5 X3Bvd2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsIGludGVsX2F1eF9wb3dlcl9kb21haW4oZGln X3BvcnQpKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9lZHBfcGFuZWxfb2ZmKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gQEAgLTI5ODMsMTYgKzI5ODMsMTggQEAgc3RhdGljIGJvb2wgaW50 ZWxfZHBfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAo JmVuY29kZXItPmJhc2UpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIHJl dDsKPiAgCj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3By aXYsCj4gLQkJCQkJCWVuY29kZXItPnBvd2VyX2RvbWFpbikpCj4gKwl3YWtlcmVmID0gaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJICAgICBlbmNv ZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJCXJldHVybiBmYWxzZTsK PiAgCj4gIAlyZXQgPSBpbnRlbF9kcF9wb3J0X2VuYWJsZWQoZGV2X3ByaXYsIGludGVsX2RwLT5v dXRwdXRfcmVnLAo+ICAJCQkJICAgIGVuY29kZXItPnBvcnQsIHBpcGUpOwo+ICAKPiAtCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbiwg d2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC01MzY1LDEyICs1MzY3LDEz IEBAIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJ ZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gIAllbnVtIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluIGF1eF9kb21haW4gPQo+ICAJCWludGVsX2F1eF9wb3dlcl9kb21haW4oZGln X3BvcnQpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAo+ICAJRFJNX0RFQlVHX0tN UygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBj b25uZWN0b3ItPm5hbWUpOwo+ICAJV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZkZXZf cHJpdi0+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpKTsKPiAgCj4gLQlpbnRlbF9k aXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgYXV4X2RvbWFpbik7Cj4gKwl3YWtlcmVmID0gaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGF1eF9kb21haW4pOwo+ICAKPiAgCS8qIENh bid0IGRpc2Nvbm5lY3QgZURQICovCj4gIAlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkK PiBAQCAtNTQzNiw3ICs1NDM5LDcgQEAgaW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gIAo+ICAJCXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNv ZGVyLCBjdHgpOwo+ICAJCWlmIChyZXQpIHsKPiAtCQkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIGF1eF9kb21haW4pOwo+ICsJCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwgYXV4X2RvbWFpbiwgd2FrZXJlZik7Cj4gIAkJCXJldHVybiByZXQ7Cj4gIAkJfQo+ICAJ fQo+IEBAIC01NDYwLDcgKzU0NjMsNyBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCWlmIChzdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25u ZWN0ZWQgJiYgIWludGVsX2RwLT5pc19tc3QpCj4gIAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRl bF9kcCk7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGF1eF9kb21h aW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGF1eF9kb21haW4sIHdh a2VyZWYpOwo+ICAJcmV0dXJuIHN0YXR1czsKPiAgfQo+ICAKPiBAQCAtNTQ3Myw2ICs1NDc2LDcg QEAgaW50ZWxfZHBfZm9yY2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBhdXhfZG9tYWlu ID0KPiAgCQlpbnRlbF9hdXhfcG93ZXJfZG9tYWluKGRpZ19wb3J0KTsKPiArCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4i LAo+ICAJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKPiBAQCAt NTQ4MSwxMSArNTQ4NSwxMSBAQCBpbnRlbF9kcF9mb3JjZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICAJaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNf Y29ubmVjdGVkKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChk ZXZfcHJpdiwgYXV4X2RvbWFpbik7Cj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXQoZGV2X3ByaXYsIGF1eF9kb21haW4pOwo+ICAKPiAgCWludGVsX2RwX3NldF9lZGlkKGludGVs X2RwKTsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgYXV4X2RvbWFp bik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgYXV4X2RvbWFpbiwgd2Fr ZXJlZik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfZHBfZ2V0X21vZGVzKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gQEAgLTU5MzEsNiArNTkzNSw3IEBAIGludGVsX2Rw X2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgYm9v bCBsb25nX2hwZCkKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3Bv cnQtPmRwOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkx NShpbnRlbF9kcCk7Cj4gIAllbnVtIGlycXJldHVybiByZXQgPSBJUlFfTk9ORTsKPiArCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAgCWlmIChsb25nX2hwZCAmJiBpbnRlbF9kaWdfcG9y dC0+YmFzZS50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiAgCQkvKgo+IEBAIC01OTUzLDgg KzU5NTgsOCBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19ocGQpCj4gIAkJcmV0dXJuIElSUV9OT05FOwo+ICAJ fQo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+IC0JCQkJaW50ZWxf YXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9kaWdfcG9ydCkpOwo+ICsJd2FrZXJlZiA9IGludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ICsJCQkJCSAgaW50ZWxfYXV4X3Bvd2VyX2RvbWFp bihpbnRlbF9kaWdfcG9ydCkpOwo+ICAKPiAgCWlmIChpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gIAkJ aWYgKGludGVsX2RwX2NoZWNrX21zdF9zdGF0dXMoaW50ZWxfZHApID09IC1FSU5WQUwpIHsKPiBA QCAtNTk4NCw3ICs1OTg5LDggQEAgaW50ZWxfZHBfaHBkX3B1bHNlKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBib29sIGxvbmdfaHBkKQo+ICAKPiAgcHV0X3Bvd2Vy Ogo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsCj4gLQkJCQlpbnRlbF9hdXhf cG93ZXJfZG9tYWluKGludGVsX2RpZ19wb3J0KSk7Cj4gKwkJCQlpbnRlbF9hdXhfcG93ZXJfZG9t YWluKGludGVsX2RpZ19wb3J0KSwKPiArCQkJCXdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7 Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiBpbmRleCBkNTEzY2E4 NzVjNjcuLjA0ODcwZTk2MDUzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGxsX21nci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9t Z3IuYwo+IEBAIC0zNDUsOSArMzQ1LDEyIEBAIHN0YXRpYyBib29sIGlieF9wY2hfZHBsbF9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAg c3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3X3N0YXRlKQo+ICB7Cj4gIAljb25zdCBlbnVt IGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUykpCj4gKwl3YWtlcmVm ID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJ ICAgICBQT1dFUl9ET01BSU5fUExMUyk7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0dXJuIGZh bHNlOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChQQ0hfRFBMTChpZCkpOwo+IEBAIC0zNTUsNyAr MzU4LDcgQEAgc3RhdGljIGJvb2wgaWJ4X3BjaF9kcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlod19zdGF0ZS0+ZnAwID0gSTkxNV9SRUFEKFBD SF9GUDAoaWQpKTsKPiAgCWh3X3N0YXRlLT5mcDEgPSBJOTE1X1JFQUQoUENIX0ZQMShpZCkpOwo+ ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExM Uyk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BM TFMsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiB2YWwgJiBEUExMX1ZDT19FTkFCTEU7Cj4gIH0K PiBAQCAtNTA5LDE1ICs1MTIsMTggQEAgc3RhdGljIGJvb2wgaHN3X2RkaV93cnBsbF9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0ZSkKPiAgewo+ICAJY29uc3QgZW51bSBp bnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtl cmVmOwo+ICAJdWludDMyX3QgdmFsOwo+ICAKPiAtCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpKQo+ICsJd2FrZXJlZiA9 IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gKwkJCQkJCSAg ICAgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoV1JQTExfQ1RMKGlkKSk7Cj4gIAlod19zdGF0ZS0+ d3JwbGwgPSB2YWw7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBP V0VSX0RPTUFJTl9QTExTKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQ T1dFUl9ET01BSU5fUExMUywgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHZhbCAmIFdSUExMX1BM TF9FTkFCTEU7Cj4gIH0KPiBAQCAtNTI2LDE1ICs1MzIsMTggQEAgc3RhdGljIGJvb2wgaHN3X2Rk aV9zcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiAgCQkJCSAgICAgIHN0 cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0ZSkKPiAgewo+ICsJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUykpCj4gKwl3 YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiAr CQkJCQkJICAgICBQT1dFUl9ET01BSU5fUExMUyk7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0 dXJuIGZhbHNlOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChTUExMX0NUTCk7Cj4gIAlod19zdGF0 ZS0+c3BsbCA9IHZhbDsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg UE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9QTExTLCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gdmFsICYgU1BMTF9Q TExfRU5BQkxFOwo+ICB9Cj4gQEAgLTk4OSw5ICs5OTgsMTIgQEAgc3RhdGljIGJvb2wgc2tsX2Rk aV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CXVpbnQzMl90IHZhbDsKPiAgCWNvbnN0IHN0cnVjdCBza2xfZHBsbF9yZWdzICpyZWdzID0gc2ts X2RwbGxfcmVnczsKPiAgCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+ aWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJvb2wgcmV0Owo+ICAKPiAtCWlm ICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9N QUlOX1BMTFMpKQo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJs ZWQoZGV2X3ByaXYsCj4gKwkJCQkJCSAgICAgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaWYgKCF3 YWtlcmVmKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSBmYWxzZTsKPiBAQCAtMTAx MSw3ICsxMDIzLDcgQEAgc3RhdGljIGJvb2wgc2tsX2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldCA9IHRydWU7Cj4gIAo+ICBvdXQ6 Cj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMp Owo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExT LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTEwMjAsMTIgKzEwMzIs MTUgQEAgc3RhdGljIGJvb2wgc2tsX2RkaV9kcGxsMF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqcGxsLAo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19z dGF0ZSkKPiAgewo+IC0JdWludDMyX3QgdmFsOwo+ICAJY29uc3Qgc3RydWN0IHNrbF9kcGxsX3Jl Z3MgKnJlZ3MgPSBza2xfZHBsbF9yZWdzOwo+ICAJY29uc3QgZW51bSBpbnRlbF9kcGxsX2lkIGlk ID0gcGxsLT5pbmZvLT5pZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJdWludDMy X3QgdmFsOwo+ICAJYm9vbCByZXQ7Cj4gIAo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dl dF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUykpCj4gKwl3YWtlcmVmID0g aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJICAg ICBQT1dFUl9ET01BSU5fUExMUyk7Cj4gKwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0dXJuIGZhbHNl Owo+ICAKPiAgCXJldCA9IGZhbHNlOwo+IEBAIC0xMDQxLDcgKzEwNTYsNyBAQCBzdGF0aWMgYm9v bCBza2xfZGRpX2RwbGwwX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAlyZXQgPSB0cnVlOwo+ICAKPiAgb3V0Ogo+IC0JaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKTsKPiArCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUywgd2FrZXJlZik7Cj4gIAo+ICAJcmV0 dXJuIHJldDsKPiAgfQo+IEBAIC0xNTc5LDE0ICsxNTk0LDE3IEBAIHN0YXRpYyBib29sIGJ4dF9k ZGlfcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJCQkJc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3X3N0YXRlKQo+ICB7Cj4gIAllbnVt IHBvcnQgcG9ydCA9IChlbnVtIHBvcnQpcGxsLT5pbmZvLT5pZDsgLyogMToxIHBvcnQtPlBMTCBt YXBwaW5nICovCj4gLQl1aW50MzJfdCB2YWw7Cj4gLQlib29sIHJldDsKPiArCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+ICAJZW51bSBkcGlvX3BoeSBwaHk7Cj4gIAllbnVtIGRwaW9fY2hhbm5l bCBjaDsKPiArCXVpbnQzMl90IHZhbDsKPiArCWJvb2wgcmV0Owo+ICAKPiAgCWJ4dF9wb3J0X3Rv X3BoeV9jaGFubmVsKGRldl9wcml2LCBwb3J0LCAmcGh5LCAmY2gpOwo+ICAKPiAtCWlmICghaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BM TFMpKQo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsCj4gKwkJCQkJCSAgICAgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaWYgKCF3YWtlcmVm KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSBmYWxzZTsKPiBAQCAtMTY0Myw3ICsx NjYxLDcgQEAgc3RhdGljIGJvb2wgYnh0X2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldCA9IHRydWU7Cj4gIAo+ICBvdXQ6Cj4gLQlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTLCB3YWtl cmVmKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTIwOTEsMTAgKzIxMDksMTMgQEAg c3RhdGljIGJvb2wgY25sX2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3 X3N0YXRlKQo+ICB7Cj4gIAljb25zdCBlbnVtIGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8t PmlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAli b29sIHJldDsKPiAgCj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKSkKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+ICsJCQkJCQkgICAgIFBPV0VSX0RPTUFJ Tl9QTExTKTsKPiArCWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJcmV0 ID0gZmFsc2U7Cj4gQEAgLTIxMTMsNyArMjEzNCw3IEBAIHN0YXRpYyBib29sIGNubF9kZGlfcGxs X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlyZXQg PSB0cnVlOwo+ICAKPiAgb3V0Ogo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9QTExTKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fUExMUywgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ IEBAIC0yOTUwLDExICsyOTcxLDE0IEBAIHN0YXRpYyBib29sIGljbF9wbGxfZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxf ZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpCj4gIHsKPiAgCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9p ZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gLQl1aW50MzJfdCB2YWw7Cj4gLQllbnVtIHBvcnQgcG9y dDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJYm9vbCByZXQgPSBmYWxzZTsKPiAr CWVudW0gcG9ydCBwb3J0Owo+ICsJdWludDMyX3QgdmFsOwo+ICAKPiAtCWlmICghaW50ZWxfZGlz cGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpKQo+ ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYs Cj4gKwkJCQkJCSAgICAgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoaWNsX3BsbF9pZF90b19lbmFi bGVfcmVnKGlkKSk7Cj4gQEAgLTMwMDcsNyArMzAzMSw3IEBAIHN0YXRpYyBib29sIGljbF9wbGxf Z2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAly ZXQgPSB0cnVlOwo+ICBvdXQ6Cj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg UE9XRVJfRE9NQUlOX1BMTFMpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9QTExTLCB3YWtlcmVmKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA5M2M4NmIxOTcwMGUuLjZmYTFlNmZmMGUy OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTIxMTgsMTIgKzIxMTgsMjEg QEAgYm9vbCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2lzX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4gZG9tYWluKTsKPiAgYm9vbCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgICBlbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbik7Cj4gLXZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkgICAgIGVudW0gaW50 ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKTsKPiAtYm9vbCBpbnRlbF9kaXNwbGF5X3Bv d2VyX2dldF9pZl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAr aW50ZWxfd2FrZXJlZl90IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbik7Cj4gK2ludGVsX3dha2VyZWZfdAo+ICtpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9p Zl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgIGVu dW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKTsKPiArdm9pZCBpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICsJCQkJICAgICAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKTsK PiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCj4gIHZv aWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IC0JCQkgICAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKTsK PiArCQkJICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbiwKPiArCQkJ ICAgICBpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZik7Cj4gKyNlbHNlCj4gKyNkZWZpbmUgaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoaTkxNSwgZG9tYWluLCB3YWtlcmVmKSBcCj4gKwlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoaTkxNSwgZG9tYWluKQo+ICsjZW5kaWYKPiAgdm9pZCBp Y2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQkJICAgIHU4IHJlcV9zbGljZXMpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuaAo+ IGluZGV4IGZjN2EwOTA0OWY4MS4uZGYzZDM5MGUyNWZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHNpLmgKPiBAQCAtMzksNiArMzksNyBAQCBzdHJ1Y3QgaW50ZWxfZHNpIHsKPiAgCXN0cnVj dCBpbnRlbF9lbmNvZGVyIGJhc2U7Cj4gIAo+ICAJc3RydWN0IGludGVsX2RzaV9ob3N0ICpkc2lf aG9zdHNbSTkxNV9NQVhfUE9SVFNdOwo+ICsJaW50ZWxfd2FrZXJlZl90IGlvX3dha2VyZWZbSTkx NV9NQVhfUE9SVFNdOwo+ICAKPiAgCS8qIEdQSU8gRGVzYyBmb3IgQ1JDIGJhc2VkIFBhbmVsIGNv bnRyb2wgKi8KPiAgCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9fcGFuZWw7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYwo+IGluZGV4IDE0YTBjMjhmZTdjMS4uMTQ3MjdhYzA2ZjY3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IEBAIC0xMTkwLDE1ICsxMTkwLDE3IEBAIHN0YXRp YyBib29sIGludGVsX2hkbWlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0g ZW5jX3RvX2ludGVsX2hkbWkoJmVuY29kZXItPmJhc2UpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gIAlib29sIHJldDsKPiAgCj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCWVuY29kZXItPnBvd2VyX2RvbWFpbikpCj4g Kwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwK PiArCQkJCQkJICAgICBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9zZHZvX3BvcnRfZW5hYmxlZChk ZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcsIHBpcGUpOwo+ICAKPiAtCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbiwgd2FrZXJl Zik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xODk1LDExICsxODk3LDEyIEBAIGlu dGVsX2hkbWlfc2V0X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGludGVsX2F0dGFjaGVk X2hkbWkoY29ubmVjdG9yKTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3RydWN0 IGVkaWQgKmVkaWQ7Cj4gIAlib29sIGNvbm5lY3RlZCA9IGZhbHNlOwo+ICAJc3RydWN0IGkyY19h ZGFwdGVyICppMmM7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBP V0VSX0RPTUFJTl9HTUJVUyk7Cj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9HTUJVUyk7Cj4gIAo+ICAJaTJjID0gaW50ZWxfZ21idXNf Z2V0X2FkYXB0ZXIoZGV2X3ByaXYsIGludGVsX2hkbWktPmRkY19idXMpOwo+ICAKPiBAQCAtMTkx NCw3ICsxOTE3LDcgQEAgaW50ZWxfaGRtaV9zZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICAKPiAgCWludGVsX2hkbWlfZHBfZHVhbF9tb2RlX2RldGVjdChjb25uZWN0 b3IsIGVkaWQgIT0gTlVMTCk7Cj4gIAo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3By aXYsIFBPV0VSX0RPTUFJTl9HTUJVUyk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTLCB3YWtlcmVmKTsKPiAgCj4gIAl0b19pbnRlbF9jb25u ZWN0b3IoY29ubmVjdG9yKS0+ZGV0ZWN0X2VkaWQgPSBlZGlkOwo+ICAJaWYgKGVkaWQgJiYgZWRp ZC0+aW5wdXQgJiBEUk1fRURJRF9JTlBVVF9ESUdJVEFMKSB7Cj4gQEAgLTE5MzksMTEgKzE5NDIs MTIgQEAgaW50ZWxfaGRtaV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwg Ym9vbCBmb3JjZSkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5kZXYpOwo+ICAJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBp bnRlbF9hdHRhY2hlZF9oZG1pKGNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciA9ICZoZG1pX3RvX2RpZ19wb3J0KGludGVsX2hkbWkpLT5iYXNlOwo+ICsJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDol c11cbiIsCj4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fR01C VVMpOwo+ICsJd2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dF Ul9ET01BSU5fR01CVVMpOwo+ICAKPiAgCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSAmJgo+ICAJ ICAgICFpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpKQo+IEBAIC0xOTU1LDcg KzE5NTksNyBAQCBpbnRlbF9oZG1pX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLCBib29sIGZvcmNlKQo+ICAJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk Owo+ICAKPiAgb3V0Ogo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VS X0RPTUFJTl9HTUJVUyk7Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX0dNQlVTLCB3YWtlcmVmKTsKPiAgCj4gIAlpZiAoc3RhdHVzICE9IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKQo+ICAJCWNlY19ub3RpZmllcl9waHlzX2FkZHJfaW52YWxpZGF0 ZShpbnRlbF9oZG1pLT5jZWNfbm90aWZpZXIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4g aW5kZXggYzYxNTlhZmY5ZGM4Li40ZjZkYzhjOTQ2MzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9pMmMuYwo+IEBAIC02OTcsMTIgKzY5NywxMyBAQCBkb19nbWJ1c194ZmVyKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBudW0sCj4gIHN0YXRp YyBpbnQKPiAgZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBp MmNfbXNnICptc2dzLCBpbnQgbnVtKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ21idXMgKmJ1cyA9 IGNvbnRhaW5lcl9vZihhZGFwdGVyLCBzdHJ1Y3QgaW50ZWxfZ21idXMsCj4gLQkJCQkJICAgICAg IGFkYXB0ZXIpOwo+ICsJc3RydWN0IGludGVsX2dtYnVzICpidXMgPQo+ICsJCWNvbnRhaW5lcl9v ZihhZGFwdGVyLCBzdHJ1Y3QgaW50ZWxfZ21idXMsIGFkYXB0ZXIpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gYnVzLT5kZXZfcHJpdjsKPiArCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwo+ICAJaW50IHJldDsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChk ZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiAgCj4gIAlpZiAoYnVz LT5mb3JjZV9iaXQpIHsKPiAgCQlyZXQgPSBpMmNfYml0X2FsZ28ubWFzdGVyX3hmZXIoYWRhcHRl ciwgbXNncywgbnVtKTsKPiBAQCAtNzE0LDE3ICs3MTUsMTYgQEAgZ21idXNfeGZlcihzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpMmNfbXNnICptc2dzLCBpbnQgbnVtKQo+ICAJ CQlidXMtPmZvcmNlX2JpdCB8PSBHTUJVU19GT1JDRV9CSVRfUkVUUlk7Cj4gIAl9Cj4gIAo+IC0J aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9HTUJVUyk7Cj4g KwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTLCB3 YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBpbnQgaW50ZWxfZ21idXNf b3V0cHV0X2Frc3Yoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZ21idXMgKmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFwdGVyLCBzdHJ1Y3QgaW50ZWxfZ21i dXMsCj4gLQkJCQkJICAgICAgIGFkYXB0ZXIpOwo+ICsJc3RydWN0IGludGVsX2dtYnVzICpidXMg PQo+ICsJCWNvbnRhaW5lcl9vZihhZGFwdGVyLCBzdHJ1Y3QgaW50ZWxfZ21idXMsIGFkYXB0ZXIp Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gYnVzLT5kZXZfcHJpdjsK PiAtCWludCByZXQ7Cj4gIAl1OCBjbWQgPSBEUk1fSERDUF9ERENfQUtTVjsKPiAgCXU4IGJ1ZltE Uk1fSERDUF9LU1ZfTEVOXSA9IHsgMCB9Owo+ICAJc3RydWN0IGkyY19tc2cgbXNnc1tdID0gewo+ IEBAIC03NDEsOCArNzQxLDEwIEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gIAkJCS5idWYgPSBidWYsCj4gIAkJfQo+ICAJfTsKPiAr CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJaW50IHJldDsKPiAgCj4gLQlpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiArCXdha2VyZWYg PSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsK PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5nbWJ1c19tdXRleCk7Cj4gIAo+ICAJLyoKPiBAQCAt NzUzLDcgKzc1NSw3IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXIpCj4gIAlyZXQgPSBkb19nbWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIEFS UkFZX1NJWkUobXNncyksIEdNQlVTX0FLU1ZfU0VMRUNUKTsKPiAgCj4gIAltdXRleF91bmxvY2so JmRldl9wcml2LT5nbWJ1c19tdXRleCk7Cj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRl dl9wcml2LCBQT1dFUl9ET01BSU5fR01CVVMsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7 Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gaW5kZXggNmFkY2M4ZDAzN2JmLi5i MDFhYWNiNWQ3M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTk0LDE1 ICs5NCwxNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9sdmRzX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfbHZk c19lbmNvZGVyICpsdmRzX2VuY29kZXIgPSB0b19sdmRzX2VuY29kZXIoJmVuY29kZXItPmJhc2Up Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIHJldDsKPiAgCj4gLQlpZiAo IWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCWVu Y29kZXItPnBvd2VyX2RvbWFpbikpCj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiArCQkJCQkJICAgICBlbmNvZGVyLT5wb3dlcl9kb21h aW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSBp bnRlbF9sdmRzX3BvcnRfZW5hYmxlZChkZXZfcHJpdiwgbHZkc19lbmNvZGVyLT5yZWcsIHBpcGUp Owo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dl cl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXIt PnBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+IGluZGV4IGJkYWJjZmFiODA5MC4uNTZkNjE0 YjAyMzAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3Jj LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gQEAgLTU4 OSw2ICs1ODksNyBAQCBpbnQgaW50ZWxfY3J0Y19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIGNvbnN0IGNoYXIgKnNvdXJjZV9uYW1lKQo+ICAJc3RydWN0IGludGVsX3BpcGVf Y3JjICpwaXBlX2NyYyA9ICZkZXZfcHJpdi0+cGlwZV9jcmNbY3J0Yy0+aW5kZXhdOwo+ICAJZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gIAllbnVtIGludGVs X3BpcGVfY3JjX3NvdXJjZSBzb3VyY2U7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAg CXUzMiB2YWwgPSAwOyAvKiBzaHV0IHVwIGdjYyAqLwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+IEBA IC01OTgsNyArNTk5LDggQEAgaW50IGludGVsX2NydGNfc2V0X2NyY19zb3VyY2Uoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSkKPiAgCX0KPiAgCj4gIAlwb3dl cl9kb21haW4gPSBQT1dFUl9ET01BSU5fUElQRShjcnRjLT5pbmRleCk7Cj4gLQlpZiAoIWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpIHsK PiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2 LCBwb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVmKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygi VHJ5aW5nIHRvIGNhcHR1cmUgQ1JDIHdoaWxlIHBpcGUgaXMgb2ZmXG4iKTsKPiAgCQlyZXR1cm4g LUVJTzsKPiAgCX0KPiBAQCAtNjI0LDcgKzYyNiw3IEBAIGludCBpbnRlbF9jcnRjX3NldF9jcmNf c291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc291cmNlX25hbWUpCj4g IAlwaXBlX2NyYy0+c2tpcHBlZCA9IDA7Cj4gIAo+ICBvdXQ6Cj4gLQlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4sIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7 Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA4M2IwMWNkZTgxMTMuLmFiNzI1 NzcyMGM3ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0zOTg5LDEwICszOTg5 LDEyIEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9k b21haW47Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gIAo+ICAJcG93ZXJfZG9t YWluID0gUE9XRVJfRE9NQUlOX1BJUEUocGlwZSk7Cj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpCj4gKwl3YWtlcmVmID0g aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWlu KTsKPiArCWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZm9yX2VhY2hfcGxhbmVf aWRfb25fY3J0YyhjcnRjLCBwbGFuZV9pZCkKPiBAQCAtNDAwMSw3ICs0MDAzLDcgQEAgdm9pZCBz a2xfcGlwZV9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJ CSAgICZkZGJfeVtwbGFuZV9pZF0sCj4gIAkJCQkJICAgJmRkYl91dltwbGFuZV9pZF0pOwo+ICAK PiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbiwgd2FrZXJlZik7 Cj4gIH0KPiAgCj4gIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMK PiBpbmRleCBmNTg1ZWY3NDJlZmUuLmZkMmZjMTBkZDFlNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtMTg2NywxOCArMTg2NywxOSBAQCBfX2ludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gICAqIEFueSBwb3dlciBkb21haW4gcmVmZXJlbmNlIG9idGFpbmVkIGJ5IHRoaXMgZnVu Y3Rpb24gbXVzdCBoYXZlIGEgc3ltbWV0cmljCj4gICAqIGNhbGwgdG8gaW50ZWxfZGlzcGxheV9w b3dlcl9wdXQoKSB0byByZWxlYXNlIHRoZSByZWZlcmVuY2UgYWdhaW4uCj4gICAqLwo+IC12b2lk IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAtCQkJICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKPiAr aW50ZWxfd2FrZXJlZl90IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbikKPiAgewo+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlu cyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2Nr KTsKPiAgCj4gIAlfX2ludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihkZXZfcHJpdiwgZG9t YWluKTsKPiAgCj4gIAltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwo+ICsKPiAr CXJldHVybiB3YWtlcmVmOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtMTg5MywxMyArMTg5NCwxNiBA QCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgICogQW55IHBvd2VyIGRvbWFpbiByZWZlcmVuY2Ugb2J0YWluZWQgYnkgdGhp cyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRyaWMKPiAgICogY2FsbCB0byBpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dCgpIHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZSBhZ2Fpbi4KPiAgICovCj4g LWJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW4pCj4gK2ludGVsX3dha2VyZWZfdAo+ICtpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9p Zl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgIGVu dW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkx NV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5z Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIGlzX2VuYWJsZWQ7Cj4gIAo+ IC0JaWYgKCFpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpKQo+ICsJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdik7Cj4gKwlpZiAo IXdha2VyZWYpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCW11dGV4X2xvY2soJnBvd2VyX2Rv bWFpbnMtPmxvY2spOwo+IEBAIC0xOTEzLDIzICsxOTE3LDE2IEBAIGJvb2wgaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiAgCj4gLQlpZiAo IWlzX2VuYWJsZWQpCj4gLQkJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2 KTsKPiArCWlmICghaXNfZW5hYmxlZCkgewo+ICsJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2LCB3YWtlcmVmKTsKPiArCQl3YWtlcmVmID0gMDsKPiArCX0KPiAgCj4gLQlyZXR1cm4gaXNf ZW5hYmxlZDsKPiArCXJldHVybiB3YWtlcmVmOwo+ICB9Cj4gIAo+IC0vKioKPiAtICogaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQgLSByZWxlYXNlIGEgcG93ZXIgZG9tYWluIHJlZmVyZW5jZQo+IC0g KiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gLSAqIEBkb21haW46IHBvd2VyIGRv bWFpbiB0byByZWZlcmVuY2UKPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiBkcm9wcyB0aGUgcG93 ZXIgZG9tYWluIHJlZmVyZW5jZSBvYnRhaW5lZCBieQo+IC0gKiBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldCgpIGFuZCBtaWdodCBwb3dlciBkb3duIHRoZSBjb3JyZXNwb25kaW5nIGhhcmR3YXJlCj4g LSAqIGJsb2NrIHJpZ2h0IGF3YXkgaWYgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UuCj4gLSAq Lwo+IC12b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAtCQkJICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbikKPiArc3RhdGljIHZvaWQgX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgICBlbnVtIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluIGRvbWFpbikKPiAgewo+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAq cG93ZXJfZG9tYWluczsKPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7Cj4g QEAgLTE5NDcsMTAgKzE5NDQsMzQgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJaW50ZWxfcG93ZXJfd2VsbF9wdXQo ZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ICAKPiAgCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlu cy0+bG9jayk7Cj4gK30KPiAgCj4gKy8qKgo+ICsgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dCAt IHJlbGVhc2UgYSBwb3dlciBkb21haW4gcmVmZXJlbmNlCgordW5jaGVja2VkPyBvciBpcyB0aGlz IGluIHdyb25nIHBsYWNlLgoKQW5kIHRoZSBwZXJmIG9hX2NvbmZpZyB1bnJlbGF0ZWQgY2hhbmdl cyBhcmUgZ29uZS4gR29vZC4KLU1pa2EKCj4gKyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5z dGFuY2UKPiArICogQGRvbWFpbjogcG93ZXIgZG9tYWluIHRvIHJlZmVyZW5jZQo+ICsgKgo+ICsg KiBUaGlzIGZ1bmN0aW9uIGRyb3BzIHRoZSBwb3dlciBkb21haW4gcmVmZXJlbmNlIG9idGFpbmVk IGJ5Cj4gKyAqIGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KCkgYW5kIG1pZ2h0IHBvd2VyIGRvd24g dGhlIGNvcnJlc3BvbmRpbmcgaGFyZHdhcmUKPiArICogYmxvY2sgcmlnaHQgYXdheSBpZiB0aGlz IGlzIHRoZSBsYXN0IHJlZmVyZW5jZS4KPiArICovCj4gK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dl cl9wdXRfdW5jaGVja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ CSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKPiArewo+ICsJ X19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgZG9tYWluKTsKPiAgCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gKyNpZiBJU19FTkFC TEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQo+ICt2b2lkIGludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAg ICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbiwKPiArCQkJICAgICBpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZikKPiArewo+ICsJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChk ZXZfcHJpdiwgZG9tYWluKTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtl cmVmKTsKPiArfQo+ICsjZW5kaWYKPiArCj4gICNkZWZpbmUgSTgzMF9QSVBFU19QT1dFUl9ET01B SU5TICgJCVwKPiAgCUJJVF9VTEwoUE9XRVJfRE9NQUlOX1BJUEVfQSkgfAkJXAo+ICAJQklUX1VM TChQT1dFUl9ET01BSU5fUElQRV9CKSB8CQlcCj4gQEAgLTQwNjAsNyArNDA4MSw3IEBAIHZvaWQg aW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCj4gIAkvKiBSZW1vdmUgdGhlIHJlZmNvdW50IHdlIHRvb2sgdG8ga2VlcCBwb3dl ciB3ZWxsIHN1cHBvcnQgZGlzYWJsZWQuICovCj4gIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmRpc2Fi bGVfcG93ZXJfd2VsbCkKPiAtCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX0lOSVQpOwo+ICsJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChk ZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwo+ICAKPiAgCWludGVsX3Bvd2VyX2RvbWFpbnNf dmVyaWZ5X3N0YXRlKGRldl9wcml2KTsKPiAgfQo+IEBAIC00MDc5LDcgKzQxMDAsNyBAQCB2b2lk IGludGVsX3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAqLwo+ICB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfZW5hYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9w dXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0X3VuY2hlY2tlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwo+ICAKPiAgCWludGVs X3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKGRldl9wcml2KTsKPiAgfQo+IEBAIC00MTE0LDcg KzQxMzUsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMg KnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4gIAo+IC0JaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiArCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQp Owo+ICAKPiAgCS8qCj4gIAkgKiBJbiBjYXNlIG9mIHN1c3BlbmQtdG8taWRsZSAoYWthIFMwaXgp IG9uIGEgRE1DIHBsYXRmb3JtIHdpdGhvdXQgREM5Cj4gQEAgLTQxMzUsNyArNDE1Niw3IEBAIHZv aWQgaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCSAqIHBvd2VyIHdlbGxzIGlmIHBvd2VyIGRvbWFpbnMgbXVzdCBiZSBkZWlu aXRpYWxpemVkIGZvciBzdXNwZW5kLgo+ICAJICovCj4gIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmRp c2FibGVfcG93ZXJfd2VsbCkgewo+IC0JCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVj a2VkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gIAkJaW50ZWxfcG93ZXJfZG9tYWlu c192ZXJpZnlfc3RhdGUoZGV2X3ByaXYpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+IGluZGV4IDhmMzk4MmMwMzkyNS4uODdhMDZmY2NhMjg0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtNjE4LDE3ICs2MTgsMTkgQEAgc2tsX3Bs YW5lX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gIAllbnVtIHBs YW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAlib29sIHJldDsKPiAgCj4gIAlwb3dlcl9kb21haW4gPSBQT1dFUl9ET01BSU5fUElQRShw bGFuZS0+cGlwZSk7Cj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQo ZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpCj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dl cl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiArCWlmICghd2FrZXJl ZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJcmV0ID0gSTkxNV9SRUFEKFBMQU5FX0NUTChw bGFuZS0+cGlwZSwgcGxhbmVfaWQpKSAmIFBMQU5FX0NUTF9FTkFCTEU7Cj4gIAo+ICAJKnBpcGUg PSBwbGFuZS0+cGlwZTsKPiAgCj4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg cG93ZXJfZG9tYWluKTsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dl cl9kb21haW4sIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtODgyLDE3 ICs4ODQsMTkgQEAgdmx2X3BsYW5lX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZS0+YmFzZS5kZXYpOwo+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9k b21haW47Cj4gIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICsJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIHJldDsKPiAgCj4gIAlwb3dlcl9kb21haW4gPSBQ T1dFUl9ET01BSU5fUElQRShwbGFuZS0+cGlwZSk7Cj4gLQlpZiAoIWludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpCj4gKwl3YWtlcmVmID0g aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWlu KTsKPiArCWlmICghd2FrZXJlZikKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJcmV0ID0gSTkx NV9SRUFEKFNQQ05UUihwbGFuZS0+cGlwZSwgcGxhbmVfaWQpKSAmIFNQX0VOQUJMRTsKPiAgCj4g IAkqcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRl dl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3By aXYsIHBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBA IC0xMDUxLDE3ICsxMDU1LDE5IEBAIGl2Yl9wbGFuZV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2RvbWFpbiBwb3dlcl9kb21haW47Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJv b2wgcmV0Owo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBsYW5lLT5w aXBlKTsKPiAtCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJp diwgcG93ZXJfZG9tYWluKSkKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9p Zl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSAgSTkxNV9SRUFEKFNQUkNUTChwbGFuZS0+cGlw ZSkpICYgU1BSSVRFX0VOQUJMRTsKPiAgCj4gIAkqcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAKPiAt CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4g IAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xMjE3LDE3ICsxMjIzLDE5IEBAIGc0eF9wbGFu ZV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgewo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJvb2wgcmV0Owo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9 IFBPV0VSX0RPTUFJTl9QSVBFKHBsYW5lLT5waXBlKTsKPiAtCWlmICghaW50ZWxfZGlzcGxheV9w b3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKSkKPiArCXdha2VyZWYg PSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21h aW4pOwo+ICsJaWYgKCF3YWtlcmVmKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXQgPSBJ OTE1X1JFQUQoRFZTQ05UUihwbGFuZS0+cGlwZSkpICYgRFZTX0VOQUJMRTsKPiAgCj4gIAkqcGlw ZSA9IHBsYW5lLT5waXBlOwo+ICAKPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBwb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBv d2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMKPiBpbmRleCA0ODUzNzgyNzYxNmYuLjIzYWJmMDM3MzZlNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKPiBAQCAtMTA4Miw2ICsxMDgyLDYgQEAgdm9p ZCBpbnRlbF9kc2NfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUpCj4gIAlJOTE1X1dSSVRFKGRzc19jdGwyX3JlZywgZHNzX2N0bDJfdmFsKTsKPiAg Cj4gIAkvKiBEaXNhYmxlIFBvd2VyIHdlbGxzIGZvciBWRFNDL2pvaW5pbmcgKi8KPiAtCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LAo+IC0JCQkJaW50ZWxfZHNjX3Bvd2VyX2RvbWFp bihvbGRfY3J0Y19zdGF0ZSkpOwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2Vk KGRldl9wcml2LAo+ICsJCQkJCSAgaW50ZWxfZHNjX3Bvd2VyX2RvbWFpbihvbGRfY3J0Y19zdGF0 ZSkpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IGluZGV4IGJiMTI4NzAyMGY4MC4uZDEx NmZlYWQ4NTE0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IEBAIC05NTksMTMgKzk1OSwx NSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVs X2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gIAllbnVtIHBvcnQgcG9ydDsKPiAgCWJvb2wgYWN0aXZlID0gZmFsc2U7 Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiAgCj4gLQlpZiAoIWludGVsX2Rpc3BsYXlf cG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJCWVuY29kZXItPnBvd2VyX2Rv bWFpbikpCj4gKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChk ZXZfcHJpdiwKPiArCQkJCQkJICAgICBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaWYgKCF3 YWtlcmVmKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkvKgo+IEBAIC0xMDIxLDcgKzEwMjMs NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICAJfQo+ICAKPiAgb3V0X3B1dF9wb3dlcjoKPiAtCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICsJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGVuY29kZXItPnBvd2VyX2RvbWFpbiwgd2FrZXJl Zik7Cj4gIAo+ICAJcmV0dXJuIGFjdGl2ZTsKPiAgfQo+IEBAIC0xNTc0LDYgKzE1NzYsNyBAQCB2 bHZfZHNpX2dldF9od19wYW5lbF9vcmllbnRhdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gIAllbnVtIGRybV9wYW5lbF9vcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKPiAg CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsK PiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gIAl1MzIg dmFsOwo+ICAKPiBAQCAtMTU4NCw3ICsxNTg3LDggQEAgdmx2X2RzaV9nZXRfaHdfcGFuZWxfb3Jp ZW50YXRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9 IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpOwo+IC0JaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dl dF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKQo+ICsJd2FrZXJlZiA9IGludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4g KwlpZiAoIXdha2VyZWYpCj4gIAkJcmV0dXJuIERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1VO S05PV047Cj4gIAo+ICAJdmFsID0gSTkxNV9SRUFEKERTUENOVFIocGxhbmUtPmk5eHhfcGxhbmUp KTsKPiBAQCAtMTU5Niw3ICsxNjAwLDcgQEAgdmx2X2RzaV9nZXRfaHdfcGFuZWxfb3JpZW50YXRp b24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJZWxzZQo+ICAJCW9yaWVu dGF0aW9uID0gRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fTk9STUFMOwo+ICAKPiAtCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ICsJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbiwgd2FrZXJlZik7Cj4gIAo+ICAJ cmV0dXJuIG9yaWVudGF0aW9uOwo+ICB9Cj4gLS0gCj4gMi4yMC4xCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=