From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Rename global i915 to i915_modparams Date: Mon, 18 Sep 2017 22:11:40 +0300 Message-ID: <87k20vu8ib.fsf@intel.com> References: <20170918185507.10224-1-michal.wajdeczko@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DAEF6E41A for ; Mon, 18 Sep 2017 19:11:47 +0000 (UTC) In-Reply-To: <20170918185507.10224-1-michal.wajdeczko@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko , intel-gfx@lists.freedesktop.org Cc: Ville Syrjala List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxOCBTZXAgMjAxNywgTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0Bp bnRlbC5jb20+IHdyb3RlOgo+IE91ciBnbG9iYWwgc3RydWN0IHdpdGggcGFyYW1zIGlzIG5hbWVk IGV4YWN0bHkgdGhlIHNhbWUgd2F5Cj4gYXMgbmV3IHByZWZlcnJlZCBuYW1lIGZvciB0aGUgZHJt X2k5MTVfcHJpdmF0ZSBmdW5jdGlvbiBwYXJhbWV0ZXIuCj4gVG8gYXZvaWQgc3VjaCBuYW1lIHJl dXNlIGxldHMgdXNlIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZ2xvYmFsLgo+Cj4gdjQ6IGludHJv ZHVjdGlvbiBvZiBta3dyaXRlKCkKCldoeT8KCkkgZG9uJ3Qga25vdyB3aGF0IHlvdSdyZSB0cnlp bmcgdG8gYWNoaWV2ZSB3aXRoIHRoZSBta3dyaXRlKCkgc3R1ZmYgKHRoZQpjb21taXQgbWVzc2Fn ZSB3b3VsZCBiZSB0aGUgcGVyZmVjdCBwbGFjZSB0byBleHBsYWluIHRoYXQpIGJ1dCBubyBtYXR0 ZXIKd2hhdCBpdCBzaG91bGQgSU1PIGJlIGEgc2VwYXJhdGUgcGF0Y2guCgpJIHRoaW5rIHRoZSBz aW1wbGUgcy9pOTE1L2k5MTVfbW9kcGFyYW1zLyB3b3VsZCBiZSBmaW5lLCBhbmQgd2UgY291bGQK bW92ZSBvbi4KCkJSLApKYW5pLgoKCj4KPiBDcmVkaXRzLXRvOiBDb2NjaW5lbGxlCj4KPiBAQAo+ IGlkZW50aWZpZXIgbjsKPiBleHByZXNzaW9uIGU7Cj4gQEAKPgo+ICgKPiAtCWk5MTUubiA9IGU7 Cj4gKwlpOTE1X21vZHBhcmFtc19ta3dyaXRlKCktPm4gPSBlOwo+IHwKPiAtCWk5MTUubisrOwo+ ICsJaTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5uKys7Cj4gfAo+IC0JaTkxNS5uLS07Cj4gKwlp OTE1X21vZHBhcmFtc19ta3dyaXRlKCktPm4tLTsKPiB8Cj4gLQlpOTE1Lm4KPiArCWk5MTVfbW9k cGFyYW1zLm4KPiApCj4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwu d2FqZGVjemtvQGludGVsLmNvbT4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVs LmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxlIFN5 cmphbGEgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9yZW5kZXIuYyAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8IDE0ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgMTAgKyst LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDQg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgMTIg KysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8 ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8 ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAg fCAgNiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jICAg IHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAg IHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgICAgICAgICAg IHwgIDYgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmggICAgICAgICAg ICB8ICA3ICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyAgICAgICAgICAg ICAgIHwgIDYgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgICAg ICAgICB8ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgICAgICAg ICAgICAgfCAgNyArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jICAgICAg ICAgICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAg ICAgICAgICB8IDEyICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAg ICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhf YmFja2xpZ2h0LmMgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYyAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAg ICAgICAgICAgICAgfCAxMiArKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jICAgICAgIHwgMTMgKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9nLmMgICAgICAgICAgfCAyNiArKysrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d2dC5jICAgICAgICAgICAgICB8IDEyICsrKy0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9odWMuYyAgICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAgfCAgOCArKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8ICA2ICstLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICAgICAgICAgICAgfCAxMCArKy0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgOCArKy0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyAgICAgICB8IDE3ICsrKysrLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jICAgICAgICAgICAgICAgfCA1MyAr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMgICAgICAgICAgIHwgMjIgKysrKysrLS0tLS0KPiAgMzkgZmlsZXMgY2hhbmdlZCwg MTkwIGluc2VydGlvbnMoKyksIDE2OSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVuZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv cmVuZGVyLmMKPiBpbmRleCAyZWE1NDIyLi42ZDA2NmNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9yZW5kZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9yZW5kZXIuYwo+IEBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIHZvaWQgc3dpdGNoX21taW9f dG9fdmdwdShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IHJpbmdfaWQpCj4gIAkJICovCj4g IAkJaWYgKG1taW8tPmluX2NvbnRleHQgJiYKPiAgCQkJCSgoY3R4X2N0cmwgJiBpbmhpYml0X21h c2spICE9IGluaGliaXRfbWFzaykgJiYKPiAtCQkJCWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAr CQkJCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAgCQlpZiAobW1pby0+bWFzaykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGlu ZGV4IGNhNmZhNmQuLjEzZmMyNTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+IEBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9jYXBhYmlsaXRpZXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAjdW5kZWYgUFJJTlRfRkxBRwo+ICAKPiAgCWtl cm5lbF9wYXJhbV9sb2NrKFRISVNfTU9EVUxFKTsKPiAtI2RlZmluZSBQUklOVF9QQVJBTShULCB4 KSBzZXFfcHJpbnRfcGFyYW0obSwgI3gsICNULCAmaTkxNS54KTsKPiArI2RlZmluZSBQUklOVF9Q QVJBTShULCB4KSBzZXFfcHJpbnRfcGFyYW0obSwgI3gsICNULCAmaTkxNV9tb2RwYXJhbXMueCk7 Cj4gIAlJOTE1X1BBUkFNU19GT1JfRUFDSChQUklOVF9QQVJBTSk7Cj4gICN1bmRlZiBQUklOVF9Q QVJBTQo+ICAJa2VybmVsX3BhcmFtX3VubG9jayhUSElTX01PRFVMRSk7Cj4gQEAgLTEyNjcsNyAr MTI2Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgCWlmICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJpdi0+Z3B1 X2Vycm9yLnJlc2V0X3F1ZXVlKSkKPiAgCQlzZXFfcHV0cyhtLCAic3RydWN0X211dGV4IGJsb2Nr ZWQgZm9yIHJlc2V0XG4iKTsKPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykgewo+ ICsJaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfaGFuZ2NoZWNrKSB7Cj4gIAkJc2VxX3B1dHMo bSwgIkhhbmdjaGVjayBkaXNhYmxlZFxuIik7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gQEAgLTE3 MDIsNyArMTcwMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9pcHNfc3RhdHVzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ ICAKPiAgCXNlcV9wcmludGYobSwgIkVuYWJsZWQgYnkga2VybmVsIHBhcmFtZXRlcjogJXNcbiIs Cj4gLQkJICAgeWVzbm8oaTkxNS5lbmFibGVfaXBzKSk7Cj4gKwkJICAgeWVzbm8oaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX2lwcykpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp IHsKPiAgCQlzZXFfcHV0cyhtLCAiQ3VycmVudGx5OiB1bmtub3duXG4iKTsKPiBAQCAtMjAxNyw3 ICsyMDE3LDcgQEAgc3RhdGljIGludCBpOTE1X2R1bXBfbHJjKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAtCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoIWk5MTVfbW9kcGFy YW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQlzZXFfcHJpbnRmKG0sICJMb2dpY2FsIFJpbmcg Q29udGV4dHMgYXJlIGRpc2FibGVkXG4iKTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiBAQCAtMjU5 Myw3ICsyNTkzLDcgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2dfY29udHJvbF9nZXQodm9pZCAq ZGF0YSwgdTY0ICp2YWwpCj4gIAlpZiAoIWRldl9wcml2LT5ndWMubG9nLnZtYSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gLQkqdmFsID0gaTkxNS5ndWNfbG9nX2xldmVsOwo+ICsJKnZhbCA9 IGk5MTVfbW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWw7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBA QCAtMzMxMSw3ICszMzExLDcgQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXNlcV9wcmludGYobSwgIlx0QkJBRERSOiAw eCUwOHhfJTA4eFxuIiwKPiAgCQkJICAgdXBwZXJfMzJfYml0cyhhZGRyKSwgbG93ZXJfMzJfYml0 cyhhZGRyKSk7Cj4gIAo+IC0JCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCQlpZiAo aTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAJCQljb25zdCB1MzIgKmh3cyA9 ICZlbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkcltJOTE1X0hXU19DU0JfQlVGMF9JTkRFWF07 Cj4gIAkJCXUzMiBwdHIsIHJlYWQsIHdyaXRlOwo+ICAJCQl1bnNpZ25lZCBpbnQgaWR4Owo+IEBA IC0zNDA3LDcgKzM0MDcsNyBAQCBzdGF0aWMgaW50IGk5MTVfc2VtYXBob3JlX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk Owo+ICAJaW50IGosIHJldDsKPiAgCj4gLQlpZiAoIWk5MTUuc2VtYXBob3Jlcykgewo+ICsJaWYg KCFpOTE1X21vZHBhcmFtcy5zZW1hcGhvcmVzKSB7Cj4gIAkJc2VxX3B1dHMobSwgIlNlbWFwaG9y ZXMgYXJlIGRpc2FibGVkXG4iKTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBpbmRleCA1YzExMWVhLi40YzMyYjE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gQEAgLTU4LDEyICs1OCwxMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGk5MTVfbG9h ZF9mYWlsX2NvdW50Owo+ICAKPiAgYm9vbCBfX2k5MTVfaW5qZWN0X2xvYWRfZmFpbHVyZShjb25z dCBjaGFyICpmdW5jLCBpbnQgbGluZSkKPiAgewo+IC0JaWYgKGk5MTVfbG9hZF9mYWlsX2NvdW50 ID49IGk5MTUuaW5qZWN0X2xvYWRfZmFpbHVyZSkKPiArCWlmIChpOTE1X2xvYWRfZmFpbF9jb3Vu dCA+PSBpOTE1X21vZHBhcmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gLQlpZiAoKytpOTE1X2xvYWRfZmFpbF9jb3VudCA9PSBpOTE1LmluamVjdF9sb2Fk X2ZhaWx1cmUpIHsKPiArCWlmICgrK2k5MTVfbG9hZF9mYWlsX2NvdW50ID09IGk5MTVfbW9kcGFy YW1zLmluamVjdF9sb2FkX2ZhaWx1cmUpIHsKPiAgCQlEUk1fSU5GTygiSW5qZWN0aW5nIGZhaWx1 cmUgYXQgY2hlY2twb2ludCAldSBbJXM6JWRdXG4iLAo+IC0JCQkgaTkxNS5pbmplY3RfbG9hZF9m YWlsdXJlLCBmdW5jLCBsaW5lKTsKPiArCQkJIGk5MTVfbW9kcGFyYW1zLmluamVjdF9sb2FkX2Zh aWx1cmUsIGZ1bmMsIGxpbmUpOwo+ICAJCXJldHVybiB0cnVlOwo+ICAJfQo+ICAKPiBAQCAtMTA2 LDggKzEwNiw4IEBAIF9faTkxNV9wcmludGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBjb25zdCBjaGFyICpsZXZlbCwKPiAgCj4gIHN0YXRpYyBib29sIGk5MTVfZXJyb3JfaW5q ZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlyZXR1cm4g aTkxNS5pbmplY3RfbG9hZF9mYWlsdXJlICYmCj4gLQkgICAgICAgaTkxNV9sb2FkX2ZhaWxfY291 bnQgPT0gaTkxNS5pbmplY3RfbG9hZF9mYWlsdXJlOwo+ICsJcmV0dXJuIGk5MTVfbW9kcGFyYW1z LmluamVjdF9sb2FkX2ZhaWx1cmUgJiYKPiArCSAgICAgICBpOTE1X2xvYWRfZmFpbF9jb3VudCA9 PSBpOTE1X21vZHBhcmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlOwo+ICB9Cj4gIAo+ICAjZGVmaW5l IGk5MTVfbG9hZF9lcnJvcihkZXZfcHJpdiwgZm10LCAuLi4pCQkJCSAgICAgXAo+IEBAIC0zMjEs NyArMzIxLDcgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gIAkJdmFsdWUgPSBVU0VTX1BQR1RUKGRldl9wcml2KTsKPiAgCQli cmVhazsKPiAgCWNhc2UgSTkxNV9QQVJBTV9IQVNfU0VNQVBIT1JFUzoKPiAtCQl2YWx1ZSA9IGk5 MTUuc2VtYXBob3JlczsKPiArCQl2YWx1ZSA9IGk5MTVfbW9kcGFyYW1zLnNlbWFwaG9yZXM7Cj4g IAkJYnJlYWs7Cj4gIAljYXNlIEk5MTVfUEFSQU1fSEFTX1NFQ1VSRV9CQVRDSEVTOgo+ICAJCXZh bHVlID0gY2FwYWJsZShDQVBfU1lTX0FETUlOKTsKPiBAQCAtMzQwLDcgKzM0MCw4IEBAIHN0YXRp YyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkxNV9QQVJBTV9IQVNf R1BVX1JFU0VUOgo+IC0JCXZhbHVlID0gaTkxNS5lbmFibGVfaGFuZ2NoZWNrICYmIGludGVsX2hh c19ncHVfcmVzZXQoZGV2X3ByaXYpOwo+ICsJCXZhbHVlID0gaTkxNV9tb2RwYXJhbXMuZW5hYmxl X2hhbmdjaGVjayAmJgo+ICsJCQlpbnRlbF9oYXNfZ3B1X3Jlc2V0KGRldl9wcml2KTsKPiAgCQlp ZiAodmFsdWUgJiYgaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShkZXZfcHJpdikpCj4gIAkJCXZhbHVl ID0gMjsKPiAgCQlicmVhazsKPiBAQCAtMTAzMSw5ICsxMDMyLDkgQEAgc3RhdGljIHZvaWQgaTkx NV9kcml2ZXJfY2xlYW51cF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpOTE1LmVuYWJsZV9leGVjbGlzdHMgPQo+ICsJ aTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5lbmFibGVfZXhlY2xpc3RzID0KPiAgCQlpbnRlbF9z YW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKGRldl9wcml2LAo+IC0JCQkJCQlpOTE1LmVuYWJsZV9l eGVjbGlzdHMpOwo+ICsJCQkJCQlpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKTsKPiAg Cj4gIAkvKgo+ICAJICogaTkxNS5lbmFibGVfcHBndHQgaXMgcmVhZC1vbmx5LCBzbyBkbyBhbiBl YXJseSBwYXNzIHRvIHZhbGlkYXRlIHRoZQo+IEBAIC0xMDQxLDEyICsxMDQyLDE1IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJICogZG8gdGhpcyBub3cgc28gdGhhdCB3ZSBjYW4gcHJpbnQgb3V0IGFueSBs b2cgbWVzc2FnZXMgb25jZSByYXRoZXIKPiAgCSAqIHRoYW4gZXZlcnkgdGltZSB3ZSBjaGVjayBp bnRlbF9lbmFibGVfcHBndHQoKS4KPiAgCSAqLwo+IC0JaTkxNS5lbmFibGVfcHBndHQgPQo+IC0J CWludGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChkZXZfcHJpdiwgaTkxNS5lbmFibGVfcHBndHQp Owo+IC0JRFJNX0RFQlVHX0RSSVZFUigicHBndHQgbW9kZTogJWlcbiIsIGk5MTUuZW5hYmxlX3Bw Z3R0KTsKPiArCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+ZW5hYmxlX3BwZ3R0ID0KPiArCQlp bnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoZGV2X3ByaXYsCj4gKwkJCQkJICAgIGk5MTVfbW9k cGFyYW1zLmVuYWJsZV9wcGd0dCk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJwcGd0dCBtb2RlOiAl aVxuIiwgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BwZ3R0KTsKPiAgCj4gLQlpOTE1LnNlbWFwaG9y ZXMgPSBpbnRlbF9zYW5pdGl6ZV9zZW1hcGhvcmVzKGRldl9wcml2LCBpOTE1LnNlbWFwaG9yZXMp Owo+IC0JRFJNX0RFQlVHX0RSSVZFUigidXNlIEdQVSBzZW1hcGhvcmVzPyAlc1xuIiwgeWVzbm8o aTkxNS5zZW1hcGhvcmVzKSk7Cj4gKwlpOTE1X21vZHBhcmFtc19ta3dyaXRlKCktPnNlbWFwaG9y ZXMgPQo+ICsJCWludGVsX3Nhbml0aXplX3NlbWFwaG9yZXMoZGV2X3ByaXYsIGk5MTVfbW9kcGFy YW1zLnNlbWFwaG9yZXMpOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigidXNlIEdQVSBzZW1hcGhvcmVz PyAlc1xuIiwKPiArCQkJIHllc25vKGk5MTVfbW9kcGFyYW1zLnNlbWFwaG9yZXMpKTsKPiAgCj4g IAlpbnRlbF91Y19zYW5pdGl6ZV9vcHRpb25zKGRldl9wcml2KTsKPiAgCj4gQEAgLTEyNzcsNyAr MTI4MSw3IEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25z dCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiBFbmFi bGUgbnVjbGVhciBwYWdlZmxpcCBvbiBJTEsrICovCj4gLQlpZiAoIWk5MTUubnVjbGVhcl9wYWdl ZmxpcCAmJiBtYXRjaF9pbmZvLT5nZW4gPCA1KQo+ICsJaWYgKCFpOTE1X21vZHBhcmFtcy5udWNs ZWFyX3BhZ2VmbGlwICYmIG1hdGNoX2luZm8tPmdlbiA8IDUpCj4gIAkJZHJpdmVyLmRyaXZlcl9m ZWF0dXJlcyAmPSB+RFJJVkVSX0FUT01JQzsKPiAgCj4gIAlyZXQgPSAtRU5PTUVNOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDhiNzM1YjYuLjU4M2Q0NWQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiBAQCAtOTMsNyArOTMsNyBAQAo+ICAjZGVmaW5lIEk5MTVfU1RBVEVf V0FSTihjb25kaXRpb24sIGZvcm1hdC4uLikgKHsJCQlcCj4gIAlpbnQgX19yZXRfd2Fybl9vbiA9 ICEhKGNvbmRpdGlvbik7CQkJCVwKPiAgCWlmICh1bmxpa2VseShfX3JldF93YXJuX29uKSkJCQkJ CVwKPiAtCQlpZiAoIVdBUk4oaTkxNS52ZXJib3NlX3N0YXRlX2NoZWNrcywgZm9ybWF0KSkJCVwK PiArCQlpZiAoIVdBUk4oaTkxNV9tb2RwYXJhbXMudmVyYm9zZV9zdGF0ZV9jaGVja3MsIGZvcm1h dCkpCVwKPiAgCQkJRFJNX0VSUk9SKGZvcm1hdCk7CQkJCVwKPiAgCXVubGlrZWx5KF9fcmV0X3dh cm5fb24pOwkJCQkJXAo+ICB9KQo+IEBAIC0zMDczLDkgKzMwNzMsOSBAQCBpbnRlbF9pbmZvKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gICNkZWZpbmUgSEFT X0xPR0lDQUxfUklOR19DT05URVhUUyhkZXZfcHJpdikgXAo+ICAJCSgoZGV2X3ByaXYpLT5pbmZv Lmhhc19sb2dpY2FsX3JpbmdfY29udGV4dHMpCj4gLSNkZWZpbmUgVVNFU19QUEdUVChkZXZfcHJp dikJCShpOTE1LmVuYWJsZV9wcGd0dCkKPiAtI2RlZmluZSBVU0VTX0ZVTExfUFBHVFQoZGV2X3By aXYpCShpOTE1LmVuYWJsZV9wcGd0dCA+PSAyKQo+IC0jZGVmaW5lIFVTRVNfRlVMTF80OEJJVF9Q UEdUVChkZXZfcHJpdikJKGk5MTUuZW5hYmxlX3BwZ3R0ID09IDMpCj4gKyNkZWZpbmUgVVNFU19Q UEdUVChkZXZfcHJpdikJCShpOTE1X21vZHBhcmFtcy5lbmFibGVfcHBndHQpCj4gKyNkZWZpbmUg VVNFU19GVUxMX1BQR1RUKGRldl9wcml2KQkoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BwZ3R0ID49 IDIpCj4gKyNkZWZpbmUgVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldl9wcml2KQkoaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX3BwZ3R0ID09IDMpCj4gIAo+ICAjZGVmaW5lIEhBU19PVkVSTEFZKGRldl9w cml2KQkJICgoZGV2X3ByaXYpLT5pbmZvLmhhc19vdmVybGF5KQo+ICAjZGVmaW5lIE9WRVJMQVlf TkVFRFNfUEhZU0lDQUwoZGV2X3ByaXYpIFwKPiBAQCAtMzI3Niw3ICszMjc2LDcgQEAgc3RhdGlj IGlubGluZSB2b2lkIGk5MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+ICAJdW5zaWduZWQgbG9uZyBkZWxheTsKPiAgCj4gLQlpZiAodW5s aWtlbHkoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykpCj4gKwlpZiAodW5saWtlbHkoIWk5MTVfbW9k cGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBEb24ndCBj b250aW51YWxseSBkZWZlciB0aGUgaGFuZ2NoZWNrIHNvIHRoYXQgaXQgaXMgYWx3YXlzIHJ1biBh dAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGM0YmYzNDguLjJhNjUwZjkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNDczOCw3ICs0NzM4LDcgQEAgYm9vbCBpbnRl bF9zYW5pdGl6ZV9zZW1hcGhvcmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50IHZhbHVlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkvKiBUT0RPOiBtYWtlIHNlbWFw aG9yZXMgYW5kIEV4ZWNsaXN0cyBwbGF5IG5pY2VseSB0b2dldGhlciAqLwo+IC0JaWYgKGk5MTUu ZW5hYmxlX2V4ZWNsaXN0cykKPiArCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3Rz KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAodmFsdWUgPj0gMCkKPiBAQCAtNDc1OSw3 ICs0NzU5LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAKPiAgCWRldl9wcml2LT5tbS51bm9yZGVyZWRfdGltZWxpbmUgPSBkbWFfZmVu Y2VfY29udGV4dF9hbGxvYygxKTsKPiAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykg ewo+ICsJaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gIAkJZGV2X3By aXYtPmd0LnJlc3VtZSA9IGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZTsKPiAgCQlkZXZf cHJpdi0+Z3QuY2xlYW51cF9lbmdpbmUgPSBpbnRlbF9lbmdpbmVfY2xlYW51cDsKPiAgCX0gZWxz ZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDU4YTJh NDQuLjkyMWVlMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4gQEAgLTMxNCw3ICszMTQsNyBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAqIHByZXNlbnQgb3Igbm90IGluIHVzZSB3ZSBzdGls bCBuZWVkIGEgc21hbGwgYmlhcyBhcyByaW5nIHdyYXBhcm91bmQKPiAgCSAqIGF0IG9mZnNldCAw IHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3aHkuCj4gIAkgKi8KPiAtCWlmIChIQVNfR1VDKGRl dl9wcml2KSAmJiBpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiArCWlmIChIQVNfR1VDKGRldl9w cml2KSAmJiBpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcpCj4gIAkJY3R4LT5nZ3R0 X29mZnNldF9iaWFzID0gR1VDX1dPUENNX1RPUDsKPiAgCWVsc2UKPiAgCQljdHgtPmdndHRfb2Zm c2V0X2JpYXMgPSBJOTE1X0dUVF9QQUdFX1NJWkU7Cj4gQEAgLTQwNyw3ICs0MDcsNyBAQCBpOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWk5MTVf Z2VtX2NvbnRleHRfc2V0X2Nsb3NlZChjdHgpOyAvKiBub3QgdXNlciBhY2Nlc3NpYmxlICovCj4g IAlpOTE1X2dlbV9jb250ZXh0X2NsZWFyX2Jhbm5hYmxlKGN0eCk7Cj4gIAlpOTE1X2dlbV9jb250 ZXh0X3NldF9mb3JjZV9zaW5nbGVfc3VibWlzc2lvbihjdHgpOwo+IC0JaWYgKCFpOTE1LmVuYWJs ZV9ndWNfc3VibWlzc2lvbikKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKQo+ICAJCWN0eC0+cmluZ19zaXplID0gNTEyICogUEFHRV9TSVpFOyAvKiBNYXggcmlu ZyBidWZmZXIgc2l6ZSAqLwo+ICAKPiAgCUdFTV9CVUdfT04oaTkxNV9nZW1fY29udGV4dF9pc19r ZXJuZWwoY3R4KSk7Cj4gQEAgLTQzMSw3ICs0MzEsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dHNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaWYgKGludGVs X3ZncHVfYWN0aXZlKGRldl9wcml2KSAmJgo+ICAJICAgIEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVY VFMoZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCQlp ZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQkJRFJNX0lORk8oIk9u bHkgRVhFQ0xJU1QgbW9kZSBpcyBzdXBwb3J0ZWQgaW4gdmdwdS5cbiIpOwo+ICAJCQlyZXR1cm4g LUVJTlZBTDsKPiAgCQl9Cj4gQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRl eHRzX2xvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJfQo+ICAKPiAg CS8qIEZvcmNlIHRoZSBHUFUgc3RhdGUgdG8gYmUgcmVzdG9yZWQgb24gZW5hYmxpbmcgKi8KPiAt CWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVu YWJsZV9leGVjbGlzdHMpIHsKPiAgCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAK PiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldl9wcml2LT5jb250ZXh0cy5saXN0LCBs aW5rKSB7Cj4gQEAgLTU2OCw3ICs1NjgsNyBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGZsYWdzKQo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gIAljb25zdCBpbnQgbnVtX3JpbmdzID0KPiAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9h IG9uIGdlbjcgaWYgc2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gLQkJKGk5MTUuc2Vt YXBob3JlcyAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID09IDcpID8KPiArCQkoaTkxNV9tb2RwYXJh bXMuc2VtYXBob3JlcyAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID09IDcpID8KPiAgCQlJTlRFTF9J TkZPKGRldl9wcml2KS0+bnVtX3JpbmdzIC0gMSA6Cj4gIAkJMDsKPiAgCWludCBsZW47Cj4gQEAg LTgzNyw3ICs4MzcsNyBAQCBpbnQgaTkxNV9zd2l0Y2hfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJl cS0+ZW5naW5lOwo+ICAKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcS0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJaWYgKGk5MTVf bW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKCFy ZXEtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IGU5NjJhMDEuLjRhYzhiZWUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTE1ODQs NyArMTU4NCw3IEBAIHN0YXRpYyBpbnQgZWJfcHJlZmF1bHRfcmVsb2NhdGlvbnMoY29uc3Qgc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gIAljb25zdCB1bnNpZ25lZCBpbnQgY291bnQgPSBl Yi0+YnVmZmVyX2NvdW50Owo+ICAJdW5zaWduZWQgaW50IGk7Cj4gIAo+IC0JaWYgKHVubGlrZWx5 KGk5MTUucHJlZmF1bHRfZGlzYWJsZSkpCj4gKwlpZiAodW5saWtlbHkoaTkxNV9tb2RwYXJhbXMu cHJlZmF1bHRfZGlzYWJsZSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDcz MWNlMjIuLjY0ZDc4NTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBA IC0xODAsNyArMTgwLDcgQEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiBpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYgaTkxNV9tb2RwYXJhbXMuZW5hYmxl X2V4ZWNsaXN0cykgewo+ICAJCWlmIChoYXNfZnVsbF80OGJpdF9wcGd0dCkKPiAgCQkJcmV0dXJu IDM7Cj4gIAo+IEBAIC0xOTcyLDcgKzE5NzIsNyBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIEluIHRoZSBjYXNlIG9mIGV4 ZWNsaXN0cywgUFBHVFQgaXMgZW5hYmxlZCBieSB0aGUgY29udGV4dCBkZXNjcmlwdG9yCj4gIAkg KiBhbmQgdGhlIFBEUHMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGNvbnRleHQgaXRzZWxmLiAg V2UgZG9uJ3QKPiAgCSAqIG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZS4gKi8KPiAtCWlmIChpOTE1 LmVuYWJsZV9leGVjbGlzdHMpCj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0 cykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIVVTRVNfUFBHVFQoZGV2X3ByaXYpKQo+IEBA IC0zMjkyLDcgKzMyOTIsNyBAQCBpbnQgaTkxNV9nZ3R0X3Byb2JlX2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIGN1cnJlbnRseSBkb24ndCBoYXZlIGFueSBiaXRz IHNwYXJlIHRvIHBhc3MgaW4gdGhpcyB1cHBlcgo+ICAJICogcmVzdHJpY3Rpb24hCj4gIAkgKi8K PiAtCWlmIChIQVNfR1VDKGRldl9wcml2KSAmJiBpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewo+ ICsJaWYgKEhBU19HVUMoZGV2X3ByaXYpICYmIGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9h ZGluZykgewo+ICAJCWdndHQtPmJhc2UudG90YWwgPSBtaW5fdCh1NjQsIGdndHQtPmJhc2UudG90 YWwsIEdVQ19HR1RUX1RPUCk7Cj4gIAkJZ2d0dC0+bWFwcGFibGVfZW5kID0gbWluKGdndHQtPm1h cHBhYmxlX2VuZCwgZ2d0dC0+YmFzZS50b3RhbCk7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jCj4gaW5kZXggMGM3Nzk2Ny4uYzdhYWY2MiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0xNTU0LDcgKzE1NTQsNyBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9jYXB0dXJlX2d1Y19sb2dfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJCQkgICAgc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikK PiAgewo+ICAJLyogQ2FwdHVyaW5nIGxvZyBidWYgY29udGVudHMgd29uJ3QgYmUgdXNlZnVsIGlm IGxvZ2dpbmcgd2FzIGRpc2FibGVkICovCj4gLQlpZiAoIWRldl9wcml2LT5ndWMubG9nLnZtYSB8 fCAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkpCj4gKwlpZiAoIWRldl9wcml2LT5ndWMubG9nLnZt YSB8fCAoaTkxNV9tb2RwYXJhbXMuZ3VjX2xvZ19sZXZlbCA8IDApKQo+ICAJCXJldHVybjsKPiAg Cj4gIAllcnJvci0+Z3VjX2xvZyA9IGk5MTVfZXJyb3Jfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwK PiBAQCAtMTY5Niw3ICsxNjk2LDcgQEAgc3RhdGljIGludCBjYXB0dXJlKHZvaWQgKmRhdGEpCj4g IAkJa3RpbWVfdG9fdGltZXZhbChrdGltZV9zdWIoa3RpbWVfZ2V0KCksCj4gIAkJCQkJICAgZXJy b3ItPmk5MTUtPmd0Lmxhc3RfaW5pdF90aW1lKSk7Cj4gIAo+IC0JZXJyb3ItPnBhcmFtcyA9IGk5 MTU7Cj4gKwllcnJvci0+cGFyYW1zID0gaTkxNV9tb2RwYXJhbXM7Cj4gICNkZWZpbmUgRFVQKFQs IHgpIGR1cF9wYXJhbSgjVCwgJmVycm9yLT5wYXJhbXMueCk7Cj4gIAlJOTE1X1BBUkFNU19GT1Jf RUFDSChEVVApOwo+ICAjdW5kZWYgRFVQCj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHZvaWQgaTkx NV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3I7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdz Owo+ICAKPiAtCWlmICghaTkxNS5lcnJvcl9jYXB0dXJlKQo+ICsJaWYgKCFpOTE1X21vZHBhcmFt cy5lcnJvcl9jYXB0dXJlKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoUkVBRF9PTkNFKGRldl9w cml2LT5ncHVfZXJyb3IuZmlyc3RfZXJyb3IpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCBlMTkxZDU2Li4wNmEyNmM2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC0xMjQ1LDcgKzEyNDUs NyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlpZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUND RVNTKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkK PiArCWlmIChpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsID49IDApCj4gIAkJZ2VuOV9lbmFi bGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+ICAKPiAgCWN0eCA9IGRldl9wcml2LT5rZXJu ZWxfY29udGV4dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCA0ZDBlOGY3Li43MjA4 NDg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTEzNDksNyArMTM0OSw3IEBA IGdlbjhfY3NfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIg aWlyLCBpbnQgdGVzdF9zaGlmdCkKPiAgCj4gIAlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lO VEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkgewo+ICAJCW5vdGlmeV9yaW5nKGVuZ2luZSk7Cj4gLQkJ dGFza2xldCB8PSBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbjsKPiArCQl0YXNrbGV0IHw9IGk5 MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbjsKPiAgCX0KPiAgCj4gIAlpZiAodGFz a2xldCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBpbmRleCBkZGRhNTEzLi5lYzY1 MzQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gQEAgLTI2LDEzICsyNiwx MyBAQAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgCj4gICNkZWZpbmUgaTkxNV9wYXJhbV9u YW1lZChuYW1lLCBULCBwZXJtLCBkZXNjKSBcCj4gLQltb2R1bGVfcGFyYW1fbmFtZWQobmFtZSwg aTkxNS5uYW1lLCBULCBwZXJtKTsgXAo+ICsJbW9kdWxlX3BhcmFtX25hbWVkKG5hbWUsIGk5MTVf bW9kcGFyYW1zLm5hbWUsIFQsIHBlcm0pOyBcCj4gIAlNT0RVTEVfUEFSTV9ERVNDKG5hbWUsIGRl c2MpCj4gICNkZWZpbmUgaTkxNV9wYXJhbV9uYW1lZF91bnNhZmUobmFtZSwgVCwgcGVybSwgZGVz YykgXAo+IC0JbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShuYW1lLCBpOTE1Lm5hbWUsIFQsIHBl cm0pOyBcCj4gKwltb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG5hbWUsIGk5MTVfbW9kcGFyYW1z Lm5hbWUsIFQsIHBlcm0pOyBcCj4gIAlNT0RVTEVfUEFSTV9ERVNDKG5hbWUsIGRlc2MpCj4gIAo+ IC1zdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5ID0gewo+ICtzdHJ1Y3QgaTkx NV9wYXJhbXMgaTkxNV9tb2RwYXJhbXMgX19yZWFkX21vc3RseSA9IHsKPiAgCS5tb2Rlc2V0ID0g LTEsCj4gIAkucGFuZWxfaWdub3JlX2xpZCA9IDEsCj4gIAkuc2VtYXBob3JlcyA9IC0xLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaAo+IGluZGV4IGFjODQ0NzAuLjRlMjc1NzkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgKPiBAQCAtNzYsNyArNzYsMTIgQEAgc3RydWN0 IGk5MTVfcGFyYW1zIHsKPiAgfTsKPiAgI3VuZGVmIE1FTUJFUgo+ICAKPiAtZXh0ZXJuIHN0cnVj dCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHk7Cj4gK2V4dGVybiBzdHJ1Y3QgaTkxNV9w YXJhbXMgaTkxNV9tb2RwYXJhbXMgX19yZWFkX21vc3RseTsKPiArCj4gK3N0YXRpYyBpbmxpbmUg c3RydWN0IGk5MTVfcGFyYW1zICppOTE1X21vZHBhcmFtc19ta3dyaXRlKHZvaWQpCj4gK3sKPiAr CXJldHVybiAoc3RydWN0IGk5MTVfcGFyYW1zICopJmk5MTVfbW9kcGFyYW1zOwo+ICt9Cj4gIAo+ ICAjZW5kaWYKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNp LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gaW5kZXggODUzMDAyZi4uOGQ3 MGI1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC02MzIsNyArNjMyLDcgQEAg c3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3Ry dWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKPiAgCQkoc3RydWN0IGludGVsX2RldmljZV9pbmZvICop IGVudC0+ZHJpdmVyX2RhdGE7Cj4gIAlpbnQgZXJyOwo+ICAKPiAtCWlmIChJU19BTFBIQV9TVVBQ T1JUKGludGVsX2luZm8pICYmICFpOTE1LmFscGhhX3N1cHBvcnQpIHsKPiArCWlmIChJU19BTFBI QV9TVVBQT1JUKGludGVsX2luZm8pICYmICFpOTE1X21vZHBhcmFtcy5hbHBoYV9zdXBwb3J0KSB7 Cj4gIAkJRFJNX0lORk8oIlRoZSBkcml2ZXIgc3VwcG9ydCBmb3IgeW91ciBoYXJkd2FyZSBpbiB0 aGlzIGtlcm5lbCB2ZXJzaW9uIGlzIGFscGhhIHF1YWxpdHlcbiIKPiAgCQkJICJTZWUgQ09ORklH X0RSTV9JOTE1X0FMUEhBX1NVUFBPUlQgb3IgaTkxNS5hbHBoYV9zdXBwb3J0IG1vZHVsZSBwYXJh bWV0ZXJcbiIKPiAgCQkJICJ0byBlbmFibGUgc3VwcG9ydCBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9u LCBvciBjaGVjayBmb3Iga2VybmVsIHVwZGF0ZXMuXG4iKTsKPiBAQCAtNjkwLDEwICs2OTAsMTAg QEAgc3RhdGljIGludCBfX2luaXQgaTkxNV9pbml0KHZvaWQpCj4gIAkgKiB2Z2FfdGV4dF9tb2Rl X2ZvcmNlIGJvb3Qgb3B0aW9uLgo+ICAJICovCj4gIAo+IC0JaWYgKGk5MTUubW9kZXNldCA9PSAw KQo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLm1vZGVzZXQgPT0gMCkKPiAgCQl1c2Vfa21zID0gZmFs c2U7Cj4gIAo+IC0JaWYgKHZnYWNvbl90ZXh0X2ZvcmNlKCkgJiYgaTkxNS5tb2Rlc2V0ID09IC0x KQo+ICsJaWYgKHZnYWNvbl90ZXh0X2ZvcmNlKCkgJiYgaTkxNV9tb2RwYXJhbXMubW9kZXNldCA9 PSAtMSkKPiAgCQl1c2Vfa21zID0gZmFsc2U7Cj4gIAo+ICAJaWYgKCF1c2Vfa21zKSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBpbmRleCA5NDE4NWQ2Li45YjI2OGZlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTIxMyw3ICsxMjEzLDcgQEAgc3RhdGljIGludCBv YV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2 Owo+ICAKPiAtCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gKwlpZiAoaTkxNV9tb2RwYXJh bXMuZW5hYmxlX2V4ZWNsaXN0cykKPiAgCQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhf aWQgPSBzdHJlYW0tPmN0eC0+aHdfaWQ7Cj4gIAllbHNlIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW1JDU107Cj4gQEAgLTEyNTksNyArMTI1 OSw3IEBAIHN0YXRpYyB2b2lkIG9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0pCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykg ewo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgCQlkZXZfcHJp di0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKPiAgCX0gZWxzZSB7 Cj4gIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtS Q1NdOwo+IEBAIC0zNDA1LDcgKzM0MDUsNyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZXZfcHJpdi0+cGVyZi5vYS50aW1lc3Rh bXBfZnJlcXVlbmN5ID0gMTI1MDAwMDA7Cj4gIAo+ICAJCWRldl9wcml2LT5wZXJmLm9hLm9hX2Zv cm1hdHMgPSBoc3dfb2FfZm9ybWF0czsKPiAtCX0gZWxzZSBpZiAoaTkxNS5lbmFibGVfZXhlY2xp c3RzKSB7Cj4gKwl9IGVsc2UgaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsK PiAgCQkvKiBOb3RlOiB0aGF0IGFsdGhvdWdoIHdlIGNvdWxkIHRoZW9yZXRpY2FsbHkgYWxzbyBz dXBwb3J0IHRoZQo+ICAJCSAqIGxlZ2FjeSByaW5nYnVmZmVyIG1vZGUgb24gQkRXIChhbmQgZWFy bGllciBpdGVyYXRpb25zIG9mCj4gIAkJICogdGhpcyBkcml2ZXIsIGJlZm9yZSB1cHN0cmVhbWlu ZyBkaWQgdGhpcykgaXQgZGlkbid0IHNlZW0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYmlvcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4g aW5kZXggNTk0OTc1MC4uODUyNmRhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9iaW9zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMK PiBAQCAtMzU2LDcgKzM1Niw3IEBAIHBhcnNlX3Nkdm9fcGFuZWxfZGF0YShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqcGFuZWxf Zml4ZWRfbW9kZTsKPiAgCWludCBpbmRleDsKPiAgCj4gLQlpbmRleCA9IGk5MTUudmJ0X3Nkdm9f cGFuZWxfdHlwZTsKPiArCWluZGV4ID0gaTkxNV9tb2RwYXJhbXMudmJ0X3Nkdm9fcGFuZWxfdHlw ZTsKPiAgCWlmIChpbmRleCA9PSAtMikgewo+ICAJCURSTV9ERUJVR19LTVMoIklnbm9yZSBTRFZP IHBhbmVsIG1vZGUgZnJvbSBCSU9TIFZCVCB0YWJsZXMuXG4iKTsKPiAgCQlyZXR1cm47Cj4gQEAg LTY3NSw4ICs2NzUsOSBAQCBwYXJzZV9lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICAJCXVpbnQ4X3QgdnN3aW5nOwo+ ICAKPiAgCQkvKiBEb24ndCByZWFkIGZyb20gVkJUIGlmIG1vZHVsZSBwYXJhbWV0ZXIgaGFzIHZh bGlkIHZhbHVlKi8KPiAtCQlpZiAoaTkxNS5lZHBfdnN3aW5nKSB7Cj4gLQkJCWRldl9wcml2LT52 YnQuZWRwLmxvd192c3dpbmcgPSBpOTE1LmVkcF92c3dpbmcgPT0gMTsKPiArCQlpZiAoaTkxNV9t b2RwYXJhbXMuZWRwX3Zzd2luZykgewo+ICsJCQlkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5n ID0KPiArCQkJCWk5MTVfbW9kcGFyYW1zLmVkcF92c3dpbmcgPT0gMTsKPiAgCQl9IGVsc2Ugewo+ ICAJCQl2c3dpbmcgPSAoZWRwLT5lZHBfdnN3aW5nX3ByZWVtcGggPj4gKHBhbmVsX3R5cGUgKiA0 KSkgJiAweEY7Cj4gIAkJCWRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcgPSB2c3dpbmcgPT0g MDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IGE3N2RkODAuLjk1NDA3MDIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IEBAIC03MTIsNyArNzEyLDcgQEAgaW50ZWxf Y3J0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJICogYnJva2Vu IG1vbml0b3IgKHdpdGhvdXQgZWRpZCkgdG8gd29yayBiZWhpbmQgYSBicm9rZW4ga3ZtICh0aGF0 IGZhaWxzCj4gIAkgKiB0byBoYXZlIHRoZSByaWdodCByZXNpc3RvcnMgZm9yIEhQIGRldGVjdGlv bikgbmVlZHMgdG8gZml4IHRoaXMgdXAuCj4gIAkgKiBGb3Igbm93IGp1c3QgYmFpbCBvdXQuICov Cj4gLQlpZiAoSTkxNV9IQVNfSE9UUExVRyhkZXZfcHJpdikgJiYgIWk5MTUubG9hZF9kZXRlY3Rf dGVzdCkgewo+ICsJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpICYmICFpOTE1X21vZHBh cmFtcy5sb2FkX2RldGVjdF90ZXN0KSB7Cj4gIAkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19k aXNjb25uZWN0ZWQ7Cj4gIAkJZ290byBvdXQ7Cj4gIAl9Cj4gQEAgLTczMCw3ICs3MzAsNyBAQCBp bnRlbF9jcnRfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gIAkJCXN0YXR1cyA9IGludGVsX2NydF9s b2FkX2RldGVjdChjcnQsCj4gIAkJCQl0b19pbnRlbF9jcnRjKGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMpLT5waXBlKTsKPiAtCQllbHNlIGlmIChpOTE1LmxvYWRfZGV0ZWN0X3Rlc3QpCj4gKwkJZWxz ZSBpZiAoaTkxNV9tb2RwYXJhbXMubG9hZF9kZXRlY3RfdGVzdCkKPiAgCQkJc3RhdHVzID0gY29u bmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gIAkJZWxzZQo+ICAJCQlzdGF0dXMgPSBjb25u ZWN0b3Jfc3RhdHVzX3Vua25vd247Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2Vf aW5mby5jCj4gaW5kZXggNDM4MzFiMC4uZmRmOWI1NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IEBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBpbnRlbF9k ZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDE7Cj4gIAl9Cj4gIAo+IC0JaWYgKGk5 MTUuZGlzYWJsZV9kaXNwbGF5KSB7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9kaXNw bGF5KSB7Cj4gIAkJRFJNX0lORk8oIkRpc3BsYXkgZGlzYWJsZWQgKG1vZHVsZSBwYXJhbWV0ZXIp XG4iKTsKPiAgCQlpbmZvLT5udW1fcGlwZXMgPSAwOwo+ICAJfSBlbHNlIGlmIChpbmZvLT5udW1f cGlwZXMgPiAwICYmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDg1 OTllNDIuLjcxY2RkNjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTM3MDEsNyArMzcwMSw3IEBAIHZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAKPiAgCS8qIHJlc2V0IGRvZXNuJ3QgdG91 Y2ggdGhlIGRpc3BsYXkgKi8KPiAtCWlmICghaTkxNS5mb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3Qg JiYKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0ICYmCj4g IAkgICAgIWdwdV9yZXNldF9jbG9iYmVyc19kaXNwbGF5KGRldl9wcml2KSkKPiAgCQlyZXR1cm47 Cj4gIAo+IEBAIC0zNzU3LDcgKzM3NTcsNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIHJl c2V0IGRvZXNuJ3QgdG91Y2ggdGhlIGRpc3BsYXkgKi8KPiAtCWlmICghaTkxNS5mb3JjZV9yZXNl dF9tb2Rlc2V0X3Rlc3QgJiYKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZm9yY2VfcmVzZXRfbW9k ZXNldF90ZXN0ICYmCj4gIAkgICAgIWdwdV9yZXNldF9jbG9iYmVyc19kaXNwbGF5KGRldl9wcml2 KSkKPiAgCQlyZXR1cm47Cj4gIAo+IEBAIC02MzEzLDcgKzYzMTMsNyBAQCBzdGF0aWMgdm9pZCBo c3dfY29tcHV0ZV9pcHNfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5pcHNf ZW5hYmxlZCA9IGk5MTUuZW5hYmxlX2lwcyAmJgo+ICsJcGlwZV9jb25maWctPmlwc19lbmFibGVk ID0gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2lwcyAmJgo+ICAJCWhzd19jcnRjX3N1cHBvcnRzX2lw cyhjcnRjKSAmJgo+ICAJCXBpcGVfY29uZmlnX3N1cHBvcnRzX2lwcyhkZXZfcHJpdiwgcGlwZV9j b25maWcpOwo+ICB9Cj4gQEAgLTY0OTQsOCArNjQ5NCw4IEBAIGludGVsX2xpbmtfY29tcHV0ZV9t X24oaW50IGJpdHNfcGVyX3BpeGVsLCBpbnQgbmxhbmVzLAo+ICAKPiAgc3RhdGljIGlubGluZSBi b29sIGludGVsX3BhbmVsX3VzZV9zc2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICB7Cj4gLQlpZiAoaTkxNS5wYW5lbF91c2Vfc3NjID49IDApCj4gLQkJcmV0dXJuIGk5MTUu cGFuZWxfdXNlX3NzYyAhPSAwOwo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLnBhbmVsX3VzZV9zc2Mg Pj0gMCkKPiArCQlyZXR1cm4gaTkxNV9tb2RwYXJhbXMucGFuZWxfdXNlX3NzYyAhPSAwOwo+ICAJ cmV0dXJuIGRldl9wcml2LT52YnQubHZkc191c2Vfc3NjCj4gIAkJJiYgIShkZXZfcHJpdi0+cXVp cmtzICYgUVVJUktfTFZEU19TU0NfRElTQUJMRSk7Cj4gIH0KPiBAQCAtMTIwODQsNyArMTIwODQs NyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAgCj4gLQkJaWYgKGk5MTUuZmFzdGJvb3QgJiYK PiArCQlpZiAoaTkxNV9tb2RwYXJhbXMuZmFzdGJvb3QgJiYKPiAgCQkgICAgaW50ZWxfcGlwZV9j b25maWdfY29tcGFyZShkZXZfcHJpdiwKPiAgCQkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9j cnRjX3N0YXRlKSwKPiAgCQkJCQlwaXBlX2NvbmZpZywgdHJ1ZSkpIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiBpbmRleCA4ODc5NTNjLi5hNDYzM2ViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4gQEAgLTM4MjYsNyArMzgyNiw3IEBAIGludGVsX2RwX2Nhbl9tc3Qoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJdTggbXN0bV9jYXA7Cj4gIAo+IC0JaWYgKCFpOTE1 LmVuYWJsZV9kcF9tc3QpCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9kcF9tc3QpCj4g IAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlmICghaW50ZWxfZHAtPmNhbl9tc3QpCj4gQEAgLTM4 NDQsNyArMzg0NCw3IEBAIGludGVsX2RwX2Nhbl9tc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgc3RhdGljIHZvaWQKPiAgaW50ZWxfZHBfY29uZmlndXJlX21zdChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlpZiAoIWk5MTUuZW5hYmxlX2RwX21zdCkKPiArCWlmICgh aTkxNV9tb2RwYXJhbXMuZW5hYmxlX2RwX21zdCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKCFp bnRlbF9kcC0+Y2FuX21zdCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfYXV4X2JhY2tsaWdodC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4 X2JhY2tsaWdodC5jCj4gaW5kZXggZDI4MzBiYS4uMmJiMmNlYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMKPiBAQCAtMjY0LDcgKzI2NCw3 IEBAIGludCBpbnRlbF9kcF9hdXhfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBh bmVsID0gJmludGVsX2Nvbm5lY3Rvci0+cGFuZWw7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9k cGNkX2JhY2tsaWdodCkKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2RwY2RfYmFja2xp Z2h0KQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCWlmICghaW50ZWxfZHBfYXV4X2Rpc3Bs YXlfY29udHJvbF9jYXBhYmxlKGludGVsX2Nvbm5lY3RvcikpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBpbmRleCAzMDc4MDc2Li42NDM1OGQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBAQCAtMTkwMiw3ICsxOTAyLDcgQEAgdm9pZCBpbnRlbF9pbml0X2lwYyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGludGVsX2VuYWJsZV9pcGMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgc3RhdGljIGlubGluZSBpbnQgaW50 ZWxfZW5hYmxlX3JjNih2b2lkKQo+ICB7Cj4gLQlyZXR1cm4gaTkxNS5lbmFibGVfcmM2Owo+ICsJ cmV0dXJuIGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9yYzY7Cj4gIH0KPiAgCj4gIC8qIGludGVsX3Nk dm8uYyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggM2Qx MzVjMy4uZDc1NWEyYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j Cj4gQEAgLTE1Myw3ICsxNTMsNyBAQCBfX2ludGVsX2VuZ2luZV9jb250ZXh0X3NpemUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBjbGFzcykKPiAgCQljYXNlIDk6Cj4gIAkJ CXJldHVybiBHRU45X0xSX0NPTlRFWFRfUkVOREVSX1NJWkU7Cj4gIAkJY2FzZSA4Ogo+IC0JCQly ZXR1cm4gaTkxNS5lbmFibGVfZXhlY2xpc3RzID8KPiArCQkJcmV0dXJuIGk5MTVfbW9kcGFyYW1z LmVuYWJsZV9leGVjbGlzdHMgPwo+ICAJCQkgICAgICAgR0VOOF9MUl9DT05URVhUX1JFTkRFUl9T SVpFIDoKPiAgCQkJICAgICAgIEdFTjhfQ1hUX1RPVEFMX1NJWkU7Cj4gIAkJY2FzZSA3Ogo+IEBA IC0zMDEsNyArMzAxLDcgQEAgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSZpbnRlbF9lbmdpbmVfY2xhc3Nlc1tlbmdpbmUtPmNs YXNzXTsKPiAgCQlpbnQgKCppbml0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ ICAKPiAtCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJCWlmIChpOTE1X21vZHBhcmFt cy5lbmFibGVfZXhlY2xpc3RzKQo+ICAJCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9leGVjbGlz dHM7Cj4gIAkJZWxzZQo+ICAJCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9sZWdhY3k7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBpbmRleCA1OGE3NzJkLi5hNjkwODkyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBib29sIGlu dGVsX2ZiY19jYW5fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9mYmMpIHsKPiAr CWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2ZiYykgewo+ICAJCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJkaXNhYmxlZCBwZXIgbW9kdWxlIHBhcmFtIG9yIGJ5IGRlZmF1bHQiOwo+ICAJCXJldHVy biBmYWxzZTsKPiAgCX0KPiBAQCAtMTMxMCw4ICsxMzEwLDggQEAgdm9pZCBpbnRlbF9mYmNfaW5p dF9waXBlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgICovCj4g IHN0YXRpYyBpbnQgaW50ZWxfc2FuaXRpemVfZmJjX29wdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChpOTE1LmVuYWJsZV9mYmMgPj0gMCkKPiAtCQly ZXR1cm4gISFpOTE1LmVuYWJsZV9mYmM7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2Zi YyA+PSAwKQo+ICsJCXJldHVybiAhIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9mYmM7Cj4gIAo+ICAJ aWYgKCFIQVNfRkJDKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMTM1NSw4ICsxMzU1 LDEwIEBAIHZvaWQgaW50ZWxfZmJjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJaWYgKG5lZWRfZmJjX3Z0ZF93YShkZXZfcHJpdikpCj4gIAkJbWt3cml0ZV9kZXZp Y2VfaW5mbyhkZXZfcHJpdiktPmhhc19mYmMgPSBmYWxzZTsKPiAgCj4gLQlpOTE1LmVuYWJsZV9m YmMgPSBpbnRlbF9zYW5pdGl6ZV9mYmNfb3B0aW9uKGRldl9wcml2KTsKPiAtCURSTV9ERUJVR19L TVMoIlNhbml0aXplZCBlbmFibGVfZmJjIHZhbHVlOiAlZFxuIiwgaTkxNS5lbmFibGVfZmJjKTsK PiArCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+ZW5hYmxlX2ZiYyA9Cj4gKwkJaW50ZWxfc2Fu aXRpemVfZmJjX29wdGlvbihkZXZfcHJpdik7Cj4gKwlEUk1fREVCVUdfS01TKCJTYW5pdGl6ZWQg ZW5hYmxlX2ZiYyB2YWx1ZTogJWRcbiIsCj4gKwkJICAgICAgaTkxNV9tb2RwYXJhbXMuZW5hYmxl X2ZiYyk7Cj4gIAo+ICAJaWYgKCFIQVNfRkJDKGRldl9wcml2KSkgewo+ICAJCWZiYy0+bm9fZmJj X3JlYXNvbiA9ICJ1bnN1cHBvcnRlZCBieSB0aGlzIGNoaXBzZXQiOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRleCA4YjBhZTdmLi5jOWUyNWJlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+IEBAIC0xMzEsMTQgKzEzMSwx NCBAQCBzdGF0aWMgdm9pZCBndWNfcGFyYW1zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAKPiAgCXBhcmFtc1tHVUNfQ1RMX0xPR19QQVJBTVNdID0gZ3VjLT5sb2cu ZmxhZ3M7Cj4gIAo+IC0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+PSAwKSB7Cj4gKwlpZiAoaTkx NV9tb2RwYXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAwKSB7Cj4gIAkJcGFyYW1zW0dVQ19DVExfREVC VUddID0KPiAtCQkJaTkxNS5ndWNfbG9nX2xldmVsIDw8IEdVQ19MT0dfVkVSQk9TSVRZX1NISUZU Owo+ICsJCQlpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsIDw8IEdVQ19MT0dfVkVSQk9TSVRZ X1NISUZUOwo+ICAJfSBlbHNlCj4gIAkJcGFyYW1zW0dVQ19DVExfREVCVUddID0gR1VDX0xPR19E SVNBQkxFRDsKPiAgCj4gIAkvKiBJZiBHdUMgc3VibWlzc2lvbiBpcyBlbmFibGVkLCBzZXQgdXAg YWRkaXRpb25hbCBwYXJhbWV0ZXJzIGhlcmUgKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbikgewo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikg ewo+ICAJCXUzMiBhZHMgPSBndWNfZ2d0dF9vZmZzZXQoZ3VjLT5hZHNfdm1hKSA+PiBQQUdFX1NI SUZUOwo+ICAJCXUzMiBwZ3MgPSBndWNfZ2d0dF9vZmZzZXQoZGV2X3ByaXYtPmd1Yy5zdGFnZV9k ZXNjX3Bvb2wpOwo+ICAJCXUzMiBjdHhfaW5fMTYgPSBHVUNfTUFYX1NUQUdFX0RFU0NSSVBUT1JT IC8gMTY7Cj4gQEAgLTM2OCw3ICszNjgsOCBAQCBpbnQgaW50ZWxfZ3VjX2luaXRfaHcoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAJZ3VjLT5mdy5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX1NVQ0NFU1M7Cj4gIAo+ICAJRFJNX0lORk8oIkd1QyAlcyAoZmlybXdhcmUgJXMgW3ZlcnNp b24gJXUuJXVdKVxuIiwKPiAtCQkgaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPyAic3VibWlz c2lvbiBlbmFibGVkIiA6ICJsb2FkZWQiLAo+ICsJCSBpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3Vj X3N1Ym1pc3Npb24gPyAic3VibWlzc2lvbiBlbmFibGVkIiA6Cj4gKwkJCQkJCQkibG9hZGVkIiwK PiAgCQkgZ3VjLT5mdy5wYXRoLAo+ICAJCSBndWMtPmZ3Lm1ham9yX3Zlcl9mb3VuZCwgZ3VjLT5m dy5taW5vcl92ZXJfZm91bmQpOwo+ICAKPiBAQCAtMzkwLDggKzM5MSw4IEBAIGludCBpbnRlbF9n dWNfc2VsZWN0X2Z3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWd1Yy0+ZncubG9hZF9zdGF0 dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOwo+ICAJZ3VjLT5mdy50eXBlID0gSU5URUxfVUNf RldfVFlQRV9HVUM7Cj4gIAo+IC0JaWYgKGk5MTUuZ3VjX2Zpcm13YXJlX3BhdGgpIHsKPiAtCQln dWMtPmZ3LnBhdGggPSBpOTE1Lmd1Y19maXJtd2FyZV9wYXRoOwo+ICsJaWYgKGk5MTVfbW9kcGFy YW1zLmd1Y19maXJtd2FyZV9wYXRoKSB7Cj4gKwkJZ3VjLT5mdy5wYXRoID0gaTkxNV9tb2RwYXJh bXMuZ3VjX2Zpcm13YXJlX3BhdGg7Cj4gIAkJZ3VjLT5mdy5tYWpvcl92ZXJfd2FudGVkID0gMDsK PiAgCQlndWMtPmZ3Lm1pbm9yX3Zlcl93YW50ZWQgPSAwOwo+ICAJfSBlbHNlIGlmIChJU19TS1lM QUtFKGRldl9wcml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKPiBpbmRl eCAxNmQzYjg3Li44ZjkzNzc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2cuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cu Ywo+IEBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIGludCBndWNfbG9nX3JlbGF5X2ZpbGVfY3Jl YXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCXN0cnVjdCBkZW50cnkgKmxvZ19kaXI7Cj4g IAlpbnQgcmV0Owo+ICAKPiAtCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQo+ICsJaWYgKGk5 MTVfbW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPCAwKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCS8q IEZvciBub3cgY3JlYXRlIHRoZSBsb2cgZmlsZSBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy9kcmkvMCBk aXIgKi8KPiBAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19sYXRlX3NldHVw KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWd1Y19sb2dfcnVudGltZV9kZXN0cm95KGd1Yyk7 Cj4gIGVycjoKPiAgCS8qIGxvZ2dpbmcgd2lsbCByZW1haW4gb2ZmICovCj4gLQlpOTE1Lmd1Y19s b2dfbGV2ZWwgPSAtMTsKPiArCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+Z3VjX2xvZ19sZXZl bCA9IC0xOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtNTAyLDcgKzUwMiw4IEBAIHN0 YXRpYyB2b2lkIGd1Y19mbHVzaF9sb2dzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiAg Cj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uIHx8IChpOTE1Lmd1Y19sb2dfbGV2 ZWwgPCAwKSkKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uIHx8 Cj4gKwkgICAgKGk5MTVfbW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPCAwKSkKPiAgCQlyZXR1cm47 Cj4gIAo+ICAJLyogRmlyc3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0cywgd2lsbCBiZSByZW5hYmxl ZCBhZnRlcndhcmRzICovCj4gQEAgLTUyOSw4ICs1MzAsOCBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19j cmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAKPiAgCUdFTV9CVUdfT04oZ3VjLT5sb2cu dm1hKTsKPiAgCj4gLQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID4gR1VDX0xPR19WRVJCT1NJVFlf TUFYKQo+IC0JCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IEdVQ19MT0dfVkVSQk9TSVRZX01BWDsKPiAr CWlmIChpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsID4gR1VDX0xPR19WRVJCT1NJVFlfTUFY KQo+ICsJCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+Z3VjX2xvZ19sZXZlbCA9IEdVQ19MT0df VkVSQk9TSVRZX01BWDsKPiAgCj4gIAkvKiBUaGUgZmlyc3QgcGFnZSBpcyB0byBzYXZlIGxvZyBi dWZmZXIgc3RhdGUuIEFsbG9jYXRlIG9uZQo+ICAJICogZXh0cmEgcGFnZSBmb3Igb3RoZXJzIGlu IGNhc2UgZm9yIG92ZXJsYXAgKi8KPiBAQCAtNTU1LDcgKzU1Niw3IEBAIGludCBpbnRlbF9ndWNf bG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIAo+ICAJZ3VjLT5sb2cudm1hID0g dm1hOwo+ICAKPiAtCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkgewo+ICsJaWYgKGk5MTVf bW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPj0gMCkgewo+ICAJCXJldCA9IGd1Y19sb2dfcnVudGlt ZV9jcmVhdGUoZ3VjKTsKPiAgCQlpZiAocmV0IDwgMCkKPiAgCQkJZ290byBlcnJfdm1hOwo+IEBA IC01NzYsNyArNTc3LDcgQEAgaW50IGludGVsX2d1Y19sb2dfY3JlYXRlKHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKPiAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxvZy52bWEpOwo+ ICBlcnI6Cj4gIAkvKiBsb2dnaW5nIHdpbGwgYmUgb2ZmICovCj4gLQlpOTE1Lmd1Y19sb2dfbGV2 ZWwgPSAtMTsKPiArCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+Z3VjX2xvZ19sZXZlbCA9IC0x Owo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtNjAwLDcgKzYwMSw3IEBAIGludCBpOTE1 X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBj b250cm9sX3ZhbCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAkvKiBUaGlzIGNvbWJpbmF0 aW9uIGRvZXNuJ3QgbWFrZSBzZW5zZSAmIHdvbid0IGhhdmUgYW55IGVmZmVjdCAqLwo+IC0JaWYg KCFsb2dfcGFyYW0ubG9nZ2luZ19lbmFibGVkICYmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKSkK PiArCWlmICghbG9nX3BhcmFtLmxvZ2dpbmdfZW5hYmxlZCAmJiAoaTkxNV9tb2RwYXJhbXMuZ3Vj X2xvZ19sZXZlbCA8IDApKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGd1Y19sb2dfY29u dHJvbChndWMsIGxvZ19wYXJhbS52YWx1ZSk7Cj4gQEAgLTYxMCw3ICs2MTEsNyBAQCBpbnQgaTkx NV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQg Y29udHJvbF92YWwpCj4gIAl9Cj4gIAo+ICAJaWYgKGxvZ19wYXJhbS5sb2dnaW5nX2VuYWJsZWQp IHsKPiAtCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBsb2dfcGFyYW0udmVyYm9zaXR5Owo+ICsJCWk5 MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+Z3VjX2xvZ19sZXZlbCA9IGxvZ19wYXJhbS52ZXJib3Np dHk7Cj4gIAo+ICAJCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0IGFzIC0xIGF0IGJvb3QgdGltZSwg dGhlbiB0aGUgcmVsYXkgY2hhbm5lbCBmaWxlCj4gIAkJICogd291bGRuJ3QgaGF2ZSBiZWVuIGNy ZWF0ZWQgYnkgbm93IGFuZCBpbnRlcnJ1cHRzIGFsc28gd291bGQgbm90IGhhdmUKPiBAQCAtNjMz LDcgKzYzNCw3IEBAIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCkKPiAgCQlndWNfZmx1c2hfbG9ncyhndWMp Owo+ICAKPiAgCQkvKiBBcyBsb2dnaW5nIGlzIGRpc2FibGVkLCB1cGRhdGUgbG9nIGxldmVsIHRv IHJlZmxlY3QgdGhhdCAqLwo+IC0JCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0xOwo+ICsJCWk5MTVf bW9kcGFyYW1zX21rd3JpdGUoKS0+Z3VjX2xvZ19sZXZlbCA9IC0xOwo+ICAJfQo+ICAKPiAgCXJl dHVybiByZXQ7Cj4gQEAgLTY0MSw3ICs2NDIsOCBAQCBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2wo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpCj4gIAo+ ICB2b2lkIGk5MTVfZ3VjX2xvZ19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAtCWlmICghaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gfHwgaTkxNS5n dWNfbG9nX2xldmVsIDwgMCkKPiArCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJt aXNzaW9uIHx8Cj4gKwkgICAgKGk5MTVfbW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPCAwKSkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+IEBAIC02NTEsNyArNjUzLDcgQEAgdm9pZCBpOTE1X2d1Y19sb2dfcmVnaXN0ZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgdm9pZCBpOTE1X2d1Y19sb2dfdW5y ZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmICgh aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJs ZV9ndWNfc3VibWlzc2lvbikKPiAgCQlyZXR1cm47Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jCj4gaW5kZXgg YzE3ZWQwZS4uOTUwNTA3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jCj4gQEAgLTU4 LDcgKzU4LDcgQEAgc3RhdGljIGJvb2wgaXNfc3VwcG9ydGVkX2RldmljZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqLwo+ICB2b2lkIGludGVsX2d2dF9zYW5pdGl6ZV9v cHRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKCFp OTE1LmVuYWJsZV9ndnQpCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndnQpCj4gIAkJ cmV0dXJuOwo+ICAKPiAgCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpIHsKPiBAQCAt NzMsNyArNzMsNyBAQCB2b2lkIGludGVsX2d2dF9zYW5pdGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlyZXR1cm47Cj4gIGJhaWw6Cj4gLQlpOTE1 LmVuYWJsZV9ndnQgPSAwOwo+ICsJaTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5lbmFibGVfZ3Z0 ID0gMDsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTkwLDE3ICs5MCwxNyBAQCBpbnQgaW50ZWxfZ3Z0 X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpbnQgcmV0 Owo+ICAKPiAtCWlmICghaTkxNS5lbmFibGVfZ3Z0KSB7Cj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1z LmVuYWJsZV9ndnQpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJHVlQtZyBpcyBkaXNhYmxlZCBi eSBrZXJuZWwgcGFyYW1zXG4iKTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQlpZiAoIWk5 MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICsJaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhl Y2xpc3RzKSB7Cj4gIAkJRFJNX0VSUk9SKCJpOTE1IEdWVC1nIGxvYWRpbmcgZmFpbGVkIGR1ZSB0 byBkaXNhYmxlZCBleGVjbGlzdHMgbW9kZVxuIik7Cj4gIAkJcmV0dXJuIC1FSU87Cj4gIAl9Cj4g IAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gIAkJRFJNX0VSUk9SKCJpOTE1IEdWVC1n IGxvYWRpbmcgZmFpbGVkIGR1ZSB0byBHcmFwaGljcyB2aXJ0dWFsaXphdGlvbiBpcyBub3QgeWV0 IHN1cHBvcnRlZCB3aXRoIEd1QyBzdWJtaXNzaW9uXG4iKTsKPiAgCQlyZXR1cm4gLUVJTzsKPiAg CX0KPiBAQCAtMTIzLDcgKzEyMyw3IEBAIGludCBpbnRlbF9ndnRfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGJhaWw6Cj4gLQlpOTE1 LmVuYWJsZV9ndnQgPSAwOwo+ICsJaTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5lbmFibGVfZ3Z0 ID0gMDsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hh bmdjaGVjay5jCj4gaW5kZXggZDlkODdkOS4uMTJhYzI3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCXVuc2ln bmVkIGludCBodW5nID0gMCwgc3R1Y2sgPSAwOwo+ICAJaW50IGJ1c3lfY291bnQgPSAwOwo+ICAK PiAtCWlmICghaTkxNS5lbmFibGVfaGFuZ2NoZWNrKQo+ICsJaWYgKCFpOTE1X21vZHBhcmFtcy5l bmFibGVfaGFuZ2NoZWNrKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoIVJFQURfT05DRShkZXZf cHJpdi0+Z3QuYXdha2UpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9odWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jCj4gaW5kZXggNjE0NWZh MC4uNmUxNzc5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jCj4gQEAgLTE1NSw4ICsx NTUsOCBAQCB2b2lkIGludGVsX2h1Y19zZWxlY3RfZncoc3RydWN0IGludGVsX2h1YyAqaHVjKQo+ ICAJaHVjLT5mdy5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7Cj4gIAlodWMt PmZ3LnR5cGUgPSBJTlRFTF9VQ19GV19UWVBFX0hVQzsKPiAgCj4gLQlpZiAoaTkxNS5odWNfZmly bXdhcmVfcGF0aCkgewo+IC0JCWh1Yy0+ZncucGF0aCA9IGk5MTUuaHVjX2Zpcm13YXJlX3BhdGg7 Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuaHVjX2Zpcm13YXJlX3BhdGgpIHsKPiArCQlodWMtPmZ3 LnBhdGggPSBpOTE1X21vZHBhcmFtcy5odWNfZmlybXdhcmVfcGF0aDsKPiAgCQlodWMtPmZ3Lm1h am9yX3Zlcl93YW50ZWQgPSAwOwo+ICAJCWh1Yy0+ZncubWlub3JfdmVyX3dhbnRlZCA9IDA7Cj4g IAl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBpbmRleCA4NmZlZDlmLi45NTVjODc5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhl Y2xpc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGVuYWJsCj4gIAo+ ICAJaWYgKEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2X3ByaXYpICYmCj4gIAkgICAgVVNF U19QUEdUVChkZXZfcHJpdikgJiYKPiAtCSAgICBpOTE1LnVzZV9tbWlvX2ZsaXAgPj0gMCkKPiAr CSAgICBpOTE1X21vZHBhcmFtcy51c2VfbW1pb19mbGlwID49IDApCj4gIAkJcmV0dXJuIDE7Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTEzMjQsNyArMTMyNCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9p bml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWVuZ2lu ZS0+Y3NiX2hlYWQgPSAtMTsKPiAgCj4gIAkvKiBBZnRlciBhIEdQVSByZXNldCwgd2UgbWF5IGhh dmUgcmVxdWVzdHMgdG8gcmVwbGF5ICovCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNz aW9uICYmIGVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QpCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVu YWJsZV9ndWNfc3VibWlzc2lvbiAmJiBlbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0KQo+ICAJCXRhc2ts ZXRfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKPiBpbmRleCBhOTgxM2FlLi5hNTU5NTRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IEBAIC04ODAsOCArODgwLDggQEAgc3RhdGljIGJv b2wgY29tcHV0ZV9pc19kdWFsX2xpbmtfbHZkcyhzdHJ1Y3QgaW50ZWxfbHZkc19lbmNvZGVyICps dmRzX2VuY29kZXIpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gIAo+ICAJLyogdXNlIHRoZSBtb2R1bGUgb3B0aW9uIHZhbHVlIGlmIHNwZWNp ZmllZCAqLwo+IC0JaWYgKGk5MTUubHZkc19jaGFubmVsX21vZGUgPiAwKQo+IC0JCXJldHVybiBp OTE1Lmx2ZHNfY2hhbm5lbF9tb2RlID09IDI7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMubHZkc19j aGFubmVsX21vZGUgPiAwKQo+ICsJCXJldHVybiBpOTE1X21vZHBhcmFtcy5sdmRzX2NoYW5uZWxf bW9kZSA9PSAyOwo+ICAKPiAgCS8qIHNpbmdsZSBjaGFubmVsIExWRFMgaXMgbGltaXRlZCB0byAx MTIgTUh6ICovCj4gIAlpZiAobHZkc19lbmNvZGVyLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2Uu cGFuZWwuZml4ZWRfbW9kZS0+Y2xvY2sKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ByZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9u LmMKPiBpbmRleCA5ODE1NGVmLi4xZDk0NjI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vcHJlZ2lvbi5jCj4gQEAgLTkyMSw3ICs5MjEsNyBAQCBzdGF0aWMgaW50IGludGVsX2xvYWRf dmJ0X2Zpcm13YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJ c3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9ICZkZXZfcHJpdi0+b3ByZWdpb247Cj4g IAljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDsKPiAtCWNvbnN0IGNoYXIgKm5hbWUg PSBpOTE1LnZidF9maXJtd2FyZTsKPiArCWNvbnN0IGNoYXIgKm5hbWUgPSBpOTE1X21vZHBhcmFt cy52YnRfZmlybXdhcmU7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICghbmFtZSB8fCAhKm5hbWUp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggM2IxYzVkNy4uYWRjNTFlNCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0zNzksMTMgKzM3OSwxMyBA QCBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCj4gIGludGVsX3BhbmVsX2RldGVjdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCS8qIEFzc3VtZSB0aGF0IHRoZSBC SU9TIGRvZXMgbm90IGxpZSB0aHJvdWdoIHRoZSBPcFJlZ2lvbi4uLiAqLwo+IC0JaWYgKCFpOTE1 LnBhbmVsX2lnbm9yZV9saWQgJiYgZGV2X3ByaXYtPm9wcmVnaW9uLmxpZF9zdGF0ZSkgewo+ICsJ aWYgKCFpOTE1X21vZHBhcmFtcy5wYW5lbF9pZ25vcmVfbGlkICYmIGRldl9wcml2LT5vcHJlZ2lv bi5saWRfc3RhdGUpIHsKPiAgCQlyZXR1cm4gKmRldl9wcml2LT5vcHJlZ2lvbi5saWRfc3RhdGUg JiAweDEgPwo+ICAJCQljb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCA6Cj4gIAkJCWNvbm5lY3Rv cl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ICAJfQo+ICAKPiAtCXN3aXRjaCAoaTkxNS5wYW5lbF9p Z25vcmVfbGlkKSB7Cj4gKwlzd2l0Y2ggKGk5MTVfbW9kcGFyYW1zLnBhbmVsX2lnbm9yZV9saWQp IHsKPiAgCWNhc2UgLTI6Cj4gIAkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ ICAJY2FzZSAtMToKPiBAQCAtNDY1LDEwICs0NjUsMTAgQEAgc3RhdGljIHUzMiBpbnRlbF9wYW5l bF9jb21wdXRlX2JyaWdodG5lc3Moc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ICAKPiAgCVdBUk5fT04ocGFuZWwtPmJhY2tsaWdodC5tYXggPT0gMCk7Cj4gIAo+IC0JaWYgKGk5 MTUuaW52ZXJ0X2JyaWdodG5lc3MgPCAwKQo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmludmVydF9i cmlnaHRuZXNzIDwgMCkKPiAgCQlyZXR1cm4gdmFsOwo+ICAKPiAtCWlmIChpOTE1LmludmVydF9i cmlnaHRuZXNzID4gMCB8fAo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmludmVydF9icmlnaHRuZXNz ID4gMCB8fAo+ICAJICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19JTlZFUlRfQlJJR0hUTkVT Uykgewo+ICAJCXJldHVybiBwYW5lbC0+YmFja2xpZ2h0Lm1heCAtIHZhbCArIHBhbmVsLT5iYWNr bGlnaHQubWluOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDk0NjI0ZWQu LjlhN2Y3YWNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc4MjUsNyArNzgy NSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJICogUlBNIGRlcGVuZHMgb24gUkM2IHRvIHNhdmUgcmVzdG9yZSB0 aGUgR1QgSFcgY29udGV4dCwgc28gbWFrZSBSQzYgYQo+ICAJICogcmVxdWlyZW1lbnQuCj4gIAkg Ki8KPiAtCWlmICghaTkxNS5lbmFibGVfcmM2KSB7Cj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVu YWJsZV9yYzYpIHsKPiAgCQlEUk1fSU5GTygiUkM2IGRpc2FibGVkLCBkaXNhYmxpbmcgcnVudGlt ZSBQTSBzdXBwb3J0XG4iKTsKPiAgCQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4g IAl9Cj4gQEAgLTc4ODIsNyArNzg4Miw3IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9ndF9wb3dlcnNh dmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKQo+ICAJCXZhbGxleXZpZXdfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2X3By aXYpOwo+ICAKPiAtCWlmICghaTkxNS5lbmFibGVfcmM2KQo+ICsJaWYgKCFpOTE1X21vZHBhcmFt cy5lbmFibGVfcmM2KQo+ICAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAgfQo+ ICAKPiBAQCAtODAwNCw3ICs4MDA0LDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9hdXRvZW5hYmxl X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAlpZiAoSVNfRVJSKHJl cSkpCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMg JiYgaTkxNV9zd2l0Y2hfY29udGV4dChyZXEpID09IDApCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1z LmVuYWJsZV9leGVjbGlzdHMgJiYgaTkxNV9zd2l0Y2hfY29udGV4dChyZXEpID09IDApCj4gIAkJ cmNzLT5pbml0X2NvbnRleHQocmVxKTsKPiAgCj4gIAkvKiBNYXJrIHRoZSBkZXZpY2UgYnVzeSwg Y2FsbGluZyBpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKCkgKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYwo+IGluZGV4IDU1YjQwMDIuLmEyMzBjNGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYwo+IEBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyX21hdGNo X2NvbmRpdGlvbnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAl9Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9wc3IpIHsKPiArCWlmICghaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX3Bzcikgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZs YWdcbiIpOwo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiBAQCAtOTQyLDggKzk0Miw4IEBAIHZv aWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ CUhTV19FRFBfUFNSX0JBU0UgOiBCRFdfRURQX1BTUl9CQVNFOwo+ICAKPiAgCS8qIFBlciBwbGF0 Zm9ybSBkZWZhdWx0OiBhbGwgZGlzYWJsZWQuICovCj4gLQlpZiAoaTkxNS5lbmFibGVfcHNyID09 IC0xKQo+IC0JCWk5MTUuZW5hYmxlX3BzciA9IDA7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5h YmxlX3BzciA9PSAtMSkKPiArCQlpOTE1X21vZHBhcmFtc19ta3dyaXRlKCktPmVuYWJsZV9wc3Ig PSAwOwo+ICAKPiAgCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwo+ ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4g QEAgLTk1NywxMSArOTU3LDExIEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2 X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rOwo+ICAKPiAgCS8qIE92ZXJyaWRlIGxpbmtfc3RhbmRi eSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovCj4gLQlpZiAoaTkxNS5lbmFibGVfcHNyID09IDIgJiYg IWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KSB7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5h YmxlX3BzciA9PSAyICYmICFkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICAJCURSTV9E RUJVR19LTVMoIlBTUjogRm9yY2luZyBsaW5rIHN0YW5kYnlcbiIpOwo+ICAJCWRldl9wcml2LT5w c3IubGlua19zdGFuZGJ5ID0gdHJ1ZTsKPiAgCX0KPiAtCWlmIChpOTE1LmVuYWJsZV9wc3IgPT0g MyAmJiBkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICsJaWYgKGk5MTVfbW9kcGFyYW1z LmVuYWJsZV9wc3IgPT0gMyAmJiBkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICAJCURS TV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBtYWluIGxpbmsgb2ZmXG4iKTsKPiAgCQlkZXZfcHJp di0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA4NWU2NGE0Li41ZGRjODRlMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTg4Miw3ICsxODgyLDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfcmluZ19pbml0X3NlbWFwaG9yZXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAg CWludCByZXQsIGk7Cj4gIAo+IC0JaWYgKCFpOTE1LnNlbWFwaG9yZXMpCj4gKwlpZiAoIWk5MTVf bW9kcGFyYW1zLnNlbWFwaG9yZXMpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDggJiYgIWRldl9wcml2LT5zZW1hcGhvcmUpIHsKPiBAQCAtMTk4Miw3ICsx OTgyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19pbml0X3NlbWFwaG9yZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ ICBlcnI6Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUgc3BhY2UgZm9y IHNlbWFwaG9yZXMsIGRpc2FibGluZ1xuIik7Cj4gLQlpOTE1LnNlbWFwaG9yZXMgPSAwOwo+ICsJ aTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5zZW1hcGhvcmVzID0gMDsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgaW50ZWxfcmluZ19pbml0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gQEAgLTIwMzksNyArMjAzOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3JpbmdfZGVm YXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCWVu Z2luZS0+ZW1pdF9icmVhZGNydW1iID0gaTl4eF9lbWl0X2JyZWFkY3J1bWI7Cj4gIAllbmdpbmUt PmVtaXRfYnJlYWRjcnVtYl9zeiA9IGk5eHhfZW1pdF9icmVhZGNydW1iX3N6Owo+IC0JaWYgKGk5 MTUuc2VtYXBob3Jlcykgewo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLnNlbWFwaG9yZXMpIHsKPiAg CQlpbnQgbnVtX3JpbmdzOwo+ICAKPiAgCQllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYiA9IGdlbjZf c2VtYV9lbWl0X2JyZWFkY3J1bWI7Cj4gQEAgLTIwODMsNyArMjA4Myw3IEBAIGludCBpbnRlbF9p bml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g IAkJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWIgPSBnZW44X3JlbmRlcl9lbWl0X2JyZWFkY3J1bWI7 Cj4gIAkJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3ogPSBnZW44X3JlbmRlcl9lbWl0X2JyZWFk Y3J1bWJfc3o7Cj4gIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9yZW5kZXJfcmluZ19mbHVz aDsKPiAtCQlpZiAoaTkxNS5zZW1hcGhvcmVzKSB7Cj4gKwkJaWYgKGk5MTVfbW9kcGFyYW1zLnNl bWFwaG9yZXMpIHsKPiAgCQkJaW50IG51bV9yaW5nczsKPiAgCj4gIAkJCWVuZ2luZS0+c2VtYXBo b3JlLnNpZ25hbCA9IGdlbjhfcmNzX3NpZ25hbDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gaW5kZXggYTNiZmI5Zi4uNjFkNDFhZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtMjQxMyw3ICsyNDEzLDcgQEAgc3RhdGlj IHVpbnQzMl90IGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCW1hc2sgPSAwOwo+ICAJfQo+ICAKPiAtCWlmICghaTkxNS5kaXNh YmxlX3Bvd2VyX3dlbGwpCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2Vs bCkKPiAgCQltYXhfZGMgPSAwOwo+ICAKPiAgCWlmIChlbmFibGVfZGMgPj0gMCAmJiBlbmFibGVf ZGMgPD0gbWF4X2RjKSB7Cj4gQEAgLTI0NzEsMTAgKzI0NzEsMTEgQEAgaW50IGludGVsX3Bvd2Vy X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAg CXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBv d2VyX2RvbWFpbnM7Cj4gIAo+IC0JaTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwgPSBzYW5pdGl6ZV9k aXNhYmxlX3Bvd2VyX3dlbGxfb3B0aW9uKGRldl9wcml2LAo+IC0JCQkJCQkgICAgIGk5MTUuZGlz YWJsZV9wb3dlcl93ZWxsKTsKPiAtCWRldl9wcml2LT5jc3IuYWxsb3dlZF9kY19tYXNrID0gZ2V0 X2FsbG93ZWRfZGNfbWFzayhkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICBpOTE1LmVuYWJsZV9kYyk7 Cj4gKwlpOTE1X21vZHBhcmFtc19ta3dyaXRlKCktPmRpc2FibGVfcG93ZXJfd2VsbCA9Cj4gKwkJ c2FuaXRpemVfZGlzYWJsZV9wb3dlcl93ZWxsX29wdGlvbihkZXZfcHJpdiwKPiArCQkJCQkJICAg aTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsKTsKPiArCWRldl9wcml2LT5jc3IuYWxs b3dlZF9kY19tYXNrID0KPiArCQlnZXRfYWxsb3dlZF9kY19tYXNrKGRldl9wcml2LCBpOTE1X21v ZHBhcmFtcy5lbmFibGVfZGMpOwo+ICAKPiAgCUJVSUxEX0JVR19PTihQT1dFUl9ET01BSU5fTlVN ID4gNjQpOwo+ICAKPiBAQCAtMjUzNSw3ICsyNTM2LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21h aW5zX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfZGlz cGxheV9zZXRfaW5pdF9wb3dlcihkZXZfcHJpdiwgdHJ1ZSk7Cj4gIAo+ICAJLyogUmVtb3ZlIHRo ZSByZWZjb3VudCB3ZSB0b29rIHRvIGtlZXAgcG93ZXIgd2VsbCBzdXBwb3J0IGRpc2FibGVkLiAq Lwo+IC0JaWYgKCFpOTE1LmRpc2FibGVfcG93ZXJfd2VsbCkKPiArCWlmICghaTkxNV9tb2RwYXJh bXMuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9w cml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gIAo+ICAJLyoKPiBAQCAtMjk5NSw3ICsyOTk2LDcg QEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBib29sIHJlc3VtZSkKPiAgCS8qIEZvciBub3csIHdlIG5lZWQgdGhlIHBv d2VyIHdlbGwgdG8gYmUgYWx3YXlzIGVuYWJsZWQuICovCj4gIAlpbnRlbF9kaXNwbGF5X3NldF9p bml0X3Bvd2VyKGRldl9wcml2LCB0cnVlKTsKPiAgCS8qIERpc2FibGUgcG93ZXIgc3VwcG9ydCBp ZiB0aGUgdXNlciBhc2tlZCBzby4gKi8KPiAtCWlmICghaTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwp Cj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCkKPiAgCQlpbnRlbF9k aXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwo+ICAJaW50ZWxf cG93ZXJfZG9tYWluc19zeW5jX2h3KGRldl9wcml2KTsKPiAgCXBvd2VyX2RvbWFpbnMtPmluaXRp YWxpemluZyA9IGZhbHNlOwo+IEBAIC0zMDE0LDcgKzMwMTUsNyBAQCB2b2lkIGludGVsX3Bvd2Vy X2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkg KiBFdmVuIGlmIHBvd2VyIHdlbGwgc3VwcG9ydCB3YXMgZGlzYWJsZWQgd2Ugc3RpbGwgd2FudCB0 byBkaXNhYmxlCj4gIAkgKiBwb3dlciB3ZWxscyB3aGlsZSB3ZSBhcmUgc3lzdGVtIHN1c3BlbmRl ZC4KPiAgCSAqLwo+IC0JaWYgKCFpOTE1LmRpc2FibGVfcG93ZXJfd2VsbCkKPiArCWlmICghaTkx NV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gIAo+ICAJaWYgKElTX0NBTk5PTkxB S0UoZGV2X3ByaXYpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+IGluZGV4IDAxNzhiYTQuLmRi OWZmZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiBAQCAtNjMsMzUgKzYzLDM3IEBA IHN0YXRpYyBpbnQgX19pbnRlbF91Y19yZXNldF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIHZvaWQgaW50ZWxfdWNfc2FuaXRpemVfb3B0aW9ucyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWlmICghSEFTX0dVQyhkZXZfcHJpdikpIHsK PiAtCQlpZiAoaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPiAwIHx8Cj4gLQkJICAgIGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uID4gMCkKPiArCQlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1 Y19sb2FkaW5nID4gMCB8fAo+ICsJCSAgICBpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjX3N1Ym1p c3Npb24gPiAwKQo+ICAJCQlEUk1fSU5GTygiSWdub3JpbmcgR3VDIG9wdGlvbnMsIG5vIGhhcmR3 YXJlXG4iKTsKPiAgCj4gLQkJaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPSAwOwo+IC0JCWk5MTUu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMDsKPiArCQlpOTE1X21vZHBhcmFtc19ta3dyaXRlKCkt PmVuYWJsZV9ndWNfbG9hZGluZyA9IDA7Cj4gKwkJaTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5l bmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gIAkvKiBB IG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIgKi8KPiAtCWlmIChp OTE1LmVuYWJsZV9ndWNfbG9hZGluZyA8IDApCj4gLQkJaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcg PSBIQVNfR1VDX1VDT0RFKGRldl9wcml2KTsKPiArCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVf Z3VjX2xvYWRpbmcgPCAwKQo+ICsJCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+ZW5hYmxlX2d1 Y19sb2FkaW5nID0KPiArCQkJSEFTX0dVQ19VQ09ERShkZXZfcHJpdik7Cj4gIAo+ICAJLyogVmVy aWZ5IGZpcm13YXJlIHZlcnNpb24gKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykg ewo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZykgewo+ICAJCWlmIChI QVNfSFVDX1VDT0RFKGRldl9wcml2KSkKPiAgCQkJaW50ZWxfaHVjX3NlbGVjdF9mdygmZGV2X3By aXYtPmh1Yyk7Cj4gIAo+ICAJCWlmIChpbnRlbF9ndWNfc2VsZWN0X2Z3KCZkZXZfcHJpdi0+Z3Vj KSkKPiAtCQkJaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPSAwOwo+ICsJCQlpOTE1X21vZHBhcmFt c19ta3dyaXRlKCktPmVuYWJsZV9ndWNfbG9hZGluZyA9IDA7Cj4gIAl9Cj4gIAo+ICAJLyogQ2Fu J3QgZW5hYmxlIGd1YyBzdWJtaXNzaW9uIHdpdGhvdXQgZ3VjIGxvYWRlZCAqLwo+IC0JaWYgKCFp OTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiAtCQlpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9 IDA7Cj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZykKPiArCQlpOTE1 X21vZHBhcmFtc19ta3dyaXRlKCktPmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4gIAo+ICAJ LyogQSBuZWdhdGl2ZSB2YWx1ZSBtZWFucyAidXNlIHBsYXRmb3JtIGRlZmF1bHQiICovCj4gLQlp ZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPCAwKQo+IC0JCWk5MTUuZW5hYmxlX2d1Y19z dWJtaXNzaW9uID0gSEFTX0dVQ19TQ0hFRChkZXZfcHJpdik7Cj4gKwlpZiAoaTkxNV9tb2RwYXJh bXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uIDwgMCkKPiArCQlpOTE1X21vZHBhcmFtc19ta3dyaXRl KCktPmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9Cj4gKwkJCUhBU19HVUNfU0NIRUQoZGV2X3ByaXYp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW44X2d1Y19yYWlzZV9pcnEoc3RydWN0IGludGVs X2d1YyAqZ3VjKQo+IEBAIC0yOTAsNyArMjkyLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfc2Vu ZF9yZWdzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCj4gIHN0YXRpYyB2b2lkIGd1Y19jYXB0 dXJlX2xvYWRfZXJyX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIHsKPiAtCWlmICghZ3Vj LT5sb2cudm1hIHx8IGk5MTUuZ3VjX2xvZ19sZXZlbCA8IDApCj4gKwlpZiAoIWd1Yy0+bG9nLnZt YSB8fCBpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsIDwgMCkKPiAgCQlyZXR1cm47Cj4gIAo+ ICAJaWYgKCFndWMtPmxvYWRfZXJyX2xvZykKPiBAQCAtMzMzLDcgKzMzNSw3IEBAIGludCBpbnRl bF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXN0cnVj dCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwo+ICAJaW50IHJldCwgYXR0ZW1wdHM7 Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiArCWlmICghaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWd1Y19kaXNh YmxlX2NvbW11bmljYXRpb24oZ3VjKTsKPiBAQCAtMzQyLDcgKzM0NCw3IEBAIGludCBpbnRlbF91 Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIFdlIG5l ZWQgdG8gbm90aWZ5IHRoZSBndWMgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBHR1RUICovCj4gIAlp OTE1X2dndHRfZW5hYmxlX2d1YyhkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1 Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNz aW9uKSB7Cj4gIAkJLyoKPiAgCQkgKiBUaGlzIGlzIHN0dWZmIHdlIG5lZWQgdG8gaGF2ZSBhdmFp bGFibGUgYXQgZncgbG9hZCB0aW1lCj4gIAkJICogaWYgd2UgYXJlIHBsYW5uaW5nIHRvIGVuYWJs ZSBzdWJtaXNzaW9uIGxhdGVyCj4gQEAgLTM5MSw4ICszOTMsOCBAQCBpbnQgaW50ZWxfdWNfaW5p dF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZ290byBlcnJfbG9n X2NhcHR1cmU7Cj4gIAo+ICAJaW50ZWxfZ3VjX2F1dGhfaHVjKGRldl9wcml2KTsKPiAtCWlmIChp OTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+IC0JCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwg Pj0gMCkKPiArCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiAr CQlpZiAoaTkxNV9tb2RwYXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAwKQo+ICAJCQlnZW45X2VuYWJs ZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gIAo+ICAJCXJldCA9IGk5MTVfZ3VjX3N1Ym1p c3Npb25fZW5hYmxlKGRldl9wcml2KTsKPiBAQCAtNDE3LDIzICs0MTksMjQgQEAgaW50IGludGVs X3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBlcnJfbG9n X2NhcHR1cmU6Cj4gIAlndWNfY2FwdHVyZV9sb2FkX2Vycl9sb2coZ3VjKTsKPiAgZXJyX3N1Ym1p c3Npb246Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoaTkxNV9t b2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ICAJCWk5MTVfZ3VjX3N1Ym1pc3Npb25f ZmluaShkZXZfcHJpdik7Cj4gIGVycl9ndWM6Cj4gIAlpOTE1X2dndHRfZGlzYWJsZV9ndWMoZGV2 X3ByaXYpOwo+ICAKPiAgCURSTV9FUlJPUigiR3VDIGluaXQgZmFpbGVkXG4iKTsKPiAtCWlmIChp OTE1LmVuYWJsZV9ndWNfbG9hZGluZyA+IDEgfHwgaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24g PiAxKQo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZyA+IDEgfHwKPiAr CSAgICBpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPiAxKQo+ICAJCXJldCA9 IC1FSU87Cj4gIAllbHNlCj4gIAkJcmV0ID0gMDsKPiAgCj4gLQlpZiAoaTkxNS5lbmFibGVfZ3Vj X3N1Ym1pc3Npb24pIHsKPiAtCQlpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4gKwlp ZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwkJaTkxNV9tb2Rw YXJhbXNfbWt3cml0ZSgpLT5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICAJCURSTV9OT1RF KCJGYWxsaW5nIGJhY2sgZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2RlXG4iKTsK PiAgCX0KPiAgCj4gLQlpOTE1LmVuYWJsZV9ndWNfbG9hZGluZyA9IDA7Cj4gKwlpOTE1X21vZHBh cmFtc19ta3dyaXRlKCktPmVuYWJsZV9ndWNfbG9hZGluZyA9IDA7Cj4gIAlEUk1fTk9URSgiR3VD IGZpcm13YXJlIGxvYWRpbmcgZGlzYWJsZWRcbiIpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAg LTQ0MywxNSArNDQ2LDE1IEBAIHZvaWQgaW50ZWxfdWNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWd1Y19mcmVlX2xvYWRfZXJyX2xvZygmZGV2X3By aXYtPmd1Yyk7Cj4gIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiArCWlmICgh aTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAJCXJldHVybjsKPiAgCj4gLQlp ZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKQo+ICAJCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZf cHJpdik7Cj4gIAo+ICAJZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbigmZGV2X3ByaXYtPmd1Yyk7 Cj4gIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9t b2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gIAkJZ2VuOV9kaXNhYmxlX2d1Y19p bnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgCQlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3By aXYpOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggOTc1MjVk ZS4uZTJjMWExYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTQz Niw3ICs0MzYsOCBAQCB2b2lkIGludGVsX3VuY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgdm9pZCBpbnRlbF91bmNvcmVfc2FuaXRpemUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpOTE1LmVuYWJsZV9y YzYgPSBzYW5pdGl6ZV9yYzZfb3B0aW9uKGRldl9wcml2LCBpOTE1LmVuYWJsZV9yYzYpOwo+ICsJ aTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgpLT5lbmFibGVfcmM2ID0KPiArCQlzYW5pdGl6ZV9yYzZf b3B0aW9uKGRldl9wcml2LCBpOTE1X21vZHBhcmFtcy5lbmFibGVfcmM2KTsKPiAgCj4gIAkvKiBC SU9TIG9mdGVuIGxlYXZlcyBSQzYgZW5hYmxlZCwgYnV0IGRpc2FibGUgaXQgZm9yIGh3IGluaXQg Ki8KPiAgCWludGVsX3Nhbml0aXplX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gQEAgLTUwNywx MCArNTA4LDEwIEBAIHZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX2dldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPnVuY29yZS51c2VyX2Zv cmNld2FrZS5zYXZlZF9tbWlvX2NoZWNrID0KPiAgCQkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWlt ZWRfbW1pb19jaGVjazsKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLnVzZXJfZm9yY2V3YWtlLnNhdmVk X21taW9fZGVidWcgPQo+IC0JCQlpOTE1Lm1taW9fZGVidWc7Cj4gKwkJCWk5MTVfbW9kcGFyYW1z Lm1taW9fZGVidWc7Cj4gIAo+ICAJCWRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hl Y2sgPSAwOwo+IC0JCWk5MTUubW1pb19kZWJ1ZyA9IDA7Cj4gKwkJaTkxNV9tb2RwYXJhbXNfbWt3 cml0ZSgpLT5tbWlvX2RlYnVnID0gMDsKPiAgCX0KPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3By aXYtPnVuY29yZS5sb2NrKTsKPiAgfQo+IEBAIC01MzIsNyArNTMzLDcgQEAgdm9pZCBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCj4gIAkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1pb19jaGVjayA9Cj4gIAkJ CWRldl9wcml2LT51bmNvcmUudXNlcl9mb3JjZXdha2Uuc2F2ZWRfbW1pb19jaGVjazsKPiAtCQlp OTE1Lm1taW9fZGVidWcgPQo+ICsJCWk5MTVfbW9kcGFyYW1zX21rd3JpdGUoKS0+bW1pb19kZWJ1 ZyA9Cj4gIAkJCWRldl9wcml2LT51bmNvcmUudXNlcl9mb3JjZXdha2Uuc2F2ZWRfbW1pb19kZWJ1 ZzsKPiAgCj4gIAkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwg Rk9SQ0VXQUtFX0FMTCk7Cj4gQEAgLTg0MSw3ICs4NDIsOCBAQCBfX3VuY2xhaW1lZF9yZWdfZGVi dWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAiVW5jbGFpbWVkICVz IHJlZ2lzdGVyIDB4JXhcbiIsCj4gIAkJIHJlYWQgPyAicmVhZCBmcm9tIiA6ICJ3cml0ZSB0byIs Cj4gIAkJIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpKQo+IC0JCWk5MTUubW1pb19kZWJ1Zy0t OyAvKiBPbmx5IHJlcG9ydCB0aGUgZmlyc3QgTiBmYWlsdXJlcyAqLwo+ICsJCS8qIE9ubHkgcmVw b3J0IHRoZSBmaXJzdCBOIGZhaWx1cmVzICovCj4gKwkJaTkxNV9tb2RwYXJhbXNfbWt3cml0ZSgp LT5tbWlvX2RlYnVnLS07Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+IEBAIC04NTAs NyArODUyLDcgQEAgdW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJICAgIGNvbnN0IGJvb2wgcmVhZCwKPiAgCQkgICAgY29uc3QgYm9vbCBi ZWZvcmUpCj4gIHsKPiAtCWlmIChsaWtlbHkoIWk5MTUubW1pb19kZWJ1ZykpCj4gKwlpZiAobGlr ZWx5KCFpOTE1X21vZHBhcmFtcy5tbWlvX2RlYnVnKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJX191 bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIHJlYWQsIGJlZm9yZSk7Cj4gQEAgLTE3 MDYsNyArMTcwOCw3IEBAIHR5cGVkZWYgaW50ICgqcmVzZXRfZnVuYykoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKiwgdW5zaWduZWQgZW5naW5lX21hc2spOwo+ICAKPiAgc3RhdGljIHJlc2V0X2Z1 bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIHsKPiAtCWlmICghaTkxNS5yZXNldCkKPiArCWlmICghaTkxNV9tb2RwYXJhbXMucmVzZXQp Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g Pj0gOCkKPiBAQCAtMTc2Niw3ICsxNzY4LDcgQEAgYm9vbCBpbnRlbF9oYXNfcmVzZXRfZW5naW5l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJcmV0dXJuIChkZXZf cHJpdi0+aW5mby5oYXNfcmVzZXRfZW5naW5lICYmCj4gIAkJIWRldl9wcml2LT5ndWMuZXhlY2J1 Zl9jbGllbnQgJiYKPiAtCQlpOTE1LnJlc2V0ID49IDIpOwo+ICsJCWk5MTVfbW9kcGFyYW1zLnJl c2V0ID49IDIpOwo+ICB9Cj4gIAo+ICBpbnQgaW50ZWxfZ3VjX3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtMTc5MSw3ICsxNzkzLDcgQEAgYm9vbCBpbnRlbF91 bmNvcmVfdW5jbGFpbWVkX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICBib29sCj4gIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKHVubGlrZWx5KGk5MTUu bW1pb19kZWJ1ZyB8fAo+ICsJaWYgKHVubGlrZWx5KGk5MTVfbW9kcGFyYW1zLm1taW9fZGVidWcg fHwKPiAgCQkgICAgIGRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sgPD0gMCkp Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiBAQCAtMTc5OSw3ICsxODAxLDcgQEAgaW50ZWxfdW5j b3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCURSTV9ERUJVRygiVW5jbGFpbWVkIHJlZ2lzdGVyIGRldGVjdGVkLCAi Cj4gIAkJCSAgImVuYWJsaW5nIG9uZXNob3QgdW5jbGFpbWVkIHJlZ2lzdGVyIHJlcG9ydGluZy4g Igo+ICAJCQkgICJQbGVhc2UgdXNlIGk5MTUubW1pb19kZWJ1Zz1OIGZvciBtb3JlIGluZm9ybWF0 aW9uLlxuIik7Cj4gLQkJaTkxNS5tbWlvX2RlYnVnKys7Cj4gKwkJaTkxNV9tb2RwYXJhbXNfbWt3 cml0ZSgpLT5tbWlvX2RlYnVnKys7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1p b19jaGVjay0tOwo+ICAJCXJldHVybiB0cnVlOwo+ICAJfQoKLS0gCkphbmkgTmlrdWxhLCBJbnRl bCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK