From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans Verkuil Subject: Re: [RFC] mm: Replace all open encodings for NUMA_NO_NODE Date: Mon, 12 Nov 2018 09:43:23 +0100 Message-ID: References: <1541990515-11670-1-git-send-email-anshuman.khandual@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-fbdev@vger.kernel.org, linux-ia64@vger.kernel.org, linux-rdma@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-block@vger.kernel.org, sparclinux@vger.kernel.org, iommu@lists.linux-foundation.org, intel-wired-lan@lists.osuosl.org, linux-alpha@vger.kernel.org, dmaengine@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, ocfs2-devel@oss.oracle.com, linux-media@vger.kernel.org To: Anshuman Khandual , linux-mm@kvack.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1541990515-11670-1-git-send-email-anshuman.khandual@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" List-Id: netdev.vger.kernel.org T24gMTEvMTIvMjAxOCAwMzo0MSBBTSwgQW5zaHVtYW4gS2hhbmR1YWwgd3JvdGU6Cj4gQXQgcHJl c2VudCB0aGVyZSBhcmUgbXVsdGlwbGUgcGxhY2VzIHdoZXJlIGludmFsaWQgbm9kZSBudW1iZXIg aXMgZW5jb2RlZAo+IGFzIC0xLiBFdmVuIHRob3VnaCBpbXBsaWNpdGx5IHVuZGVyc3Rvb2QgaXQg aXMgYWx3YXlzIGJldHRlciB0byBoYXZlIG1hY3Jvcwo+IGluIHRoZXJlLiBSZXBsYWNlIHRoZXNl IG9wZW4gZW5jb2RpbmdzIGZvciBhbiBpbnZhbGlkIG5vZGUgbnVtYmVyIHdpdGggdGhlCj4gZ2xv YmFsIG1hY3JvIE5VTUFfTk9fTk9ERS4gVGhpcyBoZWxwcyByZW1vdmUgTlVNQSByZWxhdGVkIGFz c3VtcHRpb25zIGxpa2UKPiAnaW52YWxpZCBub2RlJyBmcm9tIHZhcmlvdXMgcGxhY2VzIHJlZGly ZWN0aW5nIHRoZW0gdG8gYSBjb21tb24gZGVmaW5pdGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBB bnNodW1hbiBLaGFuZHVhbCA8YW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbT4KPiAtLS0KPiBCdWls ZCB0ZXN0ZWQgdGhpcyB3aXRoIG11bHRpcGxlIGNyb3NzIGNvbXBpbGVyIG9wdGlvbnMgbGlrZSBh bHBoYSwgc3BhcmMsCj4gYXJtNjQsIHg4NiwgcG93ZXJwYzY0bGUgZXRjIHdpdGggdGhlaXIgZGVm YXVsdCBjb25maWcgd2hpY2ggbWlnaHQgbm90IGhhdmUKPiBjb21waWxlZCB0ZXN0ZWQgYWxsIGRy aXZlciByZWxhdGVkIGNoYW5nZXMuIEkgd2lsbCBhcHByZWNpYXRlIGZvbGtzIGdpdmluZwo+IHRo aXMgYSB0ZXN0IGluIHRoZWlyIHJlc3BlY3RpdmUgYnVpbGQgZW52aXJvbm1lbnQuCj4gCj4gQWxs IHRoZXNlIHBsYWNlcyBmb3IgcmVwbGFjZW1lbnQgd2VyZSBmb3VuZCBieSBydW5uaW5nIHRoZSBm b2xsb3dpbmcgZ3JlcAo+IHBhdHRlcm5zIG9uIHRoZSBlbnRpcmUga2VybmVsIGNvZGUuIFBsZWFz ZSBsZXQgbWUga25vdyBpZiB0aGlzIG1pZ2h0IGhhdmUKPiBtaXNzZWQgc29tZSBpbnN0YW5jZXMu IFRoaXMgbWlnaHQgYWxzbyBoYXZlIHJlcGxhY2VkIHNvbWUgZmFsc2UgcG9zaXRpdmVzLgo+IEkg d2lsbCBhcHByZWNpYXRlIHN1Z2dlc3Rpb25zLCBpbnB1dHMgYW5kIHJldmlldy4KClRoZSAnbm9k ZScgaW4gdGhlIGRyaXZlcnMvbWVkaWEgYW5kIHRoZSBkcml2ZXJzL3ZpZGVvIHNvdXJjZXMgaGFz IG5vdGhpbmcgdG8KZG8gd2l0aCBudW1hLiBJdCdzIGFuIGluZGV4IGZvciBhIGZyYW1lYnVmZmVy IGluc3RlYWQgKGkuZS4gdGhlIFggaW4gL2Rldi9mYlgpLgoKUmVnYXJkcywKCglIYW5zCgo+IAo+ IDEuIGdpdCBncmVwICJuaWQgPT0gLTEiCj4gMi4gZ2l0IGdyZXAgIm5vZGUgPT0gLTEiCj4gMy4g Z2l0IGdyZXAgIm5pZCA9IC0xIgo+IDQuIGdpdCBncmVwICJub2RlID0gLTEiCj4gCj4gIGFyY2gv YWxwaGEvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCAgICAgICAgICAgICB8ICAyICstCj4gIGFyY2gv aWE2NC9rZXJuZWwvbnVtYS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGFyY2gv aWE2NC9tbS9kaXNjb250aWcuYyAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICBh cmNoL2lhNjQvc24va2VybmVsL2lvX2NvbW1vbi5jICAgICAgICAgICAgICAgfCAgMiArLQo+ICBh cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oICAgICAgICAgfCAgMiArLQo+ICBh cmNoL3Bvd2VycGMva2VybmVsL3BhY2EuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBh cmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYyAgICAgICAgICAgICAgfCAgMiArLQo+ICBh cmNoL3Bvd2VycGMvbW0vbnVtYS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysr LS0tLS0tLQo+ICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvbWVtdHJhY2UuYyAgICAg fCAgNCArKy0tCj4gIGFyY2gvc3BhcmMva2VybmVsL2F1eGlvXzMyLmMgICAgICAgICAgICAgICAg ICB8ICAyICstCj4gIGFyY2gvc3BhcmMva2VybmVsL3BjaV9maXJlLmMgICAgICAgICAgICAgICAg ICB8ICAyICstCj4gIGFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYyAgICAgICAgICAgICAg ICB8ICAyICstCj4gIGFyY2gvc3BhcmMva2VybmVsL3BjaWMuYyAgICAgICAgICAgICAgICAgICAg ICB8ICA2ICsrKy0tLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9wc3ljaG9fY29tbW9uLmMgICAgICAg ICAgICAgfCAgMiArLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9zYnVzLmMgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICBhcmNoL3NwYXJjL21tL2luaXRfNjQuYyAgICAgICAgICAgICAgICAg ICAgICAgfCAgNiArKystLS0KPiAgYXJjaC9zcGFyYy9wcm9tL2luaXRfMzIuYyAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KPiAgYXJjaC9zcGFyYy9wcm9tL2luaXRfNjQuYyAgICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQo+ICBhcmNoL3NwYXJjL3Byb20vdHJlZV8zMi5jICAgICAgICAg ICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KPiAgYXJjaC9zcGFyYy9wcm9tL3RyZWVfNjQu YyAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCj4gIGFyY2gveDg2 L2luY2x1ZGUvYXNtL3BjaS5oICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGFyY2gveDg2 L2tlcm5lbC9hcGljL3gyYXBpY191dl94LmMgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICBhcmNo L3g4Ni9rZXJuZWwvc21wYm9vdC5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBhcmNo L3g4Ni9wbGF0Zm9ybS9vbHBjL29scGNfZHQuYyAgICAgICAgICAgICAgfCAxNiArKysrKysrKy0t LS0tLS0tCj4gIGRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYyAgICAgICAgICAgICB8 ICA0ICsrLS0KPiAgZHJpdmVycy9kbWEvZG1hZW5naW5lLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDMgKystCj4gIGRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2FmZmluaXR5LmMgICAgICAg ICB8ICAyICstCj4gIGRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2luaXQuYyAgICAgICAgICAg ICB8ICAyICstCj4gIGRyaXZlcnMvaW9tbXUvZG1hci5jICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA0ICsrLS0KPiAgZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KPiAgZHJpdmVycy9tZWRpYS9wY2kvaXZ0di9pdnR2ZmIuYyAgICAgICAgICAg ICAgIHwgIDIgKy0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXZpZC92aXZpZC1vc2QuYyAg ICAgIHwgIDIgKy0KPiAgZHJpdmVycy9taXNjL3NnaS14cC94cGNfdXYuYyAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFp bi5jIHwgIDQgKystLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jICAgICAg ICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3cxMDBmYi5jICAgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICBmcy9vY2ZzMi9kbG0vZGxtY29tbW9uLmggICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICBmcy9vY2ZzMi9kbG0vZGxtZG9tYWluLmMgICAgICAgICAgICAgICAg ICAgICAgfCAxMCArKysrKy0tLS0tCj4gIGZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCj4gIGZzL29jZnMyL2RsbS9kbG1yZWNvdmVyeS5jICAgICAg ICAgICAgICAgICAgICB8ICAyICstCj4gIGZzL29jZnMyL3N0YWNrX3VzZXIuYyAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICBpbml0L2luaXRfdGFzay5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBrZXJuZWwva3RocmVhZC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBrZXJuZWwvc2NoZWQvZmFpci5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxNSArKysrKysrKy0tLS0tLS0KPiAgbGliL2NwdW1hc2suYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgbW0vaHVnZV9tZW1vcnku YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCj4gIG1tL2h1 Z2V0bGIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIG1tL2tz bS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIG1tL21l bW9yeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICBt bS9tZW1vcnlfaG90cGx1Zy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKyst LS0tLS0KPiAgbW0vbWVtcG9saWN5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KPiAgbW0vcGFnZV9hbGxvYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKystLQo+ICBtbS9wYWdlX2V4dC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQo+ICBuZXQvY29yZS9wa3RnZW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQo+ICBuZXQvcXJ0ci9xcnRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQo+ICB0b29scy9wZXJmL2JlbmNoL251bWEuYyAgICAgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KPiAgNTcgZmlsZXMgY2hhbmdlZCwgMTI1IGluc2VydGlvbnMoKyksIDEyMyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS90b3Bv bG9neS5oIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS90b3BvbG9neS5oCj4gaW5kZXggZTZlMTNh OC4uZjZkYzg5YyAxMDA2NDQKPiAtLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3RvcG9sb2d5 LmgKPiArKysgYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgKPiBAQCAtMjksNyAr MjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdW1hc2tfb2Zfbm9kZShpbnQg bm9kZSkKPiAgewo+ICAJaW50IGNwdTsKPiAgCj4gLQlpZiAobm9kZSA9PSAtMSkKPiArCWlmIChu b2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gY3B1X2FsbF9tYXNrOwo+ICAKPiAgCWNw dW1hc2tfY2xlYXIoJm5vZGVfdG9fY3B1bWFza19tYXBbbm9kZV0pOwo+IGRpZmYgLS1naXQgYS9h cmNoL2lhNjQva2VybmVsL251bWEuYyBiL2FyY2gvaWE2NC9rZXJuZWwvbnVtYS5jCj4gaW5kZXgg OTJjMzc2Mi4uMTMxNWRhNiAxMDA2NDQKPiAtLS0gYS9hcmNoL2lhNjQva2VybmVsL251bWEuYwo+ ICsrKyBiL2FyY2gvaWE2NC9rZXJuZWwvbnVtYS5jCj4gQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBf X2luaXQgYnVpbGRfY3B1X3RvX25vZGVfbWFwKHZvaWQpCj4gIAkJY3B1bWFza19jbGVhcigmbm9k ZV90b19jcHVfbWFza1tub2RlXSk7Cj4gIAo+ICAJZm9yX2VhY2hfcG9zc2libGVfZWFybHlfY3B1 KGNwdSkgewo+IC0JCW5vZGUgPSAtMTsKPiArCQlub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJCWZv ciAoaSA9IDA7IGkgPCBOUl9DUFVTOyArK2kpCj4gIAkJCWlmIChjcHVfcGh5c2ljYWxfaWQoY3B1 KSA9PSBub2RlX2NwdWlkW2ldLnBoeXNfaWQpIHsKPiAgCQkJCW5vZGUgPSBub2RlX2NwdWlkW2ld Lm5pZDsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L21tL2Rpc2NvbnRpZy5jIGIvYXJjaC9pYTY0 L21tL2Rpc2NvbnRpZy5jCj4gaW5kZXggOGE5NjU3OC4uZjljMzY3NSAxMDA2NDQKPiAtLS0gYS9h cmNoL2lhNjQvbW0vZGlzY29udGlnLmMKPiArKysgYi9hcmNoL2lhNjQvbW0vZGlzY29udGlnLmMK PiBAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9p ZCkKPiAgCSAqIENQVXMgYXJlIHB1dCBpbnRvIGdyb3VwcyBhY2NvcmRpbmcgdG8gbm9kZS4gIFdh bGsgY3B1X21hcAo+ICAJICogYW5kIGNyZWF0ZSBuZXcgZ3JvdXBzIGF0IG5vZGUgYm91bmRhcmll cy4KPiAgCSAqLwo+IC0JcHJldl9ub2RlID0gLTE7Cj4gKwlwcmV2X25vZGUgPSBOVU1BX05PX05P REU7Cj4gIAlhaS0+bnJfZ3JvdXBzID0gMDsKPiAgCWZvciAodW5pdCA9IDA7IHVuaXQgPCBucl91 bml0czsgdW5pdCsrKSB7Cj4gIAkJY3B1ID0gY3B1X21hcFt1bml0XTsKPiBAQCAtNDM1LDcgKzQz NSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCAqbWVtb3J5X2xlc3Nfbm9kZV9hbGxvYyhpbnQgbmlk LCB1bnNpZ25lZCBsb25nIHBlcm5vZGVzaXplKQo+ICB7Cj4gIAl2b2lkICpwdHIgPSBOVUxMOwo+ ICAJdTggYmVzdCA9IDB4ZmY7Cj4gLQlpbnQgYmVzdG5vZGUgPSAtMSwgbm9kZSwgYW55bm9kZSA9 IDA7Cj4gKwlpbnQgYmVzdG5vZGUgPSBOVU1BX05PX05PREUsIG5vZGUsIGFueW5vZGUgPSAwOwo+ ICAKPiAgCWZvcl9lYWNoX29ubGluZV9ub2RlKG5vZGUpIHsKPiAgCQlpZiAobm9kZV9pc3NldChu b2RlLCBtZW1vcnlfbGVzc19tYXNrKSkKPiBAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0YXRpYyB2b2lk IF9faW5pdCAqbWVtb3J5X2xlc3Nfbm9kZV9hbGxvYyhpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHBl cm5vZGVzaXplKQo+ICAJCWFueW5vZGUgPSBub2RlOwo+ICAJfQo+ICAKPiAtCWlmIChiZXN0bm9k ZSA9PSAtMSkKPiArCWlmIChiZXN0bm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJYmVzdG5vZGUg PSBhbnlub2RlOwo+ICAKPiAgCXB0ciA9IG1lbWJsb2NrX2FsbG9jX3RyeV9uaWQocGVybm9kZXNp emUsIFBFUkNQVV9QQUdFX1NJWkUsCj4gZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9zbi9rZXJuZWwv aW9fY29tbW9uLmMgYi9hcmNoL2lhNjQvc24va2VybmVsL2lvX2NvbW1vbi5jCj4gaW5kZXggOGRm MTNkMC4uODZiM2ZjYiAxMDA2NDQKPiAtLS0gYS9hcmNoL2lhNjQvc24va2VybmVsL2lvX2NvbW1v bi5jCj4gKysrIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19jb21tb24uYwo+IEBAIC0zNDQsNyAr MzQ0LDcgQEAgc25fY29tbW9uX2J1c19maXh1cChzdHJ1Y3QgcGNpX2J1cyAqYnVzLAo+ICAJCXBy aW50ayhLRVJOX1dBUk5JTkcgIm9uIG5vZGUgJWQgYnV0IG9ubHkgJWQgbm9kZXMgb25saW5lLiIK PiAgCQkgICAgICAgIkFzc29jaWF0aW9uIHNldCB0byB1bmRldGVybWluZWQuXG4iLAo+ICAJCSAg ICAgICBjb250cm9sbGVyLT5ub2RlLCBudW1fb25saW5lX25vZGVzKCkpOwo+IC0JCWNvbnRyb2xs ZXItPm5vZGUgPSAtMTsKPiArCQljb250cm9sbGVyLT5ub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJ fQo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJy aWRnZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaAo+IGluZGV4IDk0 ZDQ0OTAuLjI1YTllMzMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Bj aS1icmlkZ2UuaAo+ICsrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgK PiBAQCAtMjY0LDcgKzI2NCw3IEBAIGV4dGVybiBpbnQgcGNpYmlvc19tYXBfaW9fc3BhY2Uoc3Ry dWN0IHBjaV9idXMgKmJ1cyk7Cj4gICNpZmRlZiBDT05GSUdfTlVNQQo+ICAjZGVmaW5lIFBIQl9T RVRfTk9ERShQSEIsIE5PREUpCQkoKFBIQiktPm5vZGUgPSAoTk9ERSkpCj4gICNlbHNlCj4gLSNk ZWZpbmUgUEhCX1NFVF9OT0RFKFBIQiwgTk9ERSkJCSgoUEhCKS0+bm9kZSA9IC0xKQo+ICsjZGVm aW5lIFBIQl9TRVRfTk9ERShQSEIsIE5PREUpCQkoKFBIQiktPm5vZGUgPSBOVU1BX05PX05PREUp Cj4gICNlbmRpZgo+ICAKPiAgI2VuZGlmCS8qIENPTkZJR19QUEM2NCAqLwo+IGRpZmYgLS1naXQg YS9hcmNoL3Bvd2VycGMva2VybmVsL3BhY2EuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGFjYS5j Cj4gaW5kZXggOTEzYmZjYS4uNmEwYmQ1MSAxMDA2NDQKPiAtLS0gYS9hcmNoL3Bvd2VycGMva2Vy bmVsL3BhY2EuYwo+ICsrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGFjYS5jCj4gQEAgLTM2LDcg KzM2LDcgQEAgc3RhdGljIHZvaWQgKl9faW5pdCBhbGxvY19wYWNhX2RhdGEodW5zaWduZWQgbG9u ZyBzaXplLCB1bnNpZ25lZCBsb25nIGFsaWduLAo+ICAJICogd2hpY2ggd2lsbCBwdXQgaXRzIHBh Y2EgaW4gdGhlIHJpZ2h0IHBsYWNlLgo+ICAJICovCj4gIAlpZiAoY3B1ID09IGJvb3RfY3B1aWQp IHsKPiAtCQluaWQgPSAtMTsKPiArCQluaWQgPSBOVU1BX05PX05PREU7Cj4gIAkJbWVtYmxvY2tf c2V0X2JvdHRvbV91cCh0cnVlKTsKPiAgCX0gZWxzZSB7Cj4gIAkJbmlkID0gZWFybHlfY3B1X3Rv X25vZGUoY3B1KTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9u LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwo+IGluZGV4IDg4ZTRmNjkuLjE0 YzMzYTkgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKPiAr KysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwo+IEBAIC0xMzIsNyArMTMyLDcg QEAgc3RydWN0IHBjaV9jb250cm9sbGVyICpwY2liaW9zX2FsbG9jX2NvbnRyb2xsZXIoc3RydWN0 IGRldmljZV9ub2RlICpkZXYpCj4gIAkJaW50IG5pZCA9IG9mX25vZGVfdG9fbmlkKGRldik7Cj4g IAo+ICAJCWlmIChuaWQgPCAwIHx8ICFub2RlX29ubGluZShuaWQpKQo+IC0JCQluaWQgPSAtMTsK PiArCQkJbmlkID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCQlQSEJfU0VUX05PREUocGhiLCBuaWQp Owo+ICAJfQo+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jIGIvYXJjaC9wb3dl cnBjL21tL251bWEuYwo+IGluZGV4IDNhMDQ4ZTkuLjc3ODA4YTIgMTAwNjQ0Cj4gLS0tIGEvYXJj aC9wb3dlcnBjL21tL251bWEuYwo+ICsrKyBiL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKPiBAQCAt MjE1LDcgKzIxNSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfZGlzdGFuY2VfbG9va3VwX3Rh YmxlKGludCBuaWQsCj4gICAqLwo+ICBzdGF0aWMgaW50IGFzc29jaWF0aXZpdHlfdG9fbmlkKGNv bnN0IF9fYmUzMiAqYXNzb2NpYXRpdml0eSkKPiAgewo+IC0JaW50IG5pZCA9IC0xOwo+ICsJaW50 IG5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAlpZiAobWluX2NvbW1vbl9kZXB0aCA9PSAtMSkK PiAgCQlnb3RvIG91dDsKPiBAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbnQgYXNzb2NpYXRp dml0eV90b19uaWQoY29uc3QgX19iZTMyICphc3NvY2lhdGl2aXR5KQo+ICAKPiAgCS8qIFBPV0VS NCBMUEFSIHVzZXMgMHhmZmZmIGFzIGludmFsaWQgbm9kZSAqLwo+ICAJaWYgKG5pZCA9PSAweGZm ZmYgfHwgbmlkID49IE1BWF9OVU1OT0RFUykKPiAtCQluaWQgPSAtMTsKPiArCQluaWQgPSBOVU1B X05PX05PREU7Cj4gIAo+ICAJaWYgKG5pZCA+IDAgJiYKPiAgCQlvZl9yZWFkX251bWJlcihhc3Nv Y2lhdGl2aXR5LCAxKSA+PSBkaXN0YW5jZV9yZWZfcG9pbnRzX2RlcHRoKSB7Cj4gQEAgLTI0NCw3 ICsyNDQsNyBAQCBzdGF0aWMgaW50IGFzc29jaWF0aXZpdHlfdG9fbmlkKGNvbnN0IF9fYmUzMiAq YXNzb2NpYXRpdml0eSkKPiAgICovCj4gIHN0YXRpYyBpbnQgb2Zfbm9kZV90b19uaWRfc2luZ2xl KHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2aWNlKQo+ICB7Cj4gLQlpbnQgbmlkID0gLTE7Cj4gKwlp bnQgbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJY29uc3QgX19iZTMyICp0bXA7Cj4gIAo+ICAJdG1w ID0gb2ZfZ2V0X2Fzc29jaWF0aXZpdHkoZGV2aWNlKTsKPiBAQCAtMjU2LDcgKzI1Niw3IEBAIHN0 YXRpYyBpbnQgb2Zfbm9kZV90b19uaWRfc2luZ2xlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2aWNl KQo+ICAvKiBXYWxrIHRoZSBkZXZpY2UgdHJlZSB1cHdhcmRzLCBsb29raW5nIGZvciBhbiBhc3Nv Y2lhdGl2aXR5IGlkICovCj4gIGludCBvZl9ub2RlX3RvX25pZChzdHJ1Y3QgZGV2aWNlX25vZGUg KmRldmljZSkKPiAgewo+IC0JaW50IG5pZCA9IC0xOwo+ICsJaW50IG5pZCA9IE5VTUFfTk9fTk9E RTsKPiAgCj4gIAlvZl9ub2RlX2dldChkZXZpY2UpOwo+ICAJd2hpbGUgKGRldmljZSkgewo+IEBA IC00NTQsNyArNDU0LDcgQEAgc3RhdGljIGludCBvZl9kcmNvbmZfdG9fbmlkX3NpbmdsZShzdHJ1 Y3QgZHJtZW1fbG1iICpsbWIpCj4gICAqLwo+ICBzdGF0aWMgaW50IG51bWFfc2V0dXBfY3B1KHVu c2lnbmVkIGxvbmcgbGNwdSkKPiAgewo+IC0JaW50IG5pZCA9IC0xOwo+ICsJaW50IG5pZCA9IE5V TUFfTk9fTk9ERTsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY3B1Owo+ICAKPiAgCS8qCj4gQEAg LTkzMCw3ICs5MzAsNyBAQCBzdGF0aWMgaW50IGhvdF9hZGRfZHJjb25mX3Njbl90b19uaWQodW5z aWduZWQgbG9uZyBzY25fYWRkcikKPiAgewo+ICAJc3RydWN0IGRybWVtX2xtYiAqbG1iOwo+ICAJ dW5zaWduZWQgbG9uZyBsbWJfc2l6ZTsKPiAtCWludCBuaWQgPSAtMTsKPiArCWludCBuaWQgPSBO VU1BX05PX05PREU7Cj4gIAo+ICAJbG1iX3NpemUgPSBkcm1lbV9sbWJfc2l6ZSgpOwo+ICAKPiBA QCAtOTYwLDcgKzk2MCw3IEBAIHN0YXRpYyBpbnQgaG90X2FkZF9kcmNvbmZfc2NuX3RvX25pZCh1 bnNpZ25lZCBsb25nIHNjbl9hZGRyKQo+ICBzdGF0aWMgaW50IGhvdF9hZGRfbm9kZV9zY25fdG9f bmlkKHVuc2lnbmVkIGxvbmcgc2NuX2FkZHIpCj4gIHsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAq bWVtb3J5Owo+IC0JaW50IG5pZCA9IC0xOwo+ICsJaW50IG5pZCA9IE5VTUFfTk9fTk9ERTsKPiAg Cj4gIAlmb3JfZWFjaF9ub2RlX2J5X3R5cGUobWVtb3J5LCAibWVtb3J5Iikgewo+ICAJCXVuc2ln bmVkIGxvbmcgc3RhcnQsIHNpemU7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9y bXMvcG93ZXJudi9tZW10cmFjZS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L21l bXRyYWNlLmMKPiBpbmRleCA4NGQwMzhlLi4xY2UzYmZjIDEwMDY0NAo+IC0tLSBhL2FyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9tZW10cmFjZS5jCj4gKysrIGIvYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm52L21lbXRyYWNlLmMKPiBAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBp bnQgbWVtdHJhY2Vfb25saW5lKHZvaWQpCj4gIAkJZW50ID0gJm1lbXRyYWNlX2FycmF5W2ldOwo+ ICAKPiAgCQkvKiBXZSBoYXZlIG9ubGluZWQgdGhpcyBjaHVuayBwcmV2aW91c2x5ICovCj4gLQkJ aWYgKGVudC0+bmlkID09IC0xKQo+ICsJCWlmIChlbnQtPm5pZCA9PSBOVU1BX05PX05PREUpCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkvKiBSZW1vdmUgZnJvbSBpbyBtYXBwaW5ncyAqLwo+IEBA IC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIGludCBtZW10cmFjZV9vbmxpbmUodm9pZCkKPiAgCQkg Ki8KPiAgCQlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZW50LT5kaXIpOwo+ICAJCXByX2luZm8o IkFkZGVkIHRyYWNlIG1lbW9yeSBiYWNrIHRvIG5vZGUgJWRcbiIsIGVudC0+bmlkKTsKPiAtCQll bnQtPnNpemUgPSBlbnQtPnN0YXJ0ID0gZW50LT5uaWQgPSAtMTsKPiArCQllbnQtPnNpemUgPSBl bnQtPnN0YXJ0ID0gZW50LT5uaWQgPSBOVU1BX05PX05PREU7Cj4gIAl9Cj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL2F1eGlvXzMy LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9hdXhpb18zMi5jCj4gaW5kZXggYTMyZDU4OC4uMzlmNmM1 OSAxMDA2NDQKPiAtLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9hdXhpb18zMi5jCj4gKysrIGIvYXJj aC9zcGFyYy9rZXJuZWwvYXV4aW9fMzIuYwo+IEBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBfX2lu aXQgYXV4aW9fcG93ZXJfcHJvYmUodm9pZCkKPiAgCW5vZGUgPSBwcm9tX3NlYXJjaHNpYmxpbmdz KG5vZGUsICJvYmlvIik7Cj4gIAlub2RlID0gcHJvbV9nZXRjaGlsZChub2RlKTsKPiAgCW5vZGUg PSBwcm9tX3NlYXJjaHNpYmxpbmdzKG5vZGUsICJwb3dlciIpOwo+IC0JaWYgKG5vZGUgPT0gMCB8 fCAoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAobm9kZSA9PSAwIHx8IChzMzIpbm9kZSA9PSBOVU1B X05PX05PREUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIE1hcCB0aGUgcG93ZXIgY29udHJvbCBy ZWdpc3Rlci4gKi8KPiBkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvcGNpX2ZpcmUuYyBi L2FyY2gvc3BhcmMva2VybmVsL3BjaV9maXJlLmMKPiBpbmRleCBiZTcxYWUwLi40NzRkM2JlIDEw MDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BjaV9maXJlLmMKPiArKysgYi9hcmNoL3Nw YXJjL2tlcm5lbC9wY2lfZmlyZS5jCj4gQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMgaW50IHBj aV9maXJlX3BibV9pbml0KHN0cnVjdCBwY2lfcGJtX2luZm8gKnBibSwKPiAgCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqZHAgPSBvcC0+ZGV2Lm9mX25vZGU7Cj4gIAlpbnQgZXJyOwo+ICAKPiAtCXBibS0+ bnVtYV9ub2RlID0gLTE7Cj4gKwlwYm0tPm51bWFfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4g IAlwYm0tPnBjaV9vcHMgPSAmc3VuNHVfcGNpX29wczsKPiAgCXBibS0+Y29uZmlnX3NwYWNlX3Jl Z19iaXRzID0gMTI7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8u YyBiL2FyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYwo+IGluZGV4IDkzNGI5N2MuLjg3YmIy MzEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jCj4gKysrIGIv YXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jCj4gQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHN0 YXRpYyBpbnQgc2NoaXpvX3BibV9pbml0KHN0cnVjdCBwY2lfcGJtX2luZm8gKnBibSwKPiAgCXBi bS0+bmV4dCA9IHBjaV9wYm1fcm9vdDsKPiAgCXBjaV9wYm1fcm9vdCA9IHBibTsKPiAgCj4gLQlw Ym0tPm51bWFfbm9kZSA9IC0xOwo+ICsJcGJtLT5udW1hX25vZGUgPSBOVU1BX05PX05PREU7Cj4g IAo+ICAJcGJtLT5wY2lfb3BzID0gJnN1bjR1X3BjaV9vcHM7Cj4gIAlwYm0tPmNvbmZpZ19zcGFj ZV9yZWdfYml0cyA9IDg7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYyBi L2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYwo+IGluZGV4IGVlNGM5YTkuLmQ1ZmU4OTggMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jCj4gKysrIGIvYXJjaC9zcGFyYy9rZXJu ZWwvcGNpYy5jCj4gQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCBwY2ljX21hcF9wY2lf ZGV2aWNlKHN0cnVjdCBsaW51eF9wY2ljICpwY2ljLAo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsK PiAgCWludCBqOwo+ICAKPiAtCWlmIChub2RlID09IDAgfHwgbm9kZSA9PSAtMSkgewo+ICsJaWYg KG5vZGUgPT0gMCB8fCBub2RlID09IE5VTUFfTk9fTk9ERSkgewo+ICAJCXN0cmNweShuYW1lYnVm LCAiPz8/Iik7Cj4gIAl9IGVsc2Ugewo+ICAJCXByb21fZ2V0c3RyaW5nKG5vZGUsICJuYW1lIiwg bmFtZWJ1ZiwgNjMpOyBuYW1lYnVmWzYzXSA9IDA7Cj4gQEAgLTUzNSw3ICs1MzUsNyBAQCBwY2lj X2ZpbGxfaXJxKHN0cnVjdCBsaW51eF9wY2ljICpwY2ljLCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCBp bnQgbm9kZSkKPiAgCWludCBpLCBpdmVjOwo+ICAJY2hhciBuYW1lYnVmWzY0XTsKPiAgCj4gLQlp ZiAobm9kZSA9PSAwIHx8IG5vZGUgPT0gLTEpIHsKPiArCWlmIChub2RlID09IDAgfHwgbm9kZSA9 PSBOVU1BX05PX05PREUpIHsKPiAgCQlzdHJjcHkobmFtZWJ1ZiwgIj8/PyIpOwo+ICAJfSBlbHNl IHsKPiAgCQlwcm9tX2dldHN0cmluZyhub2RlLCAibmFtZSIsIG5hbWVidWYsIHNpemVvZihuYW1l YnVmKSk7Cj4gQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIHBjaWJpb3NfZml4dXBfYnVzKHN0cnVj dCBwY2lfYnVzICpidXMpCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmJ1cy0+ZGV2aWNl cywgYnVzX2xpc3QpIHsKPiAgCQlub2RlID0gcGRldl90b19wbm9kZSgmcGNpYy0+cGJtLCBkZXYp Owo+ICAJCWlmKG5vZGUgPT0gMCkKPiAtCQkJbm9kZSA9IC0xOwo+ICsJCQlub2RlID0gTlVNQV9O T19OT0RFOwo+ICAKPiAgCQkvKiBjb29raWVzICovCj4gIAkJcGNwID0gcGNpX2RldmNvb2tpZV9h bGxvYygpOwo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9wc3ljaG9fY29tbW9uLmMg Yi9hcmNoL3NwYXJjL2tlcm5lbC9wc3ljaG9fY29tbW9uLmMKPiBpbmRleCA4MWFhOTFlLi5kY2Jm NDkyIDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BzeWNob19jb21tb24uYwo+ICsr KyBiL2FyY2gvc3BhcmMva2VybmVsL3BzeWNob19jb21tb24uYwo+IEBAIC00NTQsNyArNDU0LDcg QEAgdm9pZCBwc3ljaG9fcGJtX2luaXRfY29tbW9uKHN0cnVjdCBwY2lfcGJtX2luZm8gKnBibSwg c3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3AKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZHAgPSBv cC0+ZGV2Lm9mX25vZGU7Cj4gIAo+ICAJcGJtLT5uYW1lID0gZHAtPmZ1bGxfbmFtZTsKPiAtCXBi bS0+bnVtYV9ub2RlID0gLTE7Cj4gKwlwYm0tPm51bWFfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAg CXBibS0+Y2hpcF90eXBlID0gY2hpcF90eXBlOwo+ICAJcGJtLT5jaGlwX3ZlcnNpb24gPSBvZl9n ZXRpbnRwcm9wX2RlZmF1bHQoZHAsICJ2ZXJzaW9uIyIsIDApOwo+ICAJcGJtLT5jaGlwX3Jldmlz aW9uID0gb2ZfZ2V0aW50cHJvcF9kZWZhdWx0KGRwLCAibW9kdWxlLXJldmlzaW9uIyIsIDApOwo+ IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9zYnVzLmMgYi9hcmNoL3NwYXJjL2tlcm5l bC9zYnVzLmMKPiBpbmRleCBjMTMzZGZjLi4yOGE0YWE5IDEwMDY0NAo+IC0tLSBhL2FyY2gvc3Bh cmMva2VybmVsL3NidXMuYwo+ICsrKyBiL2FyY2gvc3BhcmMva2VybmVsL3NidXMuYwo+IEBAIC01 NjEsNyArNTYxLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHNidXNfaW9tbXVfaW5pdChzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpvcCkKPiAgCj4gIAlvcC0+ZGV2LmFyY2hkYXRhLmlvbW11ID0gaW9t bXU7Cj4gIAlvcC0+ZGV2LmFyY2hkYXRhLnN0YyA9IHN0cmJ1ZjsKPiAtCW9wLT5kZXYuYXJjaGRh dGEubnVtYV9ub2RlID0gLTE7Cj4gKwlvcC0+ZGV2LmFyY2hkYXRhLm51bWFfbm9kZSA9IE5VTUFf Tk9fTk9ERTsKPiAgCj4gIAlyZWdfYmFzZSA9IHJlZ3MgKyBTWVNJT19JT01NVVJFR19CQVNFOwo+ ICAJaW9tbXUtPmlvbW11X2NvbnRyb2wgPSByZWdfYmFzZSArIElPTU1VX0NPTlRST0w7Cj4gZGlm ZiAtLWdpdCBhL2FyY2gvc3BhcmMvbW0vaW5pdF82NC5jIGIvYXJjaC9zcGFyYy9tbS9pbml0XzY0 LmMKPiBpbmRleCAzYzhhYWMyLi5jYjFiZWQxIDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMvbW0v aW5pdF82NC5jCj4gKysrIGIvYXJjaC9zcGFyYy9tbS9pbml0XzY0LmMKPiBAQCAtOTc2LDEzICs5 NzYsMTMgQEAgc3RhdGljIHU2NCBfX2luaXQgbWVtYmxvY2tfbmlkX3JhbmdlX3N1bjR1KHU2NCBz dGFydCwgdTY0IGVuZCwgaW50ICpuaWQpCj4gIHsKPiAgCWludCBwcmV2X25pZCwgbmV3X25pZDsK PiAgCj4gLQlwcmV2X25pZCA9IC0xOwo+ICsJcHJldl9uaWQgPSBOVU1BX05PX05PREU7Cj4gIAlm b3IgKCA7IHN0YXJ0IDwgZW5kOyBzdGFydCArPSBQQUdFX1NJWkUpIHsKPiAgCQlmb3IgKG5ld19u aWQgPSAwOyBuZXdfbmlkIDwgbnVtX25vZGVfbWFza3M7IG5ld19uaWQrKykgewo+ICAJCQlzdHJ1 Y3Qgbm9kZV9tZW1fbWFzayAqcCA9ICZub2RlX21hc2tzW25ld19uaWRdOwo+ICAKPiAgCQkJaWYg KChzdGFydCAmIHAtPm1hc2spID09IHAtPm1hdGNoKSB7Cj4gLQkJCQlpZiAocHJldl9uaWQgPT0g LTEpCj4gKwkJCQlpZiAocHJldl9uaWQgPT0gTlVNQV9OT19OT0RFKQo+ICAJCQkJCXByZXZfbmlk ID0gbmV3X25pZDsKPiAgCQkJCWJyZWFrOwo+ICAJCQl9Cj4gQEAgLTEyMDgsNyArMTIwOCw3IEBA IGludCBvZl9ub2RlX3RvX25pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKmRwKQo+ICAJbWQgPSBtZGVz Y19ncmFiKCk7Cj4gIAo+ICAJY291bnQgPSAwOwo+IC0JbmlkID0gLTE7Cj4gKwluaWQgPSBOVU1B X05PX05PREU7Cj4gIAltZGVzY19mb3JfZWFjaF9ub2RlX2J5X25hbWUobWQsIGdycCwgImdyb3Vw Iikgewo+ICAJCWlmICghc2Nhbl9hcmNzX2Zvcl9jZmdfaGFuZGxlKG1kLCBncnAsIGNmZ19oYW5k bGUpKSB7Cj4gIAkJCW5pZCA9IGNvdW50Owo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL3Byb20v aW5pdF8zMi5jIGIvYXJjaC9zcGFyYy9wcm9tL2luaXRfMzIuYwo+IGluZGV4IGQyMDQ3MDEuLjRj NmU1NDAgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9zcGFyYy9wcm9tL2luaXRfMzIuYwo+ICsrKyBiL2Fy Y2gvc3BhcmMvcHJvbS9pbml0XzMyLmMKPiBAQCAtNTgsNyArNTgsNyBAQCB2b2lkIF9faW5pdCBw cm9tX2luaXQoc3RydWN0IGxpbnV4X3JvbXZlYyAqcnApCj4gIAlwcm9tX25vZGVvcHMgPSByb212 ZWMtPnB2X25vZGVvcHM7Cj4gIAo+ICAJcHJvbV9yb290X25vZGUgPSBwcm9tX2dldHNpYmxpbmco MCk7Cj4gLQlpZiAoKHByb21fcm9vdF9ub2RlID09IDApIHx8ICgoczMyKXByb21fcm9vdF9ub2Rl ID09IC0xKSkKPiArCWlmICgocHJvbV9yb290X25vZGUgPT0gMCkgfHwgKChzMzIpcHJvbV9yb290 X25vZGUgPT0gTlVNQV9OT19OT0RFKSkKPiAgCQlwcm9tX2hhbHQoKTsKPiAgCj4gIAlpZigoKCh1 bnNpZ25lZCBsb25nKSBwcm9tX25vZGVvcHMpID09IDApIHx8IAo+IGRpZmYgLS1naXQgYS9hcmNo L3NwYXJjL3Byb20vaW5pdF82NC5jIGIvYXJjaC9zcGFyYy9wcm9tL2luaXRfNjQuYwo+IGluZGV4 IDEwM2FhOTEuLjg1NjY5YzAgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9zcGFyYy9wcm9tL2luaXRfNjQu Ywo+ICsrKyBiL2FyY2gvc3BhcmMvcHJvbS9pbml0XzY0LmMKPiBAQCAtMzYsMTMgKzM2LDEzIEBA IHZvaWQgX19pbml0IHByb21faW5pdCh2b2lkICpjaWZfaGFuZGxlcikKPiAgCXByb21fY2lmX2lu aXQoY2lmX2hhbmRsZXIpOwo+ICAKPiAgCXByb21fY2hvc2VuX25vZGUgPSBwcm9tX2ZpbmRkZXZp Y2UocHJvbV9jaG9zZW5fcGF0aCk7Cj4gLQlpZiAoIXByb21fY2hvc2VuX25vZGUgfHwgKHMzMilw cm9tX2Nob3Nlbl9ub2RlID09IC0xKQo+ICsJaWYgKCFwcm9tX2Nob3Nlbl9ub2RlIHx8IChzMzIp cHJvbV9jaG9zZW5fbm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJcHJvbV9oYWx0KCk7Cj4gIAo+ ICAJcHJvbV9zdGRvdXQgPSBwcm9tX2dldGludChwcm9tX2Nob3Nlbl9ub2RlLCAic3Rkb3V0Iik7 Cj4gIAo+ICAJbm9kZSA9IHByb21fZmluZGRldmljZSgiL29wZW5wcm9tIik7Cj4gLQlpZiAoIW5v ZGUgfHwgKHMzMilub2RlID09IC0xKQo+ICsJaWYgKCFub2RlIHx8IChzMzIpbm9kZSA9PSBOVU1B X05PX05PREUpCj4gIAkJcHJvbV9oYWx0KCk7Cj4gIAo+ICAJcHJvbV9nZXRzdHJpbmcobm9kZSwg InZlcnNpb24iLCBwcm9tX3ZlcnNpb24sIHNpemVvZihwcm9tX3ZlcnNpb24pKTsKPiBkaWZmIC0t Z2l0IGEvYXJjaC9zcGFyYy9wcm9tL3RyZWVfMzIuYyBiL2FyY2gvc3BhcmMvcHJvbS90cmVlXzMy LmMKPiBpbmRleCAwZmVkODkzLi4yZDBhMjA0IDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMvcHJv bS90cmVlXzMyLmMKPiArKysgYi9hcmNoL3NwYXJjL3Byb20vdHJlZV8zMi5jCj4gQEAgLTQxLDEx ICs0MSwxMSBAQCBwaGFuZGxlIHByb21fZ2V0Y2hpbGQocGhhbmRsZSBub2RlKQo+ICB7Cj4gIAlw aGFuZGxlIGNub2RlOwo+ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilu b2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAljbm9kZSA9IF9fcHJv bV9nZXRjaGlsZChub2RlKTsKPiAtCWlmIChjbm9kZSA9PSAwIHx8IChzMzIpY25vZGUgPT0gLTEp Cj4gKwlpZiAoY25vZGUgPT0gMCB8fCAoczMyKWNub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQly ZXR1cm4gMDsKPiAgCj4gIAlyZXR1cm4gY25vZGU7Cj4gQEAgLTczLDExICs3MywxMSBAQCBwaGFu ZGxlIHByb21fZ2V0c2libGluZyhwaGFuZGxlIG5vZGUpCj4gIHsKPiAgCXBoYW5kbGUgc2libm9k ZTsKPiAgCj4gLQlpZiAoKHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9kZSA9PSBOVU1B X05PX05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJc2libm9kZSA9IF9fcHJvbV9nZXRzaWJs aW5nKG5vZGUpOwo+IC0JaWYgKHNpYm5vZGUgPT0gMCB8fCAoczMyKXNpYm5vZGUgPT0gLTEpCj4g KwlpZiAoc2libm9kZSA9PSAwIHx8IChzMzIpc2libm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+ICAJcmV0dXJuIHNpYm5vZGU7Cj4gQEAgLTIyMCw3ICsyMjAsNyBAQCBz dGF0aWMgY2hhciAqX19wcm9tX25leHRwcm9wKHBoYW5kbGUgbm9kZSwgY2hhciAqIG9wcm9wKQo+ ICAgKi8KPiAgY2hhciAqcHJvbV9uZXh0cHJvcChwaGFuZGxlIG5vZGUsIGNoYXIgKm9wcm9wLCBj aGFyICpidWZmZXIpCj4gIHsKPiAtCWlmIChub2RlID09IDAgfHwgKHMzMilub2RlID09IC0xKQo+ ICsJaWYgKG5vZGUgPT0gMCB8fCAoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVy biAiIjsKPiAgCj4gIAlyZXR1cm4gX19wcm9tX25leHRwcm9wKG5vZGUsIG9wcm9wKTsKPiBAQCAt MzA0LDcgKzMwNCw3IEBAIHBoYW5kbGUgcHJvbV9pbnN0MnBrZyhpbnQgaW5zdCkKPiAgCW5vZGUg PSAoKnJvbXZlYy0+cHZfdjJkZXZvcHMudjJfaW5zdDJwa2cpKGluc3QpOwo+ICAJcmVzdG9yZV9j dXJyZW50KCk7Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcm9tX2xvY2ssIGZsYWdzKTsK PiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9fTk9E RSkKPiAgCQlyZXR1cm4gMDsKPiAgCXJldHVybiBub2RlOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Fy Y2gvc3BhcmMvcHJvbS90cmVlXzY0LmMgYi9hcmNoL3NwYXJjL3Byb20vdHJlZV82NC5jCj4gaW5k ZXggOTg5ZTc5OS4uMmI0YzUxNSAxMDA2NDQKPiAtLS0gYS9hcmNoL3NwYXJjL3Byb20vdHJlZV82 NC5jCj4gKysrIGIvYXJjaC9zcGFyYy9wcm9tL3RyZWVfNjQuYwo+IEBAIC00NCwxMCArNDQsMTAg QEAgcGhhbmRsZSBwcm9tX2dldGNoaWxkKHBoYW5kbGUgbm9kZSkKPiAgewo+ICAJcGhhbmRsZSBj bm9kZTsKPiAgCj4gLQlpZiAoKHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9kZSA9PSBO VU1BX05PX05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAljbm9kZSA9IF9fcHJvbV9nZXRjaGlsZChu b2RlKTsKPiAtCWlmICgoczMyKWNub2RlID09IC0xKQo+ICsJaWYgKChzMzIpY25vZGUgPT0gTlVN QV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAJcmV0dXJuIGNub2RlOwo+ICB9Cj4gQEAgLTU3 LDEwICs1NywxMCBAQCBpbmxpbmUgcGhhbmRsZSBwcm9tX2dldHBhcmVudChwaGFuZGxlIG5vZGUp Cj4gIHsKPiAgCXBoYW5kbGUgY25vZGU7Cj4gIAo+IC0JaWYgKChzMzIpbm9kZSA9PSAtMSkKPiAr CWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAJY25vZGUg PSBwcm9tX25vZGVfdG9fbm9kZSgicGFyZW50Iiwgbm9kZSk7Cj4gLQlpZiAoKHMzMiljbm9kZSA9 PSAtMSkKPiArCWlmICgoczMyKWNub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsK PiAgCXJldHVybiBjbm9kZTsKPiAgfQo+IEBAIC03NywxMCArNzcsMTAgQEAgcGhhbmRsZSBwcm9t X2dldHNpYmxpbmcocGhhbmRsZSBub2RlKQo+ICB7Cj4gIAlwaGFuZGxlIHNpYm5vZGU7Cj4gIAo+ IC0JaWYgKChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RF KQo+ICAJCXJldHVybiAwOwo+ICAJc2libm9kZSA9IF9fcHJvbV9nZXRzaWJsaW5nKG5vZGUpOwo+ IC0JaWYgKChzMzIpc2libm9kZSA9PSAtMSkKPiArCWlmICgoczMyKXNpYm5vZGUgPT0gTlVNQV9O T19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldHVybiBzaWJub2RlOwo+IEBAIC0yNDEs NyArMjQxLDcgQEAgY2hhciAqcHJvbV9maXJzdHByb3AocGhhbmRsZSBub2RlLCBjaGFyICpidWZm ZXIpCj4gIAl1bnNpZ25lZCBsb25nIGFyZ3NbN107Cj4gIAo+ICAJKmJ1ZmZlciA9IDA7Cj4gLQlp ZiAoKHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9kZSA9PSBOVU1BX05PX05PREUpCj4g IAkJcmV0dXJuIGJ1ZmZlcjsKPiAgCj4gIAlhcmdzWzBdID0gKHVuc2lnbmVkIGxvbmcpIHByb21f bmV4dHByb3BfbmFtZTsKPiBAQCAtMjY3LDcgKzI2Nyw3IEBAIGNoYXIgKnByb21fbmV4dHByb3Ao cGhhbmRsZSBub2RlLCBjb25zdCBjaGFyICpvcHJvcCwgY2hhciAqYnVmZmVyKQo+ICAJdW5zaWdu ZWQgbG9uZyBhcmdzWzddOwo+ICAJY2hhciBidWZbMzJdOwo+ICAKPiAtCWlmICgoczMyKW5vZGUg PT0gLTEpIHsKPiArCWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJKmJ1ZmZl ciA9IDA7Cj4gIAkJcmV0dXJuIGJ1ZmZlcjsKPiAgCX0KPiBAQCAtMzcwLDcgKzM3MCw3IEBAIGlu bGluZSBwaGFuZGxlIHByb21faW5zdDJwa2coaW50IGluc3QpCj4gIAlwMTI3NV9jbWRfZGlyZWN0 KGFyZ3MpOwo+ICAKPiAgCW5vZGUgPSAoaW50KSBhcmdzWzRdOwo+IC0JaWYgKChzMzIpbm9kZSA9 PSAtMSkKPiArCWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ ICAJcmV0dXJuIG5vZGU7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20v cGNpLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wY2kuaAo+IGluZGV4IDY2Mjk2MzYuLmRlZTJh MzEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGNpLmgKPiArKysgYi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wY2kuaAo+IEBAIC0xNDEsNyArMTQxLDcgQEAgY3B1bWFza19vZl9w Y2lidXMoY29uc3Qgc3RydWN0IHBjaV9idXMgKmJ1cykKPiAgCWludCBub2RlOwo+ICAKPiAgCW5v ZGUgPSBfX3BjaWJ1c190b19ub2RlKGJ1cyk7Cj4gLQlyZXR1cm4gKG5vZGUgPT0gLTEpID8gY3B1 X29ubGluZV9tYXNrIDoKPiArCXJldHVybiAobm9kZSA9PSBOVU1BX05PX05PREUpID8gY3B1X29u bGluZV9tYXNrIDoKPiAgCQkJICAgICAgY3B1bWFza19vZl9ub2RlKG5vZGUpOwo+ICB9Cj4gICNl bmRpZgo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfdXZfeC5jIGIv YXJjaC94ODYva2VybmVsL2FwaWMveDJhcGljX3V2X3guYwo+IGluZGV4IDM5MWYzNTguLjNjMzM3 OGEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWMveDJhcGljX3V2X3guYwo+ICsr KyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL3gyYXBpY191dl94LmMKPiBAQCAtMTM5MCw3ICsxMzkw LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGJ1aWxkX3NvY2tldF90YWJsZXModm9pZCkKPiAgCX0K PiAgCj4gIAkvKiBTZXQgc29ja2V0IC0+IG5vZGUgdmFsdWVzOiAqLwo+IC0JbG5pZCA9IC0xOwo+ ICsJbG5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCWZvcl9lYWNoX3ByZXNlbnRfY3B1KGNwdSkgewo+ ICAJCWludCBuaWQgPSBjcHVfdG9fbm9kZShjcHUpOwo+ICAJCWludCBhcGljaWQsIHNvY2tpZDsK PiBAQCAtMTUyMSw3ICsxNTIxLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHV2X3N5c3RlbV9pbml0 X2h1Yih2b2lkKQo+ICAJCQluZXdfaHViLT5wbm9kZSA9IDB4ZmZmZjsKPiAgCj4gIAkJbmV3X2h1 Yi0+bnVtYV9ibGFkZV9pZCA9IHV2X25vZGVfdG9fYmxhZGVfaWQobm9kZWlkKTsKPiAtCQluZXdf aHViLT5tZW1vcnlfbmlkID0gLTE7Cj4gKwkJbmV3X2h1Yi0+bWVtb3J5X25pZCA9IE5VTUFfTk9f Tk9ERTsKPiAgCQluZXdfaHViLT5ucl9wb3NzaWJsZV9jcHVzID0gMDsKPiAgCQluZXdfaHViLT5u cl9vbmxpbmVfY3B1cyA9IDA7Cj4gIAl9Cj4gQEAgLTE1MzgsNyArMTUzOCw3IEBAIHN0YXRpYyB2 b2lkIF9faW5pdCB1dl9zeXN0ZW1faW5pdF9odWIodm9pZCkKPiAgCj4gIAkJdXZfY3B1X2luZm9f cGVyKGNwdSktPnBfdXZfaHViX2luZm8gPSB1dl9odWJfaW5mb19saXN0KG5vZGVpZCk7Cj4gIAkJ dXZfY3B1X2luZm9fcGVyKGNwdSktPmJsYWRlX2NwdV9pZCA9IHV2X2NwdV9odWJfaW5mbyhjcHUp LT5ucl9wb3NzaWJsZV9jcHVzKys7Cj4gLQkJaWYgKHV2X2NwdV9odWJfaW5mbyhjcHUpLT5tZW1v cnlfbmlkID09IC0xKQo+ICsJCWlmICh1dl9jcHVfaHViX2luZm8oY3B1KS0+bWVtb3J5X25pZCA9 PSBOVU1BX05PX05PREUpCj4gIAkJCXV2X2NwdV9odWJfaW5mbyhjcHUpLT5tZW1vcnlfbmlkID0g Y3B1X3RvX25vZGUoY3B1KTsKPiAgCj4gIAkJLyogSW5pdCBtZW1vcnlsZXNzIG5vZGU6ICovCj4g ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zbXBib290LmMgYi9hcmNoL3g4Ni9rZXJuZWwv c21wYm9vdC5jCj4gaW5kZXggYTkxMzRkMS4uYzFkNDVkYyAxMDA2NDQKPiAtLS0gYS9hcmNoL3g4 Ni9rZXJuZWwvc21wYm9vdC5jCj4gKysrIGIvYXJjaC94ODYva2VybmVsL3NtcGJvb3QuYwo+IEBA IC04NDEsNyArODQxLDcgQEAgd2FrZXVwX3NlY29uZGFyeV9jcHVfdmlhX2luaXQoaW50IHBoeXNf YXBpY2lkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2VpcCkKPiAgLyogcmVkdWNlIHRoZSBudW1iZXIg b2YgbGluZXMgcHJpbnRlZCB3aGVuIGJvb3RpbmcgYSBsYXJnZSBjcHUgY291bnQgc3lzdGVtICov Cj4gIHN0YXRpYyB2b2lkIGFubm91bmNlX2NwdShpbnQgY3B1LCBpbnQgYXBpY2lkKQo+ICB7Cj4g LQlzdGF0aWMgaW50IGN1cnJlbnRfbm9kZSA9IC0xOwo+ICsJc3RhdGljIGludCBjdXJyZW50X25v ZGUgPSBOVU1BX05PX05PREU7Cj4gIAlpbnQgbm9kZSA9IGVhcmx5X2NwdV90b19ub2RlKGNwdSk7 Cj4gIAlzdGF0aWMgaW50IHdpZHRoLCBub2RlX3dpZHRoOwo+ICAKPiBkaWZmIC0tZ2l0IGEvYXJj aC94ODYvcGxhdGZvcm0vb2xwYy9vbHBjX2R0LmMgYi9hcmNoL3g4Ni9wbGF0Zm9ybS9vbHBjL29s cGNfZHQuYwo+IGluZGV4IDI0ZDIxNzUuLjcwOTgxMjcgMTAwNjQ0Cj4gLS0tIGEvYXJjaC94ODYv cGxhdGZvcm0vb2xwYy9vbHBjX2R0LmMKPiArKysgYi9hcmNoL3g4Ni9wbGF0Zm9ybS9vbHBjL29s cGNfZHQuYwo+IEBAIC0yOSwxMCArMjksMTAgQEAgc3RhdGljIHBoYW5kbGUgX19pbml0IG9scGNf ZHRfZ2V0c2libGluZyhwaGFuZGxlIG5vZGUpCj4gIAljb25zdCB2b2lkICphcmdzW10gPSB7ICh2 b2lkICopbm9kZSB9Owo+ICAJdm9pZCAqcmVzW10gPSB7ICZub2RlIH07Cj4gIAo+IC0JaWYgKChz MzIpbm9kZSA9PSAtMSkKPiArCWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJl dHVybiAwOwo+ICAKPiAtCWlmIChvbHBjX29mdygicGVlciIsIGFyZ3MsIHJlcykgfHwgKHMzMilu b2RlID09IC0xKQo+ICsJaWYgKG9scGNfb2Z3KCJwZWVyIiwgYXJncywgcmVzKSB8fCAoczMyKW5v ZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldHVybiBub2RlOwo+ IEBAIC00MywxMCArNDMsMTAgQEAgc3RhdGljIHBoYW5kbGUgX19pbml0IG9scGNfZHRfZ2V0Y2hp bGQocGhhbmRsZSBub2RlKQo+ICAJY29uc3Qgdm9pZCAqYXJnc1tdID0geyAodm9pZCAqKW5vZGUg fTsKPiAgCXZvaWQgKnJlc1tdID0geyAmbm9kZSB9Owo+ICAKPiAtCWlmICgoczMyKW5vZGUgPT0g LTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAg Cj4gLQlpZiAob2xwY19vZncoImNoaWxkIiwgYXJncywgcmVzKSB8fCAoczMyKW5vZGUgPT0gLTEp IHsKPiArCWlmIChvbHBjX29mdygiY2hpbGQiLCBhcmdzLCByZXMpIHx8IChzMzIpbm9kZSA9PSBO VU1BX05PX05PREUpIHsKPiAgCQlwcl9lcnIoIlBST006ICVzOiBmZXRjaGluZyBjaGlsZCBmYWls ZWQhXG4iLCBfX2Z1bmNfXyk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gQEAgLTYwLDcgKzYwLDcg QEAgc3RhdGljIGludCBfX2luaXQgb2xwY19kdF9nZXRwcm9wbGVuKHBoYW5kbGUgbm9kZSwgY29u c3QgY2hhciAqcHJvcCkKPiAgCWludCBsZW47Cj4gIAl2b2lkICpyZXNbXSA9IHsgJmxlbiB9Owo+ ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9f Tk9ERSkKPiAgCQlyZXR1cm4gLTE7Cj4gIAo+ICAJaWYgKG9scGNfb2Z3KCJnZXRwcm9wbGVuIiwg YXJncywgcmVzKSkgewo+IEBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBfX2luaXQgb2xw Y19kdF9uZXh0cHJvcChwaGFuZGxlIG5vZGUsIGNoYXIgKnByZXYsIGNoYXIgKmJ1ZikKPiAgCj4g IAlidWZbMF0gPSAnXDAnOwo+ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMz Milub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gLTE7Cj4gIAo+ICAJaWYgKG9scGNf b2Z3KCJuZXh0cHJvcCIsIGFyZ3MsIHJlcykgfHwgc3VjY2VzcyAhPSAxKQo+IEBAIC0xMTUsNyAr MTE1LDcgQEAgc3RhdGljIGludCBfX2luaXQgb2xwY19kdF9wa2cycGF0aChwaGFuZGxlIG5vZGUs IGNoYXIgKmJ1ZiwKPiAgCWNvbnN0IHZvaWQgKmFyZ3NbXSA9IHsgKHZvaWQgKilub2RlLCBidWYs ICh2b2lkICopYnVmbGVuIH07Cj4gIAl2b2lkICpyZXNbXSA9IHsgbGVuIH07Cj4gIAo+IC0JaWYg KChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICgoczMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJ CXJldHVybiAtMTsKPiAgCj4gIAlpZiAob2xwY19vZncoInBhY2thZ2UtdG8tcGF0aCIsIGFyZ3Ms IHJlcykgfHwgKmxlbiA8IDEpCj4gQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgcGhhbmRsZSBf X2luaXQgb2xwY19kdF9maW5kZGV2aWNlKGNvbnN0IGNoYXIgKnBhdGgpCj4gIAkJcmV0dXJuIDA7 Cj4gIAl9Cj4gIAo+IC0JaWYgKChzMzIpIG5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMikgbm9kZSA9 PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0dXJuIG5vZGU7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYyBiL2RyaXZlcnMvYmxv Y2svbXRpcDMyeHgvbXRpcDMyeHguYwo+IGluZGV4IGE3ZGFhOGEuLmI4ODk0NTIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jCj4gKysrIGIvZHJpdmVycy9i bG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jCj4gQEAgLTQwODQsOSArNDA4NCw5IEBAIHN0YXRpYyBp bnQgZ2V0X2xlYXN0X3VzZWRfY3B1X29uX25vZGUoaW50IG5vZGUpCj4gIC8qIEhlbHBlciBmb3Ig c2VsZWN0aW5nIGEgbm9kZSBpbiByb3VuZCByb2JpbiBtb2RlICovCj4gIHN0YXRpYyBpbmxpbmUg aW50IG10aXBfZ2V0X25leHRfcnJfbm9kZSh2b2lkKQo+ICB7Cj4gLQlzdGF0aWMgaW50IG5leHRf bm9kZSA9IC0xOwo+ICsJc3RhdGljIGludCBuZXh0X25vZGUgPSBOVU1BX05PX05PREU7Cj4gIAo+ IC0JaWYgKG5leHRfbm9kZSA9PSAtMSkgewo+ICsJaWYgKG5leHRfbm9kZSA9PSBOVU1BX05PX05P REUpIHsKPiAgCQluZXh0X25vZGUgPSBmaXJzdF9vbmxpbmVfbm9kZTsKPiAgCQlyZXR1cm4gbmV4 dF9ub2RlOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYyBiL2Ry aXZlcnMvZG1hL2RtYWVuZ2luZS5jCj4gaW5kZXggZjFhNDQxYWIuLjFhZWVmYzcgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9kbWEvZG1hZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2RtYS9kbWFlbmdp bmUuYwo+IEBAIC0zODYsNyArMzg2LDggQEAgRVhQT1JUX1NZTUJPTChkbWFfaXNzdWVfcGVuZGlu Z19hbGwpOwo+ICBzdGF0aWMgYm9vbCBkbWFfY2hhbl9pc19sb2NhbChzdHJ1Y3QgZG1hX2NoYW4g KmNoYW4sIGludCBjcHUpCj4gIHsKPiAgCWludCBub2RlID0gZGV2X3RvX25vZGUoY2hhbi0+ZGV2 aWNlLT5kZXYpOwo+IC0JcmV0dXJuIG5vZGUgPT0gLTEgfHwgY3B1bWFza190ZXN0X2NwdShjcHUs IGNwdW1hc2tfb2Zfbm9kZShub2RlKSk7Cj4gKwlyZXR1cm4gbm9kZSA9PSBOVU1BX05PX05PREUg fHwKPiArCQljcHVtYXNrX3Rlc3RfY3B1KGNwdSwgY3B1bWFza19vZl9ub2RlKG5vZGUpKTsKPiAg fQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2Fm ZmluaXR5LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9hZmZpbml0eS5jCj4gaW5kZXgg MmJhZjM4Yy4uM2U4YWNiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZp MS9hZmZpbml0eS5jCj4gKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvYWZmaW5pdHku Ywo+IEBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBoZmkxX2Rldl9hZmZpbml0eV9jbGVhbl91cChz dHJ1Y3QgaGZpMV9kZXZkYXRhICpkZCkKPiAgCV9kZXZfY29tcF92ZWN0X2NwdV9tYXNrX2NsZWFu X3VwKGRkLCBlbnRyeSk7Cj4gIHVubG9jazoKPiAgCW11dGV4X3VubG9jaygmbm9kZV9hZmZpbml0 eS5sb2NrKTsKPiAtCWRkLT5ub2RlID0gLTE7Cj4gKwlkZC0+bm9kZSA9IE5VTUFfTk9fTk9ERTsK PiAgfQo+ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEv aW5pdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaW5pdC5jCj4gaW5kZXggMDkwNDQ5 MC4uMGJmNDU3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pbml0 LmMKPiArKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pbml0LmMKPiBAQCAtMTMwMyw3 ICsxMzAzLDcgQEAgc3RhdGljIHN0cnVjdCBoZmkxX2RldmRhdGEgKmhmaTFfYWxsb2NfZGV2ZGF0 YShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPiAgCQlkZC0+dW5pdCA9IHJldDsKPiAgCQlsaXN0X2Fk ZCgmZGQtPmxpc3QsICZoZmkxX2Rldl9saXN0KTsKPiAgCX0KPiAtCWRkLT5ub2RlID0gLTE7Cj4g KwlkZC0+bm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZoZmkxX2RldnNfbG9jaywgZmxhZ3MpOwo+ICAJaWRyX3ByZWxvYWRfZW5kKCk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW9tbXUvZG1hci5jIGIvZHJpdmVycy9pb21tdS9kbWFyLmMKPiBpbmRl eCBkOWM3NDhiLi44NmE5YzE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW9tbXUvZG1hci5jCj4g KysrIGIvZHJpdmVycy9pb21tdS9kbWFyLmMKPiBAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN0YXRpYyBp bnQgZG1hcl9wYXJzZV9vbmVfcmhzYShzdHJ1Y3QgYWNwaV9kbWFyX2hlYWRlciAqaGVhZGVyLCB2 b2lkICphcmcpCj4gIAkJCWludCBub2RlID0gYWNwaV9tYXBfcHhtX3RvX25vZGUocmhzYS0+cHJv eGltaXR5X2RvbWFpbik7Cj4gIAo+ICAJCQlpZiAoIW5vZGVfb25saW5lKG5vZGUpKQo+IC0JCQkJ bm9kZSA9IC0xOwo+ICsJCQkJbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCQkJZHJoZC0+aW9tbXUt Pm5vZGUgPSBub2RlOwo+ICAJCQlyZXR1cm4gMDsKPiAgCQl9Cj4gQEAgLTEwNjIsNyArMTA2Miw3 IEBAIHN0YXRpYyBpbnQgYWxsb2NfaW9tbXUoc3RydWN0IGRtYXJfZHJoZF91bml0ICpkcmhkKQo+ ICAJaW9tbXUtPm1zYWdhdyA9IG1zYWdhdzsKPiAgCWlvbW11LT5zZWdtZW50ID0gZHJoZC0+c2Vn bWVudDsKPiAgCj4gLQlpb21tdS0+bm9kZSA9IC0xOwo+ICsJaW9tbXUtPm5vZGUgPSBOVU1BX05P X05PREU7Cj4gIAo+ICAJdmVyID0gcmVhZGwoaW9tbXUtPnJlZyArIERNQVJfVkVSX1JFRyk7Cj4g IAlwcl9pbmZvKCIlczogcmVnX2Jhc2VfYWRkciAlbGx4IHZlciAlZDolZCBjYXAgJWxseCBlY2Fw ICVsbHhcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYyBiL2Ry aXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYwo+IGluZGV4IGYzY2NmMDIuLjlmNmZiMTMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jCj4gKysrIGIvZHJpdmVycy9pb21t dS9pbnRlbC1pb21tdS5jCj4gQEAgLTE3NzIsNyArMTc3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgZG1h cl9kb21haW4gKmFsbG9jX2RvbWFpbihpbnQgZmxhZ3MpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+ ICAJbWVtc2V0KGRvbWFpbiwgMCwgc2l6ZW9mKCpkb21haW4pKTsKPiAtCWRvbWFpbi0+bmlkID0g LTE7Cj4gKwlkb21haW4tPm5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCWRvbWFpbi0+ZmxhZ3MgPSBm bGFnczsKPiAgCWRvbWFpbi0+aGFzX2lvdGxiX2RldmljZSA9IGZhbHNlOwo+ICAJSU5JVF9MSVNU X0hFQUQoJmRvbWFpbi0+ZGV2aWNlcyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGNp L2l2dHYvaXZ0dmZiLmMgYi9kcml2ZXJzL21lZGlhL3BjaS9pdnR2L2l2dHZmYi5jCj4gaW5kZXgg M2UwMmRlMC4uODFiZDQxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BjaS9pdnR2L2l2 dHZmYi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wY2kvaXZ0di9pdnR2ZmIuYwo+IEBAIC0xMDU0 LDcgKzEwNTQsNyBAQCBzdGF0aWMgaW50IGl2dHZmYl9pbml0X3ZpZG1vZGUoc3RydWN0IGl2dHYg Kml0dikKPiAgCj4gIAkvKiBHZW5lcmF0ZSB2YWxpZCBmYl9pbmZvICovCj4gIAo+IC0Jb2ktPml2 dHZmYl9pbmZvLm5vZGUgPSAtMTsKPiArCW9pLT5pdnR2ZmJfaW5mby5ub2RlID0gTlVNQV9OT19O T0RFOwo+ICAJb2ktPml2dHZmYl9pbmZvLmZsYWdzID0gRkJJTkZPX0ZMQUdfREVGQVVMVDsKPiAg CW9pLT5pdnR2ZmJfaW5mby5mYm9wcyA9ICZpdnR2ZmJfb3BzOwo+ICAJb2ktPml2dHZmYl9pbmZv LnBhciA9IGl0djsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXZpZC92 aXZpZC1vc2QuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdml2aWQvdml2aWQtb3NkLmMKPiBp bmRleCAxYTg5NTkzLi41NmEyZDQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdml2aWQvdml2aWQtb3NkLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpdmlk L3ZpdmlkLW9zZC5jCj4gQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgaW50IHZpdmlkX2ZiX2lu aXRfdmlkbW9kZShzdHJ1Y3Qgdml2aWRfZGV2ICpkZXYpCj4gIAo+ICAJLyogR2VuZXJhdGUgdmFs aWQgZmJfaW5mbyAqLwo+ICAKPiAtCWRldi0+ZmJfaW5mby5ub2RlID0gLTE7Cj4gKwlkZXYtPmZi X2luZm8ubm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCWRldi0+ZmJfaW5mby5mbGFncyA9IEZCSU5G T19GTEFHX0RFRkFVTFQ7Cj4gIAlkZXYtPmZiX2luZm8uZmJvcHMgPSAmdml2aWRfZmJfb3BzOwo+ ICAJZGV2LT5mYl9pbmZvLnBhciA9IGRldjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL3Nn aS14cC94cGNfdXYuYyBiL2RyaXZlcnMvbWlzYy9zZ2kteHAveHBjX3V2LmMKPiBpbmRleCAwNDQx YWJlLi5lZWYzNmRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy9zZ2kteHAveHBjX3V2LmMK PiArKysgYi9kcml2ZXJzL21pc2Mvc2dpLXhwL3hwY191di5jCj4gQEAgLTYxLDcgKzYxLDcgQEAg c3RhdGljIHN0cnVjdCB4cGNfaGVhcnRiZWF0X3V2ICp4cGNfaGVhcnRiZWF0X3V2Owo+ICAJCQkJ CSBYUENfTk9USUZZX01TR19TSVpFX1VWKQo+ICAjZGVmaW5lIFhQQ19OT1RJRllfSVJRX05BTUUJ CSJ4cGNfbm90aWZ5Igo+ICAKPiAtc3RhdGljIGludCB4cGNfbXFfbm9kZSA9IC0xOwo+ICtzdGF0 aWMgaW50IHhwY19tcV9ub2RlID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgc3RhdGljIHN0cnVjdCB4 cGNfZ3J1X21xX3V2ICp4cGNfYWN0aXZhdGVfbXFfdXY7Cj4gIHN0YXRpYyBzdHJ1Y3QgeHBjX2dy dV9tcV91diAqeHBjX25vdGlmeV9tcV91djsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50 ZWwvaXhnYmUvaXhnYmVfbWFpbi5jCj4gaW5kZXggMTEzYjM4ZS4uNGZhZTg1YyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMKPiArKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMKPiBAQCAtNjQx NCw3ICs2NDE0LDcgQEAgaW50IGl4Z2JlX3NldHVwX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaXhnYmVf cmluZyAqdHhfcmluZykKPiAgewo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gdHhfcmluZy0+ZGV2 Owo+ICAJaW50IG9yaWdfbm9kZSA9IGRldl90b19ub2RlKGRldik7Cj4gLQlpbnQgcmluZ19ub2Rl ID0gLTE7Cj4gKwlpbnQgcmluZ19ub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJaW50IHNpemU7Cj4g IAo+ICAJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXhnYmVfdHhfYnVmZmVyKSAqIHR4X3JpbmctPmNv dW50Owo+IEBAIC02NTA4LDcgKzY1MDgsNyBAQCBpbnQgaXhnYmVfc2V0dXBfcnhfcmVzb3VyY2Vz KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSByeF9yaW5nLT5kZXY7Cj4gIAlpbnQgb3JpZ19ub2RlID0gZGV2X3RvX25vZGUoZGV2KTsK PiAtCWludCByaW5nX25vZGUgPSAtMTsKPiArCWludCByaW5nX25vZGUgPSBOVU1BX05PX05PREU7 Cj4gIAlpbnQgc2l6ZTsKPiAgCj4gIAlzaXplID0gc2l6ZW9mKHN0cnVjdCBpeGdiZV9yeF9idWZm ZXIpICogcnhfcmluZy0+Y291bnQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv bW1wL2ZiL21tcGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jCj4gaW5k ZXggZWUyMTJiZS4uMjk4YmU5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L21t cC9mYi9tbXBmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYwo+ IEBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIGludCBmYl9pbmZvX3NldHVwKHN0cnVjdCBmYl9p bmZvICppbmZvLAo+ICAJLyogSW5pdGlhbGlzZSBzdGF0aWMgZmIgcGFyYW1ldGVycy4qLwo+ICAJ aW5mby0+ZmxhZ3MgPSBGQklORk9fREVGQVVMVCB8IEZCSU5GT19QQVJUSUFMX1BBTl9PSyB8Cj4g IAkJRkJJTkZPX0hXQUNDRUxfWFBBTiB8IEZCSU5GT19IV0FDQ0VMX1lQQU47Cj4gLQlpbmZvLT5u b2RlID0gLTE7Cj4gKwlpbmZvLT5ub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJc3RyY3B5KGluZm8t PmZpeC5pZCwgZmJpLT5uYW1lKTsKPiAgCWluZm8tPmZpeC50eXBlID0gRkJfVFlQRV9QQUNLRURf UElYRUxTOwo+ICAJaW5mby0+Zml4LnR5cGVfYXV4ID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9weGExNjhmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9weGExNjhmYi5j Cj4gaW5kZXggZTMxMzQwZi4uN2Q3NzVkZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L3B4YTE2OGZiLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3B4YTE2OGZiLmMKPiBA QCAtNjQ5LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQgcHhhMTY4ZmJfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiAgCSAqLwo+ICAJaW5mby0+ZmxhZ3MgPSBGQklORk9fREVGQVVM VCB8IEZCSU5GT19QQVJUSUFMX1BBTl9PSyB8Cj4gIAkJICAgICAgRkJJTkZPX0hXQUNDRUxfWFBB TiB8IEZCSU5GT19IV0FDQ0VMX1lQQU47Cj4gLQlpbmZvLT5ub2RlID0gLTE7Cj4gKwlpbmZvLT5u b2RlID0gTlVNQV9OT19OT0RFOwo+ICAJc3RybGNweShpbmZvLT5maXguaWQsIG1pLT5pZCwgMTYp Owo+ICAJaW5mby0+Zml4LnR5cGUgPSBGQl9UWVBFX1BBQ0tFRF9QSVhFTFM7Cj4gIAlpbmZvLT5m aXgudHlwZV9hdXggPSAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3cxMDBm Yi5jIGIvZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYwo+IGluZGV4IDY5NjEwNmUuLjhiMGYy MGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIuYwo+ICsrKyBiL2Ry aXZlcnMvdmlkZW8vZmJkZXYvdzEwMGZiLmMKPiBAQCAtNzAzLDcgKzcwMyw3IEBAIGludCB3MTAw ZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWluZm8tPmZib3BzID0g JncxMDBmYl9vcHM7Cj4gIAlpbmZvLT5mbGFncyA9IEZCSU5GT19ERUZBVUxUIHwgRkJJTkZPX0hX QUNDRUxfQ09QWUFSRUEgfAo+ICAJCUZCSU5GT19IV0FDQ0VMX0ZJTExSRUNUOwo+IC0JaW5mby0+ bm9kZSA9IC0xOwo+ICsJaW5mby0+bm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCWluZm8tPnNjcmVl bl9iYXNlID0gcmVtYXBwZWRfZmJ1ZiArIChXMTAwX0ZCX0JBU0UtTUVNX1dJTkRPV19CQVNFKTsK PiAgCWluZm8tPnNjcmVlbl9zaXplID0gUkVNQVBQRURfRkJfTEVOOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZnMvb2NmczIvZGxtL2RsbWNvbW1vbi5oIGIvZnMvb2NmczIvZGxtL2RsbWNvbW1vbi5oCj4g aW5kZXggZDA2ZTI3ZS4uMTExMTFmNiAxMDA2NDQKPiAtLS0gYS9mcy9vY2ZzMi9kbG0vZGxtY29t bW9uLmgKPiArKysgYi9mcy9vY2ZzMi9kbG0vZGxtY29tbW9uLmgKPiBAQCAtMTEyMSw3ICsxMTIx LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRsbV9ub2RlX2l0ZXJfaW5pdCh1bnNpZ25lZCBsb25n ICptYXAsCj4gIAkJCQkgICAgICBzdHJ1Y3QgZGxtX25vZGVfaXRlciAqaXRlcikKPiAgewo+ICAJ bWVtY3B5KGl0ZXItPm5vZGVfbWFwLCBtYXAsIHNpemVvZihpdGVyLT5ub2RlX21hcCkpOwo+IC0J aXRlci0+Y3Vybm9kZSA9IC0xOwo+ICsJaXRlci0+Y3Vybm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAg fQo+ICAKPiAgc3RhdGljIGlubGluZSBpbnQgZGxtX25vZGVfaXRlcl9uZXh0KHN0cnVjdCBkbG1f bm9kZV9pdGVyICppdGVyKQo+IGRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kbG0vZGxtZG9tYWluLmMg Yi9mcy9vY2ZzMi9kbG0vZGxtZG9tYWluLmMKPiBpbmRleCAyYWNkNThiLi4zODFhMzIzIDEwMDY0 NAo+IC0tLSBhL2ZzL29jZnMyL2RsbS9kbG1kb21haW4uYwo+ICsrKyBiL2ZzL29jZnMyL2RsbS9k bG1kb21haW4uYwo+IEBAIC01NDYsNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgZGxtX21hcmtfZG9t YWluX2xlYXZpbmcoc3RydWN0IGRsbV9jdHh0ICpkbG0pCj4gIAo+ICBzdGF0aWMgdm9pZCBfX2Rs bV9wcmludF9ub2RlcyhzdHJ1Y3QgZGxtX2N0eHQgKmRsbSkKPiAgewo+IC0JaW50IG5vZGUgPSAt MSwgbnVtID0gMDsKPiArCWludCBub2RlID0gTlVNQV9OT19OT0RFLCBudW0gPSAwOwo+ICAKPiAg CWFzc2VydF9zcGluX2xvY2tlZCgmZGxtLT5zcGlubG9jayk7Cj4gIAo+IEBAIC02MTMsNyArNjEz LDcgQEAgc3RhdGljIGludCBkbG1fc2VuZF9vbmVfZG9tYWluX2V4aXQoc3RydWN0IGRsbV9jdHh0 ICpkbG0sIHUzMiBtc2dfdHlwZSwKPiAgCj4gIHN0YXRpYyB2b2lkIGRsbV9iZWdpbl9leGl0X2Rv bWFpbihzdHJ1Y3QgZGxtX2N0eHQgKmRsbSkKPiAgewo+IC0JaW50IG5vZGUgPSAtMTsKPiArCWlu dCBub2RlID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCS8qIFN1cHBvcnQgZm9yIGJlZ2luIGV4aXQg ZG9tYWluIHdhcyBhZGRlZCBpbiAxLjIgKi8KPiAgCWlmIChkbG0tPmRsbV9sb2NraW5nX3Byb3Rv LnB2X21ham9yID09IDEgJiYKPiBAQCAtMTQwNyw3ICsxNDA3LDcgQEAgc3RhdGljIGludCBkbG1f c2VuZF9qb2luX2NhbmNlbHMoc3RydWN0IGRsbV9jdHh0ICpkbG0sCj4gIAl9Cj4gIAo+ICAJc3Rh dHVzID0gMDsKPiAtCW5vZGUgPSAtMTsKPiArCW5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAl3aGls ZSAoKG5vZGUgPSBmaW5kX25leHRfYml0KG5vZGVfbWFwLCBPMk5NX01BWF9OT0RFUywKPiAgCQkJ CSAgICAgbm9kZSArIDEpKSA8IE8yTk1fTUFYX05PREVTKSB7Cj4gIAkJaWYgKG5vZGUgPT0gZGxt LT5ub2RlX251bSkKPiBAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgc3RhdGljIHZvaWQgZGxtX3NlbmRf am9pbl9hc3NlcnRzKHN0cnVjdCBkbG1fY3R4dCAqZGxtLAo+ICAJaW50IHN0YXR1cywgbm9kZSwg bGl2ZTsKPiAgCj4gIAlzdGF0dXMgPSAwOwo+IC0Jbm9kZSA9IC0xOwo+ICsJbm9kZSA9IE5VTUFf Tk9fTk9ERTsKPiAgCXdoaWxlICgobm9kZSA9IGZpbmRfbmV4dF9iaXQobm9kZV9tYXAsIE8yTk1f TUFYX05PREVTLAo+ICAJCQkJICAgICBub2RlICsgMSkpIDwgTzJOTV9NQVhfTk9ERVMpIHsKPiAg CQlpZiAobm9kZSA9PSBkbG0tPm5vZGVfbnVtKQo+IEBAIC0xNjMxLDcgKzE2MzEsNyBAQCBzdGF0 aWMgaW50IGRsbV90cnlfdG9fam9pbl9kb21haW4oc3RydWN0IGRsbV9jdHh0ICpkbG0pCj4gIAo+ ICAJc3Bpbl91bmxvY2soJmRsbS0+c3BpbmxvY2spOwo+ICAKPiAtCW5vZGUgPSAtMTsKPiArCW5v ZGUgPSBOVU1BX05PX05PREU7Cj4gIAl3aGlsZSAoKG5vZGUgPSBmaW5kX25leHRfYml0KGN0eHQt PmxpdmVfbWFwLCBPMk5NX01BWF9OT0RFUywKPiAgCQkJCSAgICAgbm9kZSArIDEpKSA8IE8yTk1f TUFYX05PREVTKSB7Cj4gIAkJaWYgKG5vZGUgPT0gZGxtLT5ub2RlX251bSkKPiBkaWZmIC0tZ2l0 IGEvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jIGIvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jCj4g aW5kZXggODI2ZjA1Ni4uZTU0YmJiYyAxMDA2NDQKPiAtLS0gYS9mcy9vY2ZzMi9kbG0vZGxtbWFz dGVyLmMKPiArKysgYi9mcy9vY2ZzMi9kbG0vZGxtbWFzdGVyLmMKPiBAQCAtMTE4Myw3ICsxMTgz LDcgQEAgc3RhdGljIHZvaWQgZGxtX2JpdG1hcF9kaWZmX2l0ZXJfaW5pdChzdHJ1Y3QgZGxtX2Jp dG1hcF9kaWZmX2l0ZXIgKml0ZXIsCj4gIAl1bnNpZ25lZCBsb25nIHAxLCBwMjsKPiAgCWludCBp Owo+ICAKPiAtCWl0ZXItPmN1cm5vZGUgPSAtMTsKPiArCWl0ZXItPmN1cm5vZGUgPSBOVU1BX05P X05PREU7Cj4gIAlpdGVyLT5vcmlnX2JtID0gb3JpZ19ibTsKPiAgCWl0ZXItPmN1cl9ibSA9IGN1 cl9ibTsKPiAgCj4gZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1yZWNvdmVyeS5jIGIvZnMv b2NmczIvZGxtL2RsbXJlY292ZXJ5LmMKPiBpbmRleCA4MDI2MzZkNS4uNzA0ZmE4YiAxMDA2NDQK PiAtLS0gYS9mcy9vY2ZzMi9kbG0vZGxtcmVjb3ZlcnkuYwo+ICsrKyBiL2ZzL29jZnMyL2RsbS9k bG1yZWNvdmVyeS5jCj4gQEAgLTI5MDMsNyArMjkwMyw3IEBAIHN0YXRpYyBpbnQgZGxtX3NlbmRf ZmluYWxpemVfcmVjb19tZXNzYWdlKHN0cnVjdCBkbG1fY3R4dCAqZGxtKQo+ICAJfQo+ICAJaWYg KHN0YWdlID09IDEpIHsKPiAgCQkvKiByZXNldCB0aGUgbm9kZV9pdGVyIGJhY2sgdG8gdGhlIHRv cCBhbmQgc2VuZCBmaW5hbGl6ZTIgKi8KPiAtCQlpdGVyLmN1cm5vZGUgPSAtMTsKPiArCQlpdGVy LmN1cm5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAkJc3RhZ2UgPSAyOwo+ICAJCWdvdG8gc3RhZ2Uy Owo+ICAJfQo+IGRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zdGFja191c2VyLmMgYi9mcy9vY2ZzMi9z dGFja191c2VyLmMKPiBpbmRleCBkMmZiOTdiLi5hNjczZWZhIDEwMDY0NAo+IC0tLSBhL2ZzL29j ZnMyL3N0YWNrX3VzZXIuYwo+ICsrKyBiL2ZzL29jZnMyL3N0YWNrX3VzZXIuYwo+IEBAIC0xNzEs NyArMTcxLDcgQEAgdW5pb24gb2NmczJfY29udHJvbF9tZXNzYWdlIHsKPiAgc3RhdGljIHN0cnVj dCBvY2ZzMl9zdGFja19wbHVnaW4gb2NmczJfdXNlcl9wbHVnaW47Cj4gIAo+ICBzdGF0aWMgYXRv bWljX3Qgb2NmczJfY29udHJvbF9vcGVuZWQ7Cj4gLXN0YXRpYyBpbnQgb2NmczJfY29udHJvbF90 aGlzX25vZGUgPSAtMTsKPiArc3RhdGljIGludCBvY2ZzMl9jb250cm9sX3RoaXNfbm9kZSA9IE5V TUFfTk9fTk9ERTsKPiAgc3RhdGljIHN0cnVjdCBvY2ZzMl9wcm90b2NvbF92ZXJzaW9uIHJ1bm5p bmdfcHJvdG87Cj4gIAo+ICBzdGF0aWMgTElTVF9IRUFEKG9jZnMyX2xpdmVfY29ubmVjdGlvbl9s aXN0KTsKPiBAQCAtNTg5LDcgKzU4OSw3IEBAIHN0YXRpYyBpbnQgb2NmczJfY29udHJvbF9yZWxl YXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+ICAJCSAqIExhc3Qg dmFsaWQgY2xvc2UgY2xlYXJzIHRoZSBub2RlIG51bWJlciBhbmQgcmVzZXRzCj4gIAkJICogdGhl IGxvY2tpbmcgcHJvdG9jb2wgdmVyc2lvbgo+ICAJCSAqLwo+IC0JCW9jZnMyX2NvbnRyb2xfdGhp c19ub2RlID0gLTE7Cj4gKwkJb2NmczJfY29udHJvbF90aGlzX25vZGUgPSBOVU1BX05PX05PREU7 Cj4gIAkJcnVubmluZ19wcm90by5wdl9tYWpvciA9IDA7Cj4gIAkJcnVubmluZ19wcm90by5wdl9t aW5vciA9IDA7Cj4gIAl9Cj4gQEAgLTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgaW50IG9jZnMyX2Nv bnRyb2xfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCXAg PSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgb2NmczJfY29udHJvbF9wcml2YXRlKSwgR0ZQX0tFUk5F TCk7Cj4gIAlpZiAoIXApCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gLQlwLT5vcF90aGlzX25vZGUg PSAtMTsKPiArCXAtPm9wX3RoaXNfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAltdXRleF9s b2NrKCZvY2ZzMl9jb250cm9sX2xvY2spOwo+ICAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcDsKPiBk aWZmIC0tZ2l0IGEvaW5pdC9pbml0X3Rhc2suYyBiL2luaXQvaW5pdF90YXNrLmMKPiBpbmRleCA1 YWViZTNiLi42NjQxODM2IDEwMDY0NAo+IC0tLSBhL2luaXQvaW5pdF90YXNrLmMKPiArKysgYi9p bml0L2luaXRfdGFzay5jCj4gQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg aW5pdF90YXNrCj4gIAkudnRpbWUuc3RhdGUJPSBWVElNRV9TWVMsCj4gICNlbmRpZgo+ICAjaWZk ZWYgQ09ORklHX05VTUFfQkFMQU5DSU5HCj4gLQkubnVtYV9wcmVmZXJyZWRfbmlkID0gLTEsCj4g KwkubnVtYV9wcmVmZXJyZWRfbmlkID0gTlVNQV9OT19OT0RFLAo+ICAJLm51bWFfZ3JvdXAJPSBO VUxMLAo+ICAJLm51bWFfZmF1bHRzCT0gTlVMTCwKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2tl cm5lbC9rdGhyZWFkLmMgYi9rZXJuZWwva3RocmVhZC5jCj4gaW5kZXggMDg3ZDE4ZC4uNzdmM2Q5 NCAxMDA2NDQKPiAtLS0gYS9rZXJuZWwva3RocmVhZC5jCj4gKysrIGIva2VybmVsL2t0aHJlYWQu Ywo+IEBAIC02NzUsNyArNjc1LDcgQEAgX19rdGhyZWFkX2NyZWF0ZV93b3JrZXIoaW50IGNwdSwg dW5zaWduZWQgaW50IGZsYWdzLAo+ICB7Cj4gIAlzdHJ1Y3Qga3RocmVhZF93b3JrZXIgKndvcmtl cjsKPiAgCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPiAtCWludCBub2RlID0gLTE7Cj4gKwlp bnQgbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAl3b3JrZXIgPSBremFsbG9jKHNpemVvZigq d29ya2VyKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIXdvcmtlcikKPiBkaWZmIC0tZ2l0IGEva2Vy bmVsL3NjaGVkL2ZhaXIuYyBiL2tlcm5lbC9zY2hlZC9mYWlyLmMKPiBpbmRleCBlZTI3MWJiLi5k ODMwZmE3IDEwMDY0NAo+IC0tLSBhL2tlcm5lbC9zY2hlZC9mYWlyLmMKPiArKysgYi9rZXJuZWwv c2NoZWQvZmFpci5jCj4gQEAgLTExNjEsNyArMTE2MSw3IEBAIHZvaWQgaW5pdF9udW1hX2JhbGFu Y2luZyh1bnNpZ25lZCBsb25nIGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCj4g IAo+ICAJLyogTmV3IGFkZHJlc3Mgc3BhY2UsIHJlc2V0IHRoZSBwcmVmZXJyZWQgbmlkICovCj4g IAlpZiAoIShjbG9uZV9mbGFncyAmIENMT05FX1ZNKSkgewo+IC0JCXAtPm51bWFfcHJlZmVycmVk X25pZCA9IC0xOwo+ICsJCXAtPm51bWFfcHJlZmVycmVkX25pZCA9IE5VTUFfTk9fTk9ERTsKPiAg CQlyZXR1cm47Cj4gIAl9Cj4gIAo+IEBAIC0xMTgxLDEzICsxMTgxLDEzIEBAIHZvaWQgaW5pdF9u dW1hX2JhbGFuY2luZyh1bnNpZ25lZCBsb25nIGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApCj4gIAo+ICBzdGF0aWMgdm9pZCBhY2NvdW50X251bWFfZW5xdWV1ZShzdHJ1Y3QgcnEg KnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCj4gIHsKPiAtCXJxLT5ucl9udW1hX3J1bm5pbmcg Kz0gKHAtPm51bWFfcHJlZmVycmVkX25pZCAhPSAtMSk7Cj4gKwlycS0+bnJfbnVtYV9ydW5uaW5n ICs9IChwLT5udW1hX3ByZWZlcnJlZF9uaWQgIT0gTlVNQV9OT19OT0RFKTsKPiAgCXJxLT5ucl9w cmVmZXJyZWRfcnVubmluZyArPSAocC0+bnVtYV9wcmVmZXJyZWRfbmlkID09IHRhc2tfbm9kZShw KSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGFjY291bnRfbnVtYV9kZXF1ZXVlKHN0cnVjdCBy cSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKPiAgewo+IC0JcnEtPm5yX251bWFfcnVubmlu ZyAtPSAocC0+bnVtYV9wcmVmZXJyZWRfbmlkICE9IC0xKTsKPiArCXJxLT5ucl9udW1hX3J1bm5p bmcgLT0gKHAtPm51bWFfcHJlZmVycmVkX25pZCAhPSBOVU1BX05PX05PREUpOwo+ICAJcnEtPm5y X3ByZWZlcnJlZF9ydW5uaW5nIC09IChwLT5udW1hX3ByZWZlcnJlZF9uaWQgPT0gdGFza19ub2Rl KHApKTsKPiAgfQo+ICAKPiBAQCAtMTQwMSw3ICsxNDAxLDcgQEAgYm9vbCBzaG91bGRfbnVtYV9t aWdyYXRlX21lbW9yeShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBwYWdlICogcGFnZSwK PiAgCSAqIHR3byBmdWxsIHBhc3NlcyBvZiB0aGUgIm11bHRpLXN0YWdlIG5vZGUgc2VsZWN0aW9u IiB0ZXN0IHRoYXQgaXMKPiAgCSAqIGV4ZWN1dGVkIGJlbG93Lgo+ICAJICovCj4gLQlpZiAoKHAt Pm51bWFfcHJlZmVycmVkX25pZCA9PSAtMSB8fCBwLT5udW1hX3NjYW5fc2VxIDw9IDQpICYmCj4g KwlpZiAoKHAtPm51bWFfcHJlZmVycmVkX25pZCA9PSBOVU1BX05PX05PREUgfHwgcC0+bnVtYV9z Y2FuX3NlcSA8PSA0KSAmJgo+ICAJICAgIChjcHVwaWRfcGlkX3Vuc2V0KGxhc3RfY3B1cGlkKSB8 fCBjcHVwaWRfbWF0Y2hfcGlkKHAsIGxhc3RfY3B1cGlkKSkpCj4gIAkJcmV0dXJuIHRydWU7Cj4g IAo+IEBAIC0xODQ5LDcgKzE4NDksNyBAQCBzdGF0aWMgdm9pZCBudW1hX21pZ3JhdGVfcHJlZmVy cmVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKPiAgCXVuc2lnbmVkIGxvbmcgaW50ZXJ2YWwgPSBI WjsKPiAgCj4gIAkvKiBUaGlzIHRhc2sgaGFzIG5vIE5VTUEgZmF1bHQgc3RhdGlzdGljcyB5ZXQg Ki8KPiAtCWlmICh1bmxpa2VseShwLT5udW1hX3ByZWZlcnJlZF9uaWQgPT0gLTEgfHwgIXAtPm51 bWFfZmF1bHRzKSkKPiArCWlmICh1bmxpa2VseShwLT5udW1hX3ByZWZlcnJlZF9uaWQgPT0gTlVN QV9OT19OT0RFIHx8ICFwLT5udW1hX2ZhdWx0cykpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIFBl cmlvZGljYWxseSByZXRyeSBtaWdyYXRpbmcgdGhlIHRhc2sgdG8gdGhlIHByZWZlcnJlZCBub2Rl ICovCj4gQEAgLTIwOTYsNyArMjA5Niw3IEBAIHN0YXRpYyBpbnQgcHJlZmVycmVkX2dyb3VwX25p ZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuaWQpCj4gIAo+ICBzdGF0aWMgdm9pZCB0YXNr X251bWFfcGxhY2VtZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKPiAgewo+IC0JaW50IHNlcSwg bmlkLCBtYXhfbmlkID0gLTE7Cj4gKwlpbnQgc2VxLCBuaWQsIG1heF9uaWQgPSBOVU1BX05PX05P REU7Cj4gIAl1bnNpZ25lZCBsb25nIG1heF9mYXVsdHMgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBm YXVsdF90eXBlc1syXSA9IHsgMCwgMCB9Owo+ICAJdW5zaWduZWQgbG9uZyB0b3RhbF9mYXVsdHM7 Cj4gQEAgLTI2MzksNyArMjYzOSw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9zY2FuX3BlcmlvZChz dHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBuZXdfY3B1KQo+ICAJCSAqIHRoZSBwcmVmZXJyZWQg bm9kZS4KPiAgCQkgKi8KPiAgCQlpZiAoZHN0X25pZCA9PSBwLT5udW1hX3ByZWZlcnJlZF9uaWQg fHwKPiAtCQkgICAgKHAtPm51bWFfcHJlZmVycmVkX25pZCAhPSAtMSAmJiBzcmNfbmlkICE9IHAt Pm51bWFfcHJlZmVycmVkX25pZCkpCj4gKwkJICAgIChwLT5udW1hX3ByZWZlcnJlZF9uaWQgIT0g TlVNQV9OT19OT0RFICYmCj4gKwkJCXNyY19uaWQgIT0gcC0+bnVtYV9wcmVmZXJyZWRfbmlkKSkK PiAgCQkJcmV0dXJuOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xp Yi9jcHVtYXNrLmMKPiBpbmRleCA4ZDY2NmFiLi5hMDg5YzNmIDEwMDY0NAo+IC0tLSBhL2xpYi9j cHVtYXNrLmMKPiArKysgYi9saWIvY3B1bWFzay5jCj4gQEAgLTIwNiw3ICsyMDYsNyBAQCB1bnNp Z25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKQo+ ICAJLyogV3JhcDogd2UgYWx3YXlzIHdhbnQgYSBjcHUuICovCj4gIAlpICU9IG51bV9vbmxpbmVf Y3B1cygpOwo+ICAKPiAtCWlmIChub2RlID09IC0xKSB7Cj4gKwlpZiAobm9kZSA9PSBOVU1BX05P X05PREUpIHsKPiAgCQlmb3JfZWFjaF9jcHUoY3B1LCBjcHVfb25saW5lX21hc2spCj4gIAkJCWlm IChpLS0gPT0gMCkKPiAgCQkJCXJldHVybiBjcHU7Cj4gZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVt b3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCj4gaW5kZXggNTU0NzhhYi4uNWNjZjg5ZSAxMDA2NDQK PiAtLS0gYS9tbS9odWdlX21lbW9yeS5jCj4gKysrIGIvbW0vaHVnZV9tZW1vcnkuYwo+IEBAIC0x NDgwLDcgKzE0ODAsNyBAQCB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX251bWFfcGFnZShzdHJ1Y3Qg dm1fZmF1bHQgKnZtZiwgcG1kX3QgcG1kKQo+ICAJc3RydWN0IGFub25fdm1hICphbm9uX3ZtYSA9 IE5VTEw7Cj4gIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAgCXVuc2lnbmVkIGxvbmcgaGFkZHIgPSB2 bWYtPmFkZHJlc3MgJiBIUEFHRV9QTURfTUFTSzsKPiAtCWludCBwYWdlX25pZCA9IC0xLCB0aGlz X25pZCA9IG51bWFfbm9kZV9pZCgpOwo+ICsJaW50IHBhZ2VfbmlkID0gTlVNQV9OT19OT0RFLCB0 aGlzX25pZCA9IG51bWFfbm9kZV9pZCgpOwo+ICAJaW50IHRhcmdldF9uaWQsIGxhc3RfY3B1cGlk ID0gLTE7Cj4gIAlib29sIHBhZ2VfbG9ja2VkOwo+ICAJYm9vbCBtaWdyYXRlZCA9IGZhbHNlOwo+ IEBAIC0xNTI2LDcgKzE1MjYsNyBAQCB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX251bWFfcGFnZShz dHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcG1kX3QgcG1kKQo+ICAJICovCj4gIAlwYWdlX2xvY2tlZCA9 IHRyeWxvY2tfcGFnZShwYWdlKTsKPiAgCXRhcmdldF9uaWQgPSBtcG9sX21pc3BsYWNlZChwYWdl LCB2bWEsIGhhZGRyKTsKPiAtCWlmICh0YXJnZXRfbmlkID09IC0xKSB7Cj4gKwlpZiAodGFyZ2V0 X25pZCA9PSBOVU1BX05PX05PREUpIHsKPiAgCQkvKiBJZiB0aGUgcGFnZSB3YXMgbG9ja2VkLCB0 aGVyZSBhcmUgbm8gcGFyYWxsZWwgbWlncmF0aW9ucyAqLwo+ICAJCWlmIChwYWdlX2xvY2tlZCkK PiAgCQkJZ290byBjbGVhcl9wbWRudW1hOwo+IEBAIC0xNTM0LDcgKzE1MzQsNyBAQCB2bV9mYXVs dF90IGRvX2h1Z2VfcG1kX251bWFfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcG1kX3QgcG1k KQo+ICAKPiAgCS8qIE1pZ3JhdGlvbiBjb3VsZCBoYXZlIHN0YXJ0ZWQgc2luY2UgdGhlIHBtZF90 cmFuc19taWdyYXRpbmcgY2hlY2sgKi8KPiAgCWlmICghcGFnZV9sb2NrZWQpIHsKPiAtCQlwYWdl X25pZCA9IC0xOwo+ICsJCXBhZ2VfbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJCWlmICghZ2V0X3Bh Z2VfdW5sZXNzX3plcm8ocGFnZSkpCj4gIAkJCWdvdG8gb3V0X3VubG9jazsKPiAgCQlzcGluX3Vu bG9jayh2bWYtPnB0bCk7Cj4gQEAgLTE1NTYsMTQgKzE1NTYsMTQgQEAgdm1fZmF1bHRfdCBkb19o dWdlX3BtZF9udW1hX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBtZF90IHBtZCkKPiAgCWlm ICh1bmxpa2VseSghcG1kX3NhbWUocG1kLCAqdm1mLT5wbWQpKSkgewo+ICAJCXVubG9ja19wYWdl KHBhZ2UpOwo+ICAJCXB1dF9wYWdlKHBhZ2UpOwo+IC0JCXBhZ2VfbmlkID0gLTE7Cj4gKwkJcGFn ZV9uaWQgPSBOVU1BX05PX05PREU7Cj4gIAkJZ290byBvdXRfdW5sb2NrOwo+ICAJfQo+ICAKPiAg CS8qIEJhaWwgaWYgd2UgZmFpbCB0byBwcm90ZWN0IGFnYWluc3QgVEhQIHNwbGl0cyBmb3IgYW55 IHJlYXNvbiAqLwo+ICAJaWYgKHVubGlrZWx5KCFhbm9uX3ZtYSkpIHsKPiAgCQlwdXRfcGFnZShw YWdlKTsKPiAtCQlwYWdlX25pZCA9IC0xOwo+ICsJCXBhZ2VfbmlkID0gTlVNQV9OT19OT0RFOwo+ ICAJCWdvdG8gY2xlYXJfcG1kbnVtYTsKPiAgCX0KPiAgCj4gQEAgLTE2MjUsNyArMTYyNSw3IEBA IHZtX2ZhdWx0X3QgZG9faHVnZV9wbWRfbnVtYV9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBw bWRfdCBwbWQpCj4gIAlpZiAoYW5vbl92bWEpCj4gIAkJcGFnZV91bmxvY2tfYW5vbl92bWFfcmVh ZChhbm9uX3ZtYSk7Cj4gIAo+IC0JaWYgKHBhZ2VfbmlkICE9IC0xKQo+ICsJaWYgKHBhZ2Vfbmlk ICE9IE5VTUFfTk9fTk9ERSkKPiAgCQl0YXNrX251bWFfZmF1bHQobGFzdF9jcHVwaWQsIHBhZ2Vf bmlkLCBIUEFHRV9QTURfTlIsCj4gIAkJCQlmbGFncyk7Cj4gIAo+IGRpZmYgLS1naXQgYS9tbS9o dWdldGxiLmMgYi9tbS9odWdldGxiLmMKPiBpbmRleCBjMDA3ZmI1Li5iNzY5ZGI3IDEwMDY0NAo+ IC0tLSBhL21tL2h1Z2V0bGIuYwo+ICsrKyBiL21tL2h1Z2V0bGIuYwo+IEBAIC04ODcsNyArODg3 LDcgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpkZXF1ZXVlX2h1Z2VfcGFnZV9ub2RlbWFzayhzdHJ1 Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzaywKPiAgCXN0cnVjdCB6b25lbGlzdCAqem9uZWxp c3Q7Cj4gIAlzdHJ1Y3Qgem9uZSAqem9uZTsKPiAgCXN0cnVjdCB6b25lcmVmICp6Owo+IC0JaW50 IG5vZGUgPSAtMTsKPiArCWludCBub2RlID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCXpvbmVsaXN0 ID0gbm9kZV96b25lbGlzdChuaWQsIGdmcF9tYXNrKTsKPiAgCj4gZGlmZiAtLWdpdCBhL21tL2tz bS5jIGIvbW0va3NtLmMKPiBpbmRleCA1YjA4OTRiLi5kNWY4ODM0IDEwMDY0NAo+IC0tLSBhL21t L2tzbS5jCj4gKysrIGIvbW0va3NtLmMKPiBAQCAtNTk3LDcgKzU5Nyw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc3RhYmxlX25vZGUgKmFsbG9jX3N0YWJsZV9ub2RlX2NoYWluKHN0cnVjdCBzdGFibGVfbm9k ZSAqZHVwLAo+ICAJCWNoYWluLT5jaGFpbl9wcnVuZV90aW1lID0gamlmZmllczsKPiAgCQljaGFp bi0+cm1hcF9obGlzdF9sZW4gPSBTVEFCTEVfTk9ERV9DSEFJTjsKPiAgI2lmIGRlZmluZWQgKENP TkZJR19ERUJVR19WTSkgJiYgZGVmaW5lZChDT05GSUdfTlVNQSkKPiAtCQljaGFpbi0+bmlkID0g LTE7IC8qIGRlYnVnICovCj4gKwkJY2hhaW4tPm5pZCA9IE5VTUFfTk9fTk9ERTsgLyogZGVidWcg Ki8KPiAgI2VuZGlmCj4gIAkJa3NtX3N0YWJsZV9ub2RlX2NoYWlucysrOwo+ICAKPiBkaWZmIC0t Z2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuYwo+IGluZGV4IDRhZDJkMjkuLmMwZTAzNDgg MTAwNjQ0Cj4gLS0tIGEvbW0vbWVtb3J5LmMKPiArKysgYi9tbS9tZW1vcnkuYwo+IEBAIC0zNTY0 LDcgKzM1NjQsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkb19udW1hX3BhZ2Uoc3RydWN0IHZtX2Zh dWx0ICp2bWYpCj4gIHsKPiAgCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7 Cj4gIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7Cj4gLQlpbnQgcGFnZV9uaWQgPSAtMTsKPiAr CWludCBwYWdlX25pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCWludCBsYXN0X2NwdXBpZDsKPiAgCWlu dCB0YXJnZXRfbmlkOwo+ICAJYm9vbCBtaWdyYXRlZCA9IGZhbHNlOwo+IEBAIC0zNjMxLDcgKzM2 MzEsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkb19udW1hX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2 bWYpCj4gIAl0YXJnZXRfbmlkID0gbnVtYV9taWdyYXRlX3ByZXAocGFnZSwgdm1hLCB2bWYtPmFk ZHJlc3MsIHBhZ2VfbmlkLAo+ICAJCQkmZmxhZ3MpOwo+ICAJcHRlX3VubWFwX3VubG9jayh2bWYt PnB0ZSwgdm1mLT5wdGwpOwo+IC0JaWYgKHRhcmdldF9uaWQgPT0gLTEpIHsKPiArCWlmICh0YXJn ZXRfbmlkID09IE5VTUFfTk9fTk9ERSkgewo+ICAJCXB1dF9wYWdlKHBhZ2UpOwo+ICAJCWdvdG8g b3V0Owo+ICAJfQo+IEBAIC0zNjQ1LDcgKzM2NDUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkb19u dW1hX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAkJZmxhZ3MgfD0gVE5GX01JR1JBVEVf RkFJTDsKPiAgCj4gIG91dDoKPiAtCWlmIChwYWdlX25pZCAhPSAtMSkKPiArCWlmIChwYWdlX25p ZCAhPSBOVU1BX05PX05PREUpCj4gIAkJdGFza19udW1hX2ZhdWx0KGxhc3RfY3B1cGlkLCBwYWdl X25pZCwgMSwgZmxhZ3MpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvbW0vbWVt b3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmMKPiBpbmRleCAyYjJiM2NjLi43MGUw MmY4IDEwMDY0NAo+IC0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmMKPiArKysgYi9tbS9tZW1vcnlf aG90cGx1Zy5jCj4gQEAgLTY4OCw5ICs2ODgsOSBAQCBzdGF0aWMgdm9pZCBub2RlX3N0YXRlc19j aGVja19jaGFuZ2VzX29ubGluZSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAo+ICB7Cj4gIAlpbnQg bmlkID0gem9uZV90b19uaWQoem9uZSk7Cj4gIAo+IC0JYXJnLT5zdGF0dXNfY2hhbmdlX25pZCA9 IC0xOwo+IC0JYXJnLT5zdGF0dXNfY2hhbmdlX25pZF9ub3JtYWwgPSAtMTsKPiAtCWFyZy0+c3Rh dHVzX2NoYW5nZV9uaWRfaGlnaCA9IC0xOwo+ICsJYXJnLT5zdGF0dXNfY2hhbmdlX25pZCA9IE5V TUFfTk9fTk9ERTsKPiArCWFyZy0+c3RhdHVzX2NoYW5nZV9uaWRfbm9ybWFsID0gTlVNQV9OT19O T0RFOwo+ICsJYXJnLT5zdGF0dXNfY2hhbmdlX25pZF9oaWdoID0gTlVNQV9OT19OT0RFOwo+ICAK PiAgCWlmICghbm9kZV9zdGF0ZShuaWQsIE5fTUVNT1JZKSkKPiAgCQlhcmctPnN0YXR1c19jaGFu Z2VfbmlkID0gbmlkOwo+IEBAIC0xNDg0LDkgKzE0ODQsOSBAQCBzdGF0aWMgdm9pZCBub2RlX3N0 YXRlc19jaGVja19jaGFuZ2VzX29mZmxpbmUodW5zaWduZWQgbG9uZyBucl9wYWdlcywKPiAgCXVu c2lnbmVkIGxvbmcgcHJlc2VudF9wYWdlcyA9IDA7Cj4gIAllbnVtIHpvbmVfdHlwZSB6dDsKPiAg Cj4gLQlhcmctPnN0YXR1c19jaGFuZ2VfbmlkID0gLTE7Cj4gLQlhcmctPnN0YXR1c19jaGFuZ2Vf bmlkX25vcm1hbCA9IC0xOwo+IC0JYXJnLT5zdGF0dXNfY2hhbmdlX25pZF9oaWdoID0gLTE7Cj4g KwlhcmctPnN0YXR1c19jaGFuZ2VfbmlkID0gTlVNQV9OT19OT0RFOwo+ICsJYXJnLT5zdGF0dXNf Y2hhbmdlX25pZF9ub3JtYWwgPSBOVU1BX05PX05PREU7Cj4gKwlhcmctPnN0YXR1c19jaGFuZ2Vf bmlkX2hpZ2ggPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJLyoKPiAgCSAqIENoZWNrIHdoZXRoZXIg bm9kZV9zdGF0ZXNbTl9OT1JNQUxfTUVNT1JZXSB3aWxsIGJlIGNoYW5nZWQuCj4gZGlmZiAtLWdp dCBhL21tL21lbXBvbGljeS5jIGIvbW0vbWVtcG9saWN5LmMKPiBpbmRleCA1ODM3YTA2Li5lNGY4 MjQ4IDEwMDY0NAo+IC0tLSBhL21tL21lbXBvbGljeS5jCj4gKysrIGIvbW0vbWVtcG9saWN5LmMK PiBAQCAtMjI3OCw3ICsyMjc4LDcgQEAgaW50IG1wb2xfbWlzcGxhY2VkKHN0cnVjdCBwYWdlICpw YWdlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZwo+ICAJdW5zaWdu ZWQgbG9uZyBwZ29mZjsKPiAgCWludCB0aGlzY3B1ID0gcmF3X3NtcF9wcm9jZXNzb3JfaWQoKTsK PiAgCWludCB0aGlzbmlkID0gY3B1X3RvX25vZGUodGhpc2NwdSk7Cj4gLQlpbnQgcG9sbmlkID0g LTE7Cj4gKwlpbnQgcG9sbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJaW50IHJldCA9IC0xOwo+ICAK PiAgCXBvbCA9IGdldF92bWFfcG9saWN5KHZtYSwgYWRkcik7Cj4gZGlmZiAtLWdpdCBhL21tL3Bh Z2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwo+IGluZGV4IGE5MTliYTUuLjlkMzhkOWMgMTAw NjQ0Cj4gLS0tIGEvbW0vcGFnZV9hbGxvYy5jCj4gKysrIGIvbW0vcGFnZV9hbGxvYy5jCj4gQEAg LTU4NDYsNyArNTg0Niw3IEBAIGludCBfX21lbWluaXQgX19lYXJseV9wZm5fdG9fbmlkKHVuc2ln bmVkIGxvbmcgcGZuLAo+ICAJCXJldHVybiBzdGF0ZS0+bGFzdF9uaWQ7Cj4gIAo+ICAJbmlkID0g bWVtYmxvY2tfc2VhcmNoX3Bmbl9uaWQocGZuLCAmc3RhcnRfcGZuLCAmZW5kX3Bmbik7Cj4gLQlp ZiAobmlkICE9IC0xKSB7Cj4gKwlpZiAobmlkICE9IE5VTUFfTk9fTk9ERSkgewo+ICAJCXN0YXRl LT5sYXN0X3N0YXJ0ID0gc3RhcnRfcGZuOwo+ICAJCXN0YXRlLT5sYXN0X2VuZCA9IGVuZF9wZm47 Cj4gIAkJc3RhdGUtPmxhc3RfbmlkID0gbmlkOwo+IEBAIC02NjA3LDcgKzY2MDcsNyBAQCB1bnNp Z25lZCBsb25nIF9faW5pdCBub2RlX21hcF9wZm5fYWxpZ25tZW50KHZvaWQpCj4gIHsKPiAgCXVu c2lnbmVkIGxvbmcgYWNjbF9tYXNrID0gMCwgbGFzdF9lbmQgPSAwOwo+ICAJdW5zaWduZWQgbG9u ZyBzdGFydCwgZW5kLCBtYXNrOwo+IC0JaW50IGxhc3RfbmlkID0gLTE7Cj4gKwlpbnQgbGFzdF9u aWQgPSBOVU1BX05PX05PREU7Cj4gIAlpbnQgaSwgbmlkOwo+ICAKPiAgCWZvcl9lYWNoX21lbV9w Zm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCAmc3RhcnQsICZlbmQsICZuaWQpIHsKPiBkaWZmIC0t Z2l0IGEvbW0vcGFnZV9leHQuYyBiL21tL3BhZ2VfZXh0LmMKPiBpbmRleCBhZTQ0ZjdhLi5kZmIw MjA2IDEwMDY0NAo+IC0tLSBhL21tL3BhZ2VfZXh0LmMKPiArKysgYi9tbS9wYWdlX2V4dC5jCj4g QEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgaW50IF9fbWVtaW5pdCBvbmxpbmVfcGFnZV9leHQo dW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCj4gIAlzdGFydCA9IFNFQ1RJT05fQUxJR05fRE9XTihz dGFydF9wZm4pOwo+ICAJZW5kID0gU0VDVElPTl9BTElHTl9VUChzdGFydF9wZm4gKyBucl9wYWdl cyk7Cj4gIAo+IC0JaWYgKG5pZCA9PSAtMSkgewo+ICsJaWYgKG5pZCA9PSBOVU1BX05PX05PREUp IHsKPiAgCQkvKgo+ICAJCSAqIEluIHRoaXMgY2FzZSwgIm5pZCIgYWxyZWFkeSBleGlzdHMgYW5k IGNvbnRhaW5zIHZhbGlkIG1lbW9yeS4KPiAgCQkgKiAic3RhcnRfcGZuIiBwYXNzZWQgdG8gdXMg aXMgYSBwZm4gd2hpY2ggaXMgYW4gYXJnIGZvcgo+IGRpZmYgLS1naXQgYS9uZXQvY29yZS9wa3Rn ZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jCj4gaW5kZXggNmFjOTE5OC4uYWYzYTc0NiAxMDA2NDQK PiAtLS0gYS9uZXQvY29yZS9wa3RnZW4uYwo+ICsrKyBiL25ldC9jb3JlL3BrdGdlbi5jCj4gQEAg LTM2MjUsNyArMzYyNSw3IEBAIHN0YXRpYyBpbnQgcGt0Z2VuX2FkZF9kZXZpY2Uoc3RydWN0IHBr dGdlbl90aHJlYWQgKnQsIGNvbnN0IGNoYXIgKmlmbmFtZSkKPiAgCXBrdF9kZXYtPnN2bGFuX2Nm aSA9IDA7Cj4gIAlwa3RfZGV2LT5zdmxhbl9pZCA9IDB4ZmZmZjsKPiAgCXBrdF9kZXYtPmJ1cnN0 ID0gMTsKPiAtCXBrdF9kZXYtPm5vZGUgPSAtMTsKPiArCXBrdF9kZXYtPm5vZGUgPSBOVU1BX05P X05PREU7Cj4gIAo+ICAJZXJyID0gcGt0Z2VuX3NldHVwX2Rldih0LT5uZXQsIHBrdF9kZXYsIGlm bmFtZSk7Cj4gIAlpZiAoZXJyKQo+IGRpZmYgLS1naXQgYS9uZXQvcXJ0ci9xcnRyLmMgYi9uZXQv cXJ0ci9xcnRyLmMKPiBpbmRleCA4NmUxZTM3Li4wYzU2YWUyIDEwMDY0NAo+IC0tLSBhL25ldC9x cnRyL3FydHIuYwo+ICsrKyBiL25ldC9xcnRyL3FydHIuYwo+IEBAIC0xMDEsNyArMTAxLDcgQEAg c3RhdGljIGlubGluZSBzdHJ1Y3QgcXJ0cl9zb2NrICpxcnRyX3NrKHN0cnVjdCBzb2NrICpzaykK PiAgCXJldHVybiBjb250YWluZXJfb2Yoc2ssIHN0cnVjdCBxcnRyX3NvY2ssIHNrKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHVuc2lnbmVkIGludCBxcnRyX2xvY2FsX25pZCA9IC0xOwo+ICtzdGF0aWMg dW5zaWduZWQgaW50IHFydHJfbG9jYWxfbmlkID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgLyogZm9y IG5vZGUgaWRzICovCj4gIHN0YXRpYyBSQURJWF9UUkVFKHFydHJfbm9kZXMsIEdGUF9LRVJORUwp Owo+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2JlbmNoL251bWEuYyBiL3Rvb2xzL3BlcmYvYmVu Y2gvbnVtYS5jCj4gaW5kZXggNDQxOTU1MS4uZTBhZDVmMSAxMDA2NDQKPiAtLS0gYS90b29scy9w ZXJmL2JlbmNoL251bWEuYwo+ICsrKyBiL3Rvb2xzL3BlcmYvYmVuY2gvbnVtYS5jCj4gQEAgLTI5 OCw3ICsyOTgsNyBAQCBzdGF0aWMgY3B1X3NldF90IGJpbmRfdG9fbm9kZShpbnQgdGFyZ2V0X25v ZGUpCj4gIAo+ICAJQ1BVX1pFUk8oJm1hc2spOwo+ICAKPiAtCWlmICh0YXJnZXRfbm9kZSA9PSAt MSkgewo+ICsJaWYgKHRhcmdldF9ub2RlID09IE5VTUFfTk9fTk9ERSkgewo+ICAJCWZvciAoY3B1 ID0gMDsgY3B1IDwgZy0+cC5ucl9jcHVzOyBjcHUrKykKPiAgCQkJQ1BVX1NFVChjcHUsICZtYXNr KTsKPiAgCX0gZWxzZSB7Cj4gQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCBiaW5kX3Rv X21lbW5vZGUoaW50IG5vZGUpCj4gIAl1bnNpZ25lZCBsb25nIG5vZGVtYXNrOwo+ICAJaW50IHJl dDsKPiAgCj4gLQlpZiAobm9kZSA9PSAtMSkKPiArCWlmIChub2RlID09IE5VTUFfTk9fTk9ERSkK PiAgCQlyZXR1cm47Cj4gIAo+ICAJQlVHX09OKGctPnAubnJfbm9kZXMgPiAoaW50KXNpemVvZihu b2RlbWFzaykqOCk7Cj4gQEAgLTEzNjMsNyArMTM2Myw3IEBAIHN0YXRpYyB2b2lkIGluaXRfdGhy ZWFkX2RhdGEodm9pZCkKPiAgCQlpbnQgY3B1Owo+ICAKPiAgCQkvKiBBbGxvdyBhbGwgbm9kZXMg YnkgZGVmYXVsdDogKi8KPiAtCQl0ZC0+YmluZF9ub2RlID0gLTE7Cj4gKwkJdGQtPmJpbmRfbm9k ZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAkJLyogQWxsb3cgYWxsIENQVXMgYnkgZGVmYXVsdDog Ki8KPiAgCQlDUFVfWkVSTygmdGQtPmJpbmRfY3B1bWFzayk7Cj4gCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK