From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH] drm/i915: Remove OLR Date: Fri, 19 Dec 2014 14:43:26 +0000 Message-ID: <5494398E.8000706@Intel.com> References: <1419000065-7533-1-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5D6836E770 for ; Fri, 19 Dec 2014 06:44:06 -0800 (PST) In-Reply-To: <1419000065-7533-1-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org RG9oISBUaGUgc3ViamVjdCB3YXMgbWVhbnQgdG8gYmUgUkZDIG5vdCBQQVRDSC4KCk9uIDE5LzEy LzIwMTQgMTQ6NDEsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogSm9o biBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPgo+IFRoZSBvdXRzdGFuZGlu ZyBsYXp5IHJlcXVlc3QgbWVjaGFuaXNtIGRvZXMgbm90IHJlYWxseSB3b3JrIHdlbGwgd2l0aAo+ IGEgR1BVIHNjaGVkdWxlci4gVGhlIHNjaGVkdWxlciBleHBlY3RzIGVhY2ggd29yayBwYWNrZXQs IGkuZS4gcmVxdWVzdAo+IHN0cnVjdHVyZSwgdG8gYmUgYSBjb21wbGV0ZSBlbnRpdHkgYW5kIHRv IGJlbG9uZyB0byBvbmUgYW5kIG9ubHkgb25lCj4gc3VibWl0dGVyLiBXaGVyZWFzIHRoZSB3aG9s ZSBsYXp5IG1lY2hhbmlzbSBhbGxvd3MgbG90cyBvZiB3b3JrIGZyb20KPiBsb3RzIG9mIGRpZmZl cmVudCBwbGFjZXMgdG8gYWxsIGJlIGx1bXBlZCB0b2dldGhlciBpbnRvIGEgc2luZ2xlCj4gcmVx dWVzdC4gSXQgYWxzbyBtZWFucyB0aGF0IHdvcmsgaXMgZmxvYXRpbmcgYXJvdW5kIGluIHRoZSBz eXN0ZW0KPiB1bm93bmVkIGFuZCB1bnRyYWNrZWQgYXQgdmFyaW91cyByYW5kb20gcG9pbnRzIGlu IHRpbWUuIFRoaXMgYWxsCj4gY2F1c2VzIGhlYWRhY2hlcyBmb3IgdGhlIHNjaGVkdWxlci4KPgo+ IFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIG91dHN0YW5kaW5nIGxhenkgcmVx dWVzdC4gSXQKPiBjb252ZXJ0cyBhbGwgZnVuY3Rpb25zIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBi ZSByZWx5aW5nIG9uIHRoZSBPTFIgdG8KPiBleHBsaWNpdGx5IG1hbmFnZSB0aGUgcmVxdWVzdC4g RWl0aGVyIGJ5IGFsbG9jYXRpbmcsIHBhc3NpbmcgYW5kCj4gc3VibWl0dGluZyB0aGUgcmVxdWVz dCBpZiB0aGV5IGFyZSB0aGUgdG9wIGxldmVsIG93bmVyLiBPciBieSBzaW1wbHkKPiB0YWtpbmcg YSByZXF1ZXN0IGluIGFzIGEgcGFyYW1ldGVyIHJhdGhlciB0aGFuIHB1bGxpbmcgaXQgb3V0IG9m IHRoZQo+IG1hZ2ljIGdsb2JhbCB2YXJpYWJsZSBpZiB0aGV5IGFyZSBhIGNsaWVudC4gVGhlIE9M UiBpdHNlbGYgaXMgbGVmdCBpbgo+IGFsb25nIHdpdGggYSBidW5jaCBvZiBzYW5pdHkgY2hlY2sg YXNzZXJ0cyB0aGF0IGl0IG1hdGNoZXMgdGhlIHJlcXVlc3QKPiBiZWluZyBwYXNzZWQgaW4gYXMg YSBwYXJhbWV0ZXIuIEhvd2V2ZXIsIGl0IHNob3VsZCBub3cgYmUgc2FmZSB0bwo+IHJlbW92ZSBj b21wbGV0ZWx5Lgo+Cj4gTm90ZSB0aGF0IHRoaXMgcGF0Y2ggaXMgbm90IGludGVuZGVkIGFzIGEg ZmluYWwsIHNoaXBwaW5nLCBpc24ndCBpdAo+IGdvcmdlb3VzLCBlbmQgcHJvZHVjdC4gSXQgaXMg bWVyZWx5IGEgcXVpY2sgaGFjayB0aGF0IEkgd2VudCB0aHJvdWdoCj4gYXMgYmVpbmcgdGhlIHNp bXBsZXN0IHdheSB0byBhY3R1YWxseSB3b3JrIG91dCB3aGF0IHRoZSByZWFsIHNlcXVlbmNlCj4g b2YgZXZlbnRzIGFuZCB0aGUgcmVhbCBvd25lcnNoaXAgb2Ygd29yayBpcyBpbiBjZXJ0YWluIGNp cmN1bXN0YW5jZXMuCj4gTW9zdCBwYXJ0aWN1bGFybHkgdG8gZG8gd2l0aCBkaXNwbGF5IGFuZCBv dmVybGF5IHdvcmsuIEhvd2V2ZXIsIEkKPiB3b3VsZCBsaWtlIHRvIGdldCBhZ3JlZW1lbnQgdGhh dCBpdCBpcyBhIGdvb2QgZGlyZWN0aW9uIHRvIGdvIGluIGFuZAo+IHRoYXQgcmVtb3ZpbmcgdGhl IE9MUiB3b3VsZCBiZSBhIGdvb2QgdGhpbmcuIE9yLCB0byBwdXQgaXQgYW5vdGhlcgo+IHdheSwg aXMgaXQgd29ydGggbWUgdHJ5aW5nIHRvIGJyZWFrIHRoaXMgcGF0Y2ggaW50byBhIHNldCBvZgo+ IG1hbmFnZWFibGUgaXRlbXMgb3IgZG8gSSBqdXN0IGFiYW5kb24gaXQgYW5kIGdpdmUgdXA/Cj4K PiBOb3RlIGFsc28gdGhhdCB0aGUgcGF0Y2ggaXMgYmFzZWQgb24gYSB0cmVlIGluY2x1ZGluZyB0 aGUgc2NoZWR1bGVyCj4gcHJlcC13b3JrIHBhdGNoZXMgcG9zdGVkIGVhcmxpZXIuIFNvIGl0IHdp bGwgbm90IGFwcGx5IHRvIGEgY2xlYW4KPiBuaWdodGx5IHRyZWUuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+IC0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgfCAgIDI5ICsrLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgIHwgIDE4MiArKysr KysrKysrKystLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jICAgICAgfCAgIDY5ICsrKy0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMgICB8ICAgNjIgKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgICAgICAgICAgfCAgIDY0ICsrKystLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgICB8ICAgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIHwgICAxMCArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmggfCAgICAyICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICB8ICAgNjggKysrKy0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgIHwgIDE0NSArKysr KysrKystLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICAgICAg ICAgICB8ICAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAg ICAgICAgIHwgICA1OCArKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j ICAgICAgICAgICAgICB8ICAgMzMgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jICAgICAgfCAgMjI4ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgICB8ICAgMzggKystLS0K PiAgIDE1IGZpbGVzIGNoYW5nZWQsIDU1MyBpbnNlcnRpb25zKCspLCA0NDYgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA1MTFmNTVmLi43YjQzMDllIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTUxMyw3ICs1MTMsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gICAJaW50ICgqcXVldWVfZmxpcCkoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCQkJICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKPiAgIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiAtCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJICB1aW50MzJfdCBmbGFncyk7Cj4gICAJdm9p ZCAoKnVwZGF0ZV9wcmltYXJ5X3BsYW5lKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJCQkJ ICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiBAQCAtMTc5Niw3ICsxNzk2LDggQEAg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgCS8qIEFic3RyYWN0IHRoZSBzdWJtaXNzaW9u IG1lY2hhbmlzbSAobGVnYWN5IHJpbmdidWZmZXIgb3IgZXhlY2xpc3RzKSBhd2F5ICovCj4gICAJ c3RydWN0IHsKPiAgIAkJaW50ICgqYWxsb2NfcmVxdWVzdCkoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKPiAtCQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4gKwkJCQkg ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gKwkJCQkgICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpOwo+ICAgCQlpbnQgKCpkb19leGVjYnVmKShzdHJ1Y3Qg aTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCQkJCSAgc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjYnVmZmVyMiAqYXJncywKPiAgIAkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMp Owo+IEBAIC0yNTExLDEwICsyNTEyLDEwIEBAIGludCBpOTE1X2dlbV9zZXRfZG9tYWluX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICBpbnQgaTkxNV9nZW1fc3df ZmluaXNoX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCQkg ICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAgIHZvaWQgaTkxNV9nZW1fZXhlY2J1 ZmZlcl9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzLAo+IC0JCQkJCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICsJCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKPiAgIHZvaWQgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXRpcmVfY29tbWFuZHMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwK PiAtCQkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiArCQkJCQkgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKTsKPiAgIHZvaWQgaTkxNV9nZW1fZXhlY2J1ZmZfcmVsZWFzZV9iYXRjaF9vYmoo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaik7Cj4gICBpbnQgaTkxNV9nZW1f cmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpxZSwK PiBAQCAtMjYwOSw5ICsyNjEwLDkgQEAgaW50IF9fbXVzdF9jaGVjayBfX2k5MTVfbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0IGMKPiAgIGludCBf X211c3RfY2hlY2sgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gICAjZW5kaWYKPiAgIGludCBpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq dG8sIGJvb2wgYWRkX3JlcXVlc3QpOwo+ICsJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICp0b19yZXEpOwo+ICAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwKPiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiArCQkJ ICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gICBpbnQgaTkxNV9nZW1f ZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gICAJCQkgc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgIAkJCSBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3Mp Owo+IEBAIC0yNjc4LDE5ICsyNjc5LDE5IEBAIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fb2Jq ZWN0X2ZpbmlzaF9ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gICBpbnQg X19tdXN0X2NoZWNrIGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICBp bnQgaTkxNV9nZW1faW5pdF9yaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGludCBf X211c3RfY2hlY2sgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAt aW50IGk5MTVfZ2VtX2wzX3JlbWFwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBz bGljZSk7Cj4gK2ludCBpOTE1X2dlbV9sM19yZW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgaW50IHNsaWNlKTsKPiAgIHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6emxpbmcoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfcmluZ2J1ZmZl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9ncHVf aWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9n ZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtaW50IF9faTkxNV9hZGRfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtpbnQgX19pOTE1X2FkZF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkgICAgICAgc3RydWN0 IGRybV9maWxlICpmaWxlLAo+ICAgCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmJhdGNoX29iaiwKPiAgIAkJICAgICAgIGJvb2wgZmx1c2hfY2FjaGVzKTsKPiAtI2RlZmluZSBp OTE1X2FkZF9yZXF1ZXN0KHJpbmcpIFwKPiAtCV9faTkxNV9hZGRfcmVxdWVzdChyaW5nLCBOVUxM LCBOVUxMLCB0cnVlKQo+IC0jZGVmaW5lIGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmluZykg XAo+IC0JX19pOTE1X2FkZF9yZXF1ZXN0KHJpbmcsIE5VTEwsIE5VTEwsIGZhbHNlKQo+ICsjZGVm aW5lIGk5MTVfYWRkX3JlcXVlc3QocmVxKSBcCj4gKwlfX2k5MTVfYWRkX3JlcXVlc3QocmVxLCBO VUxMLCBOVUxMLCB0cnVlKQo+ICsjZGVmaW5lIGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVx KSBcCj4gKwlfX2k5MTVfYWRkX3JlcXVlc3QocmVxLCBOVUxMLCBOVUxMLCBmYWxzZSkKPiAgIGlu dCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAgCQkJdW5zaWduZWQgcmVzZXRfY291bnRlciwKPiAgIAkJCWJvb2wgaW50ZXJydXB0aWJsZSwK PiBAQCAtMjgxMCw5ICsyODExLDkgQEAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9jb250ZXh0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRf ZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIHZvaWQgaTkxNV9nZW1fY29udGV4dF9y ZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X29w ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAtaW50 IGk5MTVfZ2VtX2NvbnRleHRfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gK2ludCBpOTE1X2dlbV9jb250ZXh0X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSk7Cj4gICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfY2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAtaW50IGk5MTVfc3dpdGNoX2Nv bnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAraW50IGk5MTVfc3dpdGNoX2Nv bnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqdG8pOwo+ICAgc3RydWN0IGludGVsX2NvbnRleHQgKgo+ICAgaTkxNV9nZW1f Y29udGV4dF9nZXQoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LCB1MzIg aWQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDFkMmNiZmIuLmRiZmI0ZTUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTE3OCw3ICsxMTc4LDcgQEAgaTkxNV9n ZW1fY2hlY2tfb2xyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgCj4gICAJ cmV0ID0gMDsKPiAgIAlpZiAocmVxID09IHJlcS0+cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1 ZXN0KQo+IC0JCXJldCA9IGk5MTVfYWRkX3JlcXVlc3QocmVxLT5yaW5nKTsKPiArCQlyZXQgPSBp OTE1X2FkZF9yZXF1ZXN0KHJlcSk7Cj4gICAKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC0y Mjk0LDE3ICsyMjk0LDE2IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAo+ICAgc3RhdGljIHZvaWQKPiAgIGk5MTVfZ2VtX29i amVjdF9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0J CQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiArCQkJICAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpvbGRfcmluZzsKPiAr CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm5ld19yaW5nLCAqb2xkX3Jpbmc7Cj4gICAKPiAtCUJV R19PTihyaW5nID09IE5VTEwpOwo+ICsJQlVHX09OKHJlcSA9PSBOVUxMKTsKPiAgIAo+IC0JcmVx ID0gaW50ZWxfcmluZ19nZXRfcmVxdWVzdChyaW5nKTsKPiArCW5ld19yaW5nID0gaTkxNV9nZW1f cmVxdWVzdF9nZXRfcmluZyhyZXEpOwo+ICAgCW9sZF9yaW5nID0gaTkxNV9nZW1fcmVxdWVzdF9n ZXRfcmluZyhvYmotPmxhc3RfcmVhZF9yZXEpOwo+ICAgCj4gLQlpZiAob2xkX3JpbmcgIT0gcmlu ZyAmJiBvYmotPmxhc3Rfd3JpdGVfcmVxKSB7Cj4gKwlpZiAob2xkX3JpbmcgIT0gbmV3X3Jpbmcg JiYgb2JqLT5sYXN0X3dyaXRlX3JlcSkgewo+ICAgCQkvKiBLZWVwIHRoZSByZXF1ZXN0IHJlbGF0 aXZlIHRvIHRoZSBjdXJyZW50IHJpbmcgKi8KPiAgIAkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24o Jm9iai0+bGFzdF93cml0ZV9yZXEsIHJlcSk7Cj4gICAJfQo+IEBAIC0yMzE1LDE3ICsyMzE0LDE3 IEBAIGk5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAgCQlvYmotPmFjdGl2ZSA9IDE7Cj4gICAJfQo+ICAgCj4gLQlsaXN0X21v dmVfdGFpbCgmb2JqLT5yaW5nX2xpc3QsICZyaW5nLT5hY3RpdmVfbGlzdCk7Cj4gKwlsaXN0X21v dmVfdGFpbCgmb2JqLT5yaW5nX2xpc3QsICZuZXdfcmluZy0+YWN0aXZlX2xpc3QpOwo+ICAgCj4g LQkvL3ByaW50ayhLRVJOX0lORk8gIiVzOiVkPiA8JXM+IG9iaiA9ICVwLCBsYXN0X3JlYWRfcmVx IDw9IDB4JXBcbiIsIF9fZnVuY19fLCBfX0xJTkVfXywgcmluZy0+bmFtZSwgb2JqLCByZXEpOwo+ ICsJLy9wcmludGsoS0VSTl9JTkZPICIlczolZD4gPCVzPiBvYmogPSAlcCwgbGFzdF9yZWFkX3Jl cSA8PSAweCVwXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIG5ld19yaW5nLT5uYW1lLCBvYmosIHJl cSk7Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9yZWFkX3JlcSwgcmVx KTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkx NV92bWEgKnZtYSwKPiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICsJ CQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCWxpc3Rf bW92ZV90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bWEtPnZtLT5hY3RpdmVfbGlzdCk7Cj4gLQlyZXR1 cm4gaTkxNV9nZW1fb2JqZWN0X21vdmVfdG9fYWN0aXZlKHZtYS0+b2JqLCByaW5nKTsKPiArCXJl dHVybiBpOTE1X2dlbV9vYmplY3RfbW92ZV90b19hY3RpdmUodm1hLT5vYmosIHJlcSk7Cj4gICB9 Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gQEAgLTI0NDAsMjYgKzI0MzksMzUgQEAgaTkxNV9nZW1f Z2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiAqc2Vxbm8pCj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiAtaW50IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAo+ICtpbnQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwK PiAgIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICAg ICBib29sIGZsdXNoX2NhY2hlcykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICAgCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmOwo+ICAgCXUzMiByZXF1ZXN0X3JpbmdfcG9zaXRpb24sIHJlcXVlc3Rf c3RhcnQ7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmVxdWVzdCA9IHJpbmctPm91dHN0YW5kaW5n X2xhenlfcmVxdWVzdDsKPiArCS8qcHJpbnRrKCBLRVJOX0VSUiAiPCVzPiByZXF1ZXN0ICVjICVk OiVkLCBPTFIgJWMgJWQ6JWRcbiIsCj4gKwkJcmVxdWVzdCA/IHJlcXVlc3QtPnJpbmctPm5hbWUg OiAiPz8/IiwKPiArCQlyZXF1ZXN0ID8gJz0nIDogJz8nLAo+ICsJCXJlcXVlc3QgPyByZXF1ZXN0 LT51bmlxIDogLTEsCj4gKwkJcmVxdWVzdCA/IHJlcXVlc3QtPnNlcW5vIDogMCwKPiArCQlyZXF1 ZXN0LT5yaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QgPyAnPScgOiAnPycsCj4gKwkJcmVx dWVzdC0+cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID8gcmVxdWVzdC0+cmluZy0+b3V0 c3RhbmRpbmdfbGF6eV9yZXF1ZXN0LT51bmlxIDogLTEsCj4gKwkJcmVxdWVzdC0+cmluZy0+b3V0 c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID8gcmVxdWVzdC0+cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9y ZXF1ZXN0LT5zZXFubyA6IDApOyovCj4gKwkvL2R1bXBfc3RhY2soKTsKPiArCj4gICAJaWYgKFdB Uk5fT04ocmVxdWVzdCA9PSBOVUxMKSkKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAtCWlm IChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 ID0gcmVxdWVzdC0+Y3R4Owo+IC0JCXJpbmdidWYgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmlu Z2J1ZjsKPiAtCX0gZWxzZQo+IC0JCXJpbmdidWYgPSByaW5nLT5idWZmZXI7Cj4gKwlyaW5nID0g cmVxdWVzdC0+cmluZzsKPiArCWRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXJpbmdidWYgPSByZXF1ZXN0LT5yaW5nYnVmOwo+ICsKPiArCVdBUk5fT04ocmVxdWVzdCAhPSBy aW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpOwo+ICAgCj4gICAJcmVxdWVzdF9zdGFydCA9 IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZ2J1Zik7Cj4gICAJLyoKPiBAQCAtMjQ3MSw5ICsyNDc5 LDkgQEAgaW50IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+ICAgCSAqLwo+ICAgCWlmIChmbHVzaF9jYWNoZXMpIHsKPiAgIAkJaWYgKGk5MTUuZW5hYmxl X2V4ZWNsaXN0cykKPiAtCQkJcmV0ID0gbG9naWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmlu Z2J1Zik7Cj4gKwkJCXJldCA9IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcXVlc3Qp Owo+ICAgCQllbHNlCj4gLQkJCXJldCA9IGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhyaW5n KTsKPiArCQkJcmV0ID0gaW50ZWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcXVlc3QpOwo+ICAg CQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gQEAgLTI0ODgsOSArMjQ5Niw5 IEBAIGludCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK PiAgIAlyZXF1ZXN0X3JpbmdfcG9zaXRpb24gPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdidWYp Owo+ICAgCj4gICAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAtCQlyZXQgPSByaW5nLT5l bWl0X3JlcXVlc3QocmluZ2J1Zik7Cj4gKwkJcmV0ID0gcmluZy0+ZW1pdF9yZXF1ZXN0KHJlcXVl c3QpOwo+ICAgCWVsc2UKPiAtCQlyZXQgPSByaW5nLT5hZGRfcmVxdWVzdChyaW5nKTsKPiArCQly ZXQgPSByaW5nLT5hZGRfcmVxdWVzdChyZXF1ZXN0KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1 cm4gcmV0Owo+ICAgCj4gQEAgLTI1MDQsNyArMjUxMiw4IEBAIGludCBfX2k5MTVfYWRkX3JlcXVl c3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkgKiBpbmFjdGl2ZV9saXN0IGFu ZCBsb3NlIGl0cyBhY3RpdmUgcmVmZXJlbmNlLiBIZW5jZSB3ZSBkbyBub3QgbmVlZAo+ICAgCSAq IHRvIGV4cGxpY2l0bHkgaG9sZCBhbm90aGVyIHJlZmVyZW5jZSBoZXJlLgo+ICAgCSAqLwo+IC0J cmVxdWVzdC0+YmF0Y2hfb2JqID0gb2JqOwo+ICsJaWYgKG9iaikKPiArCQlyZXF1ZXN0LT5iYXRj aF9vYmogPSBvYmo7Cj4gICAKPiAgIAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAg CQkvKiBIb2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgc28gdGhhdCB3ZSBj YW4gaW5zcGVjdAo+IEBAIC0yNzQ0LDYgKzI3NTMsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9y ZXNldF9yaW5nX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg I2VuZGlmCj4gICAKPiAgIAkvKiBUaGlzIG1heSBub3QgaGF2ZSBiZWVuIGZsdXNoZWQgYmVmb3Jl IHRoZSByZXNldCwgc28gY2xlYW4gaXQgbm93ICovCj4gKwlXQVJOX09OKHJpbmctPm91dHN0YW5k aW5nX2xhenlfcmVxdWVzdCk7Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJnJpbmctPm91 dHN0YW5kaW5nX2xhenlfcmVxdWVzdCwgTlVMTCk7Cj4gICB9Cj4gICAKPiBAQCAtMzExNCw4ICsz MTI0LDYgQEAgb3V0Ogo+ICAgICoKPiAgICAqIEBvYmo6IG9iamVjdCB3aGljaCBtYXkgYmUgaW4g dXNlIG9uIGFub3RoZXIgcmluZy4KPiAgICAqIEB0bzogcmluZyB3ZSB3aXNoIHRvIHVzZSB0aGUg b2JqZWN0IG9uLiBNYXkgYmUgTlVMTC4KPiAtICogQGFkZF9yZXF1ZXN0OiBkbyB3ZSBuZWVkIHRv IGFkZCBhIHJlcXVlc3QgdG8gdHJhY2sgb3BlcmF0aW9ucwo+IC0gKiAgICBzdWJtaXR0ZWQgb24g cmluZyB3aXRoIHN5bmNfdG8gZnVuY3Rpb24KPiAgICAqCj4gICAgKiBUaGlzIGNvZGUgaXMgbWVh bnQgdG8gYWJzdHJhY3Qgb2JqZWN0IHN5bmNocm9uaXphdGlvbiB3aXRoIHRoZSBHUFUuCj4gICAg KiBDYWxsaW5nIHdpdGggTlVMTCBpbXBsaWVzIHN5bmNocm9uaXppbmcgdGhlIG9iamVjdCB3aXRo IHRoZSBDUFUKPiBAQCAtMzEyNSw4ICszMTMzLDkgQEAgb3V0Ogo+ICAgICovCj4gICBpbnQKPiAg IGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g LQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywgYm9vbCBhZGRfcmVxdWVzdCkKPiAr CQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG9fcmVxKQo+ICAgewo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqdG8gPSB0b19yZXEtPnJpbmc7Cj4gICAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZnJvbTsKPiAgIAl1MzIgc2Vxbm87Cj4gICAJaW50IHJldCwgaWR4Owo+IEBA IC0zMTUyLDcgKzMxNjEsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJdHJhY2VfaTkxNV9n ZW1fcmluZ19zeW5jX3RvKGZyb20sIHRvLCBvYmotPmxhc3RfcmVhZF9yZXEpOwo+IC0JcmV0ID0g dG8tPnNlbWFwaG9yZS5zeW5jX3RvKHRvLCBmcm9tLCBzZXFubyk7Cj4gKwlyZXQgPSB0by0+c2Vt YXBob3JlLnN5bmNfdG8odG9fcmVxLCBmcm9tLCBzZXFubyk7Cj4gICAJaWYgKCFyZXQpIHsKPiAg IAkJLyogV2UgdXNlIGxhc3RfcmVhZF9yZXEgYmVjYXVzZSBzeW5jX3RvKCkKPiAgIAkJICogbWln aHQgaGF2ZSBqdXN0IGNhdXNlZCBzZXFubyB3cmFwIHVuZGVyCj4gQEAgLTMxNjAsOCArMzE2OSw2 IEBAIGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gICAJCSAqLwo+ICAgCQlmcm9tLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdID0KPiAgIAkJ CQlpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9yZXEpOwo+IC0JCWlm IChhZGRfcmVxdWVzdCkKPiAtCQkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaCh0byk7Cj4gICAJ fQo+ICAgCj4gICAJcmV0dXJuIHJldDsKPiBAQCAtMzI2NiwxOCArMzI3MywyMyBAQCBpbnQgaTkx NV9ncHVfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCS8qIEZsdXNoIGV2ZXJ5dGhp bmcgb250byB0aGUgaW5hY3RpdmUgbGlzdC4gKi8KPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRl dl9wcml2LCBpKSB7Cj4gICAJCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gLQkJCXJl dCA9IGk5MTVfc3dpdGNoX2NvbnRleHQocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKPiAr CQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwo+ICsJCQlyZXQgPSBkZXZf cHJpdi0+Z3QuYWxsb2NfcmVxdWVzdChyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEp Owo+ICAgCQkJaWYgKHJldCkKPiAgIAkJCQlyZXR1cm4gcmV0Owo+IC0JCX0KPiAgIAo+IC0JCS8q IE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzd2l0Y2ggKGlmIG9uZSBhY3R1YWxseSBoYXBwZW5lZCkK PiAtCQkgKiBnZXRzIHdyYXBwZWQgdXAgYW5kIGZpbmlzaGVkIHJhdGhlciB0aGFuIGhhbmdpbmcg YXJvdW5kCj4gLQkJICogYW5kIGNvbmZ1c2luZyB0aGluZ3MgbGF0ZXIuICovCj4gLQkJaWYgKHJp bmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCkgewo+IC0JCQlyZXQgPSBpOTE1X2FkZF9yZXF1 ZXN0KHJpbmcpOwo+IC0JCQlpZiAocmV0KQo+ICsJCQlyZXQgPSBpOTE1X3N3aXRjaF9jb250ZXh0 KHJlcSwgcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKPiArCQkJaWYgKHJldCkgewo+ICsJCQkJaTkx NV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICAgCQkJCXJldHVybiByZXQ7Cj4gKwkJ CX0KPiArCj4gKwkJCXJldCA9IGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKPiArCQkJ aWYgKHJldCkgewo+ICsJCQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICsJ CQkJcmV0dXJuIHJldDsKPiArCQkJfQo+ICAgCQl9Cj4gICAKPiAgIAkJcmV0ID0gaW50ZWxfcmlu Z19pZGxlKHJpbmcpOwo+IEBAIC00MDk5LDggKzQxMTEsMTkgQEAgaTkxNV9nZW1fb2JqZWN0X3Bp bl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJ Ym9vbCB3YXNfcGluX2Rpc3BsYXk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKHBpcGVsaW5l ZCAhPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9iai0+bGFzdF9yZWFkX3JlcSkpIHsKPiAt CQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHBpcGVsaW5lZCwgdHJ1ZSk7Cj4gKwlp ZiAocGlwZWxpbmVkICYmIChwaXBlbGluZWQgIT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhv YmotPmxhc3RfcmVhZF9yZXEpKSkgewo+ICsJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHBpcGVsaW5lZC0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcTsKPiArCj4gKwkJcmV0ID0gZGV2X3ByaXYtPmd0LmFsbG9jX3JlcXVl c3QocGlwZWxpbmVkLCBwaXBlbGluZWQtPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Cj4gKwkJaWYg KHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5 bmMob2JqLCByZXEpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJl dCA9IGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CXJldHVybiByZXQ7Cj4gICAJfQo+IEBAIC00NzcxLDggKzQ3OTQsOSBAQCBlcnI6Cj4gICAJcmV0 dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1pbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywgaW50IHNsaWNlKQo+ICtpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzbGljZSkKPiAgIHsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHJpbmctPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXUzMiByZWdfYmFzZSA9IEdFTjdfTDNMT0dfQkFT RSArIChzbGljZSAqIDB4MjAwKTsKPiBAQCAtNDc4Miw3ICs0ODA2LDcgQEAgaW50IGk5MTVfZ2Vt X2wzX3JlbWFwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBzbGljZSkKPiAgIAlp ZiAoIUhBU19MM19EUEYoZGV2KSB8fCAhcmVtYXBfaW5mbykKPiAgIAkJcmV0dXJuIDA7Cj4gICAK PiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgR0VON19MM0xPR19TSVpFIC8gNCAqIDMp Owo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIEdFTjdfTDNMT0dfU0laRSAvIDQgKiAz KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTQ5NjIsMzcgKzQ5 ODYsNjcgQEAgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCSAq Lwo+ICAgCWluaXRfdW51c2VkX3JpbmdzKGRldik7Cj4gICAKPiArCUJVR19PTighZGV2X3ByaXYt PnJpbmdbUkNTXS5kZWZhdWx0X2NvbnRleHQpOwo+ICsKPiArCXJldCA9IGk5MTVfcHBndHRfaW5p dF9odyhkZXYpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiUFBHVFQgZW5hYmxlIGZh aWxlZCAlZFxuIiwgcmV0KTsKPiArCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsK PiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9w cml2LCBpKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwo+ICAg CQlyZXQgPSByaW5nLT5pbml0X2h3KHJpbmcpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJu IHJldDsKPiAtCX0KPiAgIAo+IC0JZm9yIChpID0gMDsgaSA8IE5VTV9MM19TTElDRVMoZGV2KTsg aSsrKQo+IC0JCWk5MTVfZ2VtX2wzX3JlbWFwKCZkZXZfcHJpdi0+cmluZ1tSQ1NdLCBpKTsKPiAr CQlpZiAoIXJpbmctPmRlZmF1bHRfY29udGV4dCkKPiArCQkJY29udGludWU7Cj4gICAKPiAtCS8q Cj4gLQkgKiBYWFg6IENvbnRleHRzIHNob3VsZCBvbmx5IGJlIGluaXRpYWxpemVkIG9uY2UuIERv aW5nIGEgc3dpdGNoIHRvIHRoZQo+IC0JICogZGVmYXVsdCBjb250ZXh0IHN3aXRjaCBob3dldmVy IGlzIHNvbWV0aGluZyB3ZSdkIGxpa2UgdG8gZG8gYWZ0ZXIKPiAtCSAqIHJlc2V0IG9yIHRoYXcg KHRoZSBsYXR0ZXIgbWF5IG5vdCBhY3R1YWxseSBiZSBuZWNlc3NhcnkgZm9yIEhXLCBidXQKPiAt CSAqIGdvZXMgd2l0aCBvdXIgY29kZSBiZXR0ZXIpLiBDb250ZXh0IHN3aXRjaGluZyByZXF1aXJl cyByaW5ncyAoZm9yCj4gLQkgKiB0aGUgZG9fc3dpdGNoKSwgYnV0IGJlZm9yZSBlbmFibGluZyBQ UEdUVC4gU28gZG9uJ3QgbW92ZSB0aGlzLgo+IC0JICovCj4gLQlyZXQgPSBpOTE1X2dlbV9jb250 ZXh0X2VuYWJsZShkZXZfcHJpdik7Cj4gLQlpZiAocmV0ICYmIHJldCAhPSAtRUlPKSB7Cj4gLQkJ RFJNX0VSUk9SKCJDb250ZXh0IGVuYWJsZSBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gLQkJaTkxNV9n ZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7Cj4gKwkJcmV0ID0gZGV2X3ByaXYtPmd0LmFsbG9j X3JlcXVlc3QocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiArCQlpZiAocmV0 KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICAgCj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiArCQlpZiAo cmluZy0+aWQgPT0gUkNTKSB7Cj4gKwkJCWZvciAoaSA9IDA7IGkgPCBOVU1fTDNfU0xJQ0VTKGRl dik7IGkrKykKPiArCQkJCWk5MTVfZ2VtX2wzX3JlbWFwKHJlcSwgaSk7Cj4gKwkJfQo+ICAgCj4g LQlyZXQgPSBpOTE1X3BwZ3R0X2luaXRfaHcoZGV2KTsKPiAtCWlmIChyZXQgJiYgcmV0ICE9IC1F SU8pIHsKPiAtCQlEUk1fRVJST1IoIlBQR1RUIGVuYWJsZSBmYWlsZWQgJWRcbiIsIHJldCk7Cj4g LQkJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7Cj4gKwkJLyoKPiArCQkgKiBYWFg6 IENvbnRleHRzIHNob3VsZCBvbmx5IGJlIGluaXRpYWxpemVkIG9uY2UuIERvaW5nIGEgc3dpdGNo IHRvIHRoZQo+ICsJCSAqIGRlZmF1bHQgY29udGV4dCBzd2l0Y2ggaG93ZXZlciBpcyBzb21ldGhp bmcgd2UnZCBsaWtlIHRvIGRvIGFmdGVyCj4gKwkJICogcmVzZXQgb3IgdGhhdyAodGhlIGxhdHRl ciBtYXkgbm90IGFjdHVhbGx5IGJlIG5lY2Vzc2FyeSBmb3IgSFcsIGJ1dAo+ICsJCSAqIGdvZXMg d2l0aCBvdXIgY29kZSBiZXR0ZXIpLiBDb250ZXh0IHN3aXRjaGluZyByZXF1aXJlcyByaW5ncyAo Zm9yCj4gKwkJICogdGhlIGRvX3N3aXRjaCksIGJ1dCBiZWZvcmUgZW5hYmxpbmcgUFBHVFQuIFNv IGRvbid0IG1vdmUgdGhpcy4KPiArCQkgKi8KPiArCQlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X2Vu YWJsZShyZXEpOwo+ICsJCWlmIChyZXQgJiYgcmV0ICE9IC1FSU8pIHsKPiArCQkJRFJNX0VSUk9S KCJDb250ZXh0IGVuYWJsZSBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKwkJCWk5MTVfZ2VtX3JlcXVl c3RfdW5yZWZlcmVuY2UocmVxKTsKPiArCQkJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRl dik7Cj4gKwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJcmV0ID0gaTkxNV9wcGd0 dF9pbml0X3JpbmcocmVxKTsKPiArCQlpZiAocmV0ICYmIHJldCAhPSAtRUlPKSB7Cj4gKwkJCURS TV9FUlJPUigiUFBHVFQgZW5hYmxlIGZhaWxlZCAlZFxuIiwgcmV0KTsKPiArCQkJaTkxNV9nZW1f cmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICsJCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZm ZXIoZGV2KTsKPiArCQl9Cj4gKwo+ICsJCXJldCA9IGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2go cmVxKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCURSTV9FUlJPUigiQWRkIHJlcXVlc3QgZmFpbGVk OiAlZFxuIiwgcmV0KTsKPiArCQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ ICsJCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiArCQkJcmV0dXJuIHJldDsK PiArCQl9Cj4gICAJfQo+ICAgCj4gLQlyZXR1cm4gcmV0Owo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4g ICAKPiAgIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGM1ZTFiZmMuLjcyZTI4MGIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTQwMSw0 MSArNDAxLDIzIEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShkY3R4KTsKPiAgIH0KPiAg IAo+IC1pbnQgaTkxNV9nZW1fY29udGV4dF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICtpbnQgaTkxNV9nZW1fY29udGV4dF9lbmFibGUoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n Owo+IC0JaW50IHJldCwgaTsKPiAtCj4gLQlCVUdfT04oIWRldl9wcml2LT5yaW5nW1JDU10uZGVm YXVsdF9jb250ZXh0KTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJp bmc7Cj4gKwlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ IC0JCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKPiAtCQkJaWYgKHJpbmctPmlu aXRfY29udGV4dCkgewo+IC0JCQkJcmV0ID0gcmluZy0+aW5pdF9jb250ZXh0KHJpbmcsCj4gLQkJ CQkJCXJpbmctPmRlZmF1bHRfY29udGV4dCk7Cj4gLQkJCQlpZiAocmV0KSB7Cj4gLQkJCQkJRFJN X0VSUk9SKCJyaW5nIGluaXQgY29udGV4dDogJWRcbiIsCj4gLQkJCQkJCQlyZXQpOwo+IC0JCQkJ CXJldHVybiByZXQ7Cj4gLQkJCQl9Cj4gLQkJCX0KPiAtCQl9Cj4gKwkJaWYgKHJpbmctPmluaXRf Y29udGV4dCA9PSBOVUxMKQo+ICsJCQlyZXR1cm4gMDsKPiAgIAo+ICsJCXJldCA9IHJpbmctPmlu aXRfY29udGV4dChyZXEsIHJpbmctPmRlZmF1bHRfY29udGV4dCk7Cj4gICAJfSBlbHNlCj4gLQkJ Zm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgewo+IC0JCQlyZXQgPSBpOTE1X3N3aXRj aF9jb250ZXh0KHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCk7Cj4gLQkJCWlmIChyZXQpCj4g LQkJCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQkJLyogTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN3aXRj aCAoaWYgb25lIGFjdHVhbGx5IGhhcHBlbmVkKQo+IC0JCQkgKiBnZXRzIHdyYXBwZWQgdXAgYW5k IGZpbmlzaGVkIHJhdGhlciB0aGFuIGhhbmdpbmcgYXJvdW5kCj4gLQkJCSAqIGFuZCBjb25mdXNp bmcgdGhpbmdzIGxhdGVyLiAqLwo+IC0JCQlpZiAocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1 ZXN0KSB7Cj4gLQkJCQlyZXQgPSBpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJpbmcpOwo+IC0J CQkJaWYgKHJldCkKPiAtCQkJCQlyZXR1cm4gcmV0Owo+IC0JCQl9Cj4gLQkJfQo+ICsJCXJldCA9 IGk5MTVfc3dpdGNoX2NvbnRleHQocmVxLCByaW5nLT5kZWZhdWx0X2NvbnRleHQpOwo+ICsKPiAr CWlmIChyZXQpIHsKPiArCQlEUk1fRVJST1IoInJpbmcgaW5pdCBjb250ZXh0OiAlZFxuIiwgcmV0 KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAg LTQ4OCwxMCArNDcwLDExIEBAIGk5MTVfZ2VtX2NvbnRleHRfZ2V0KHN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwgdTMyIGlkKQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5s aW5lIGludAo+IC1taV9zZXRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ ICttaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkg ICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKm5ld19jb250ZXh0LAo+ICAgCSAgICAgICB1MzIg aHdfZmxhZ3MpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5y aW5nOwo+ICAgCXUzMiBmbGFncyA9IGh3X2ZsYWdzIHwgTUlfTU1fU1BBQ0VfR1RUOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiBAQCAtNTAxLDcgKzQ4NCw3IEBAIG1pX3NldF9jb250ZXh0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJICogaXRsYl9iZWZvcmVfY3R4X3N3aXRjaC4KPiAg IAkgKi8KPiAgIAlpZiAoSVNfR0VONihyaW5nLT5kZXYpKSB7Cj4gLQkJcmV0ID0gcmluZy0+Zmx1 c2gocmluZywgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIDApOwo+ICsJCXJldCA9IHJpbmctPmZsdXNo KHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIDApOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0 dXJuIHJldDsKPiAgIAl9Cj4gQEAgLTUxMCw3ICs0OTMsNyBAQCBtaV9zZXRfY29udGV4dChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCWlmICghSVNfSEFTV0VMTChyaW5nLT5kZXYp ICYmIElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuIDwgOCkKPiAgIAkJZmxhZ3MgfD0gKE1JX1NB VkVfRVhUX1NUQVRFX0VOIHwgTUlfUkVTVE9SRV9FWFRfU1RBVEVfRU4pOwo+ICAgCj4gLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDYpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDYpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtNTQwLDkg KzUyMywxMCBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiArc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQg KnRvKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9w cml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpmcm9tID0gcmluZy0+bGFzdF9jb250 ZXh0Owo+ICAgCXUzMiBod19mbGFncyA9IDA7Cj4gQEAgLTU3Nyw3ICs1NjEsNyBAQCBzdGF0aWMg aW50IGRvX3N3aXRjaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCj4gICAJaWYg KHRvLT5wcGd0dCkgewo+ICAgCQl0cmFjZV9zd2l0Y2hfbW0ocmluZywgdG8pOwo+IC0JCXJldCA9 IHRvLT5wcGd0dC0+c3dpdGNoX21tKHRvLT5wcGd0dCwgcmluZyk7Cj4gKwkJcmV0ID0gdG8tPnBw Z3R0LT5zd2l0Y2hfbW0odG8tPnBwZ3R0LCByZXEpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJZ290 byB1bnBpbl9vdXQ7Cj4gICAJfQo+IEBAIC02MDgsNyArNTkyLDcgQEAgc3RhdGljIGludCBkb19z d2l0Y2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlpZiAoIXRvLT5sZWdhY3lf aHdfY3R4LmluaXRpYWxpemVkIHx8IGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVmYXVsdCh0bykpCj4g ICAJCWh3X2ZsYWdzIHw9IE1JX1JFU1RPUkVfSU5ISUJJVDsKPiAgIAo+IC0JcmV0ID0gbWlfc2V0 X2NvbnRleHQocmluZywgdG8sIGh3X2ZsYWdzKTsKPiArCXJldCA9IG1pX3NldF9jb250ZXh0KHJl cSwgdG8sIGh3X2ZsYWdzKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIHVucGluX291dDsKPiAg IAo+IEBAIC02MTYsNyArNjAwLDcgQEAgc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiAgIAkJaWYgKCEodG8tPnJlbWFwX3NsaWNlICYgKDE8PGkpKSkK PiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJcmV0ID0gaTkxNV9nZW1fbDNfcmVtYXAocmluZywg aSk7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fbDNfcmVtYXAocmVxLCBpKTsKPiAgIAkJLyogSWYgaXQg ZmFpbGVkLCB0cnkgYWdhaW4gbmV4dCByb3VuZCAqLwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJRFJN X0RFQlVHX0RSSVZFUigiTDMgcmVtYXBwaW5nIGZhaWxlZFxuIik7Cj4gQEAgLTYzMiw3ICs2MTYs NyBAQCBzdGF0aWMgaW50IGRvX3N3aXRjaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ ICAgCSAqLwo+ICAgCWlmIChmcm9tICE9IE5VTEwpIHsKPiAgIAkJZnJvbS0+bGVnYWN5X2h3X2N0 eC5yY3Nfc3RhdGUtPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNU SU9OOwo+IC0JCWk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGk5MTVfZ2VtX29ial90b19nZ3R0KGZy b20tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKSwgcmluZyk7Cj4gKwkJaTkxNV92bWFfbW92ZV90 b19hY3RpdmUoaTkxNV9nZW1fb2JqX3RvX2dndHQoZnJvbS0+bGVnYWN5X2h3X2N0eC5yY3Nfc3Rh dGUpLCByZXEpOwo+ICAgCQkvKiBBcyBsb25nIGFzIE1JX1NFVF9DT05URVhUIGlzIHNlcmlhbGl6 aW5nLCBpZS4gaXQgZmx1c2hlcyB0aGUKPiAgIAkJICogd2hvbGUgZGFtbiBwaXBlbGluZSwgd2Ug ZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IG1hcmsgdGhlCj4gICAJCSAqIG9iamVjdCBkaXJ0eS4g VGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoYXQgdGhlIGNvbnRleHQgbXVzdCBiZQo+IEBAIC02NTgs MTIgKzY0MiwxMiBAQCBkb25lOgo+ICAgCj4gICAJaWYgKHVuaW5pdGlhbGl6ZWQpIHsKPiAgIAkJ aWYgKHJpbmctPmluaXRfY29udGV4dCkgewo+IC0JCQlyZXQgPSByaW5nLT5pbml0X2NvbnRleHQo cmluZywgdG8pOwo+ICsJCQlyZXQgPSByaW5nLT5pbml0X2NvbnRleHQocmVxLCB0byk7Cj4gICAJ CQlpZiAocmV0KQo+ICAgCQkJCURSTV9FUlJPUigicmluZyBpbml0IGNvbnRleHQ6ICVkXG4iLCBy ZXQpOwo+ICAgCQl9Cj4gICAKPiAtCQlyZXQgPSBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChy aW5nKTsKPiArCQlyZXQgPSBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChyZXEpOwo+ICAgCQlp ZiAocmV0KQo+ICAgCQkJRFJNX0VSUk9SKCJpbml0IHJlbmRlciBzdGF0ZTogJWRcbiIsIHJldCk7 Cj4gICAJfQo+IEBAIC02OTAsOSArNjc0LDEwIEBAIHVucGluX291dDoKPiAgICAqIHN3aXRjaGVk IGJ5IHdyaXRpbmcgdG8gdGhlIEVMU1AgYW5kIHJlcXVlc3RzIGtlZXAgYSByZWZlcmVuY2UgdG8g dGhlaXIKPiAgICAqIGNvbnRleHQuCj4gICAgKi8KPiAtaW50IGk5MTVfc3dpdGNoX2NvbnRleHQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAraW50IGk5MTVfc3dpdGNoX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqdG8pCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5y aW5nOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ ZGV2X3ByaXZhdGU7Cj4gICAKPiAgIAlXQVJOX09OKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cyk7Cj4g QEAgLTcwOCw3ICs2OTMsNyBAQCBpbnQgaTkxNV9zd2l0Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gICAKPiAtCXJldHVybiBk b19zd2l0Y2gocmluZywgdG8pOwo+ICsJcmV0dXJuIGRvX3N3aXRjaChyZXEsIHRvKTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIGJvb2wgY29udGV4dHNfZW5hYmxlZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRl eCBjYTMxNjczLi41Y2FhMmEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+IEBAIC04MjIsNyArODIyLDcgQEAgZXJyOgo+ICAgfQo+ICAgCj4gICBz dGF0aWMgaW50Cj4gLWk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19ncHUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiAraTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2dwdShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQlzdHJ1Y3QgbGlzdF9oZWFkICp2 bWFzKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IEBAIC04MzIsNyArODMyLDcg QEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2dwdShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nLAo+ICAgCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsIHZtYXMsIGV4ZWNfbGlz dCkgewo+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4g LQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCByaW5nLCBmYWxzZSk7Cj4gKwkJcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCByZXEpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJ cmV0dXJuIHJldDsKPiAgIAo+IEBAIC04NDMsNyArODQzLDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZl cl9tb3ZlX3RvX2dwdShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCX0KPiAgIAo+ ICAgCWlmIChmbHVzaF9jaGlwc2V0KQo+IC0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2gocmluZy0+ ZGV2KTsKPiArCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHJlcS0+cmluZy0+ZGV2KTsKPiAgIAo+ ICAgCWlmIChmbHVzaF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0dUVCkKPiAgIAkJd21iKCk7 Cj4gQEAgLTk0MSw5ICs5NDEsOSBAQCBpOTE1X2dlbV92YWxpZGF0ZV9jb250ZXh0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiAgIAo+ICAgdm9pZAo+ICAg aTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgbGlzdF9oZWFkICp2bWFz LAo+IC0JCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiArCQkJCSAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEgPSBpbnRlbF9yaW5nX2dldF9yZXF1ZXN0KHJpbmcpOwo+ICsJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3JpbmcocmVxKTsK PiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnko dm1hLCB2bWFzLCBleGVjX2xpc3QpIHsKPiBAQCAtOTU3LDcgKzk1Nyw3IEBAIGk5MTVfZ2VtX2V4 ZWNidWZmZXJfbW92ZV90b19hY3RpdmUoc3RydWN0IGxpc3RfaGVhZCAqdm1hcywKPiAgIAkJCW9i ai0+YmFzZS5wZW5kaW5nX3JlYWRfZG9tYWlucyB8PSBvYmotPmJhc2UucmVhZF9kb21haW5zOwo+ ICAgCQlvYmotPmJhc2UucmVhZF9kb21haW5zID0gb2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21h aW5zOwo+ICAgCj4gLQkJaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCByaW5nKTsKPiArCQlp OTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJlcSk7Cj4gICAJCWlmIChvYmotPmJhc2Uud3Jp dGVfZG9tYWluKSB7Cj4gICAJCQlvYmotPmRpcnR5ID0gMTsKPiAgIAkJCWk5MTVfZ2VtX3JlcXVl c3RfYXNzaWduKCZvYmotPmxhc3Rfd3JpdGVfcmVxLCByZXEpOwo+IEBAIC05ODMsMjAgKzk4Mywy MSBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBsaXN0X2hlYWQg KnZtYXMsCj4gICB2b2lkCj4gICBpOTE1X2dlbV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUs Cj4gLQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiArCQkJCSAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKPiAgIHsKPiAgIAkvKiBVbmNvbmRpdGlvbmFsbHkgZm9yY2UgYWRk X3JlcXVlc3QgdG8gZW1pdCBhIGZ1bGwgZmx1c2guICovCj4gLQlyaW5nLT5ncHVfY2FjaGVzX2Rp cnR5ID0gdHJ1ZTsKPiArCXJlcS0+cmluZy0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7Cj4gICAK PiAgIAkvKiBBZGQgYSBicmVhZGNydW1iIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgYmF0Y2gg YnVmZmVyICovCj4gLQkodm9pZClfX2k5MTVfYWRkX3JlcXVlc3QocmluZywgZmlsZSwgb2JqLCB0 cnVlKTsKPiArCSh2b2lkKV9faTkxNV9hZGRfcmVxdWVzdChyZXEsIGZpbGUsIG9iaiwgdHJ1ZSk7 Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiAgIGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKPiArCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAg ewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCWlu dCByZXQsIGk7Cj4gICAKPiBAQCAtMTAwNSw3ICsxMDA2LDcgQEAgaTkxNV9yZXNldF9nZW43X3Nv bF9vZmZzZXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ ICAgCX0KPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCA0ICogMyk7Cj4gKwly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCAqIDMpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJl dHVybiByZXQ7Cj4gICAKPiBAQCAtMTAyMSwxMCArMTAyMiwxMSBAQCBpOTE1X3Jlc2V0X2dlbjdf c29sX29mZnNldHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IGludAo+IC1pOTE1X2VtaXRfYm94KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gK2k5 MTVfZW1pdF9ib3goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJICAgICAg c3RydWN0IGRybV9jbGlwX3JlY3QgKmJveCwKPiAgIAkgICAgICBpbnQgRFIxLCBpbnQgRFI0KQo+ ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlp bnQgcmV0Owo+ICAgCj4gICAJaWYgKGJveC0+eTIgPD0gYm94LT55MSB8fCBib3gtPngyIDw9IGJv eC0+eDEgfHwKPiBAQCAtMTAzNSw3ICsxMDM3LDcgQEAgaTkxNV9lbWl0X2JveChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCX0KPiAgIAo+ICAgCWlmIChJTlRFTF9JTkZPKHJpbmct PmRldiktPmdlbiA+PSA0KSB7Cj4gLQkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCA0KTsK PiArCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4gICAJCWlmIChyZXQpCj4gICAJ CQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTEwNDQsNyArMTA0Niw3IEBAIGk5MTVfZW1pdF9ib3go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJaW50ZWxfcmluZ19lbWl0KHJpbmcs ICgoYm94LT54MiAtIDEpICYgMHhmZmZmKSB8IChib3gtPnkyIC0gMSkgPDwgMTYpOwo+ICAgCQlp bnRlbF9yaW5nX2VtaXQocmluZywgRFI0KTsKPiAgIAl9IGVsc2Ugewo+IC0JCXJldCA9IGludGVs X3JpbmdfYmVnaW4ocmluZywgNik7Cj4gKwkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYp Owo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0xMTUxLDExICsx MTUzLDExIEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCQlnb3RvIGVycm9yOwo+ICAgCX0KPiAgIAo+IC0J cmV0ID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2dwdShyaW5nLCB2bWFzKTsKPiArCXJl dCA9IGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19ncHUocGFyYW1zLT5yZXF1ZXN0LCB2bWFz KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVycm9yOwo+ICAgCj4gLQlpOTE1X2dlbV9leGVj YnVmZmVyX21vdmVfdG9fYWN0aXZlKHZtYXMsIHJpbmcpOwo+ICsJaTkxNV9nZW1fZXhlY2J1ZmZl cl9tb3ZlX3RvX2FjdGl2ZSh2bWFzLCBwYXJhbXMtPnJlcXVlc3QpOwo+ICAgCj4gICAJLyogTWFr ZSBzdXJlIHRoZSBPTFIgaGFzbid0IGFkdmFuY2VkICh3aGljaCB3b3VsZCBpbmRpY2F0ZSBhIGZs dXNoCj4gICAJICogb2YgdGhlIHdvcmsgaW4gcHJvZ3Jlc3Mgd2hpY2ggaW4gdHVybiB3b3VsZCBi ZSBhIEJhZCBUaGluZykuICovCj4gQEAgLTEyMDAsMTggKzEyMDIsMTggQEAgaW50IGk5MTVfZ2Vt X3JpbmdidWZmZXJfc3VibWlzc2lvbl9maW5hbChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFt cyAqcGFyYW1zKQo+ICAgCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIGdwdSBjYWNoZXMg YW5kIGVuc3VyZSB0aGF0IHdlIGRvIGZsdXNoCj4gICAJICogYW55IHJlc2lkdWFsIHdyaXRlcyBm cm9tIHRoZSBwcmV2aW91cyBiYXRjaC4KPiAgIAkgKi8KPiAtCXJldCA9IGludGVsX3JpbmdfaW52 YWxpZGF0ZV9hbGxfY2FjaGVzKHJpbmcpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19pbnZhbGlkYXRl X2FsbF9jYWNoZXMocGFyYW1zLT5yZXF1ZXN0KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVy cm9yOwo+ICAgCj4gICAJLyogU3dpdGNoIHRvIHRoZSBjb3JyZWN0IGNvbnRleHQgZm9yIHRoZSBi YXRjaCAqLwo+IC0JcmV0ID0gaTkxNV9zd2l0Y2hfY29udGV4dChyaW5nLCBwYXJhbXMtPmN0eCk7 Cj4gKwlyZXQgPSBpOTE1X3N3aXRjaF9jb250ZXh0KHBhcmFtcy0+cmVxdWVzdCwgcGFyYW1zLT5j dHgpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyb3I7Cj4gICAKPiAgIAlpZiAocmluZyA9 PSAmZGV2X3ByaXYtPnJpbmdbUkNTXSAmJgo+ICAgCQkJcGFyYW1zLT5pbnN0cF9tb2RlICE9IGRl dl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewo+IC0JCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmluZywgNCk7Cj4gKwkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihwYXJhbXMtPnJlcXVl c3QsIDQpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJZ290byBlcnJvcjsKPiAgIAo+IEBAIC0xMjI1 LDcgKzEyMjcsNyBAQCBpbnQgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uX2ZpbmFsKHN0 cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMpCj4gICAJfQo+ICAgCj4gICAJaWYg KHBhcmFtcy0+YXJnc19mbGFncyAmIEk5MTVfRVhFQ19HRU43X1NPTF9SRVNFVCkgewo+IC0JCXJl dCA9IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhwYXJhbXMtPmRldiwgcmluZyk7Cj4gKwkJ cmV0ID0gaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHBhcmFtcy0+ZGV2LCBwYXJhbXMtPnJl cXVlc3QpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJZ290byBlcnJvcjsKPiAgIAl9Cj4gQEAgLTEy MzYsMjkgKzEyMzgsMzEgQEAgaW50IGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbl9maW5h bChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zKQo+ICAgCj4gICAJaWYgKHBh cmFtcy0+Y2xpcHJlY3RzKSB7Cj4gICAJCWZvciAoaSA9IDA7IGkgPCBwYXJhbXMtPmFyZ3NfbnVt X2NsaXByZWN0czsgaSsrKSB7Cj4gLQkJCXJldCA9IGk5MTVfZW1pdF9ib3gocmluZywgJnBhcmFt cy0+Y2xpcHJlY3RzW2ldLAo+IC0JCQkJCSAgICBwYXJhbXMtPmFyZ3NfRFIxLCBwYXJhbXMtPmFy Z3NfRFI0KTsKPiArCQkJcmV0ID0gaTkxNV9lbWl0X2JveChwYXJhbXMtPnJlcXVlc3QsCj4gKwkJ CQkJICAgICZwYXJhbXMtPmNsaXByZWN0c1tpXSwKPiArCQkJCQkgICAgcGFyYW1zLT5hcmdzX0RS MSwKPiArCQkJCQkgICAgcGFyYW1zLT5hcmdzX0RSNCk7Cj4gICAJCQlpZiAocmV0KQo+ICAgCQkJ CWdvdG8gZXJyb3I7Cj4gICAKPiAtCQkJcmV0ID0gcmluZy0+ZGlzcGF0Y2hfZXhlY2J1ZmZlcihy aW5nLAo+ICsJCQlyZXQgPSByaW5nLT5kaXNwYXRjaF9leGVjYnVmZmVyKHBhcmFtcy0+cmVxdWVz dCwKPiAgIAkJCQkJCQlleGVjX3N0YXJ0LCBleGVjX2xlbiwKPiAgIAkJCQkJCQlwYXJhbXMtPmRp c3BhdGNoX2ZsYWdzKTsKPiAgIAkJCWlmIChyZXQpCj4gICAJCQkJZ290byBlcnJvcjsKPiAgIAkJ fQo+ICAgCX0gZWxzZSB7Cj4gLQkJcmV0ID0gcmluZy0+ZGlzcGF0Y2hfZXhlY2J1ZmZlcihyaW5n LAo+ICsJCXJldCA9IHJpbmctPmRpc3BhdGNoX2V4ZWNidWZmZXIocGFyYW1zLT5yZXF1ZXN0LAo+ ICAgCQkJCQkJZXhlY19zdGFydCwgZXhlY19sZW4sCj4gICAJCQkJCQlwYXJhbXMtPmRpc3BhdGNo X2ZsYWdzKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCWdvdG8gZXJyb3I7Cj4gICAJfQo+ICAgCj4g LQl0cmFjZV9pOTE1X2dlbV9yaW5nX2Rpc3BhdGNoKGludGVsX3JpbmdfZ2V0X3JlcXVlc3Qocmlu ZyksIHBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwo+ICsJdHJhY2VfaTkxNV9nZW1fcmluZ19kaXNw YXRjaChwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwo+ICAgCj4gLQlp OTE1X2dlbV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyhwYXJhbXMtPmRldiwgcGFyYW1zLT5m aWxlLCByaW5nLAo+IC0JCQkJCSAgICBwYXJhbXMtPmJhdGNoX29iaik7Cj4gKwlpOTE1X2dlbV9l eGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyhwYXJhbXMtPmRldiwgcGFyYW1zLT5maWxlLAo+ICsJ CQkJCSAgICBwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+YmF0Y2hfb2JqKTsKPiAgIAo+ICAgZXJy b3I6Cj4gICAJLyogaW50ZWxfZ3B1X2J1c3kgc2hvdWxkIGFsc28gZ2V0IGEgcmVmLCBzbyBpdCB3 aWxsIGZyZWUgd2hlbiB0aGUgZGV2aWNlCj4gQEAgLTE0OTAsMTAgKzE0OTQsMTAgQEAgaTkxNV9n ZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAg CQlwYXJhbXMtPmJhdGNoX29ial92bV9vZmZzZXQgPSBpOTE1X2dlbV9vYmpfb2Zmc2V0KGJhdGNo X29iaiwgdm0pOwo+ICAgCj4gICAJLyogQWxsb2NhdGUgYSByZXF1ZXN0IGZvciB0aGlzIGJhdGNo IGJ1ZmZlciBuaWNlIGFuZCBlYXJseS4gKi8KPiAtCXJldCA9IGRldl9wcml2LT5ndC5hbGxvY19y ZXF1ZXN0KHJpbmcsIGN0eCk7Cj4gKwlyZXQgPSBkZXZfcHJpdi0+Z3QuYWxsb2NfcmVxdWVzdChy aW5nLCBjdHgsICZwYXJhbXMtPnJlcXVlc3QpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJy Owo+IC0JcGFyYW1zLT5yZXF1ZXN0ID0gcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0Owo+ ICsJV0FSTl9PTihwYXJhbXMtPnJlcXVlc3QgIT0gcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1 ZXN0KTsKPiAgIAo+ICAgCS8qIFNhdmUgYXNzb3J0ZWQgc3R1ZmYgYXdheSB0byBwYXNzIHRocm91 Z2ggdG8gKl9zdWJtaXNzaW9uX2ZpbmFsKCkgKi8KPiAgIAlwYXJhbXMtPmRldiAgICAgICAgICAg ICAgICAgICAgID0gZGV2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXgg N2VlYWQ5My4uNzc2Nzc2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g QEAgLTIxMywxNCArMjEzLDE1IEBAIHN0YXRpYyBnZW42X2d0dF9wdGVfdCBpcmlzX3B0ZV9lbmNv ZGUoZG1hX2FkZHJfdCBhZGRyLAo+ICAgfQo+ICAgCj4gICAvKiBCcm9hZHdlbGwgUGFnZSBEaXJl Y3RvcnkgUG9pbnRlciBEZXNjcmlwdG9ycyAqLwo+IC1zdGF0aWMgaW50IGdlbjhfd3JpdGVfcGRw KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHVuc2lnbmVkIGVudHJ5LAo+IC0JCQkgICB1 aW50NjRfdCB2YWwpCj4gK3N0YXRpYyBpbnQgZ2VuOF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsIHVuc2lnbmVkIGVudHJ5LAo+ICsJCQkgIHVpbnQ2NF90IHZhbCkK PiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJ aW50IHJldDsKPiAgIAo+ICAgCUJVR19PTihlbnRyeSA+PSA0KTsKPiAgIAo+IC0JcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyaW5nLCA2KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2 KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTIzNiw3ICsyMzcs NyBAQCBzdGF0aWMgaW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsIHVuc2lnbmVkIGVudHJ5LAo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGdlbjhfbW1fc3dp dGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAtCQkJICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQo+ICsJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ ICAgewo+ICAgCWludCBpLCByZXQ7Cj4gICAKPiBAQCAtMjQ1LDcgKzI0Niw3IEBAIHN0YXRpYyBp bnQgZ2VuOF9tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAgCj4gICAJ Zm9yIChpID0gdXNlZF9wZCAtIDE7IGkgPj0gMDsgaS0tKSB7Cj4gICAJCWRtYV9hZGRyX3QgYWRk ciA9IHBwZ3R0LT5wZF9kbWFfYWRkcltpXTsKPiAtCQlyZXQgPSBnZW44X3dyaXRlX3BkcChyaW5n LCBpLCBhZGRyKTsKPiArCQlyZXQgPSBnZW44X3dyaXRlX3BkcChyZXEsIGksIGFkZHIpOwo+ICAg CQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gQEAgLTcxMCwxNiArNzExLDE3 IEBAIHN0YXRpYyB1aW50MzJfdCBnZXRfcGRfb2Zmc2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCkKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCwKPiAtCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4g KwkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiArCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPiAgIAo+ICAg CS8qIE5COiBUTEJzIG11c3QgYmUgZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3JlIGEgc3dp dGNoICovCj4gLQlyZXQgPSByaW5nLT5mbHVzaChyaW5nLCBJOTE1X0dFTV9HUFVfRE9NQUlOUywg STkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICsJcmV0ID0gcmluZy0+Zmx1c2gocmVxLCBJOTE1X0dF TV9HUFVfRE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgNik7Cj4g KwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0 dXJuIHJldDsKPiAgIAo+IEBAIC03MzUsMTYgKzczNywxNyBAQCBzdGF0aWMgaW50IGhzd19tbV9z d2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAgfQo+ICAgCj4gICBzdGF0aWMg aW50IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAtCQkJICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICsJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJl cS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVz aGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KPiAtCXJldCA9IHJpbmctPmZs dXNoKHJpbmcsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4g KwlyZXQgPSByaW5nLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9H UFVfRE9NQUlOUyk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IC0JcmV0 ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCA2KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCA2KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTc1OCw3 ICs3NjEsNyBAQCBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKPiAgIAo+ICAgCS8qIFhYWDogUkNTIGlzIHRoZSBvbmx5IG9uZSB0byBhdXRvIGlu dmFsaWRhdGUgdGhlIFRMQnM/ICovCj4gICAJaWYgKHJpbmctPmlkICE9IFJDUykgewo+IC0JCXJl dCA9IHJpbmctPmZsdXNoKHJpbmcsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9HUFVf RE9NQUlOUyk7Cj4gKwkJcmV0ID0gcmluZy0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVfRE9NQUlO UywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJl dDsKPiAgIAl9Cj4gQEAgLTc2Nyw4ICs3NzAsOSBAQCBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNo KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBn ZW42X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gLQkJCSAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiArCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJp bmc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0LT5iYXNlLmRldjsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAg Cj4gQEAgLTExMjUsMTEgKzExMjksNiBAQCBpbnQgaTkxNV9wcGd0dF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgIAo+ICAgaW50IGk5 MTVfcHBndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7Cj4gLQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQg PSBkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gLQlpbnQgaSwgcmV0ID0gMDsKPiAtCj4g ICAJLyogSW4gdGhlIGNhc2Ugb2YgZXhlY2xpc3RzLCBQUEdUVCBpcyBlbmFibGVkIGJ5IHRoZSBj b250ZXh0IGRlc2NyaXB0b3IKPiAgIAkgKiBhbmQgdGhlIFBEUHMgYXJlIGNvbnRhaW5lZCB3aXRo aW4gdGhlIGNvbnRleHQgaXRzZWxmLiAgV2UgZG9uJ3QKPiAgIAkgKiBuZWVkIHRvIGRvIGFueXRo aW5nIGhlcmUuICovCj4gQEAgLTExNDgsMjUgKzExNDcsMjAgQEAgaW50IGk5MTVfcHBndHRfaW5p dF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWVsc2UKPiAgIAkJV0FSTl9PTigxKTsK PiAgIAo+IC0JaWYgKHBwZ3R0KSB7Cj4gLQkJZm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwg aSkgewo+IC0JCQlyZXQgPSBwcGd0dC0+c3dpdGNoX21tKHBwZ3R0LCByaW5nKTsKPiAtCQkJaWYg KHJldCAhPSAwKQo+IC0JCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJCS8qIE1ha2Ugc3VyZSB0aGUg Y29udGV4dCBzd2l0Y2ggKGlmIG9uZSBhY3R1YWxseSBoYXBwZW5lZCkKPiAtCQkJICogZ2V0cyB3 cmFwcGVkIHVwIGFuZCBmaW5pc2hlZCByYXRoZXIgdGhhbiBoYW5naW5nIGFyb3VuZAo+IC0JCQkg KiBhbmQgY29uZnVzaW5nIHRoaW5ncyBsYXRlci4gKi8KPiAtCQkJaWYgKHJpbmctPm91dHN0YW5k aW5nX2xhenlfcmVxdWVzdCkgewo+IC0JCQkJcmV0ID0gaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVz aChyaW5nKTsKPiAtCQkJCWlmIChyZXQpCj4gLQkJCQkJcmV0dXJuIHJldDsKPiAtCQkJfQo+IC0J CX0KPiAtCX0KPiArCXJldHVybiAwOwo+ICt9Cj4gICAKPiAtCXJldHVybiByZXQ7Cj4gK2ludCBp OTE1X3BwZ3R0X2luaXRfcmluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5yaW5nLT5kZXYt PmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gZGV2X3ByaXYt Pm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICsKPiArCWlmICghcHBndHQpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJcmV0dXJuIHBwZ3R0LT5zd2l0Y2hfbW0ocHBndHQsIHJlcSk7Cj4gICB9Cj4gKwo+ICAg c3RydWN0IGk5MTVfaHdfcHBndHQgKgo+ICAgaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYpCj4gICB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCBkZDg0OWRmLi5iZWUzZTJhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMjY3LDcgKzI2Nyw3IEBA IHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKPiAgIAo+ICAgCWludCAoKmVuYWJsZSkoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KTsKPiAgIAlpbnQgKCpzd2l0Y2hfbW0pKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCwKPiAtCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICsJ CQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICAgCXZvaWQgKCpkZWJ1Z19k dW1wKShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSk7Cj4g ICB9Owo+ICAgCj4gQEAgLTI3OCw2ICsyNzgsNyBAQCB2b2lkIGk5MTVfZ2xvYmFsX2d0dF9jbGVh bnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgCj4gICBpbnQgaTkxNV9wcGd0dF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCk7Cj4g ICBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtpbnQg aTkxNV9wcGd0dF9pbml0X3Jpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ ICAgdm9pZCBpOTE1X3BwZ3R0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpOwo+ICAgc3RydWN0 IGk5MTVfaHdfcHBndHQgKmk5MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gICAJCQkJCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2KTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+IGluZGV4IGFiYTM5YzMu LjBlMGMyM2ZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMKPiBAQCAtMTUyLDggKzE1Miw5IEBAIGludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCXJldHVybiAwOwo+ICAg fQo+ICAgCj4gLWludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQo+ICtpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2luaXQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhyZXEpOwo+ICAgCXN0cnVjdCByZW5k ZXJfc3RhdGUgc287Cj4gICAJaW50IHJldDsKPiAgIAo+IEBAIC0xNjQsMTYgKzE2NSwxNyBAQCBp bnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKPiAgIAlpZiAoc28ucm9kYXRhID09IE5VTEwpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQly ZXQgPSByaW5nLT5kaXNwYXRjaF9leGVjYnVmZmVyKHJpbmcsCj4gKwlyZXQgPSByaW5nLT5kaXNw YXRjaF9leGVjYnVmZmVyKHJlcSwKPiAgIAkJCQkJc28uZ2d0dF9vZmZzZXQsCj4gICAJCQkJCXNv LnJvZGF0YS0+YmF0Y2hfaXRlbXMgKiA0LAo+ICAgCQkJCQlJOTE1X0RJU1BBVENIX1NFQ1VSRSk7 Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiAtCWk5MTVfdm1hX21vdmVfdG9f YWN0aXZlKGk5MTVfZ2VtX29ial90b19nZ3R0KHNvLm9iaiksIHJpbmcpOwo+ICsJaTkxNV92bWFf bW92ZV90b19hY3RpdmUoaTkxNV9nZW1fb2JqX3RvX2dndHQoc28ub2JqKSwgcmVxKTsKPiAgIAo+ IC0JcmV0ID0gX19pOTE1X2FkZF9yZXF1ZXN0KHJpbmcsIE5VTEwsIHNvLm9iaiwgdHJ1ZSk7Cj4g Ky8vCXJldCA9IF9faTkxNV9hZGRfcmVxdWVzdChyZXEsIE5VTEwsIHNvLm9iaiwgdHJ1ZSk7Cj4g KwlyZXEtPmJhdGNoX29iaiA9IHNvLm9iajsKPiAgIAkvKiBfX2k5MTVfYWRkX3JlcXVlc3QgbW92 ZXMgb2JqZWN0IHRvIGluYWN0aXZlIGlmIGl0IGZhaWxzICovCj4gICBvdXQ6Cj4gICAJaTkxNV9n ZW1fcmVuZGVyX3N0YXRlX2ZpbmkoJnNvKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZW5kZXJfc3RhdGUuaAo+IGluZGV4IGM0NDk2MWUuLjdhYTczNzIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuaAo+IEBAIC0zOSw3ICsz OSw3IEBAIHN0cnVjdCByZW5kZXJfc3RhdGUgewo+ICAgCWludCBnZW47Cj4gICB9Owo+ICAgCj4g LWludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKTsKPiAraW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKPiAgIHZvaWQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2Zpbmkoc3Ry dWN0IHJlbmRlcl9zdGF0ZSAqc28pOwo+ICAgaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9wcmVw YXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCQkJICBzdHJ1Y3QgcmVuZGVy X3N0YXRlICpzbyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGYw Y2Y0MjEuLmMwYjBlMzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTkwODksMTQgKzkwODksMTUgQEAgc3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCQkgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAgCQkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgIAkJCQkgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+ICsJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSB1aW50 MzJfdCBmbGFncykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEt PnJpbmc7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAgCXUzMiBmbGlwX21hc2s7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyaW5nLCA2KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA2KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTkxMTYsNyAr OTExNyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiBhdXggZGlzcGxheSBi YXNlIGFkZHJlc3MsIHVudXNlZCAqLwo+ICAgCj4gICAJaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0 aXZlKGludGVsX2NydGMpOwo+IC0JaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyaW5nKTsKPiAr CWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAg IAo+IEBAIC05MTI0LDE0ICs5MTI1LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuM19xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgIAkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gICAJCQkJIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKPiArCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkg dWludDMyX3QgZmxhZ3MpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0g cmVxLT5yaW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiAgIAl1MzIgZmxpcF9tYXNrOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgNik7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC05MTQ4 LDcgKzkxNTAsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjNfcXVldWVfZmxpcChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKPiAgIAo+ ICAgCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjKTsKPiAtCWk5MTVfYWRk X3JlcXVlc3Rfbm9fZmx1c2gocmluZyk7Cj4gKwlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJl cSk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBAQCAtOTE1NiwxNSArOTE1OCwxNiBAQCBz dGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAgCQkJCSBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJCQkJIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAo+ICAgCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0J CQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQkgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJIHVpbnQzMl90IGZsYWdzKQo+ICAgewo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAl1aW50MzJfdCBw ZiwgcGlwZXNyYzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJpbmcsIDQpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICAgCWlmIChy ZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtOTE4Nyw3ICs5MTkwLDcgQEAgc3RhdGlj IGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlp bnRlbF9yaW5nX2VtaXQocmluZywgcGYgfCBwaXBlc3JjKTsKPiAgIAo+ICAgCWludGVsX21hcmtf cGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjKTsKPiAtCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1 c2gocmluZyk7Cj4gKwlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Cj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiBAQCAtOTE5NSwxNSArOTE5OCwxNiBAQCBzdGF0aWMgaW50IGludGVs X2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCSBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gICAJCQkJIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAg CQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCj4gICAJCQkJIHVpbnQzMl90IGZsYWdzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAl1aW50MzJfdCBwZiwgcGlwZXNyYzsKPiAg IAlpbnQgcmV0Owo+ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDQpOwo+ICsJ cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVy biByZXQ7Cj4gICAKPiBAQCAtOTIyMyw3ICs5MjI3LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW42 X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpbnRlbF9yaW5nX2VtaXQo cmluZywgcGYgfCBwaXBlc3JjKTsKPiAgIAo+ICAgCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2 ZShpbnRlbF9jcnRjKTsKPiAtCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmluZyk7Cj4gKwlp OTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAK PiBAQCAtOTIzMSw5ICs5MjM1LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgIAkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gICAJCQkJIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPiArCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkgdWlu dDMyX3QgZmxhZ3MpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVx LT5yaW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKPiAgIAl1aW50MzJfdCBwbGFuZV9iaXQgPSAwOwo+ICAgCWludCBsZW4sIHJldDsK PiBAQCAtOTI3NSwxMSArOTI4MCwxMSBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCSAqIHRoZW4gZG8gdGhlIGNhY2hlbGluZSBh bGlnbm1lbnQsIGFuZCBmaW5hbGx5IGVtaXQgdGhlCj4gICAJICogTUlfRElTUExBWV9GTElQLgo+ ICAgCSAqLwo+IC0JcmV0ID0gaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxpZ24ocmluZyk7Cj4gKwly ZXQgPSBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihyZXEpOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgbGVuKTsK PiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBsZW4pOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gICAKPiBAQCAtOTMxOCw3ICs5MzIzLDcgQEAgc3RhdGljIGludCBpbnRl bF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpbnRlbF9yaW5n X2VtaXQocmluZywgKE1JX05PT1ApKTsKPiAgIAo+ICAgCWludGVsX21hcmtfcGFnZV9mbGlwX2Fj dGl2ZShpbnRlbF9jcnRjKTsKPiAtCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmluZyk7Cj4g KwlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcSk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g ICAKPiBAQCAtOTQ3NCw5ICs5NDc5LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuOV9xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgIAkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gICAJCQkJIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKPiArCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkg dWludDMyX3QgZmxhZ3MpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0g cmVxLT5yaW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiAgIAl1aW50MzJfdCBwbGFuZSA9IDAsIHN0cmlkZTsKPiAgIAlpbnQgcmV0 Owo+IEBAIC05NTA4LDcgKzk1MTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjlfcXVldWVfZmxp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgIAl9Cj4g ICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgMTApOwo+ICsJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDEwKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAg Cj4gQEAgLTk1MjgsNyArOTUzNCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuOV9xdWV1ZV9mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVs X2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwo+ICAgCj4gICAJaW50ZWxfbWFya19wYWdl X2ZsaXBfYWN0aXZlKGludGVsX2NydGMpOwo+IC0JaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChy aW5nKTsKPiArCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKPiAgIAo+ICAgCXJldHVy biAwOwo+ICAgfQo+IEBAIC05NTM3LDcgKzk1NDMsNyBAQCBzdGF0aWMgaW50IGludGVsX2RlZmF1 bHRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCSAgICBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gICAJCQkJICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ ICAgCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQkgICAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJICAgIHVpbnQzMl90IGZsYWdzKQo+ICAgewo+ICAgCXJl dHVybiAtRU5PREVWOwo+IEBAIC05NzI5LDIyICs5NzM1LDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxf Y3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCQlpOTE1X2dlbV9yZXF1 ZXN0X2Fzc2lnbigmd29yay0+ZmxpcF9xdWV1ZWRfcmVxLAo+ICAgCQkJCQlvYmotPmxhc3Rfd3Jp dGVfcmVxKTsKPiAgIAl9IGVsc2Ugewo+IC0JCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVl X2ZsaXAoZGV2LCBjcnRjLCBmYiwgb2JqLCByaW5nLAo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxOwo+ICsKPiArCQlyZXQgPSBkZXZfcHJpdi0+Z3QuYWxsb2NfcmVxdWVzdChy aW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJl dHVybiByZXQ7Cj4gKwo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1 ZXVlZF9yZXEsIHJlcSk7Cj4gKwo+ICsJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2Zs aXAoZGV2LCBjcnRjLCBmYiwgb2JqLCByZXEsCj4gICAJCQkJCQkgICBwYWdlX2ZsaXBfZmxhZ3Mp Owo+ICAgCQlpZiAocmV0KQo+ICAgCQkJZ290byBjbGVhbnVwX3VucGluOwo+IC0KPiAtCQkvKiBC b3JrZWQ6IG5lZWQgdG8gZ2V0IHRoZSBzZXFubyBmb3IgdGhlIHJlcXVlc3Qgc3VibWl0dGVkIGlu Cj4gLQkJICogJ3F1ZXVlX2ZsaXAoKScgYWJvdmUuIEhvd2V2ZXIsIGVpdGhlciB0aGUgcmVxdWVz dCBoYXMgYmVlbgo+IC0JCSAqIHBvc3RlZCBhbHJlYWR5IGFuZCB0aGUgc2Vxbm8gaXMgZ29uZSAo cV9mIGNhbGxzIGFkZF9yZXF1ZXN0KSwKPiAtCQkgKiBvciB0aGUgcmVxdWVzdCBuZXZlciBnZXRz IHBvc3RlZCBhbmQgaXMgbWVyZ2VkIGludG8gd2hhdGV2ZXIKPiAtCQkgKiByZW5kZXIgY29tZXMg YWxvbmcgbmV4dCAocV9mIGNhbGxzIHJpbmdfYWR2YW5jZSkuCj4gLQkJICoKPiAtCQkgKiBPbiB0 aGUgb3RoZXIgaGFuZCwgc2Vxbm9zIGFyZSBnb2luZyBhd2F5IHNvb24gYW55d2F5ISBTbwo+IC0J CSAqIGhvcGVmdWxseSB0aGUgcHJvYmxlbSB3aWxsIGRpc2FwcGVhci4uLgo+IC0JCSAqLwo+IC0J CWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCj4gLQkJCQkJ cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID8gaW50ZWxfcmluZ19nZXRfcmVxdWVzdChy aW5nKSA6IE5VTEwpOwo+ICAgCX0KPiAgIAo+ICAgCXdvcmstPmZsaXBfcXVldWVkX3ZibGFuayA9 IGRybV92YmxhbmtfY291bnQoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+IGluZGV4IDgwY2I4N2UuLjUwNzdhNzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+IEBAIC0yMDMsNiArMjAzLDEwIEBAIGVudW0gewo+ICAgfTsKPiAgICNkZWZp bmUgR0VOOF9DVFhfSURfU0hJRlQgMzIKPiAgIAo+ICtzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxf cmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArCQkJCSAgICBp bnQgbnVtX2R3b3Jkcyk7Cj4gK3N0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9yZW5kZXJfc3Rh dGVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArCQkJCQkgICAgICBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPiAgIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4 dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCk7Cj4gICAKPiBAQCAtNTg3LDkgKzU5MSw5IEBAIHN0YXRpYyBpbnQgZXhlY2xp c3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlyZXR1 cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbnZhbGlkYXRlX2Fs bF9jYWNoZXMoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gK3N0YXRpYyBpbnQg bG9naWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByaW5n YnVmLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsK PiAgIAl1aW50MzJfdCBmbHVzaF9kb21haW5zOwo+ICAgCWludCByZXQ7Cj4gICAKPiBAQCAtNTk3 LDcgKzYwMSw3IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hl cyhzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIAlpZiAocmluZy0+Z3B1X2Nh Y2hlc19kaXJ0eSkKPiAgIAkJZmx1c2hfZG9tYWlucyA9IEk5MTVfR0VNX0dQVV9ET01BSU5TOwo+ ICAgCj4gLQlyZXQgPSByaW5nLT5lbWl0X2ZsdXNoKHJpbmdidWYsIEk5MTVfR0VNX0dQVV9ET01B SU5TLCBmbHVzaF9kb21haW5zKTsKPiArCXJldCA9IHJpbmctPmVtaXRfZmx1c2gocmVxLCBJOTE1 X0dFTV9HUFVfRE9NQUlOUywgZmx1c2hfZG9tYWlucyk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0 dXJuIHJldDsKPiAgIAo+IEBAIC02MDUsMTAgKzYwOSw5IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9y aW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGV4ZWNsaXN0c19tb3Zl X3RvX2dwdShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArc3RhdGljIGludCBl eGVjbGlzdHNfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g ICAJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK PiAgIAl1aW50MzJfdCBmbHVzaF9kb21haW5zID0gMDsKPiAgIAlib29sIGZsdXNoX2NoaXBzZXQg PSBmYWxzZTsKPiBAQCAtNjE3LDcgKzYyMCw3IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX21vdmVf dG9fZ3B1KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICAgCWxpc3RfZm9yX2Vh Y2hfZW50cnkodm1hLCB2bWFzLCBleGVjX2xpc3QpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICAgCj4gLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3N5bmMob2JqLCByaW5nLCB0cnVlKTsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhv YmosIHJlcSk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTY1 Nyw3ICs2NjAsNiBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVf ZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAgICAgICAq ZGV2ID0gcGFyYW1zLT5kZXY7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAgKnJpbmcgPSBw YXJhbXMtPnJpbmc7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcGFy YW1zLT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPiAgIAlpbnQgcmV0Owo+ICAgCj4g ICAJcGFyYW1zLT5pbnN0cF9tb2RlID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQ09OU1RBTlRT X01BU0s7Cj4gQEAgLTcwNiwxMSArNzA4LDExIEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlz c2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCQlyZXR1cm4g LUVJTlZBTDsKPiAgIAl9Cj4gICAKPiAtCXJldCA9IGV4ZWNsaXN0c19tb3ZlX3RvX2dwdShyaW5n YnVmLCB2bWFzKTsKPiArCXJldCA9IGV4ZWNsaXN0c19tb3ZlX3RvX2dwdShwYXJhbXMtPnJlcXVl c3QsIHZtYXMpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCWk5MTVf Z2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUodm1hcywgcmluZyk7Cj4gKwlpOTE1X2dlbV9l eGVjYnVmZmVyX21vdmVfdG9fYWN0aXZlKHZtYXMsIHBhcmFtcy0+cmVxdWVzdCk7Cj4gICAKPiAg IAlyZXQgPSBkZXZfcHJpdi0+Z3QuZG9fZXhlY2ZpbmFsKHBhcmFtcyk7Cj4gICAJaWYgKHJldCkK PiBAQCAtNzQyLDEzICs3NDQsMTMgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uX2Zp bmFsKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMpCj4gICAJLyogVW5jb25k aXRpb25hbGx5IGludmFsaWRhdGUgZ3B1IGNhY2hlcyBhbmQgZW5zdXJlIHRoYXQgd2UgZG8gZmx1 c2gKPiAgIAkgKiBhbnkgcmVzaWR1YWwgd3JpdGVzIGZyb20gdGhlIHByZXZpb3VzIGJhdGNoLgo+ ICAgCSAqLwo+IC0JcmV0ID0gbG9naWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhyaW5n YnVmKTsKPiArCXJldCA9IGxvZ2ljYWxfcmluZ19pbnZhbGlkYXRlX2FsbF9jYWNoZXMocGFyYW1z LT5yZXF1ZXN0KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJaWYg KHJpbmcgPT0gJmRldl9wcml2LT5yaW5nW1JDU10gJiYKPiAgIAkgICAgcGFyYW1zLT5pbnN0cF9t b2RlICE9IGRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewo+IC0JCXJldCA9IGlu dGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyaW5nYnVmLCA0KTsKPiArCQlyZXQgPSBpbnRlbF9sb2dp Y2FsX3JpbmdfYmVnaW4ocGFyYW1zLT5yZXF1ZXN0LCA0KTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CXJldHVybiByZXQ7Cj4gICAKPiBAQCAtNzY0LDEzICs3NjYsMTQgQEAgaW50IGludGVsX2V4ZWNs aXN0c19zdWJtaXNzaW9uX2ZpbmFsKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJh bXMpCj4gICAJZXhlY19zdGFydCA9IHBhcmFtcy0+YmF0Y2hfb2JqX3ZtX29mZnNldCArCj4gICAJ CSAgICAgcGFyYW1zLT5hcmdzX2JhdGNoX3N0YXJ0X29mZnNldDsKPiAgIAo+IC0JcmV0ID0gcmlu Zy0+ZW1pdF9iYl9zdGFydChyaW5nYnVmLCBleGVjX3N0YXJ0LCBwYXJhbXMtPmRpc3BhdGNoX2Zs YWdzKTsKPiArCXJldCA9IHJpbmctPmVtaXRfYmJfc3RhcnQocGFyYW1zLT5yZXF1ZXN0LCBleGVj X3N0YXJ0LCBwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1 cm4gcmV0Owo+ICAgCj4gLQl0cmFjZV9pOTE1X2dlbV9yaW5nX2Rpc3BhdGNoKGludGVsX3Jpbmdf Z2V0X3JlcXVlc3QocmluZyksIHBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwo+ICsJdHJhY2VfaTkx NV9nZW1fcmluZ19kaXNwYXRjaChwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+ZGlzcGF0Y2hfZmxh Z3MpOwo+ICAgCj4gLQlpOTE1X2dlbV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyhwYXJhbXMt PmRldiwgcGFyYW1zLT5maWxlLCByaW5nLCBwYXJhbXMtPmJhdGNoX29iaik7Cj4gKwlpOTE1X2dl bV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyhwYXJhbXMtPmRldiwgcGFyYW1zLT5maWxlLAo+ ICsJCQkJCSAgICBwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+YmF0Y2hfb2JqKTsKPiAgIAo+ICAg CXJldHVybiAwOwo+ICAgfQo+IEBAIC04MjcsMTUgKzgzMCwxNSBAQCB2b2lkIGludGVsX2xvZ2lj YWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJSTkxNV9XUklU RV9NT0RFKHJpbmcsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7Cj4gICB9Cj4gICAK PiAtaW50IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmKQo+ICtpbnQgbG9naWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCWlmICghcmluZy0+Z3B1X2Nh Y2hlc19kaXJ0eSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCXJldCA9IHJpbmctPmVtaXRfZmx1 c2gocmluZ2J1ZiwgMCwgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICsJcmV0ID0gcmluZy0+ZW1p dF9mbHVzaChyZXEsIDAsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiAgIAlpZiAocmV0KQo+ICAg CQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTkxMCwxMyArOTEzLDE3IEBAIHZvaWQgaW50ZWxfbHJf Y29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgfQo+ICAgCj4g ICBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKPiAtCQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiArCQkJ CSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiArCQkJCSAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 YXRlID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlpZiAo cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KQo+ICsJaWYgKCFyZXFfb3V0KQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICgoKnJlcV9vdXQgPSByaW5nLT5vdXRzdGFuZGluZ19s YXp5X3JlcXVlc3QpICE9IE5VTEwpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJcmVxdWVzdCA9 IGt6YWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTk1Myw3ICs5NjAs NyBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3Qoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3JlZmVyZW5jZShyZXF1ZXN0LT5j dHgpOwo+ICAgCXJlcXVlc3QtPnJpbmdidWYgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1 ZjsKPiAgIAo+IC0JcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxdWVzdDsKPiAr CSpyZXFfb3V0ID0gcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxdWVzdDsKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC0xMDkwLDcgKzEwOTcsNyBAQCBzdGF0aWMgaW50 IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLCBp bnQgYnl0ZXMpCj4gICAvKioKPiAgICAqIGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbigpIC0gcHJl cGFyZSB0aGUgbG9naWNhbCByaW5nYnVmZmVyIHRvIGFjY2VwdCBzb21lIGNvbW1hbmRzCj4gICAg Kgo+IC0gKiBAcmluZ2J1ZjogTG9naWNhbCByaW5nYnVmZmVyLgo+ICsgKiBAcmVxdWVzdDogVGhl IHJlcXVlc3QgdG8gc3RhcnQgc29tZSBuZXcgd29yayBmb3IKPiAgICAqIEBudW1fZHdvcmRzOiBu dW1iZXIgb2YgRFdPUkRzIHRoYXQgd2UgcGxhbiB0byB3cml0ZSB0byB0aGUgcmluZ2J1ZmZlci4K PiAgICAqCj4gICAgKiBUaGUgcmluZ2J1ZmZlciBtaWdodCBub3QgYmUgcmVhZHkgdG8gYWNjZXB0 IHRoZSBjb21tYW5kcyByaWdodCBhd2F5IChtYXliZSBpdCBuZWVkcyB0bwo+IEBAIC0xMTAwLDgg KzExMDcsOSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmLCBpbnQgYnl0ZXMpCj4gICAgKgo+ICAgICogUmV0dXJuOiBub24t emVybyBpZiB0aGUgcmluZ2J1ZmZlciBpcyBub3QgcmVhZHkgdG8gYmUgd3JpdHRlbiB0by4KPiAg ICAqLwo+IC1pbnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLCBpbnQgbnVtX2R3b3JkcykKPiArc3RhdGljIGludCBpbnRlbF9sb2dpY2Fs X3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdv cmRzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJp bmdidWY7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7 Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IEBAIC0xMTE2LDM4 ICsxMTI0LDI4IEBAIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYsIGludCBudW1fZHdvcmRzKQo+ICAgCWlmIChyZXQpCj4gICAJCXJl dHVybiByZXQ7Cj4gICAKPiAtCWlmKCFyaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpIHsK PiAtCQlwcmludGsoS0VSTl9JTkZPICIlczolZD4gXHgxQlszMTsxbXJpbmctPm91dHN0YW5kaW5n X2xhenlfcmVxdWVzdCA9IDB4JXBceDFCWzBtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIHJpbmct Pm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCk7Cj4gLQkJZHVtcF9zdGFjaygpOwo+IC0JfQo+IC0K PiAtCS8qIFByZWFsbG9jYXRlIHRoZSBvbHIgYmVmb3JlIHRvdWNoaW5nIHRoZSByaW5nICovCj4g LQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdChyaW5nLCByaW5nYnVmLT5G SVhNRV9scmNfY3R4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gICAJcmlu Z2J1Zi0+c3BhY2UgLT0gbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCk7Cj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3Vu ZHNfZW1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtzdGF0aWMgaW50IGludGVs X2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAo+ICAgCQkJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAgIHsK PiAgIAlpbnQgcmV0LCBpOwo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBj dHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSByaW5nLT5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+ cmluZ2J1ZjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByZXEtPnJpbmctPmRldjsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICAgCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJmRldl9wcml2LT53b3JrYXJvdW5kczsK PiAgIAo+ICAgCWlmIChXQVJOX09OKHctPmNvdW50ID09IDApKQo+ICAgCQlyZXR1cm4gMDsKPiAg IAo+IC0JcmluZy0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7Cj4gLQlyZXQgPSBsb2dpY2FsX3Jp bmdfZmx1c2hfYWxsX2NhY2hlcyhyaW5nYnVmKTsKPiArCXJlcS0+cmluZy0+Z3B1X2NhY2hlc19k aXJ0eSA9IHRydWU7Cj4gKwlyZXQgPSBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhyZXEp Owo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX2xv Z2ljYWxfcmluZ19iZWdpbihyaW5nYnVmLCB3LT5jb3VudCAqIDIgKyAyKTsKPiArCXJldCA9IGlu dGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXEsIHctPmNvdW50ICogMiArIDIpOwo+ICAgCWlmIChy ZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMTE2MCw4ICsxMTU4LDggQEAgc3RhdGlj IGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAo+ICAgCj4gICAJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1 Zik7Cj4gICAKPiAtCXJpbmctPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+IC0JcmV0ID0gbG9n aWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmluZ2J1Zik7Cj4gKwlyZXEtPnJpbmctPmdwdV9j YWNoZXNfZGlydHkgPSB0cnVlOwo+ICsJcmV0ID0gbG9naWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNo ZXMocmVxKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTEyMTAs MTMgKzEyMDgsMTQgQEAgc3RhdGljIGludCBnZW44X2luaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAlyZXR1cm4gaW5pdF93b3JrYXJvdW5kc19yaW5nKHJp bmcpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICtzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFy dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCSAgICAgIHU2NCBvZmZz ZXQsIHVuc2lnbmVkIGZsYWdzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmdidWYgPSByZXEtPnJpbmdidWY7Cj4gICAJYm9vbCBwcGd0dCA9ICEoZmxhZ3MgJiBJOTE1X0RJ U1BBVENIX1NFQ1VSRSk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfbG9naWNh bF9yaW5nX2JlZ2luKHJpbmdidWYsIDQpOwo+ICsJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2Jl Z2luKHJlcSwgNCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0x MjYzLDE3ICsxMjYyLDE4IEBAIHN0YXRpYyB2b2lkIGdlbjhfbG9naWNhbF9yaW5nX3B1dF9pcnEo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGdl bjhfZW1pdF9mbHVzaChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArc3RhdGlj IGludCBnZW44X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g ICAJCQkgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLAo+ICAgCQkJICAgdTMyIHVudXNlZCkKPiAg IHsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+ ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByaW5nYnVmLT5yaW5nOwo+ICAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAl1aW50MzJfdCBjbWQ7Cj4g ICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJpbmdi dWYsIDQpOwo+ICsJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4gICAJ aWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0xMzAxLDEwICsxMzAxLDExIEBA IHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmLAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgZ2VuOF9lbWl0X2Zs dXNoX3JlbmRlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArc3RhdGljIGlu dCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAo+ICAgCQkJCSAgdTMyIGludmFsaWRhdGVfZG9tYWlucywKPiAgIAkJCQkgIHUzMiBmbHVzaF9k b21haW5zKQo+ICAgewo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEt PnJpbmdidWY7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJp bmc7Cj4gICAJdTMyIHNjcmF0Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIg KiBDQUNIRUxJTkVfQllURVM7Cj4gICAJdTMyIGZsYWdzID0gMDsKPiBAQCAtMTMyOCw3ICsxMzI5 LDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmLAo+ICAgCQlmbGFncyB8PSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9J VkI7Cj4gICAJfQo+ICAgCj4gLQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmluZ2J1 ZiwgNik7Cj4gKwlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmVxLCA2KTsKPiAgIAlp ZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTEzNTMsMTMgKzEzNTQsMTQgQEAg c3RhdGljIHZvaWQgZ2VuOF9zZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywg dTMyIHNlcW5vKQo+ICAgCWludGVsX3dyaXRlX3N0YXR1c19wYWdlKHJpbmcsIEk5MTVfR0VNX0hX U19JTkRFWCwgc2Vxbm8pOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVl c3Qoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gK3N0YXRpYyBpbnQgZ2VuOF9l bWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAgIAl1MzIgY21kOwo+ ICAgCWludCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyaW5n YnVmLCA2KTsKPiArCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXEsIDYpOwo+ICAg CWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMTM3MSw4ICsxMzczLDcgQEAg c3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1ZikKPiAgIAkJCQkocmluZy0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIgKwo+ICAgCQkJCShJOTE1 X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpKSk7Cj4gICAJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3Jpbmdf ZW1pdChyaW5nYnVmLAo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJpbmctPm91dHN0 YW5kaW5nX2xhenlfcmVxdWVzdCkpOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7Cj4gICAJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgTUlfVVNFUl9JTlRFUlJVUFQpOwo+ICAgCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICAgCWludGVsX2xvZ2ljYWxfcmluZ19hZHZh bmNlX2FuZF9zdWJtaXQocmluZ2J1Zik7Cj4gQEAgLTEzODAsMTYgKzEzODEsMjAgQEAgc3RhdGlj IGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29u dGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0JCSAgICAgICBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4KQo+ICtzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4KQo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX2xvZ2ljYWxf cmluZ193b3JrYXJvdW5kc19lbWl0KHJpbmcsIGN0eCk7Cj4gKwlyZXQgPSBpbnRlbF9sb2dpY2Fs X3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChyZXEsIGN0eCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0 dXJuIHJldDsKPiAgIAo+IC0JcmV0dXJuIGludGVsX2xyX2NvbnRleHRfcmVuZGVyX3N0YXRlX2lu aXQocmluZywgY3R4KTsKPiArCXJldCA9IGludGVsX2xyX2NvbnRleHRfcmVuZGVyX3N0YXRlX2lu aXQocmVxLCBjdHgpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldHVy biAwOwo+ICAgfQo+ICAgCj4gICAvKioKPiBAQCAtMTQwOSw2ICsxNDE0LDcgQEAgdm9pZCBpbnRl bF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAg Cj4gICAJaW50ZWxfbG9naWNhbF9yaW5nX3N0b3AocmluZyk7Cj4gICAJV0FSTl9PTigoSTkxNV9S RUFEX01PREUocmluZykgJiBNT0RFX0lETEUpID09IDApOwo+ICsJV0FSTl9PTihyaW5nLT5vdXRz dGFuZGluZ19sYXp5X3JlcXVlc3QpOwo+ICAgCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZyaW5n LT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QsIE5VTEwpOwo+ICAgCj4gICAJaWYgKHJpbmctPmNs ZWFudXApCj4gQEAgLTE2NDgsMTAgKzE2NTQsMTAgQEAgY2xlYW51cF9yZW5kZXJfcmluZzoKPiAg IAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLWludCBpbnRlbF9scl9jb250ZXh0X3JlbmRlcl9z dGF0ZV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gLQkJCQkgICAgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiArc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3Jl bmRlcl9zdGF0ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICsJCQkJ CSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOwo+ICsJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmco cmVxKTsKPiAgIAlzdHJ1Y3QgcmVuZGVyX3N0YXRlIHNvOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGN0eC0+ZmlsZV9wcml2Owo+ICAgCXN0cnVjdCBkcm1f ZmlsZSAqZmlsZSA9IGZpbGVfcHJpdiA/IGZpbGVfcHJpdi0+ZmlsZSA6IE5VTEw7Cj4gQEAgLTE2 NjQsMTUgKzE2NzAsMTMgQEAgaW50IGludGVsX2xyX2NvbnRleHRfcmVuZGVyX3N0YXRlX2luaXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlpZiAoc28ucm9kYXRhID09IE5VTEwp Cj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQlyZXQgPSByaW5nLT5lbWl0X2JiX3N0YXJ0KHJpbmdi dWYsCj4gLQkJCXNvLmdndHRfb2Zmc2V0LAo+IC0JCQlJOTE1X0RJU1BBVENIX1NFQ1VSRSk7Cj4g KwlyZXQgPSByaW5nLT5lbWl0X2JiX3N0YXJ0KHJlcSwgc28uZ2d0dF9vZmZzZXQsIEk5MTVfRElT UEFUQ0hfU0VDVVJFKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIG91dDsKPiAgIAo+IC0JaTkx NV92bWFfbW92ZV90b19hY3RpdmUoaTkxNV9nZW1fb2JqX3RvX2dndHQoc28ub2JqKSwgcmluZyk7 Cj4gKwlpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShpOTE1X2dlbV9vYmpfdG9fZ2d0dChzby5vYmop LCByZXEpOwo+ICAgCj4gLQlyZXQgPSBfX2k5MTVfYWRkX3JlcXVlc3QocmluZywgZmlsZSwgc28u b2JqLCB0cnVlKTsKPiArCXJldCA9IF9faTkxNV9hZGRfcmVxdWVzdChyZXEsIGZpbGUsIHNvLm9i aiwgdHJ1ZSk7Cj4gICAJLyogaW50ZWxfbG9naWNhbF9yaW5nX2FkZF9yZXF1ZXN0IG1vdmVzIG9i amVjdCB0byBpbmFjdGl2ZSBpZiBpdAo+ICAgCSAqIGZhaWxzICovCj4gICBvdXQ6Cj4gQEAgLTE4 ODMsNiArMTg4Nyw3IEBAIHN0YXRpYyB2b2lkIGxyY19zZXR1cF9oYXJkd2FyZV9zdGF0dXNfcGFn ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgaW50IGludGVsX2xyX2NvbnRleHRf ZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJCQkJICAgICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAljb25zdCBib29s IGlzX2dsb2JhbF9kZWZhdWx0X2N0eCA9IChjdHggPT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsK PiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqOwo+IEBAIC0xOTY0LDEzICsxOTY5LDI3IEBAIGludCBp bnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 LAo+ICAgCQlscmNfc2V0dXBfaGFyZHdhcmVfc3RhdHVzX3BhZ2UocmluZywgY3R4X29iaik7Cj4g ICAJZWxzZSBpZiAocmluZy0+aWQgPT0gUkNTICYmICFjdHgtPnJjc19pbml0aWFsaXplZCkgewo+ ICAgCQlpZiAocmluZy0+aW5pdF9jb250ZXh0KSB7Cj4gLQkJCXJldCA9IHJpbmctPmluaXRfY29u dGV4dChyaW5nLCBjdHgpOwo+ICsJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsK PiArCj4gKwkJCXJldCA9IGRldl9wcml2LT5ndC5hbGxvY19yZXF1ZXN0KHJpbmcsIGN0eCwgJnJl cSk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQkJcmV0ID0gcmlu Zy0+aW5pdF9jb250ZXh0KHJlcSwgY3R4KTsKPiAgIAkJCWlmIChyZXQpIHsKPiAgIAkJCQlEUk1f RVJST1IoInJpbmcgaW5pdCBjb250ZXh0OiAlZFxuIiwgcmV0KTsKPiArCQkJCWk5MTVfZ2VtX3Jl cXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKPiAgIAkJCQljdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmlu Z2J1ZiA9IE5VTEw7Cj4gICAJCQkJY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlID0gTlVMTDsK PiAgIAkJCQlnb3RvIGVycm9yOwo+ICAgCQkJfQo+ICsKPiArCQkJcmV0ID0gaTkxNV9hZGRfcmVx dWVzdF9ub19mbHVzaChyZXEpOwo+ICsJCQlpZiAocmV0KSB7Cj4gKwkJCQlEUk1fRVJST1IoInJp bmcgaW5pdCBjb250ZXh0OiAlZFxuIiwgcmV0KTsKPiArCQkJCWk5MTVfZ2VtX3JlcXVlc3RfdW5y ZWZlcmVuY2UocmVxKTsKPiArCQkJCWdvdG8gZXJyb3I7Cj4gKwkJCX0KPiAgIAkJfQo+ICAgCj4g ICAJCWN0eC0+cmNzX2luaXRpYWxpemVkID0gdHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aAo+IGluZGV4IGVhMDgzZDkuLmEyOTgxYmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aAo+IEBAIC0zNSwxMiArMzUsMTMgQEAKPiAgIAo+ICAgLyogTG9naWNhbCBSaW5ncyAqLwo+ICAg aW50IF9fbXVzdF9jaGVjayBpbnRlbF9sb2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0JCQkJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgpOwo+ICsJCQkJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gKwkJCQkJCSAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCk7Cj4gICB2b2lkIGludGVsX2xvZ2lj YWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICAgdm9pZCBpbnRl bF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAg IGludCBpbnRlbF9sb2dpY2FsX3JpbmdzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g ICAKPiAtaW50IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmKTsKPiAraW50IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPiAgIHZvaWQgaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7 Cj4gICAvKioKPiAgICAqIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKCkgLSBhZHZhbmNlIHRo ZSByaW5nYnVmZmVyIHRhaWwKPiBAQCAtNjMsMTEgKzY0LDggQEAgc3RhdGljIGlubGluZSB2b2lk IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm LAo+ICAgCWlvd3JpdGUzMihkYXRhLCByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+ dGFpbCk7Cj4gICAJcmluZ2J1Zi0+dGFpbCArPSA0Owo+ICAgfQo+IC1pbnQgaW50ZWxfbG9naWNh bF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLCBpbnQgbnVtX2R3 b3Jkcyk7Cj4gICAKPiAgIC8qIExvZ2ljYWwgUmluZyBDb250ZXh0cyAqLwo+IC1pbnQgaW50ZWxf bHJfY29udGV4dF9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+IC0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ICAgdm9pZCBpbnRl bF9scl9jb250ZXh0X2ZyZWUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4gICBpbnQgaW50 ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwK PiAgIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA5NzNjOWRlLi4yZDJjZTU5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC0yMDksMTcgKzIwOSwxNSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9vdmVybGF5X3VubWFwX3JlZ3Moc3RydWN0IGludGVsX292ZXJsYXkgKm92 ZXJsYXksCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9kb193YWl0X3Jl cXVlc3Qoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gKwkJCQkJIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCQkgdm9pZCAoKnRhaWwpKHN0cnVjdCBpbnRl bF9vdmVybGF5ICopKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvdmVybGF5 LT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9ICZkZXZfcHJpdi0+cmlu Z1tSQ1NdOwo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlCVUdfT04ob3ZlcmxheS0+bGFzdF9mbGlw X3JlcSk7Cj4gLQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb3ZlcmxheS0+bGFzdF9mbGlwX3Jl cSwKPiAtCQkJCQkgICAgIHJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCk7Cj4gLQlyZXQg PSBpOTE1X2FkZF9yZXF1ZXN0KHJpbmcpOwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm92 ZXJsYXktPmxhc3RfZmxpcF9yZXEsIHJlcSk7Cj4gKwlyZXQgPSBpOTE1X2FkZF9yZXF1ZXN0KG92 ZXJsYXktPmxhc3RfZmxpcF9yZXEpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4g ICAKPiBAQCAtMjM5LDYgKzIzNyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihzdHJ1 Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g b3ZlcmxheS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9ICZkZXZf cHJpdi0+cmluZ1tSQ1NdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4g ICAJaW50IHJldDsKPiAgIAo+ICAgCUJVR19PTihvdmVybGF5LT5hY3RpdmUpOwo+IEBAIC0yNDYs MTcgKzI0NSwyMSBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXkpCj4gICAKPiAgIAlXQVJOX09OKElTX0k4MzAoZGV2KSAmJiAhKGRldl9w cml2LT5xdWlya3MgJiBRVUlSS19QSVBFQV9GT1JDRSkpOwo+ICAgCj4gLQlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJpbmcsIDQpOwo+ICsJcmV0ID0gZGV2X3ByaXYtPmd0LmFsbG9jX3JlcXVlc3Qo cmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiAgIAlpZiAocmV0KQo+ICAgCQly ZXR1cm4gcmV0Owo+ICAgCj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQ IHwgTUlfT1ZFUkxBWV9PTik7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgb3ZlcmxheS0+Zmxp cF9hZGRyIHwgT0ZDX1VQREFURSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwo+IC0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX05PT1ApOwo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+ICsJcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ ICsKPiArCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09W RVJMQVlfT04pOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZywgb3ZlcmxheS0+ZmxpcF9h ZGRyIHwgT0ZDX1VQREFURSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBNSV9XQUlU X0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4gKwlpbnRlbF9yaW5nX2Vt aXQocmVxLT5yaW5nLCBNSV9OT09QKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmcp Owo+ICAgCj4gLQlyZXR1cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwg TlVMTCk7Cj4gKwlyZXR1cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwg cmVxLCBOVUxMKTsKPiAgIH0KPiAgIAo+ICAgLyogb3ZlcmxheSBuZWVkcyB0byBiZSBlbmFibGVk IGluIE9DTUQgcmVnICovCj4gQEAgLTI2Niw2ICsyNjksNyBAQCBzdGF0aWMgaW50IGludGVsX292 ZXJsYXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG92ZXJsYXktPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbUkNTXTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxOwo+ICAgCXUzMiBmbGlwX2FkZHIgPSBvdmVybGF5LT5mbGlwX2FkZHI7 Cj4gICAJdTMyIHRtcDsKPiAgIAlpbnQgcmV0Owo+IEBAIC0yODAsNyArMjg0LDExIEBAIHN0YXRp YyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zlcmxh eSwKPiAgIAlpZiAodG1wICYgKDEgPDwgMTcpKQo+ICAgCQlEUk1fREVCVUcoIm92ZXJsYXkgdW5k ZXJydW4sIERPVlNUQTogJXhcbiIsIHRtcCk7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmluZywgMik7Cj4gKwlyZXQgPSBkZXZfcHJpdi0+Z3QuYWxsb2NfcmVxdWVzdChyaW5nLCBy aW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiAgIAlpZiAocmV0KQo+ ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTI4OSw5ICsyOTcsOCBAQCBzdGF0aWMgaW50IGlu dGVsX292ZXJsYXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gICAJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+ICAgCj4gICAJV0FSTl9PTihvdmVybGF5LT5sYXN0 X2ZsaXBfcmVxKTsKPiAtCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvdmVybGF5LT5sYXN0X2Zs aXBfcmVxLAo+IC0JCQkJCSAgICAgcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KTsKPiAt CXJldHVybiBpOTE1X2FkZF9yZXF1ZXN0KHJpbmcpOwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9hc3Np Z24oJm92ZXJsYXktPmxhc3RfZmxpcF9yZXEsIHJlcSk7Cj4gKwlyZXR1cm4gaTkxNV9hZGRfcmVx dWVzdChyZXEpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpbnRlbF9vdmVybGF5X3JlbGVh c2Vfb2xkX3ZpZF90YWlsKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+IEBAIC0zMjYs NiArMzMzLDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3Zl cmxheSAqb3ZlcmxheSkKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb3ZlcmxheS0+ZGV2 Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tS Q1NdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gICAJdTMyIGZsaXBf YWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gQEAgLTMzNyw3 ICszNDUsMTEgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3Zl cmxheSAqb3ZlcmxheSkKPiAgIAkgKiBvZiB0aGUgaHcuIERvIGl0IGluIGJvdGggY2FzZXMgKi8K PiAgIAlmbGlwX2FkZHIgfD0gT0ZDX1VQREFURTsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyaW5nLCA2KTsKPiArCXJldCA9IGRldl9wcml2LT5ndC5hbGxvY19yZXF1ZXN0KHJpbmcs IHJpbmctPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwo+ICAgCWlmIChyZXQp Cj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMzU5LDcgKzM3MSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gICAJfQo+ ICAgCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+IC0JcmV0dXJuIGludGVsX292ZXJs YXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIGludGVsX292ZXJsYXlfb2ZmX3RhaWwpOwo+ICsJ cmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwgaW50ZWxf b3ZlcmxheV9vZmZfdGFpbCk7Cj4gICB9Cj4gICAKPiAgIC8qIHJlY292ZXIgZnJvbSBhbiBpbnRl cnJ1cHRpb24gZHVlIHRvIGEgc2lnbmFsCj4gQEAgLTQwNCw3ICs0MTYsMTMgQEAgc3RhdGljIGlu dCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zl cmxheSkKPiAgIAo+ICAgCWlmIChJOTE1X1JFQUQoSVNSKSAmIEk5MTVfT1ZFUkxBWV9QTEFORV9G TElQX1BFTkRJTkdfSU5URVJSVVBUKSB7Cj4gICAJCS8qIHN5bmNocm9ub3VzIHNsb3dwYXRoICov Cj4gLQkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCAyKTsKPiArCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiArCj4gKwkJcmV0ID0gZGV2X3ByaXYtPmd0LmFsbG9jX3Jl cXVlc3QocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiArCQlpZiAocmV0KQo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7 Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTQxMiw3ICs0MzAs NyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRl bF9vdmVybGF5ICpvdmVybGF5KQo+ICAgCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Cj4gICAJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+IC0JCXJldCA9IGludGVsX292 ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksCj4gKwkJcmV0ID0gaW50ZWxfb3ZlcmxheV9k b193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLAo+ICAgCQkJCQkJICAgIGludGVsX292ZXJsYXlf cmVsZWFzZV9vbGRfdmlkX3RhaWwpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA3ODkxMWUyLi41OTA1ZmE1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTU1MDYsNiArNTUwNiw3IEBAIHN0YXRpYyB2b2lk IGlyb25sYWtlX2VuYWJsZV9yYzYoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIHsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbUkNTXTsKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gTlVMTDsKPiAgIAlib29sIHdhc19p bnRlcnJ1cHRpYmxlOwo+ICAgCWludCByZXQ7Cj4gICAKPiBAQCAtNTUyNCwxNiArNTUyNSwxNyBA QCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfcmM2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJd2FzX2ludGVycnVwdGlibGUgPSBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZTsKPiAg IAlkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSA9IGZhbHNlOwo+ICAgCj4gKwlyZXQgPSBkZXZf cHJpdi0+Z3QuYWxsb2NfcmVxdWVzdChyaW5nLCBOVUxMLCAmcmVxKTsKPiArCWlmIChyZXQpCj4g KwkJZ290byBlcnI7Cj4gKwo+ICAgCS8qCj4gICAJICogR1BVIGNhbiBhdXRvbWF0aWNhbGx5IHBv d2VyIGRvd24gdGhlIHJlbmRlciB1bml0IGlmIGdpdmVuIGEgcGFnZQo+ICAgCSAqIHRvIHNhdmUg c3RhdGUuCj4gICAJICovCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDYpOwo+IC0J aWYgKHJldCkgewo+IC0JCWlyb25sYWtlX3RlYXJkb3duX3JjNihkZXYpOwo+IC0JCWRldl9wcml2 LT5tbS5pbnRlcnJ1cHRpYmxlID0gd2FzX2ludGVycnVwdGlibGU7Cj4gLQkJcmV0dXJuOwo+IC0J fQo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwo+ICsJaWYgKHJldCkKPiArCQln b3RvIGVycjsKPiAgIAo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVVNQRU5EX0ZMVVNI IHwgTUlfU1VTUEVORF9GTFVTSF9FTik7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NF VF9DT05URVhUKTsKPiBAQCAtNTU0Nyw2ICs1NTQ5LDExIEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X2VuYWJsZV9yYzYoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfRkxVU0gpOwo+ICAgCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+ICsJ cmV0ID0gaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXEpOwo+ICsJaWYgKHJldCkKPiArCQln b3RvIGVycjsKPiArCXJlcSA9IE5VTEw7Cj4gKwo+ICAgCS8qCj4gICAJICogV2FpdCBmb3IgdGhl IGNvbW1hbmQgcGFyc2VyIHRvIGFkdmFuY2UgcGFzdCBNSV9TRVRfQ09OVEVYVC4gVGhlIEhXCj4g ICAJICogZG9lcyBhbiBpbXBsaWNpdCBmbHVzaCwgY29tYmluZWQgd2l0aCBNSV9GTFVTSCBhYm92 ZSwgaXQgc2hvdWxkIGJlCj4gQEAgLTU1NTQsMTYgKzU1NjEsMjAgQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCSAqLwo+ICAgCXJl dCA9IGludGVsX3JpbmdfaWRsZShyaW5nKTsKPiAgIAlkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJs ZSA9IHdhc19pbnRlcnJ1cHRpYmxlOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFp bGVkIHRvIGVuYWJsZSBpcm9ubGFrZSBwb3dlciBzYXZpbmdzXG4iKTsKPiAtCQlpcm9ubGFrZV90 ZWFyZG93bl9yYzYoZGV2KTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gZXJyOwo+ICAgCj4gICAJSTkxNV9XUklURShQV1JDVFhBLCBpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXQoZGV2X3ByaXYtPmlwcy5wd3JjdHgpIHwgUFdSQ1RYX0VOKTsKPiAgIAlJOTE1X1dSSVRF KFJTVERCWUNUTCwgSTkxNV9SRUFEKFJTVERCWUNUTCkgJiB+UkNYX1NXX0VYSVQpOwo+ICAgCj4g ICAJaW50ZWxfcHJpbnRfcmM2X2luZm8oZGV2LCBHRU42X1JDX0NUTF9SQzZfRU5BQkxFKTsKPiAr Cj4gK2VycjoKPiArCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSBpcm9ubGFrZSBwb3dlciBz YXZpbmdzXG4iKTsKPiArCWlyb25sYWtlX3RlYXJkb3duX3JjNihkZXYpOwo+ICsJZGV2X3ByaXYt Pm1tLmludGVycnVwdGlibGUgPSB3YXNfaW50ZXJydXB0aWJsZTsKPiArCWlmIChyZXEpCj4gKwkJ aTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMg dW5zaWduZWQgbG9uZyBpbnRlbF9weGZyZXEodTMyIHZpZGZyZXEpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGI2MGU1OWIuLmU2ZTdiYjUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTkxLDEwICs5MSwxMSBA QCB2b2lkIF9faW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiAtZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkgICAgICAgdTMyCWludmFsaWRhdGVf ZG9tYWlucywKPiAgIAkJICAgICAgIHUzMglmbHVzaF9kb21haW5zKQo+ICAgewo+ICsJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAl1MzIgY21kOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiBAQCAtMTA1LDcgKzEwNiw3IEBAIGdlbjJfcmVuZGVyX3JpbmdfZmx1c2go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlpZiAoaW52YWxpZGF0ZV9kb21haW5z ICYgSTkxNV9HRU1fRE9NQUlOX1NBTVBMRVIpCj4gICAJCWNtZCB8PSBNSV9SRUFEX0ZMVVNIOwo+ ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDIpOwo+ICsJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDIpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAK PiBAQCAtMTE3LDEwICsxMTgsMTEgQEAgZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50Cj4gLWdlbjRfcmVu ZGVyX3JpbmdfZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiArZ2VuNF9yZW5k ZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAg ICAgIHUzMglpbnZhbGlkYXRlX2RvbWFpbnMsCj4gICAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlu cykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4g ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKPiAgIAl1MzIgY21kOwo+ICAg CWludCByZXQ7Cj4gQEAgLTE2Myw3ICsxNjUsNyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJICAgIChJU19HNFgoZGV2KSB8fCBJU19H RU41KGRldikpKQo+ICAgCQljbWQgfD0gTUlfSU5WQUxJREFURV9JU1A7Cj4gICAKPiAtCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmluZywgMik7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgMik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0yMTIsMTIg KzIxNCwxMyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4gICAgKiByZWFsbHkgb3VyIGJ1c2luZXNzLiAgVGhhdCBsZWF2ZXMgb25seSBzdGFs bCBhdCBzY29yZWJvYXJkLgo+ICAgICovCj4gICBzdGF0aWMgaW50Cj4gLWludGVsX2VtaXRfcG9z dF9zeW5jX25vbnplcm9fZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAraW50 ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJp bmc7Cj4gICAJdTMyIHNjcmF0Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIg KiBDQUNIRUxJTkVfQllURVM7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyaW5nLCA2KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKPiAg IAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTIzMCw3ICsyMzMsNyBAQCBp bnRlbF9lbWl0X3Bvc3Rfc3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICAgCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCA2 KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKPiAgIAlpZiAocmV0KQo+ICAg CQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTI0NiwxNSArMjQ5LDE2IEBAIGludGVsX2VtaXRfcG9z dF9zeW5jX25vbnplcm9fZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIH0K PiAgIAo+ICAgc3RhdGljIGludAo+IC1nZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaW52YWxp ZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKPiArZ2VuNl9yZW5kZXJfcmluZ19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArICAgICAgICAgICAgICAgICAg ICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKPiAgIHsKPiAr CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJdTMyIGZsYWdz ID0gMDsKPiAgIAl1MzIgc2NyYXRjaF9hZGRyID0gcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsg MiAqIENBQ0hFTElORV9CWVRFUzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJLyogRm9yY2UgU05C IHdvcmthcm91bmRzIGZvciBQSVBFX0NPTlRST0wgZmx1c2hlcyAqLwo+IC0JcmV0ID0gaW50ZWxf ZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChyaW5nKTsKPiArCXJldCA9IGludGVsX2VtaXRf cG9zdF9zeW5jX25vbnplcm9fZmx1c2gocmVxKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4g cmV0Owo+ICAgCj4gQEAgLTI4NCw3ICsyODgsNyBAQCBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCWZsYWdzIHw9IFBJUEVfQ09OVFJPTF9R V19XUklURSB8IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKPiAgIAl9Cj4gICAKPiAtCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocmluZywgNCk7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg NCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0yOTgsMTEgKzMw MiwxMiBAQCBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiAtZ2VuN19yZW5kZXJfcmluZ19jc19zdGFs bF93YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICtnZW43X3JlbmRlcl9yaW5nX2Nz X3N0YWxsX3dhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+ICAg Cj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDQpOwo+ICsJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBA QCAtMzE2LDE0ICszMjEsMTUgQEAgZ2VuN19yZW5kZXJfcmluZ19jc19zdGFsbF93YShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRp YyBpbnQgZ2VuN19yaW5nX2ZiY19mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1 MzIgdmFsdWUpCj4gK3N0YXRpYyBpbnQgZ2VuN19yaW5nX2ZiY19mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIHZhbHVlKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKCFy aW5nLT5mYmNfZGlydHkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJpbmcsIDYpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwo+ICAg CWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAJLyogV2FGYmNOdWtlT24zREJsdDppdmIv aHN3ICovCj4gQEAgLTM0MCw5ICszNDYsMTAgQEAgc3RhdGljIGludCBnZW43X3JpbmdfZmJjX2Zs dXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiB2YWx1ZSkKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGludAo+IC1nZW43X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCj4gK2dlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gICAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIg Zmx1c2hfZG9tYWlucykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBy ZXEtPnJpbmc7Cj4gICAJdTMyIGZsYWdzID0gMDsKPiAgIAl1MzIgc2NyYXRjaF9hZGRyID0gcmlu Zy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAgIAlpbnQgcmV0 Owo+IEBAIC0zODEsMTAgKzM4OCwxMCBAQCBnZW43X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCS8qIFdvcmthcm91bmQ6IHdlIG11c3QgaXNzdWUg YSBwaXBlX2NvbnRyb2wgd2l0aCBDUy1zdGFsbCBiaXQKPiAgIAkJICogc2V0IGJlZm9yZSBhIHBp cGVfY29udHJvbCBjb21tYW5kIHRoYXQgaGFzIHRoZSBzdGF0ZSBjYWNoZQo+ICAgCQkgKiBpbnZh bGlkYXRlIGJpdCBzZXQuICovCj4gLQkJZ2VuN19yZW5kZXJfcmluZ19jc19zdGFsbF93YShyaW5n KTsKPiArCQlnZW43X3JlbmRlcl9yaW5nX2NzX3N0YWxsX3dhKHJlcSk7Cj4gICAJfQo+ICAgCj4g LQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDQpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAt Mzk1LDE4ICs0MDIsMTkgQEAgZ2VuN19yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAo+ICAgCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+ICAgCWlm ICghaW52YWxpZGF0ZV9kb21haW5zICYmIGZsdXNoX2RvbWFpbnMpCj4gLQkJcmV0dXJuIGdlbjdf cmluZ19mYmNfZmx1c2gocmluZywgRkJDX1JFTkRfTlVLRSk7Cj4gKwkJcmV0dXJuIGdlbjdfcmlu Z19mYmNfZmx1c2gocmVxLCBGQkNfUkVORF9OVUtFKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgaW50Cj4gLWdlbjhfZW1pdF9waXBlX2NvbnRyb2woc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKPiArZ2VuOF9lbWl0X3BpcGVfY29udHJvbChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUzMiBmbGFncywgdTMyIHNjcmF0 Y2hfYWRkcikKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJp bmc7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCA2 KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKPiAgIAlpZiAocmV0KQo+ICAg CQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTQyMiwxMSArNDMwLDExIEBAIGdlbjhfZW1pdF9waXBl X2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIH0KPiAgIAo+ICAgc3Rh dGljIGludAo+IC1nZW44X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4gK2dlbjhfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gICAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hf ZG9tYWlucykKPiAgIHsKPiAgIAl1MzIgZmxhZ3MgPSAwOwo+IC0JdTMyIHNjcmF0Y2hfYWRkciA9 IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIg c2NyYXRjaF9hZGRyID0gcmVxLT5yaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVM SU5FX0JZVEVTOwo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlmbGFncyB8PSBQSVBFX0NPTlRST0xf Q1NfU1RBTEw7Cj4gQEAgLTQ0Niw3ICs0NTQsNyBAQCBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCWZsYWdzIHw9IFBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUX0lWQjsKPiAgIAo+ICAgCQkvKiBXYUNzU3RhbGxCZWZvcmVTdGF0ZUNhY2hlSW52 YWxpZGF0ZTpiZHcsY2h2ICovCj4gLQkJcmV0ID0gZ2VuOF9lbWl0X3BpcGVfY29udHJvbChyaW5n LAo+ICsJCXJldCA9IGdlbjhfZW1pdF9waXBlX2NvbnRyb2wocmVxLAo+ICAgCQkJCQkgICAgIFBJ UEVfQ09OVFJPTF9DU19TVEFMTCB8Cj4gICAJCQkJCSAgICAgUElQRV9DT05UUk9MX1NUQUxMX0FU X1NDT1JFQk9BUkQsCj4gICAJCQkJCSAgICAgMCk7Cj4gQEAgLTQ1NCwxMiArNDYyLDEyIEBAIGdl bjhfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJ CXJldHVybiByZXQ7Cj4gICAJfQo+ICAgCj4gLQlyZXQgPSBnZW44X2VtaXRfcGlwZV9jb250cm9s KHJpbmcsIGZsYWdzLCBzY3JhdGNoX2FkZHIpOwo+ICsJcmV0ID0gZ2VuOF9lbWl0X3BpcGVfY29u dHJvbChyZXEsIGZsYWdzLCBzY3JhdGNoX2FkZHIpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVy biByZXQ7Cj4gICAKPiAgIAlpZiAoIWludmFsaWRhdGVfZG9tYWlucyAmJiBmbHVzaF9kb21haW5z KQo+IC0JCXJldHVybiBnZW43X3JpbmdfZmJjX2ZsdXNoKHJpbmcsIEZCQ19SRU5EX05VS0UpOwo+ ICsJCXJldHVybiBnZW43X3JpbmdfZmJjX2ZsdXNoKHJlcSwgRkJDX1JFTkRfTlVLRSk7Cj4gICAK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiBAQCAtNjcwLDkgKzY3OCwxMCBAQCBlcnI6Cj4gICAJcmV0 dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNf ZW1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtzdGF0aWMgaW50IGludGVsX3Jp bmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAg IAkJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAgIHsKPiArCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldCwgaTsKPiAgIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTY4MiwxMSArNjkxLDEx IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJcmluZy0+Z3B1X2NhY2hl c19kaXJ0eSA9IHRydWU7Cj4gLQlyZXQgPSBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmlu Zyk7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKPiAgIAlpZiAo cmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJp bmcsICh3LT5jb3VudCAqIDIgKyAyKSk7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg KHctPmNvdW50ICogMiArIDIpKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAg Cj4gQEAgLTcwMCw3ICs3MDksNyBAQCBzdGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNf ZW1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKPiAgIAo+ICAgCXJpbmctPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+IC0JcmV0 ID0gaW50ZWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJpbmcpOwo+ICsJcmV0ID0gaW50ZWxfcmlu Z19mbHVzaF9hbGxfY2FjaGVzKHJlcSk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsK PiAgIAo+IEBAIC04OTgsMTAgKzkwNywxMSBAQCBzdGF0aWMgdm9pZCByZW5kZXJfcmluZ19jbGVh bnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJaW50ZWxfZmluaV9waXBlX2Nv bnRyb2wocmluZyk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBnZW44X3Jjc19zaWduYWwoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyLAo+ICtzdGF0aWMgaW50IGdlbjhfcmNzX3Np Z25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICAJCQkg ICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKPiAgIHsKPiAgICNkZWZpbmUgTUJPWF9VUERBVEVf RFdPUkRTIDgKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxl cl9yZXEtPnJpbmc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2 Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwo+IEBAIC05MTEsNyArOTIx LDcgQEAgc3RhdGljIGludCBnZW44X3Jjc19zaWduYWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq c2lnbmFsbGVyLAo+ICAgCW51bV9kd29yZHMgKz0gKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRF X0RXT1JEUzsKPiAgICN1bmRlZiBNQk9YX1VQREFURV9EV09SRFMKPiAgIAo+IC0JcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihzaWduYWxsZXIsIG51bV9kd29yZHMpOwo+ICsJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihzaWduYWxsZXJfcmVxLCBudW1fZHdvcmRzKTsKPiAgIAlpZiAocmV0KQo+ICAgCQly ZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTkyMSw4ICs5MzEsNyBAQCBzdGF0aWMgaW50IGdlbjhfcmNz X3NpZ25hbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gICAJCWlmIChndHRf b2Zmc2V0ID09IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCj4gICAJCQljb250aW51ZTsKPiAg IAo+IC0JCXNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8oCj4gLQkJCQkJICAgc2ln bmFsbGVyLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpOwo+ICsJCXNlcW5vID0gaTkxNV9nZW1f cmVxdWVzdF9nZXRfc2Vxbm8oc2lnbmFsbGVyX3JlcSk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChz aWduYWxsZXIsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQo c2lnbmFsbGVyLCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAo+ICAgCQkJCQkgICBQSVBF X0NPTlRST0xfUVdfV1JJVEUgfAo+IEBAIC05MzksMTAgKzk0OCwxMSBAQCBzdGF0aWMgaW50IGdl bjhfcmNzX3NpZ25hbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyLAo+ICtzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICAJCQkgICB1bnNp Z25lZCBpbnQgbnVtX2R3b3JkcykKPiAgIHsKPiAgICNkZWZpbmUgTUJPWF9VUERBVEVfRFdPUkRT IDYKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEt PnJpbmc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2Owo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwo+IEBAIC05NTIsNyArOTYyLDcgQEAg c3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFs bGVyLAo+ICAgCW51bV9kd29yZHMgKz0gKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRFX0RXT1JE UzsKPiAgICN1bmRlZiBNQk9YX1VQREFURV9EV09SRFMKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihzaWduYWxsZXIsIG51bV9kd29yZHMpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdp bihzaWduYWxsZXJfcmVxLCBudW1fZHdvcmRzKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4g cmV0Owo+ICAgCj4gQEAgLTk2Miw4ICs5NzIsNyBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25h bChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gICAJCWlmIChndHRfb2Zmc2V0 ID09IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0J CXNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8oCj4gLQkJCQkJICAgc2lnbmFsbGVy LT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpOwo+ICsJCXNlcW5vID0gaTkxNV9nZW1fcmVxdWVz dF9nZXRfc2Vxbm8oc2lnbmFsbGVyX3JlcSk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxs ZXIsIChNSV9GTFVTSF9EVyArIDEpIHwKPiAgIAkJCQkJICAgTUlfRkxVU0hfRFdfT1BfU1RPUkVE Vyk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIGxvd2VyXzMyX2JpdHMoZ3R0X29m ZnNldCkgfAo+IEBAIC05NzgsOSArOTg3LDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFs KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciwKPiAgIAlyZXR1cm4gMDsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNp Z25hbGxlciwKPiArc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICAJCSAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3Jk cykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxl cl9yZXEtPnJpbmc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2 Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqdXNlbGVzczsKPiBAQCAtOTkxLDE1ICsx MDAxLDE0IEBAIHN0YXRpYyBpbnQgZ2VuNl9zaWduYWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq c2lnbmFsbGVyLAo+ICAgCW51bV9kd29yZHMgKz0gcm91bmRfdXAoKG51bV9yaW5ncy0xKSAqIE1C T1hfVVBEQVRFX0RXT1JEUywgMik7Cj4gICAjdW5kZWYgTUJPWF9VUERBVEVfRFdPUkRTCj4gICAK PiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4oc2lnbmFsbGVyLCBudW1fZHdvcmRzKTsKPiArCXJl dCA9IGludGVsX3JpbmdfYmVnaW4oc2lnbmFsbGVyX3JlcSwgbnVtX2R3b3Jkcyk7Cj4gICAJaWYg KHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+ICAgCWZvcl9lYWNoX3JpbmcodXNlbGVzcywg ZGV2X3ByaXYsIGkpIHsKPiAgIAkJdTMyIG1ib3hfcmVnID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUu bWJveC5zaWduYWxbaV07Cj4gICAJCWlmIChtYm94X3JlZyAhPSBHRU42X05PU1lOQykgewo+IC0J CQl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubygKPiAtCQkJCQkgICBzaWdu YWxsZXItPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCk7Cj4gKwkJCXUzMiBzZXFubyA9IGk5MTVf Z2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHNpZ25hbGxlcl9yZXEpOwo+ICAgCQkJaW50ZWxfcmluZ19l bWl0KHNpZ25hbGxlciwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+ICAgCQkJaW50ZWxfcmlu Z19lbWl0KHNpZ25hbGxlciwgbWJveF9yZWcpOwo+ICAgCQkJaW50ZWxfcmluZ19lbWl0KHNpZ25h bGxlciwgc2Vxbm8pOwo+IEBAIC0xMDE2LDI5ICsxMDI1LDI4IEBAIHN0YXRpYyBpbnQgZ2VuNl9z aWduYWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyLAo+ICAgLyoqCj4gICAgKiBn ZW42X2FkZF9yZXF1ZXN0IC0gVXBkYXRlIHRoZSBzZW1hcGhvcmUgbWFpbGJveCByZWdpc3RlcnMK PiAgICAqCj4gLSAqIEByaW5nIC0gcmluZyB0aGF0IGlzIGFkZGluZyBhIHJlcXVlc3QKPiAtICog QHNlcW5vIC0gcmV0dXJuIHNlcW5vIHN0dWNrIGludG8gdGhlIHJpbmcKPiArICogQHJlcXVlc3Qg LSByZXF1ZXN0IHRvIHdyaXRlIHRvIHRoZSByaW5nCj4gICAgKgo+ICAgICogVXBkYXRlIHRoZSBt YWlsYm94IHJlZ2lzdGVycyBpbiB0aGUgKm90aGVyKiByaW5ncyB3aXRoIHRoZSBjdXJyZW50IHNl cW5vLgo+ICAgICogVGhpcyBhY3RzIGxpa2UgYSBzaWduYWwgaW4gdGhlIGNhbm9uaWNhbCBzZW1h cGhvcmUuCj4gICAgKi8KPiAgIHN0YXRpYyBpbnQKPiAtZ2VuNl9hZGRfcmVxdWVzdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICtnZW42X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKHJpbmctPnNlbWFwaG9y ZS5zaWduYWwpCj4gLQkJcmV0ID0gcmluZy0+c2VtYXBob3JlLnNpZ25hbChyaW5nLCA0KTsKPiAr CQlyZXQgPSByaW5nLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSwgNCk7Cj4gICAJZWxzZQo+IC0JCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgNCk7Cj4gKwkJcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDQpOwo+ICAgCj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+ICAg CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9EV09SRF9JTkRFWCk7Cj4gICAJaW50ZWxf cmluZ19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRF WF9TSElGVCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywKPiAtCQkgICAgaTkxNV9nZW1fcmVx dWVzdF9nZXRfc2Vxbm8ocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KSk7Cj4gKwlpbnRl bF9yaW5nX2VtaXQocmluZywgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7Cj4gICAJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBUKTsKPiAgIAlfX2ludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKPiAgIAo+IEBAIC0xMDYxLDE0ICsxMDY5LDE1IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBpOTE1X2dlbV9oYXNfc2Vxbm9fd3JhcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAgICovCj4gICAKPiAgIHN0YXRpYyBpbnQKPiAtZ2VuOF9yaW5nX3N5bmMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyLAo+ICtnZW44X3Jpbmdfc3luYyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKndhaXRlcl9yZXEsCj4gICAJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnNpZ25hbGxlciwKPiAgIAkgICAgICAgdTMyIHNlcW5vKQo+ICAgewo+ICsJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyID0gd2FpdGVyX3JlcS0+cmluZzsKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB3YWl0ZXItPmRldi0+ZGV2X3ByaXZhdGU7Cj4g ICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbih3YWl0ZXIsIDQpOwo+ ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbih3YWl0ZXJfcmVxLCA0KTsKPiAgIAlpZiAocmV0KQo+ ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTEwODYsMTAgKzEwOTUsMTEgQEAgZ2VuOF9yaW5n X3N5bmMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyLAo+ICAgfQo+ICAgCj4gICBzdGF0 aWMgaW50Cj4gLWdlbjZfcmluZ19zeW5jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlciwK PiArZ2VuNl9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0ZXJfcmVx LAo+ICAgCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gICAJICAg ICAgIHUzMiBzZXFubykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlciA9 IHdhaXRlcl9yZXEtPnJpbmc7Cj4gICAJdTMyIGR3MSA9IE1JX1NFTUFQSE9SRV9NQk9YIHwKPiAg IAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8Cj4gICAJCSAgTUlfU0VNQVBIT1JFX1JFR0lTVEVS Owo+IEBAIC0xMTA0LDcgKzExMTQsNyBAQCBnZW42X3Jpbmdfc3luYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICp3YWl0ZXIsCj4gICAKPiAgIAlXQVJOX09OKHdhaXRfbWJveCA9PSBNSV9TRU1BUEhP UkVfU1lOQ19JTlZBTElEKTsKPiAgIAo+IC0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbih3YWl0ZXIs IDQpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbih3YWl0ZXJfcmVxLCA0KTsKPiAgIAlpZiAo cmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTExMzUsOCArMTE0NSw5IEBAIGRvIHsJ CQkJCQkJCQlcCj4gICB9IHdoaWxlICgwKQo+ICAgCj4gICBzdGF0aWMgaW50Cj4gLXBjX3JlbmRl cl9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICtwY19yZW5kZXJf YWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCXUzMiBzY3JhdGNo X2FkZHIgPSByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwo+ ICAgCWludCByZXQ7Cj4gICAKPiBAQCAtMTE0OCw3ICsxMTU5LDcgQEAgcGNfcmVuZGVyX2FkZF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJICogaW5jb2hlcmVuY2Ug YnkgZmx1c2hpbmcgdGhlIDYgUElQRV9OT1RJRlkgYnVmZmVycyBvdXQgdG8KPiAgIAkgKiBtZW1v cnkgYmVmb3JlIHJlcXVlc3RpbmcgYW4gaW50ZXJydXB0Lgo+ICAgCSAqLwo+IC0JcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyaW5nLCAzMik7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg MzIpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMTE1Niw4ICsx MTY3LDcgQEAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCj4gICAJCQlQSVBFX0NPTlRST0xfV1JJVEVfRkxVU0ggfAo+ICAgCQkJUElQRV9DT05UUk9M X1RFWFRVUkVfQ0FDSEVfSU5WQUxJREFURSk7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJp bmctPnNjcmF0Y2guZ3R0X29mZnNldCB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKPiAtCWlu dGVsX3JpbmdfZW1pdChyaW5nLAo+IC0JCSAgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhy aW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5n LCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpKTsKPiAgIAlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7Cj4gICAJUElQRV9DT05UUk9MX0ZMVVNIKHJpbmcsIHNjcmF0Y2hfYWRkcik7Cj4g ICAJc2NyYXRjaF9hZGRyICs9IDIgKiBDQUNIRUxJTkVfQllURVM7IC8qIHdyaXRlIHRvIHNlcGFy YXRlIGNhY2hlbGluZXMgKi8KPiBAQCAtMTE3Niw4ICsxMTg2LDcgQEAgcGNfcmVuZGVyX2FkZF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJCQlQSVBFX0NPTlRST0xf VEVYVFVSRV9DQUNIRV9JTlZBTElEQVRFIHwKPiAgIAkJCVBJUEVfQ09OVFJPTF9OT1RJRlkpOwo+ ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQSVBF X0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywKPiAtCQkgICAg aTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0 KSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8o cmVxKSk7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ICAgCV9faW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOwo+ICAgCj4gQEAgLTEzOTAsMTMgKzEzOTksMTQgQEAgdm9pZCBpbnRlbF9y aW5nX3NldHVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB9 Cj4gICAKPiAgIHN0YXRpYyBpbnQKPiAtYnNkX3JpbmdfZmx1c2goc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKPiArYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gICAJICAgICAgIHUzMiAgICAgaW52YWxpZGF0ZV9kb21haW5zLAo+ICAgCSAgICAg ICB1MzIgICAgIGZsdXNoX2RvbWFpbnMpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmluZywgMik7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4g ICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0xNDA3LDE4ICsxNDE3LDE4 IEBAIGJzZF9yaW5nX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICB9Cj4g ICAKPiAgIHN0YXRpYyBpbnQKPiAtaTl4eF9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQo+ICtpOXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmlu ZzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDQp Owo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gICAKPiAgIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdP UkRfSU5ERVgpOwo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVgg PDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcs Cj4gLQkJICAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJpbmctPm91dHN0YW5kaW5nX2xh enlfcmVxdWVzdCkpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3Rf Z2V0X3NlcW5vKHJlcSkpOwo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVS UlVQVCk7Cj4gICAJX19pbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Cj4gICAKPiBAQCAtMTU1MCwx MyArMTU2MCwxNCBAQCBnZW44X3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50Cj4gLWk5NjVfZGlzcGF0Y2hfZXhlY2J1ZmZl cihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtpOTY1X2Rpc3BhdGNoX2V4ZWNidWZm ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkgdTY0IG9mZnNldCwg dTMyIGxlbmd0aCwKPiAgIAkJCSB1bnNpZ25lZCBmbGFncykKPiAgIHsKPiArCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0 ID0gaW50ZWxfcmluZ19iZWdpbihyaW5nLCAyKTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCAyKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTE1NzUs MTQgKzE1ODYsMTUgQEAgaTk2NV9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCj4gICAjZGVmaW5lIEk4MzBfVExCX0VOVFJJRVMgKDIpCj4gICAjZGVmaW5l IEk4MzBfV0FfU0laRSBtYXgoSTgzMF9UTEJfRU5UUklFUyo0MDk2LCBJODMwX0JBVENIX0xJTUlU KQo+ICAgc3RhdGljIGludAo+IC1pODMwX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiAtCQkJCXU2NCBvZmZzZXQsIHUzMiBsZW4sCj4gLQkJCQl1bnNp Z25lZCBmbGFncykKPiAraTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICsJCQkgdTY0IG9mZnNldCwgdTMyIGxlbiwKPiArCQkJIHVuc2ln bmVkIGZsYWdzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+ cmluZzsKPiAgIAl1MzIgY3Nfb2Zmc2V0ID0gcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0Owo+ICAg CWludCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgNik7Cj4gKwly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJu IHJldDsKPiAgIAo+IEBAIC0xNTk5LDcgKzE2MTEsNyBAQCBpODMwX2Rpc3BhdGNoX2V4ZWNidWZm ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJaWYgKGxlbiA+IEk4MzBfQkFU Q0hfTElNSVQpCj4gICAJCQlyZXR1cm4gLUVOT1NQQzsKPiAgIAo+IC0JCXJldCA9IGludGVsX3Jp bmdfYmVnaW4ocmluZywgNiArIDIpOwo+ICsJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2 ICsgMik7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTE2MjIs NyArMTYzNCw3IEBAIGk4MzBfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAo+ICAgCQlvZmZzZXQgPSBjc19vZmZzZXQ7Cj4gICAJfQo+ICAgCj4gLQlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDQpOwo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMTYzNiwx MyArMTY0OCwxNCBAQCBpODMwX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IC1pOTE1X2Rpc3BhdGNoX2V4 ZWNidWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAraTkxNV9kaXNwYXRjaF9l eGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJIHU2NCBv ZmZzZXQsIHUzMiBsZW4sCj4gICAJCQkgdW5zaWduZWQgZmxhZ3MpCj4gICB7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCByZXQ7Cj4gICAKPiAt CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgMik7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgMik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0x ODg1LDYgKzE4OTgsNyBAQCB2b2lkIGludGVsX2NsZWFudXBfcmluZ19idWZmZXIoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAo+ICAgCWludGVsX3VucGluX3JpbmdidWZmZXJfb2Jq KHJpbmdidWYpOwo+ICAgCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4g KwlXQVJOX09OKHJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCk7Cj4gICAJaTkxNV9nZW1f cmVxdWVzdF9hc3NpZ24oJnJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCwgTlVMTCk7Cj4g ICAKPiAgIAlpZiAocmluZy0+Y2xlYW51cCkKPiBAQCAtMjAwNyw4ICsyMDIxLDkgQEAgaW50IGlu dGVsX3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgCWludCByZXQ7 Cj4gICAKPiAgIAkvKiBXZSBuZWVkIHRvIGFkZCBhbnkgcmVxdWVzdHMgcmVxdWlyZWQgdG8gZmx1 c2ggdGhlIG9iamVjdHMgYW5kIHJpbmcgKi8KPiArCVdBUk5fT04ocmluZy0+b3V0c3RhbmRpbmdf bGF6eV9yZXF1ZXN0KTsKPiAgIAlpZiAocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KSB7 Cj4gLQkJcmV0ID0gaTkxNV9hZGRfcmVxdWVzdChyaW5nKTsKPiArCQlyZXQgPSBpOTE1X2FkZF9y ZXF1ZXN0KHJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdCk7Cj4gICAJCWlmIChyZXQpCj4g ICAJCQlyZXR1cm4gcmV0Owo+ICAgCX0KPiBAQCAtMjAyNSwxMyArMjA0MCwxOCBAQCBpbnQgaW50 ZWxfcmluZ19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB9Cj4gICAKPiAg IGludAo+IC1pbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAraW50ZWxfcmluZ19hbGxvY19yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY3R4LAo+ICsJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCkK PiAgIHsKPiAgIAlpbnQgcmV0Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXZhdGUgPSByaW5nLT5k ZXYtPmRldl9wcml2YXRlOwo+ICAgCj4gLQlpZiAocmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1 ZXN0KQo+ICsJaWYgKCFyZXFfb3V0KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICgo KnJlcV9vdXQgPSByaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3QpICE9IE5VTEwpCj4gICAJ CXJldHVybiAwOwo+ICAgCj4gICAJcmVxdWVzdCA9IGt6YWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSwg R0ZQX0tFUk5FTCk7Cj4gQEAgLTIwNTMsNyArMjA3Myw3IEBAIGludGVsX3JpbmdfYWxsb2NfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4Cj4gICAJc3Bld1RoaXNSZXEocmVxdWVzdCwgIlx4MUJbMzJtQ3JlYXRlZDogJWQ6JWQsIHJl ZiA9PiAlZFx4MUJbMG0iLCByZXF1ZXN0LT51bmlxLCByZXF1ZXN0LT5zZXFubywgcmVxdWVzdC0+ cmVmLnJlZmNvdW50LmNvdW50ZXIpOwo+ICAgCj4gICAJLy9wcmludGsoS0VSTl9JTkZPICIlczol ZD4gPCVzPiBPTFIgPSAweCVwLCB1bmlxID0gJWQsIHNlcW5vID0gJWRcbiIsIF9fZnVuY19fLCBf X0xJTkVfXywgcmluZy0+bmFtZSwgcmVxdWVzdCwgcmVxdWVzdC0+dW5pcSwgcmVxdWVzdC0+c2Vx bm8pOwo+IC0JcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxdWVzdDsKPiArCSpy ZXFfb3V0ID0gcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxdWVzdDsKPiAgIAly ZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC0yMDc4LDkgKzIwOTgsMTAgQEAgc3RhdGljIGludCBf X2ludGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCXJl dHVybiAwOwo+ICAgfQo+ICAgCj4gLWludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gK2ludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkgICAgIGludCBudW1fZHdvcmRzKQo+ICAgewo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOwo+ICAgCWludCBy ZXQ7Cj4gICAKPiBAQCAtMjA5MywxOCArMjExNCwxNCBAQCBpbnQgaW50ZWxfcmluZ19iZWdpbihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiBy ZXQ7Cj4gICAKPiAtCS8qIFByZWFsbG9jYXRlIHRoZSBvbHIgYmVmb3JlIHRvdWNoaW5nIHRoZSBy aW5nICovCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3QocmluZywgTlVMTCk7Cj4g LQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAgCXJpbmctPmJ1ZmZlci0+c3BhY2Ug LT0gbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g ICAKPiAgIC8qIEFsaWduIHRoZSByaW5nIHRhaWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkgKi8K PiAtaW50IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCj4gK2ludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcg PSByZXEtPnJpbmc7Cj4gICAJaW50IG51bV9kd29yZHMgPSAocmluZy0+YnVmZmVyLT50YWlsICYg KENBQ0hFTElORV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Cj4gICAJaW50IHJldDsK PiAgIAo+IEBAIC0yMTEyLDcgKzIxMjksNyBAQCBpbnQgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxp Z24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAg IAludW1fZHdvcmRzID0gQ0FDSEVMSU5FX0JZVEVTIC8gc2l6ZW9mKHVpbnQzMl90KSAtIG51bV9k d29yZHM7Cj4gLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIG51bV9kd29yZHMpOwo+ICsJ cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIG51bV9kd29yZHMpOwo+ICAgCWlmIChyZXQpCj4g ICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMjE3NiwxMyArMjE5MywxNCBAQCBzdGF0aWMgdm9p ZCBnZW42X2JzZF9yaW5nX3dyaXRlX3RhaWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK PiAgIAkJICAgX01BU0tFRF9CSVRfRElTQUJMRShHRU42X0JTRF9TTEVFUF9NU0dfRElTQUJMRSkp Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgZ2VuNl9ic2RfcmluZ19mbHVzaChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICtzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkgICAgICAgdTMyIGludmFsaWRh dGUsIHUzMiBmbHVzaCkKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBy ZXEtPnJpbmc7Cj4gICAJdWludDMyX3QgY21kOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmluZywgNCk7Cj4gKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgNCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0yMjEyLDE0 ICsyMjMwLDE1IEBAIHN0YXRpYyBpbnQgZ2VuNl9ic2RfcmluZ19mbHVzaChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50Cj4gLWdlbjhfcmluZ19k aXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gK2dlbjhf cmluZ19kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAo+ICAgCQkJICAgICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKPiAgIAkJCSAgICAgIHVuc2lnbmVk IGZsYWdzKQo+ICAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmlu ZzsKPiAgIAlib29sIHBwZ3R0ID0gVVNFU19QUEdUVChyaW5nLT5kZXYpICYmICEoZmxhZ3MgJiBJ OTE1X0RJU1BBVENIX1NFQ1VSRSk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyaW5nLCA0KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsK PiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTIyMzQsMTMgKzIyNTMs MTQgQEAgZ2VuOF9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IC1oc3dfcmluZ19kaXNwYXRjaF9l eGVjYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gK2hzd19yaW5nX2Rpc3Bh dGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkg ICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAo+ICAgCQkJICAgICAgdW5zaWduZWQgZmxhZ3MpCj4g ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgMik7Cj4gKwlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiAgIAo+IEBAIC0yMjU2LDEzICsyMjc2LDE0IEBAIGhzd19yaW5nX2Rpc3BhdGNoX2V4ZWNi dWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IGludAo+IC1nZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAo+ICtnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCj4g ICAJCQkgICAgICB1bnNpZ25lZCBmbGFncykKPiAgIHsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyaW5nLCAyKTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsK PiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTIyNzgsMTUgKzIyOTks MTYgQEAgZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKPiAgIAo+ICAgLyogQmxpdHRlciBzdXBwb3J0IChTYW5keUJyaWRnZSspICovCj4g ICAKPiAtc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKPiArc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCj4gICAJCQkgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICAgewo+ ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJdWludDMyX3QgY21kOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiAtCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywgNCk7Cj4gKwlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiAgIAo+IEBAIC0yMzE1LDcgKzIzMzcsNyBAQCBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVz aChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCj4gICAJaWYgKCFpbnZhbGlkYXRl ICYmIGZsdXNoKSB7Cj4gICAJCWlmIChJU19HRU43KGRldikpCj4gLQkJCXJldHVybiBnZW43X3Jp bmdfZmJjX2ZsdXNoKHJpbmcsIEZCQ19SRU5EX0NBQ0hFX0NMRUFOKTsKPiArCQkJcmV0dXJuIGdl bjdfcmluZ19mYmNfZmx1c2gocmVxLCBGQkNfUkVORF9DQUNIRV9DTEVBTik7Cj4gICAJCWVsc2Ug aWYgKElTX0JST0FEV0VMTChkZXYpKQo+ICAgCQkJZGV2X3ByaXYtPmZiYy5uZWVkX3N3X2NhY2hl X2NsZWFuID0gdHJ1ZTsKPiAgIAl9Cj4gQEAgLTI2OTYsMTQgKzI3MTgsMTUgQEAgaW50IGludGVs X2luaXRfdmVib3hfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIH0KPiAg IAo+ICAgaW50Cj4gLWludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQo+ICtpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlpZiAoIXJpbmctPmdwdV9j YWNoZXNfZGlydHkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQlyZXQgPSByaW5nLT5mbHVzaChy aW5nLCAwLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4gKwlyZXQgPSByaW5nLT5mbHVzaChyZXEs IDAsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0 Owo+ICAgCj4gQEAgLTI3MTQsOCArMjczNyw5IEBAIGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hl cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgfQo+ICAgCj4gICBpbnQKPiAtaW50 ZWxfcmluZ19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKPiAraW50ZWxfcmluZ19pbnZhbGlkYXRlX2FsbF9jYWNoZXMoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0g cmVxLT5yaW5nOwo+ICAgCXVpbnQzMl90IGZsdXNoX2RvbWFpbnM7Cj4gICAJaW50IHJldDsKPiAg IAo+IEBAIC0yNzIzLDcgKzI3NDcsNyBAQCBpbnRlbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hl cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgCWlmIChyaW5nLT5ncHVfY2FjaGVz X2RpcnR5KQo+ICAgCQlmbHVzaF9kb21haW5zID0gSTkxNV9HRU1fR1BVX0RPTUFJTlM7Cj4gICAK PiAtCXJldCA9IHJpbmctPmZsdXNoKHJpbmcsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBmbHVzaF9k b21haW5zKTsKPiArCXJldCA9IHJpbmctPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMs IGZsdXNoX2RvbWFpbnMpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggNDhjYmIwMC4uYTdl NDdhZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAt MTU0LDE1ICsxNTQsMTUgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+ICAgCj4gICAJaW50 CQkoKmluaXRfaHcpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICAgCj4gLQlpbnQJ CSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJaW50CQko KmluaXRfY29udGV4dCkoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJ CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ICAgCj4gICAJdm9pZAkJKCp3cml0ZV90YWls KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCQkJCSAgICAgIHUzMiB2YWx1ZSk7 Cj4gLQlpbnQgX19tdXN0X2NoZWNrICgqZmx1c2gpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4gKwlpbnQgX19tdXN0X2NoZWNrICgqZmx1c2gpKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAo+ICAgCQkJCSAgdTMyCWludmFsaWRhdGVfZG9tYWlucywKPiAgIAkJCQkgIHUz MglmbHVzaF9kb21haW5zKTsKPiAtCWludAkJKCphZGRfcmVxdWVzdCkoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyk7Cj4gKwlpbnQJCSgqYWRkX3JlcXVlc3QpKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKPiAgIAkvKiBTb21lIGNoaXBzZXRzIGFyZSBub3QgcXVpdGUgYXMg Y29oZXJlbnQgYXMgYWR2ZXJ0aXNlZCBhbmQgbmVlZAo+ICAgCSAqIGFuIGV4cGVuc2l2ZSBraWNr IHRvIGZvcmNlIGEgdHJ1ZSByZWFkIG9mIHRoZSB1cC10by1kYXRlIHNlcW5vLgo+ICAgCSAqIEhv d2V2ZXIsIHRoZSB1cC10by1kYXRlIHNlcW5vIGlzIG5vdCBhbHdheXMgcmVxdWlyZWQgYW5kIHRo ZSBsYXN0Cj4gQEAgLTE3Myw3ICsxNzMsNyBAQCBzdHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7Cj4g ICAJCQkJICAgICBib29sIGxhenlfY29oZXJlbmN5KTsKPiAgIAl2b2lkCQkoKnNldF9zZXFubyko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJCQkgICAgIHUzMiBzZXFubyk7Cj4g LQlpbnQJCSgqZGlzcGF0Y2hfZXhlY2J1ZmZlcikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPiArCWludAkJKCpkaXNwYXRjaF9leGVjYnVmZmVyKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKPiAgIAkJCQkJICAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCj4gICAJ CQkJCSAgICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncyk7Cj4gICAjZGVmaW5lIEk5MTVfRElT UEFUQ0hfU0VDVVJFIDB4MQo+IEBAIC0yMzEsMTAgKzIzMSwxMCBAQCBzdHJ1Y3QgIGludGVsX2Vu Z2luZV9jcyB7Cj4gICAJCX07Cj4gICAKPiAgIAkJLyogQUtBIHdhaXQoKSAqLwo+IC0JCWludAko KnN5bmNfdG8pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gLQkJCQkgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICp0bywKPiArCQlpbnQJKCpzeW5jX3RvKShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnRvX3JlcSwKPiArCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmZy b20sCj4gICAJCQkJICAgdTMyIHNlcW5vKTsKPiAtCQlpbnQJKCpzaWduYWwpKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnNpZ25hbGxlciwKPiArCQlpbnQJKCpzaWduYWwpKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgIAkJCQkgIC8qIG51bV9kd29yZHMgbmVl ZGVkIGJ5IGNhbGxlciAqLwo+ICAgCQkJCSAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpOwo+ICAg CX0gc2VtYXBob3JlOwo+IEBAIC0yNDUsMTEgKzI0NSwxMSBAQCBzdHJ1Y3QgIGludGVsX2VuZ2lu ZV9jcyB7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0Owo+ ICAgCXU4IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyOwo+ICAgCXUzMiAgICAgICAgICAgICBp cnFfa2VlcF9tYXNrOyAvKiBiaXRtYXNrIGZvciBpbnRlcnJ1cHRzIHRoYXQgc2hvdWxkIG5vdCBi ZSBtYXNrZWQgKi8KPiAtCWludAkJKCplbWl0X3JlcXVlc3QpKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmKTsKPiAtCWludAkJKCplbWl0X2ZsdXNoKShzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiwKPiArCWludAkJKCplbWl0X3JlcXVlc3QpKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKPiArCWludAkJKCplbWl0X2ZsdXNoKShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLAo+ ICAgCQkJCSAgICAgIHUzMiBmbHVzaF9kb21haW5zKTsKPiAtCWludAkJKCplbWl0X2JiX3N0YXJ0 KShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiArCWludAkJKCplbWl0X2JiX3N0 YXJ0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkJIHU2NCBvZmZz ZXQsIHVuc2lnbmVkIGZsYWdzKTsKPiAgIAo+ICAgCS8qKgo+IEBAIC00MzMsMTAgKzQzMywxMSBA QCBpbnQgaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIHZvaWQgaW50ZWxfc3RvcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKTsKPiAgIHZvaWQgaW50ZWxfY2xlYW51cF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKTsKPiAgIAo+IC1pbnQgX19tdXN0X2NoZWNrIGludGVsX3JpbmdfYmVnaW4o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IG4pOwo+IC1pbnQgX19tdXN0X2NoZWNr IGludGVsX3JpbmdfY2FjaGVsaW5lX2FsaWduKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Owo+ICtpbnQgX19tdXN0X2NoZWNrIGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIGludCBuKTsKPiAraW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2Nh Y2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gICBpbnQg X19tdXN0X2NoZWNrIGludGVsX3JpbmdfYWxsb2NfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAo+IC0JCQkJCSAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4gKwkJCQkJ ICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICsJCQkJCSAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICoqcmVxX291dCk7Cj4gICBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19l bWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCQkJICAgdTMyIGRhdGEpCj4g ICB7Cj4gQEAgLTQ1Nyw4ICs0NTgsOCBAQCB2b2lkIF9faW50ZWxfcmluZ19hZHZhbmNlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICAgCj4gICBpbnQgX19tdXN0X2NoZWNrIGludGVs X3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAgIHZvaWQgaW50ZWxf cmluZ19pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBzZXFubyk7 Cj4gLWludCBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Cj4gLWludCBpbnRlbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAraW50IGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gK2ludCBpbnRlbF9yaW5nX2lu dmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4g ICAKPiAgIHZvaWQgaW50ZWxfZmluaV9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Cj4gICBpbnQgaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyk7Cj4gQEAgLTQ3OSwxMSArNDgwLDQgQEAgc3RhdGljIGlubGluZSB1MzIg aW50ZWxfcmluZ19nZXRfdGFpbChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAg IAlyZXR1cm4gcmluZ2J1Zi0+dGFpbDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gLWludGVsX3JpbmdfZ2V0X3JlcXVlc3Qoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAtewo+IC0JQlVHX09OKHJpbmctPm91dHN0YW5kaW5n X2xhenlfcmVxdWVzdCA9PSBOVUxMKTsKPiAtCXJldHVybiByaW5nLT5vdXRzdGFuZGluZ19sYXp5 X3JlcXVlc3Q7Cj4gLX0KPiAtCj4gICAjZW5kaWYgLyogX0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==