From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC] mm: Replace all open encodings for NUMA_NO_NODE From: Joseph Qi Message-Id: <1e9393c5-ff43-8ec7-dd6c-a662f09ef7c1@gmail.com> Date: Mon, 12 Nov 2018 11:57:35 +0800 To: Anshuman Khandual , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: ocfs2-devel@oss.oracle.com, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-media@vger.kernel.org, iommu@lists.linux-foundation.org, linux-rdma@vger.kernel.org, dmaengine@vger.kernel.org, linux-block@vger.kernel.org, sparclinux@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-ia64@vger.kernel.org, linux-alpha@vger.kernel.org List-ID: Rm9yIG9jZnMyIHBhcnQsIG5vZGUgbWVhbnMgaG9zdCBpbiB0aGUgY2x1c3Rlciwgbm90IE5VTUEg bm9kZS4KClRoYW5rcywKSm9zZXBoCgpPbiAxOC8xMS8xMiAxMDo0MSwgQW5zaHVtYW4gS2hhbmR1 YWwgd3JvdGU6Cj4gQXQgcHJlc2VudCB0aGVyZSBhcmUgbXVsdGlwbGUgcGxhY2VzIHdoZXJlIGlu dmFsaWQgbm9kZSBudW1iZXIgaXMgZW5jb2RlZAo+IGFzIC0xLiBFdmVuIHRob3VnaCBpbXBsaWNp dGx5IHVuZGVyc3Rvb2QgaXQgaXMgYWx3YXlzIGJldHRlciB0byBoYXZlIG1hY3Jvcwo+IGluIHRo ZXJlLiBSZXBsYWNlIHRoZXNlIG9wZW4gZW5jb2RpbmdzIGZvciBhbiBpbnZhbGlkIG5vZGUgbnVt YmVyIHdpdGggdGhlCj4gZ2xvYmFsIG1hY3JvIE5VTUFfTk9fTk9ERS4gVGhpcyBoZWxwcyByZW1v dmUgTlVNQSByZWxhdGVkIGFzc3VtcHRpb25zIGxpa2UKPiAnaW52YWxpZCBub2RlJyBmcm9tIHZh cmlvdXMgcGxhY2VzIHJlZGlyZWN0aW5nIHRoZW0gdG8gYSBjb21tb24gZGVmaW5pdGlvbi4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBBbnNodW1hbiBLaGFuZHVhbCA8YW5zaHVtYW4ua2hhbmR1YWxAYXJt LmNvbT4KPiAtLS0KPiBCdWlsZCB0ZXN0ZWQgdGhpcyB3aXRoIG11bHRpcGxlIGNyb3NzIGNvbXBp bGVyIG9wdGlvbnMgbGlrZSBhbHBoYSwgc3BhcmMsCj4gYXJtNjQsIHg4NiwgcG93ZXJwYzY0bGUg ZXRjIHdpdGggdGhlaXIgZGVmYXVsdCBjb25maWcgd2hpY2ggbWlnaHQgbm90IGhhdmUKPiBjb21w aWxlZCB0ZXN0ZWQgYWxsIGRyaXZlciByZWxhdGVkIGNoYW5nZXMuIEkgd2lsbCBhcHByZWNpYXRl IGZvbGtzIGdpdmluZwo+IHRoaXMgYSB0ZXN0IGluIHRoZWlyIHJlc3BlY3RpdmUgYnVpbGQgZW52 aXJvbm1lbnQuCj4gCj4gQWxsIHRoZXNlIHBsYWNlcyBmb3IgcmVwbGFjZW1lbnQgd2VyZSBmb3Vu ZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgZ3JlcAo+IHBhdHRlcm5zIG9uIHRoZSBlbnRpcmUg a2VybmVsIGNvZGUuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGlzIG1pZ2h0IGhhdmUKPiBtaXNz ZWQgc29tZSBpbnN0YW5jZXMuIFRoaXMgbWlnaHQgYWxzbyBoYXZlIHJlcGxhY2VkIHNvbWUgZmFs c2UgcG9zaXRpdmVzLgo+IEkgd2lsbCBhcHByZWNpYXRlIHN1Z2dlc3Rpb25zLCBpbnB1dHMgYW5k IHJldmlldy4KPiAKPiAxLiBnaXQgZ3JlcCAibmlkID09IC0xIgo+IDIuIGdpdCBncmVwICJub2Rl ID09IC0xIgo+IDMuIGdpdCBncmVwICJuaWQgPSAtMSIKPiA0LiBnaXQgZ3JlcCAibm9kZSA9IC0x Igo+IAo+ICBhcmNoL2FscGhhL2luY2x1ZGUvYXNtL3RvcG9sb2d5LmggICAgICAgICAgICAgfCAg MiArLQo+ICBhcmNoL2lhNjQva2VybmVsL251bWEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQo+ICBhcmNoL2lhNjQvbW0vZGlzY29udGlnLmMgICAgICAgICAgICAgICAgICAgICAgfCAg NiArKystLS0KPiAgYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19jb21tb24uYyAgICAgICAgICAgICAg IHwgIDIgKy0KPiAgYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaCAgICAgICAg IHwgIDIgKy0KPiAgYXJjaC9wb3dlcnBjL2tlcm5lbC9wYWNhLmMgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KPiAgYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMgICAgICAgICAgICAg IHwgIDIgKy0KPiAgYXJjaC9wb3dlcnBjL21tL251bWEuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgMTQgKysrKysrKy0tLS0tLS0KPiAgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L21l bXRyYWNlLmMgICAgIHwgIDQgKystLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9hdXhpb18zMi5jICAg ICAgICAgICAgICAgICAgfCAgMiArLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9wY2lfZmlyZS5jICAg ICAgICAgICAgICAgICAgfCAgMiArLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMg ICAgICAgICAgICAgICAgfCAgMiArLQo+ICBhcmNoL3NwYXJjL2tlcm5lbC9wY2ljLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgNiArKystLS0KPiAgYXJjaC9zcGFyYy9rZXJuZWwvcHN5Y2hvX2Nv bW1vbi5jICAgICAgICAgICAgIHwgIDIgKy0KPiAgYXJjaC9zcGFyYy9rZXJuZWwvc2J1cy5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgYXJjaC9zcGFyYy9tbS9pbml0XzY0LmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIGFyY2gvc3BhcmMvcHJvbS9pbml0XzMy LmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGFyY2gvc3BhcmMvcHJvbS9pbml0XzY0 LmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgYXJjaC9zcGFyYy9wcm9tL3RyZWVf MzIuYyAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCj4gIGFyY2gvc3BhcmMv cHJvbS90cmVlXzY0LmMgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0t LQo+ICBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wY2kuaCAgICAgICAgICAgICAgICAgICAgfCAgMiAr LQo+ICBhcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfdXZfeC5jICAgICAgICAgICAgfCAgNiAr KystLS0KPiAgYXJjaC94ODYva2VybmVsL3NtcGJvb3QuYyAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KPiAgYXJjaC94ODYvcGxhdGZvcm0vb2xwYy9vbHBjX2R0LmMgICAgICAgICAgICAgIHwg MTYgKysrKysrKystLS0tLS0tLQo+ICBkcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMg ICAgICAgICAgICAgfCAgNCArKy0tCj4gIGRyaXZlcnMvZG1hL2RtYWVuZ2luZS5jICAgICAgICAg ICAgICAgICAgICAgICB8ICAzICsrLQo+ICBkcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9hZmZp bml0eS5jICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pbml0 LmMgICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2lvbW11L2RtYXIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIGRyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYyAg ICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvbWVkaWEvcGNpL2l2dHYvaXZ0dmZi LmMgICAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdml2aWQv dml2aWQtb3NkLmMgICAgICB8ICAyICstCj4gIGRyaXZlcnMvbWlzYy9zZ2kteHAveHBjX3V2LmMg ICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4 Z2JlL2l4Z2JlX21haW4uYyB8ICA0ICsrLS0KPiAgZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIv bW1wZmIuYyAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi9weGExNjhm Yi5jICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy92aWRlby9mYmRldi93MTAwZmIu YyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZnMvb2NmczIvZGxtL2RsbWNvbW1vbi5oICAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZnMvb2NmczIvZGxtL2RsbWRvbWFpbi5jICAg ICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQo+ICBmcy9vY2ZzMi9kbG0vZGxtbWFz dGVyLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBmcy9vY2ZzMi9kbG0vZGxtcmVj b3ZlcnkuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBmcy9vY2ZzMi9zdGFja191c2Vy LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KPiAgaW5pdC9pbml0X3Rhc2su YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAga2VybmVsL2t0aHJlYWQu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAga2VybmVsL3NjaGVkL2Zh aXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKystLS0tLS0tCj4gIGxp Yi9jcHVtYXNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIG1t L2h1Z2VfbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0t LS0tLQo+ICBtbS9odWdldGxiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQo+ICBtbS9rc20uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQo+ICBtbS9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NiArKystLS0KPiAgbW0vbWVtb3J5X2hvdHBsdWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTIgKysrKysrLS0tLS0tCj4gIG1tL21lbXBvbGljeS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCj4gIG1tL3BhZ2VfYWxsb2MuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICsrLS0KPiAgbW0vcGFnZV9leHQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgbmV0L2NvcmUvcGt0Z2VuLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgbmV0L3FydHIvcXJ0ci5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgdG9vbHMvcGVyZi9iZW5jaC9udW1hLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIDU3IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRp b25zKCspLCAxMjMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5j bHVkZS9hc20vdG9wb2xvZ3kuaCBiL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaAo+ IGluZGV4IGU2ZTEzYTguLmY2ZGM4OWMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRl L2FzbS90b3BvbG9neS5oCj4gKysrIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS90b3BvbG9neS5o Cj4gQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVtYXNr X29mX25vZGUoaW50IG5vZGUpCj4gIHsKPiAgCWludCBjcHU7Cj4gIAo+IC0JaWYgKG5vZGUgPT0g LTEpCj4gKwlpZiAobm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIGNwdV9hbGxfbWFz azsKPiAgCj4gIAljcHVtYXNrX2NsZWFyKCZub2RlX3RvX2NwdW1hc2tfbWFwW25vZGVdKTsKPiBk aWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9udW1hLmMgYi9hcmNoL2lhNjQva2VybmVsL251 bWEuYwo+IGluZGV4IDkyYzM3NjIuLjEzMTVkYTYgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9pYTY0L2tl cm5lbC9udW1hLmMKPiArKysgYi9hcmNoL2lhNjQva2VybmVsL251bWEuYwo+IEBAIC03NCw3ICs3 NCw3IEBAIHZvaWQgX19pbml0IGJ1aWxkX2NwdV90b19ub2RlX21hcCh2b2lkKQo+ICAJCWNwdW1h c2tfY2xlYXIoJm5vZGVfdG9fY3B1X21hc2tbbm9kZV0pOwo+ICAKPiAgCWZvcl9lYWNoX3Bvc3Np YmxlX2Vhcmx5X2NwdShjcHUpIHsKPiAtCQlub2RlID0gLTE7Cj4gKwkJbm9kZSA9IE5VTUFfTk9f Tk9ERTsKPiAgCQlmb3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgKytpKQo+ICAJCQlpZiAoY3B1X3Bo eXNpY2FsX2lkKGNwdSkgPT0gbm9kZV9jcHVpZFtpXS5waHlzX2lkKSB7Cj4gIAkJCQlub2RlID0g bm9kZV9jcHVpZFtpXS5uaWQ7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9tbS9kaXNjb250aWcu YyBiL2FyY2gvaWE2NC9tbS9kaXNjb250aWcuYwo+IGluZGV4IDhhOTY1NzguLmY5YzM2NzUgMTAw NjQ0Cj4gLS0tIGEvYXJjaC9pYTY0L21tL2Rpc2NvbnRpZy5jCj4gKysrIGIvYXJjaC9pYTY0L21t L2Rpc2NvbnRpZy5jCj4gQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIF9faW5pdCBzZXR1cF9wZXJf Y3B1X2FyZWFzKHZvaWQpCj4gIAkgKiBDUFVzIGFyZSBwdXQgaW50byBncm91cHMgYWNjb3JkaW5n IHRvIG5vZGUuICBXYWxrIGNwdV9tYXAKPiAgCSAqIGFuZCBjcmVhdGUgbmV3IGdyb3VwcyBhdCBu b2RlIGJvdW5kYXJpZXMuCj4gIAkgKi8KPiAtCXByZXZfbm9kZSA9IC0xOwo+ICsJcHJldl9ub2Rl ID0gTlVNQV9OT19OT0RFOwo+ICAJYWktPm5yX2dyb3VwcyA9IDA7Cj4gIAlmb3IgKHVuaXQgPSAw OyB1bml0IDwgbnJfdW5pdHM7IHVuaXQrKykgewo+ICAJCWNwdSA9IGNwdV9tYXBbdW5pdF07Cj4g QEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgKm1lbW9yeV9sZXNzX25vZGVf YWxsb2MoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZXJub2Rlc2l6ZSkKPiAgewo+ICAJdm9pZCAq cHRyID0gTlVMTDsKPiAgCXU4IGJlc3QgPSAweGZmOwo+IC0JaW50IGJlc3Rub2RlID0gLTEsIG5v ZGUsIGFueW5vZGUgPSAwOwo+ICsJaW50IGJlc3Rub2RlID0gTlVNQV9OT19OT0RFLCBub2RlLCBh bnlub2RlID0gMDsKPiAgCj4gIAlmb3JfZWFjaF9vbmxpbmVfbm9kZShub2RlKSB7Cj4gIAkJaWYg KG5vZGVfaXNzZXQobm9kZSwgbWVtb3J5X2xlc3NfbWFzaykpCj4gQEAgLTQ0Nyw3ICs0NDcsNyBA QCBzdGF0aWMgdm9pZCBfX2luaXQgKm1lbW9yeV9sZXNzX25vZGVfYWxsb2MoaW50IG5pZCwgdW5z aWduZWQgbG9uZyBwZXJub2Rlc2l6ZSkKPiAgCQlhbnlub2RlID0gbm9kZTsKPiAgCX0KPiAgCj4g LQlpZiAoYmVzdG5vZGUgPT0gLTEpCj4gKwlpZiAoYmVzdG5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ ICAJCWJlc3Rub2RlID0gYW55bm9kZTsKPiAgCj4gIAlwdHIgPSBtZW1ibG9ja19hbGxvY190cnlf bmlkKHBlcm5vZGVzaXplLCBQRVJDUFVfUEFHRV9TSVpFLAo+IGRpZmYgLS1naXQgYS9hcmNoL2lh NjQvc24va2VybmVsL2lvX2NvbW1vbi5jIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19jb21tb24u Ywo+IGluZGV4IDhkZjEzZDAuLjg2YjNmY2IgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9pYTY0L3NuL2tl cm5lbC9pb19jb21tb24uYwo+ICsrKyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvaW9fY29tbW9uLmMK PiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHNuX2NvbW1vbl9idXNfZml4dXAoc3RydWN0IHBjaV9idXMg KmJ1cywKPiAgCQlwcmludGsoS0VSTl9XQVJOSU5HICJvbiBub2RlICVkIGJ1dCBvbmx5ICVkIG5v ZGVzIG9ubGluZS4iCj4gIAkJICAgICAgICJBc3NvY2lhdGlvbiBzZXQgdG8gdW5kZXRlcm1pbmVk LlxuIiwKPiAgCQkgICAgICAgY29udHJvbGxlci0+bm9kZSwgbnVtX29ubGluZV9ub2RlcygpKTsK PiAtCQljb250cm9sbGVyLT5ub2RlID0gLTE7Cj4gKwkJY29udHJvbGxlci0+bm9kZSA9IE5VTUFf Tk9fTk9ERTsKPiAgCX0KPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1 ZGUvYXNtL3BjaS1icmlkZ2UuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wY2ktYnJpZGdl LmgKPiBpbmRleCA5NGQ0NDkwLi4yNWE5ZTMzIDEwMDY0NAo+IC0tLSBhL2FyY2gvcG93ZXJwYy9p bmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKPiArKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20v cGNpLWJyaWRnZS5oCj4gQEAgLTI2NCw3ICsyNjQsNyBAQCBleHRlcm4gaW50IHBjaWJpb3NfbWFw X2lvX3NwYWNlKHN0cnVjdCBwY2lfYnVzICpidXMpOwo+ICAjaWZkZWYgQ09ORklHX05VTUEKPiAg I2RlZmluZSBQSEJfU0VUX05PREUoUEhCLCBOT0RFKQkJKChQSEIpLT5ub2RlID0gKE5PREUpKQo+ ICAjZWxzZQo+IC0jZGVmaW5lIFBIQl9TRVRfTk9ERShQSEIsIE5PREUpCQkoKFBIQiktPm5vZGUg PSAtMSkKPiArI2RlZmluZSBQSEJfU0VUX05PREUoUEhCLCBOT0RFKQkJKChQSEIpLT5ub2RlID0g TlVNQV9OT19OT0RFKQo+ICAjZW5kaWYKPiAgCj4gICNlbmRpZgkvKiBDT05GSUdfUFBDNjQgKi8K PiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wYWNhLmMgYi9hcmNoL3Bvd2VycGMv a2VybmVsL3BhY2EuYwo+IGluZGV4IDkxM2JmY2EuLjZhMGJkNTEgMTAwNjQ0Cj4gLS0tIGEvYXJj aC9wb3dlcnBjL2tlcm5lbC9wYWNhLmMKPiArKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BhY2Eu Ywo+IEBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyB2b2lkICpfX2luaXQgYWxsb2NfcGFjYV9kYXRh KHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBhbGlnbiwKPiAgCSAqIHdoaWNoIHdp bGwgcHV0IGl0cyBwYWNhIGluIHRoZSByaWdodCBwbGFjZS4KPiAgCSAqLwo+ICAJaWYgKGNwdSA9 PSBib290X2NwdWlkKSB7Cj4gLQkJbmlkID0gLTE7Cj4gKwkJbmlkID0gTlVNQV9OT19OT0RFOwo+ ICAJCW1lbWJsb2NrX3NldF9ib3R0b21fdXAodHJ1ZSk7Cj4gIAl9IGVsc2Ugewo+ICAJCW5pZCA9 IGVhcmx5X2NwdV90b19ub2RlKGNwdSk7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJu ZWwvcGNpLWNvbW1vbi5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKPiBpbmRl eCA4OGU0ZjY5Li4xNGMzM2E5IDEwMDY0NAo+IC0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNp LWNvbW1vbi5jCj4gKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKPiBAQCAt MTMyLDcgKzEzMiw3IEBAIHN0cnVjdCBwY2lfY29udHJvbGxlciAqcGNpYmlvc19hbGxvY19jb250 cm9sbGVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2KQo+ICAJCWludCBuaWQgPSBvZl9ub2RlX3Rv X25pZChkZXYpOwo+ICAKPiAgCQlpZiAobmlkIDwgMCB8fCAhbm9kZV9vbmxpbmUobmlkKSkKPiAt CQkJbmlkID0gLTE7Cj4gKwkJCW5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAkJUEhCX1NFVF9O T0RFKHBoYiwgbmlkKTsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL251bWEu YyBiL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKPiBpbmRleCAzYTA0OGU5Li43NzgwOGEyIDEwMDY0 NAo+IC0tLSBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKPiArKysgYi9hcmNoL3Bvd2VycGMvbW0v bnVtYS5jCj4gQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2Rpc3Rh bmNlX2xvb2t1cF90YWJsZShpbnQgbmlkLAo+ICAgKi8KPiAgc3RhdGljIGludCBhc3NvY2lhdGl2 aXR5X3RvX25pZChjb25zdCBfX2JlMzIgKmFzc29jaWF0aXZpdHkpCj4gIHsKPiAtCWludCBuaWQg PSAtMTsKPiArCWludCBuaWQgPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJaWYgKG1pbl9jb21tb25f ZGVwdGggPT0gLTEpCj4gIAkJZ290byBvdXQ7Cj4gQEAgLTIyNSw3ICsyMjUsNyBAQCBzdGF0aWMg aW50IGFzc29jaWF0aXZpdHlfdG9fbmlkKGNvbnN0IF9fYmUzMiAqYXNzb2NpYXRpdml0eSkKPiAg Cj4gIAkvKiBQT1dFUjQgTFBBUiB1c2VzIDB4ZmZmZiBhcyBpbnZhbGlkIG5vZGUgKi8KPiAgCWlm IChuaWQgPT0gMHhmZmZmIHx8IG5pZCA+PSBNQVhfTlVNTk9ERVMpCj4gLQkJbmlkID0gLTE7Cj4g KwkJbmlkID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCWlmIChuaWQgPiAwICYmCj4gIAkJb2ZfcmVh ZF9udW1iZXIoYXNzb2NpYXRpdml0eSwgMSkgPj0gZGlzdGFuY2VfcmVmX3BvaW50c19kZXB0aCkg ewo+IEBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGludCBhc3NvY2lhdGl2aXR5X3RvX25pZChj b25zdCBfX2JlMzIgKmFzc29jaWF0aXZpdHkpCj4gICAqLwo+ICBzdGF0aWMgaW50IG9mX25vZGVf dG9fbmlkX3NpbmdsZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldmljZSkKPiAgewo+IC0JaW50IG5p ZCA9IC0xOwo+ICsJaW50IG5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCWNvbnN0IF9fYmUzMiAqdG1w Owo+ICAKPiAgCXRtcCA9IG9mX2dldF9hc3NvY2lhdGl2aXR5KGRldmljZSk7Cj4gQEAgLTI1Niw3 ICsyNTYsNyBAQCBzdGF0aWMgaW50IG9mX25vZGVfdG9fbmlkX3NpbmdsZShzdHJ1Y3QgZGV2aWNl X25vZGUgKmRldmljZSkKPiAgLyogV2FsayB0aGUgZGV2aWNlIHRyZWUgdXB3YXJkcywgbG9va2lu ZyBmb3IgYW4gYXNzb2NpYXRpdml0eSBpZCAqLwo+ICBpbnQgb2Zfbm9kZV90b19uaWQoc3RydWN0 IGRldmljZV9ub2RlICpkZXZpY2UpCj4gIHsKPiAtCWludCBuaWQgPSAtMTsKPiArCWludCBuaWQg PSBOVU1BX05PX05PREU7Cj4gIAo+ICAJb2Zfbm9kZV9nZXQoZGV2aWNlKTsKPiAgCXdoaWxlIChk ZXZpY2UpIHsKPiBAQCAtNDU0LDcgKzQ1NCw3IEBAIHN0YXRpYyBpbnQgb2ZfZHJjb25mX3RvX25p ZF9zaW5nbGUoc3RydWN0IGRybWVtX2xtYiAqbG1iKQo+ICAgKi8KPiAgc3RhdGljIGludCBudW1h X3NldHVwX2NwdSh1bnNpZ25lZCBsb25nIGxjcHUpCj4gIHsKPiAtCWludCBuaWQgPSAtMTsKPiAr CWludCBuaWQgPSBOVU1BX05PX05PREU7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdTsKPiAg Cj4gIAkvKgo+IEBAIC05MzAsNyArOTMwLDcgQEAgc3RhdGljIGludCBob3RfYWRkX2RyY29uZl9z Y25fdG9fbmlkKHVuc2lnbmVkIGxvbmcgc2NuX2FkZHIpCj4gIHsKPiAgCXN0cnVjdCBkcm1lbV9s bWIgKmxtYjsKPiAgCXVuc2lnbmVkIGxvbmcgbG1iX3NpemU7Cj4gLQlpbnQgbmlkID0gLTE7Cj4g KwlpbnQgbmlkID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCWxtYl9zaXplID0gZHJtZW1fbG1iX3Np emUoKTsKPiAgCj4gQEAgLTk2MCw3ICs5NjAsNyBAQCBzdGF0aWMgaW50IGhvdF9hZGRfZHJjb25m X3Njbl90b19uaWQodW5zaWduZWQgbG9uZyBzY25fYWRkcikKPiAgc3RhdGljIGludCBob3RfYWRk X25vZGVfc2NuX3RvX25pZCh1bnNpZ25lZCBsb25nIHNjbl9hZGRyKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm1lbW9yeTsKPiAtCWludCBuaWQgPSAtMTsKPiArCWludCBuaWQgPSBOVU1B X05PX05PREU7Cj4gIAo+ICAJZm9yX2VhY2hfbm9kZV9ieV90eXBlKG1lbW9yeSwgIm1lbW9yeSIp IHsKPiAgCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCBzaXplOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Bv d2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvbWVtdHJhY2UuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9y bXMvcG93ZXJudi9tZW10cmFjZS5jCj4gaW5kZXggODRkMDM4ZS4uMWNlM2JmYyAxMDA2NDQKPiAt LS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvbWVtdHJhY2UuYwo+ICsrKyBiL2Fy Y2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9tZW10cmFjZS5jCj4gQEAgLTIyMyw3ICsyMjMs NyBAQCBzdGF0aWMgaW50IG1lbXRyYWNlX29ubGluZSh2b2lkKQo+ICAJCWVudCA9ICZtZW10cmFj ZV9hcnJheVtpXTsKPiAgCj4gIAkJLyogV2UgaGF2ZSBvbmxpbmVkIHRoaXMgY2h1bmsgcHJldmlv dXNseSAqLwo+IC0JCWlmIChlbnQtPm5pZCA9PSAtMSkKPiArCQlpZiAoZW50LT5uaWQgPT0gTlVN QV9OT19OT0RFKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJLyogUmVtb3ZlIGZyb20gaW8gbWFw cGluZ3MgKi8KPiBAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgbWVtdHJhY2Vfb25saW5l KHZvaWQpCj4gIAkJICovCj4gIAkJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGVudC0+ZGlyKTsK PiAgCQlwcl9pbmZvKCJBZGRlZCB0cmFjZSBtZW1vcnkgYmFjayB0byBub2RlICVkXG4iLCBlbnQt Pm5pZCk7Cj4gLQkJZW50LT5zaXplID0gZW50LT5zdGFydCA9IGVudC0+bmlkID0gLTE7Cj4gKwkJ ZW50LT5zaXplID0gZW50LT5zdGFydCA9IGVudC0+bmlkID0gTlVNQV9OT19OT0RFOwo+ICAJfQo+ ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tl cm5lbC9hdXhpb18zMi5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvYXV4aW9fMzIuYwo+IGluZGV4IGEz MmQ1ODguLjM5ZjZjNTkgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvYXV4aW9fMzIu Ywo+ICsrKyBiL2FyY2gvc3BhcmMva2VybmVsL2F1eGlvXzMyLmMKPiBAQCAtMTIwLDcgKzEyMCw3 IEBAIHZvaWQgX19pbml0IGF1eGlvX3Bvd2VyX3Byb2JlKHZvaWQpCj4gIAlub2RlID0gcHJvbV9z ZWFyY2hzaWJsaW5ncyhub2RlLCAib2JpbyIpOwo+ICAJbm9kZSA9IHByb21fZ2V0Y2hpbGQobm9k ZSk7Cj4gIAlub2RlID0gcHJvbV9zZWFyY2hzaWJsaW5ncyhub2RlLCAicG93ZXIiKTsKPiAtCWlm IChub2RlID09IDAgfHwgKHMzMilub2RlID09IC0xKQo+ICsJaWYgKG5vZGUgPT0gMCB8fCAoczMy KW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBNYXAgdGhlIHBv d2VyIGNvbnRyb2wgcmVnaXN0ZXIuICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVs L3BjaV9maXJlLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9wY2lfZmlyZS5jCj4gaW5kZXggYmU3MWFl MC4uNDc0ZDNiZSAxMDA2NDQKPiAtLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9wY2lfZmlyZS5jCj4g KysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpX2ZpcmUuYwo+IEBAIC00MTYsNyArNDE2LDcgQEAg c3RhdGljIGludCBwY2lfZmlyZV9wYm1faW5pdChzdHJ1Y3QgcGNpX3BibV9pbmZvICpwYm0sCj4g IAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRwID0gb3AtPmRldi5vZl9ub2RlOwo+ICAJaW50IGVycjsK PiAgCj4gLQlwYm0tPm51bWFfbm9kZSA9IC0xOwo+ICsJcGJtLT5udW1hX25vZGUgPSBOVU1BX05P X05PREU7Cj4gIAo+ICAJcGJtLT5wY2lfb3BzID0gJnN1bjR1X3BjaV9vcHM7Cj4gIAlwYm0tPmNv bmZpZ19zcGFjZV9yZWdfYml0cyA9IDEyOwo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5l bC9wY2lfc2NoaXpvLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMKPiBpbmRleCA5 MzRiOTdjLi44N2JiMjMxIDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hp em8uYwo+ICsrKyBiL2FyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYwo+IEBAIC0xMzQ3LDcg KzEzNDcsNyBAQCBzdGF0aWMgaW50IHNjaGl6b19wYm1faW5pdChzdHJ1Y3QgcGNpX3BibV9pbmZv ICpwYm0sCj4gIAlwYm0tPm5leHQgPSBwY2lfcGJtX3Jvb3Q7Cj4gIAlwY2lfcGJtX3Jvb3QgPSBw Ym07Cj4gIAo+IC0JcGJtLT5udW1hX25vZGUgPSAtMTsKPiArCXBibS0+bnVtYV9ub2RlID0gTlVN QV9OT19OT0RFOwo+ICAKPiAgCXBibS0+cGNpX29wcyA9ICZzdW40dV9wY2lfb3BzOwo+ICAJcGJt LT5jb25maWdfc3BhY2VfcmVnX2JpdHMgPSA4Owo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tl cm5lbC9wY2ljLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9wY2ljLmMKPiBpbmRleCBlZTRjOWE5Li5k NWZlODk4IDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYwo+ICsrKyBiL2Fy Y2gvc3BhcmMva2VybmVsL3BjaWMuYwo+IEBAIC00NzYsNyArNDc2LDcgQEAgc3RhdGljIHZvaWQg cGNpY19tYXBfcGNpX2RldmljZShzdHJ1Y3QgbGludXhfcGNpYyAqcGNpYywKPiAgCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Cj4gIAlpbnQgajsKPiAgCj4gLQlpZiAobm9kZSA9PSAwIHx8IG5vZGUgPT0g LTEpIHsKPiArCWlmIChub2RlID09IDAgfHwgbm9kZSA9PSBOVU1BX05PX05PREUpIHsKPiAgCQlz dHJjcHkobmFtZWJ1ZiwgIj8/PyIpOwo+ICAJfSBlbHNlIHsKPiAgCQlwcm9tX2dldHN0cmluZyhu b2RlLCAibmFtZSIsIG5hbWVidWYsIDYzKTsgbmFtZWJ1Zls2M10gPSAwOwo+IEBAIC01MzUsNyAr NTM1LDcgQEAgcGNpY19maWxsX2lycShzdHJ1Y3QgbGludXhfcGNpYyAqcGNpYywgc3RydWN0IHBj aV9kZXYgKmRldiwgaW50IG5vZGUpCj4gIAlpbnQgaSwgaXZlYzsKPiAgCWNoYXIgbmFtZWJ1Zls2 NF07Cj4gIAo+IC0JaWYgKG5vZGUgPT0gMCB8fCBub2RlID09IC0xKSB7Cj4gKwlpZiAobm9kZSA9 PSAwIHx8IG5vZGUgPT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJc3RyY3B5KG5hbWVidWYsICI/Pz8i KTsKPiAgCX0gZWxzZSB7Cj4gIAkJcHJvbV9nZXRzdHJpbmcobm9kZSwgIm5hbWUiLCBuYW1lYnVm LCBzaXplb2YobmFtZWJ1ZikpOwo+IEBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBwY2liaW9zX2Zp eHVwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKQo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYs ICZidXMtPmRldmljZXMsIGJ1c19saXN0KSB7Cj4gIAkJbm9kZSA9IHBkZXZfdG9fcG5vZGUoJnBj aWMtPnBibSwgZGV2KTsKPiAgCQlpZihub2RlID09IDApCj4gLQkJCW5vZGUgPSAtMTsKPiArCQkJ bm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAkJLyogY29va2llcyAqLwo+ICAJCXBjcCA9IHBj aV9kZXZjb29raWVfYWxsb2MoKTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvcHN5 Y2hvX2NvbW1vbi5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvcHN5Y2hvX2NvbW1vbi5jCj4gaW5kZXgg ODFhYTkxZS4uZGNiZjQ5MiAxMDA2NDQKPiAtLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9wc3ljaG9f Y29tbW9uLmMKPiArKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9wc3ljaG9fY29tbW9uLmMKPiBAQCAt NDU0LDcgKzQ1NCw3IEBAIHZvaWQgcHN5Y2hvX3BibV9pbml0X2NvbW1vbihzdHJ1Y3QgcGNpX3Bi bV9pbmZvICpwYm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wCj4gIAlzdHJ1Y3QgZGV2aWNl X25vZGUgKmRwID0gb3AtPmRldi5vZl9ub2RlOwo+ICAKPiAgCXBibS0+bmFtZSA9IGRwLT5mdWxs X25hbWU7Cj4gLQlwYm0tPm51bWFfbm9kZSA9IC0xOwo+ICsJcGJtLT5udW1hX25vZGUgPSBOVU1B X05PX05PREU7Cj4gIAlwYm0tPmNoaXBfdHlwZSA9IGNoaXBfdHlwZTsKPiAgCXBibS0+Y2hpcF92 ZXJzaW9uID0gb2ZfZ2V0aW50cHJvcF9kZWZhdWx0KGRwLCAidmVyc2lvbiMiLCAwKTsKPiAgCXBi bS0+Y2hpcF9yZXZpc2lvbiA9IG9mX2dldGludHByb3BfZGVmYXVsdChkcCwgIm1vZHVsZS1yZXZp c2lvbiMiLCAwKTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvc2J1cy5jIGIvYXJj aC9zcGFyYy9rZXJuZWwvc2J1cy5jCj4gaW5kZXggYzEzM2RmYy4uMjhhNGFhOSAxMDA2NDQKPiAt LS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9zYnVzLmMKPiArKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9z YnVzLmMKPiBAQCAtNTYxLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzYnVzX2lvbW11 X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApCj4gIAo+ICAJb3AtPmRldi5hcmNoZGF0 YS5pb21tdSA9IGlvbW11Owo+ICAJb3AtPmRldi5hcmNoZGF0YS5zdGMgPSBzdHJidWY7Cj4gLQlv cC0+ZGV2LmFyY2hkYXRhLm51bWFfbm9kZSA9IC0xOwo+ICsJb3AtPmRldi5hcmNoZGF0YS5udW1h X25vZGUgPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJcmVnX2Jhc2UgPSByZWdzICsgU1lTSU9fSU9N TVVSRUdfQkFTRTsKPiAgCWlvbW11LT5pb21tdV9jb250cm9sID0gcmVnX2Jhc2UgKyBJT01NVV9D T05UUk9MOwo+IGRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL21tL2luaXRfNjQuYyBiL2FyY2gvc3Bh cmMvbW0vaW5pdF82NC5jCj4gaW5kZXggM2M4YWFjMi4uY2IxYmVkMSAxMDA2NDQKPiAtLS0gYS9h cmNoL3NwYXJjL21tL2luaXRfNjQuYwo+ICsrKyBiL2FyY2gvc3BhcmMvbW0vaW5pdF82NC5jCj4g QEAgLTk3NiwxMyArOTc2LDEzIEBAIHN0YXRpYyB1NjQgX19pbml0IG1lbWJsb2NrX25pZF9yYW5n ZV9zdW40dSh1NjQgc3RhcnQsIHU2NCBlbmQsIGludCAqbmlkKQo+ICB7Cj4gIAlpbnQgcHJldl9u aWQsIG5ld19uaWQ7Cj4gIAo+IC0JcHJldl9uaWQgPSAtMTsKPiArCXByZXZfbmlkID0gTlVNQV9O T19OT0RFOwo+ICAJZm9yICggOyBzdGFydCA8IGVuZDsgc3RhcnQgKz0gUEFHRV9TSVpFKSB7Cj4g IAkJZm9yIChuZXdfbmlkID0gMDsgbmV3X25pZCA8IG51bV9ub2RlX21hc2tzOyBuZXdfbmlkKysp IHsKPiAgCQkJc3RydWN0IG5vZGVfbWVtX21hc2sgKnAgPSAmbm9kZV9tYXNrc1tuZXdfbmlkXTsK PiAgCj4gIAkJCWlmICgoc3RhcnQgJiBwLT5tYXNrKSA9PSBwLT5tYXRjaCkgewo+IC0JCQkJaWYg KHByZXZfbmlkID09IC0xKQo+ICsJCQkJaWYgKHByZXZfbmlkID09IE5VTUFfTk9fTk9ERSkKPiAg CQkJCQlwcmV2X25pZCA9IG5ld19uaWQ7Cj4gIAkJCQlicmVhazsKPiAgCQkJfQo+IEBAIC0xMjA4 LDcgKzEyMDgsNyBAQCBpbnQgb2Zfbm9kZV90b19uaWQoc3RydWN0IGRldmljZV9ub2RlICpkcCkK PiAgCW1kID0gbWRlc2NfZ3JhYigpOwo+ICAKPiAgCWNvdW50ID0gMDsKPiAtCW5pZCA9IC0xOwo+ ICsJbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJbWRlc2NfZm9yX2VhY2hfbm9kZV9ieV9uYW1lKG1k LCBncnAsICJncm91cCIpIHsKPiAgCQlpZiAoIXNjYW5fYXJjc19mb3JfY2ZnX2hhbmRsZShtZCwg Z3JwLCBjZmdfaGFuZGxlKSkgewo+ICAJCQluaWQgPSBjb3VudDsKPiBkaWZmIC0tZ2l0IGEvYXJj aC9zcGFyYy9wcm9tL2luaXRfMzIuYyBiL2FyY2gvc3BhcmMvcHJvbS9pbml0XzMyLmMKPiBpbmRl eCBkMjA0NzAxLi40YzZlNTQwIDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMvcHJvbS9pbml0XzMy LmMKPiArKysgYi9hcmNoL3NwYXJjL3Byb20vaW5pdF8zMi5jCj4gQEAgLTU4LDcgKzU4LDcgQEAg dm9pZCBfX2luaXQgcHJvbV9pbml0KHN0cnVjdCBsaW51eF9yb212ZWMgKnJwKQo+ICAJcHJvbV9u b2Rlb3BzID0gcm9tdmVjLT5wdl9ub2Rlb3BzOwo+ICAKPiAgCXByb21fcm9vdF9ub2RlID0gcHJv bV9nZXRzaWJsaW5nKDApOwo+IC0JaWYgKChwcm9tX3Jvb3Rfbm9kZSA9PSAwKSB8fCAoKHMzMilw cm9tX3Jvb3Rfbm9kZSA9PSAtMSkpCj4gKwlpZiAoKHByb21fcm9vdF9ub2RlID09IDApIHx8ICgo czMyKXByb21fcm9vdF9ub2RlID09IE5VTUFfTk9fTk9ERSkpCj4gIAkJcHJvbV9oYWx0KCk7Cj4g IAo+ICAJaWYoKCgodW5zaWduZWQgbG9uZykgcHJvbV9ub2Rlb3BzKSA9PSAwKSB8fCAKPiBkaWZm IC0tZ2l0IGEvYXJjaC9zcGFyYy9wcm9tL2luaXRfNjQuYyBiL2FyY2gvc3BhcmMvcHJvbS9pbml0 XzY0LmMKPiBpbmRleCAxMDNhYTkxLi44NTY2OWMwIDEwMDY0NAo+IC0tLSBhL2FyY2gvc3BhcmMv cHJvbS9pbml0XzY0LmMKPiArKysgYi9hcmNoL3NwYXJjL3Byb20vaW5pdF82NC5jCj4gQEAgLTM2 LDEzICszNiwxMyBAQCB2b2lkIF9faW5pdCBwcm9tX2luaXQodm9pZCAqY2lmX2hhbmRsZXIpCj4g IAlwcm9tX2NpZl9pbml0KGNpZl9oYW5kbGVyKTsKPiAgCj4gIAlwcm9tX2Nob3Nlbl9ub2RlID0g cHJvbV9maW5kZGV2aWNlKHByb21fY2hvc2VuX3BhdGgpOwo+IC0JaWYgKCFwcm9tX2Nob3Nlbl9u b2RlIHx8IChzMzIpcHJvbV9jaG9zZW5fbm9kZSA9PSAtMSkKPiArCWlmICghcHJvbV9jaG9zZW5f bm9kZSB8fCAoczMyKXByb21fY2hvc2VuX25vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXByb21f aGFsdCgpOwo+ICAKPiAgCXByb21fc3Rkb3V0ID0gcHJvbV9nZXRpbnQocHJvbV9jaG9zZW5fbm9k ZSwgInN0ZG91dCIpOwo+ICAKPiAgCW5vZGUgPSBwcm9tX2ZpbmRkZXZpY2UoIi9vcGVucHJvbSIp Owo+IC0JaWYgKCFub2RlIHx8IChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICghbm9kZSB8fCAoczMy KW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXByb21faGFsdCgpOwo+ICAKPiAgCXByb21fZ2V0 c3RyaW5nKG5vZGUsICJ2ZXJzaW9uIiwgcHJvbV92ZXJzaW9uLCBzaXplb2YocHJvbV92ZXJzaW9u KSk7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvcHJvbS90cmVlXzMyLmMgYi9hcmNoL3NwYXJj L3Byb20vdHJlZV8zMi5jCj4gaW5kZXggMGZlZDg5My4uMmQwYTIwNCAxMDA2NDQKPiAtLS0gYS9h cmNoL3NwYXJjL3Byb20vdHJlZV8zMi5jCj4gKysrIGIvYXJjaC9zcGFyYy9wcm9tL3RyZWVfMzIu Ywo+IEBAIC00MSwxMSArNDEsMTEgQEAgcGhhbmRsZSBwcm9tX2dldGNoaWxkKHBoYW5kbGUgbm9k ZSkKPiAgewo+ICAJcGhhbmRsZSBjbm9kZTsKPiAgCj4gLQlpZiAoKHMzMilub2RlID09IC0xKQo+ ICsJaWYgKChzMzIpbm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJ Y25vZGUgPSBfX3Byb21fZ2V0Y2hpbGQobm9kZSk7Cj4gLQlpZiAoY25vZGUgPT0gMCB8fCAoczMy KWNub2RlID09IC0xKQo+ICsJaWYgKGNub2RlID09IDAgfHwgKHMzMiljbm9kZSA9PSBOVU1BX05P X05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0dXJuIGNub2RlOwo+IEBAIC03MywxMSAr NzMsMTEgQEAgcGhhbmRsZSBwcm9tX2dldHNpYmxpbmcocGhhbmRsZSBub2RlKQo+ICB7Cj4gIAlw aGFuZGxlIHNpYm5vZGU7Cj4gIAo+IC0JaWYgKChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICgoczMy KW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXNpYm5vZGUgPSBf X3Byb21fZ2V0c2libGluZyhub2RlKTsKPiAtCWlmIChzaWJub2RlID09IDAgfHwgKHMzMilzaWJu b2RlID09IC0xKQo+ICsJaWYgKHNpYm5vZGUgPT0gMCB8fCAoczMyKXNpYm5vZGUgPT0gTlVNQV9O T19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldHVybiBzaWJub2RlOwo+IEBAIC0yMjAs NyArMjIwLDcgQEAgc3RhdGljIGNoYXIgKl9fcHJvbV9uZXh0cHJvcChwaGFuZGxlIG5vZGUsIGNo YXIgKiBvcHJvcCkKPiAgICovCj4gIGNoYXIgKnByb21fbmV4dHByb3AocGhhbmRsZSBub2RlLCBj aGFyICpvcHJvcCwgY2hhciAqYnVmZmVyKQo+ICB7Cj4gLQlpZiAobm9kZSA9PSAwIHx8IChzMzIp bm9kZSA9PSAtMSkKPiArCWlmIChub2RlID09IDAgfHwgKHMzMilub2RlID09IE5VTUFfTk9fTk9E RSkKPiAgCQlyZXR1cm4gIiI7Cj4gIAo+ICAJcmV0dXJuIF9fcHJvbV9uZXh0cHJvcChub2RlLCBv cHJvcCk7Cj4gQEAgLTMwNCw3ICszMDQsNyBAQCBwaGFuZGxlIHByb21faW5zdDJwa2coaW50IGlu c3QpCj4gIAlub2RlID0gKCpyb212ZWMtPnB2X3YyZGV2b3BzLnYyX2luc3QycGtnKShpbnN0KTsK PiAgCXJlc3RvcmVfY3VycmVudCgpOwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJvbV9s b2NrLCBmbGFncyk7Cj4gLQlpZiAoKHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9kZSA9 PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIDA7Cj4gIAlyZXR1cm4gbm9kZTsKPiAgfQo+IGRp ZmYgLS1naXQgYS9hcmNoL3NwYXJjL3Byb20vdHJlZV82NC5jIGIvYXJjaC9zcGFyYy9wcm9tL3Ry ZWVfNjQuYwo+IGluZGV4IDk4OWU3OTkuLjJiNGM1MTUgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9zcGFy Yy9wcm9tL3RyZWVfNjQuYwo+ICsrKyBiL2FyY2gvc3BhcmMvcHJvbS90cmVlXzY0LmMKPiBAQCAt NDQsMTAgKzQ0LDEwIEBAIHBoYW5kbGUgcHJvbV9nZXRjaGlsZChwaGFuZGxlIG5vZGUpCj4gIHsK PiAgCXBoYW5kbGUgY25vZGU7Cj4gIAo+IC0JaWYgKChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICgo czMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAJY25vZGUgPSBfX3By b21fZ2V0Y2hpbGQobm9kZSk7Cj4gLQlpZiAoKHMzMiljbm9kZSA9PSAtMSkKPiArCWlmICgoczMy KWNub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCXJldHVybiBjbm9kZTsK PiAgfQo+IEBAIC01NywxMCArNTcsMTAgQEAgaW5saW5lIHBoYW5kbGUgcHJvbV9nZXRwYXJlbnQo cGhhbmRsZSBub2RlKQo+ICB7Cj4gIAlwaGFuZGxlIGNub2RlOwo+ICAKPiAtCWlmICgoczMyKW5v ZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4g MDsKPiAgCWNub2RlID0gcHJvbV9ub2RlX3RvX25vZGUoInBhcmVudCIsIG5vZGUpOwo+IC0JaWYg KChzMzIpY25vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMiljbm9kZSA9PSBOVU1BX05PX05PREUpCj4g IAkJcmV0dXJuIDA7Cj4gIAlyZXR1cm4gY25vZGU7Cj4gIH0KPiBAQCAtNzcsMTAgKzc3LDEwIEBA IHBoYW5kbGUgcHJvbV9nZXRzaWJsaW5nKHBoYW5kbGUgbm9kZSkKPiAgewo+ICAJcGhhbmRsZSBz aWJub2RlOwo+ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09 IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCXNpYm5vZGUgPSBfX3Byb21fZ2V0c2li bGluZyhub2RlKTsKPiAtCWlmICgoczMyKXNpYm5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilzaWJu b2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlyZXR1cm4gc2libm9k ZTsKPiBAQCAtMjQxLDcgKzI0MSw3IEBAIGNoYXIgKnByb21fZmlyc3Rwcm9wKHBoYW5kbGUgbm9k ZSwgY2hhciAqYnVmZmVyKQo+ICAJdW5zaWduZWQgbG9uZyBhcmdzWzddOwo+ICAKPiAgCSpidWZm ZXIgPSAwOwo+IC0JaWYgKChzMzIpbm9kZSA9PSAtMSkKPiArCWlmICgoczMyKW5vZGUgPT0gTlVN QV9OT19OT0RFKQo+ICAJCXJldHVybiBidWZmZXI7Cj4gIAo+ICAJYXJnc1swXSA9ICh1bnNpZ25l ZCBsb25nKSBwcm9tX25leHRwcm9wX25hbWU7Cj4gQEAgLTI2Nyw3ICsyNjcsNyBAQCBjaGFyICpw cm9tX25leHRwcm9wKHBoYW5kbGUgbm9kZSwgY29uc3QgY2hhciAqb3Byb3AsIGNoYXIgKmJ1ZmZl cikKPiAgCXVuc2lnbmVkIGxvbmcgYXJnc1s3XTsKPiAgCWNoYXIgYnVmWzMyXTsKPiAgCj4gLQlp ZiAoKHMzMilub2RlID09IC0xKSB7Cj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9fTk9ERSkg ewo+ICAJCSpidWZmZXIgPSAwOwo+ICAJCXJldHVybiBidWZmZXI7Cj4gIAl9Cj4gQEAgLTM3MCw3 ICszNzAsNyBAQCBpbmxpbmUgcGhhbmRsZSBwcm9tX2luc3QycGtnKGludCBpbnN0KQo+ICAJcDEy NzVfY21kX2RpcmVjdChhcmdzKTsKPiAgCj4gIAlub2RlID0gKGludCkgYXJnc1s0XTsKPiAtCWlm ICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9fTk9ERSkKPiAg CQlyZXR1cm4gMDsKPiAgCXJldHVybiBub2RlOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3BjaS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGNpLmgKPiBpbmRleCA2 NjI5NjM2Li5kZWUyYTMxIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BjaS5o Cj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGNpLmgKPiBAQCAtMTQxLDcgKzE0MSw3IEBA IGNwdW1hc2tfb2ZfcGNpYnVzKGNvbnN0IHN0cnVjdCBwY2lfYnVzICpidXMpCj4gIAlpbnQgbm9k ZTsKPiAgCj4gIAlub2RlID0gX19wY2lidXNfdG9fbm9kZShidXMpOwo+IC0JcmV0dXJuIChub2Rl ID09IC0xKSA/IGNwdV9vbmxpbmVfbWFzayA6Cj4gKwlyZXR1cm4gKG5vZGUgPT0gTlVNQV9OT19O T0RFKSA/IGNwdV9vbmxpbmVfbWFzayA6Cj4gIAkJCSAgICAgIGNwdW1hc2tfb2Zfbm9kZShub2Rl KTsKPiAgfQo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FwaWMveDJh cGljX3V2X3guYyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL3gyYXBpY191dl94LmMKPiBpbmRleCAz OTFmMzU4Li4zYzMzNzhhIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL3gyYXBp Y191dl94LmMKPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfdXZfeC5jCj4gQEAg LTEzOTAsNyArMTM5MCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBidWlsZF9zb2NrZXRfdGFibGVz KHZvaWQpCj4gIAl9Cj4gIAo+ICAJLyogU2V0IHNvY2tldCAtPiBub2RlIHZhbHVlczogKi8KPiAt CWxuaWQgPSAtMTsKPiArCWxuaWQgPSBOVU1BX05PX05PREU7Cj4gIAlmb3JfZWFjaF9wcmVzZW50 X2NwdShjcHUpIHsKPiAgCQlpbnQgbmlkID0gY3B1X3RvX25vZGUoY3B1KTsKPiAgCQlpbnQgYXBp Y2lkLCBzb2NraWQ7Cj4gQEAgLTE1MjEsNyArMTUyMSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB1 dl9zeXN0ZW1faW5pdF9odWIodm9pZCkKPiAgCQkJbmV3X2h1Yi0+cG5vZGUgPSAweGZmZmY7Cj4g IAo+ICAJCW5ld19odWItPm51bWFfYmxhZGVfaWQgPSB1dl9ub2RlX3RvX2JsYWRlX2lkKG5vZGVp ZCk7Cj4gLQkJbmV3X2h1Yi0+bWVtb3J5X25pZCA9IC0xOwo+ICsJCW5ld19odWItPm1lbW9yeV9u aWQgPSBOVU1BX05PX05PREU7Cj4gIAkJbmV3X2h1Yi0+bnJfcG9zc2libGVfY3B1cyA9IDA7Cj4g IAkJbmV3X2h1Yi0+bnJfb25saW5lX2NwdXMgPSAwOwo+ICAJfQo+IEBAIC0xNTM4LDcgKzE1Mzgs NyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdXZfc3lzdGVtX2luaXRfaHViKHZvaWQpCj4gIAo+ICAJ CXV2X2NwdV9pbmZvX3BlcihjcHUpLT5wX3V2X2h1Yl9pbmZvID0gdXZfaHViX2luZm9fbGlzdChu b2RlaWQpOwo+ICAJCXV2X2NwdV9pbmZvX3BlcihjcHUpLT5ibGFkZV9jcHVfaWQgPSB1dl9jcHVf aHViX2luZm8oY3B1KS0+bnJfcG9zc2libGVfY3B1cysrOwo+IC0JCWlmICh1dl9jcHVfaHViX2lu Zm8oY3B1KS0+bWVtb3J5X25pZCA9PSAtMSkKPiArCQlpZiAodXZfY3B1X2h1Yl9pbmZvKGNwdSkt Pm1lbW9yeV9uaWQgPT0gTlVNQV9OT19OT0RFKQo+ICAJCQl1dl9jcHVfaHViX2luZm8oY3B1KS0+ bWVtb3J5X25pZCA9IGNwdV90b19ub2RlKGNwdSk7Cj4gIAo+ICAJCS8qIEluaXQgbWVtb3J5bGVz cyBub2RlOiAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvc21wYm9vdC5jIGIvYXJj aC94ODYva2VybmVsL3NtcGJvb3QuYwo+IGluZGV4IGE5MTM0ZDEuLmMxZDQ1ZGMgMTAwNjQ0Cj4g LS0tIGEvYXJjaC94ODYva2VybmVsL3NtcGJvb3QuYwo+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9z bXBib290LmMKPiBAQCAtODQxLDcgKzg0MSw3IEBAIHdha2V1cF9zZWNvbmRhcnlfY3B1X3ZpYV9p bml0KGludCBwaHlzX2FwaWNpZCwgdW5zaWduZWQgbG9uZyBzdGFydF9laXApCj4gIC8qIHJlZHVj ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHByaW50ZWQgd2hlbiBib290aW5nIGEgbGFyZ2UgY3B1IGNv dW50IHN5c3RlbSAqLwo+ICBzdGF0aWMgdm9pZCBhbm5vdW5jZV9jcHUoaW50IGNwdSwgaW50IGFw aWNpZCkKPiAgewo+IC0Jc3RhdGljIGludCBjdXJyZW50X25vZGUgPSAtMTsKPiArCXN0YXRpYyBp bnQgY3VycmVudF9ub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJaW50IG5vZGUgPSBlYXJseV9jcHVf dG9fbm9kZShjcHUpOwo+ICAJc3RhdGljIGludCB3aWR0aCwgbm9kZV93aWR0aDsKPiAgCj4gZGlm ZiAtLWdpdCBhL2FyY2gveDg2L3BsYXRmb3JtL29scGMvb2xwY19kdC5jIGIvYXJjaC94ODYvcGxh dGZvcm0vb2xwYy9vbHBjX2R0LmMKPiBpbmRleCAyNGQyMTc1Li43MDk4MTI3IDEwMDY0NAo+IC0t LSBhL2FyY2gveDg2L3BsYXRmb3JtL29scGMvb2xwY19kdC5jCj4gKysrIGIvYXJjaC94ODYvcGxh dGZvcm0vb2xwYy9vbHBjX2R0LmMKPiBAQCAtMjksMTAgKzI5LDEwIEBAIHN0YXRpYyBwaGFuZGxl IF9faW5pdCBvbHBjX2R0X2dldHNpYmxpbmcocGhhbmRsZSBub2RlKQo+ICAJY29uc3Qgdm9pZCAq YXJnc1tdID0geyAodm9pZCAqKW5vZGUgfTsKPiAgCXZvaWQgKnJlc1tdID0geyAmbm9kZSB9Owo+ ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFfTk9f Tk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlpZiAob2xwY19vZncoInBlZXIiLCBhcmdzLCBy ZXMpIHx8IChzMzIpbm9kZSA9PSAtMSkKPiArCWlmIChvbHBjX29mdygicGVlciIsIGFyZ3MsIHJl cykgfHwgKHMzMilub2RlID09IE5VTUFfTk9fTk9ERSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAly ZXR1cm4gbm9kZTsKPiBAQCAtNDMsMTAgKzQzLDEwIEBAIHN0YXRpYyBwaGFuZGxlIF9faW5pdCBv bHBjX2R0X2dldGNoaWxkKHBoYW5kbGUgbm9kZSkKPiAgCWNvbnN0IHZvaWQgKmFyZ3NbXSA9IHsg KHZvaWQgKilub2RlIH07Cj4gIAl2b2lkICpyZXNbXSA9IHsgJm5vZGUgfTsKPiAgCj4gLQlpZiAo KHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+IC0JaWYgKG9scGNfb2Z3KCJjaGlsZCIsIGFyZ3MsIHJlcykgfHwgKHMz Milub2RlID09IC0xKSB7Cj4gKwlpZiAob2xwY19vZncoImNoaWxkIiwgYXJncywgcmVzKSB8fCAo czMyKW5vZGUgPT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJcHJfZXJyKCJQUk9NOiAlczogZmV0Y2hp bmcgY2hpbGQgZmFpbGVkIVxuIiwgX19mdW5jX18pOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+IEBA IC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IG9scGNfZHRfZ2V0cHJvcGxlbihwaGFu ZGxlIG5vZGUsIGNvbnN0IGNoYXIgKnByb3ApCj4gIAlpbnQgbGVuOwo+ICAJdm9pZCAqcmVzW10g PSB7ICZsZW4gfTsKPiAgCj4gLQlpZiAoKHMzMilub2RlID09IC0xKQo+ICsJaWYgKChzMzIpbm9k ZSA9PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIC0xOwo+ICAKPiAgCWlmIChvbHBjX29mdygi Z2V0cHJvcGxlbiIsIGFyZ3MsIHJlcykpIHsKPiBAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBp bnQgX19pbml0IG9scGNfZHRfbmV4dHByb3AocGhhbmRsZSBub2RlLCBjaGFyICpwcmV2LCBjaGFy ICpidWYpCj4gIAo+ICAJYnVmWzBdID0gJ1wwJzsKPiAgCj4gLQlpZiAoKHMzMilub2RlID09IC0x KQo+ICsJaWYgKChzMzIpbm9kZSA9PSBOVU1BX05PX05PREUpCj4gIAkJcmV0dXJuIC0xOwo+ICAK PiAgCWlmIChvbHBjX29mdygibmV4dHByb3AiLCBhcmdzLCByZXMpIHx8IHN1Y2Nlc3MgIT0gMSkK PiBAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IG9scGNfZHRfcGtnMnBhdGgo cGhhbmRsZSBub2RlLCBjaGFyICpidWYsCj4gIAljb25zdCB2b2lkICphcmdzW10gPSB7ICh2b2lk ICopbm9kZSwgYnVmLCAodm9pZCAqKWJ1ZmxlbiB9Owo+ICAJdm9pZCAqcmVzW10gPSB7IGxlbiB9 Owo+ICAKPiAtCWlmICgoczMyKW5vZGUgPT0gLTEpCj4gKwlpZiAoKHMzMilub2RlID09IE5VTUFf Tk9fTk9ERSkKPiAgCQlyZXR1cm4gLTE7Cj4gIAo+ICAJaWYgKG9scGNfb2Z3KCJwYWNrYWdlLXRv LXBhdGgiLCBhcmdzLCByZXMpIHx8ICpsZW4gPCAxKQo+IEBAIC0xNzYsNyArMTc2LDcgQEAgc3Rh dGljIHBoYW5kbGUgX19pbml0IG9scGNfZHRfZmluZGRldmljZShjb25zdCBjaGFyICpwYXRoKQo+ ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmICgoczMyKSBub2RlID09IC0xKQo+ICsJaWYg KChzMzIpIG5vZGUgPT0gTlVNQV9OT19OT0RFKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldHVy biBub2RlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMg Yi9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKPiBpbmRleCBhN2RhYThhLi5iODg5 NDUyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwo+ICsr KyBiL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwo+IEBAIC00MDg0LDkgKzQwODQs OSBAQCBzdGF0aWMgaW50IGdldF9sZWFzdF91c2VkX2NwdV9vbl9ub2RlKGludCBub2RlKQo+ICAv KiBIZWxwZXIgZm9yIHNlbGVjdGluZyBhIG5vZGUgaW4gcm91bmQgcm9iaW4gbW9kZSAqLwo+ICBz dGF0aWMgaW5saW5lIGludCBtdGlwX2dldF9uZXh0X3JyX25vZGUodm9pZCkKPiAgewo+IC0Jc3Rh dGljIGludCBuZXh0X25vZGUgPSAtMTsKPiArCXN0YXRpYyBpbnQgbmV4dF9ub2RlID0gTlVNQV9O T19OT0RFOwo+ICAKPiAtCWlmIChuZXh0X25vZGUgPT0gLTEpIHsKPiArCWlmIChuZXh0X25vZGUg PT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJbmV4dF9ub2RlID0gZmlyc3Rfb25saW5lX25vZGU7Cj4g IAkJcmV0dXJuIG5leHRfbm9kZTsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZG1h ZW5naW5lLmMgYi9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYwo+IGluZGV4IGYxYTQ0MWFiLi4xYWVl ZmM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL2RtYWVuZ2luZS5jCj4gKysrIGIvZHJpdmVy cy9kbWEvZG1hZW5naW5lLmMKPiBAQCAtMzg2LDcgKzM4Niw4IEBAIEVYUE9SVF9TWU1CT0woZG1h X2lzc3VlX3BlbmRpbmdfYWxsKTsKPiAgc3RhdGljIGJvb2wgZG1hX2NoYW5faXNfbG9jYWwoc3Ry dWN0IGRtYV9jaGFuICpjaGFuLCBpbnQgY3B1KQo+ICB7Cj4gIAlpbnQgbm9kZSA9IGRldl90b19u b2RlKGNoYW4tPmRldmljZS0+ZGV2KTsKPiAtCXJldHVybiBub2RlID09IC0xIHx8IGNwdW1hc2tf dGVzdF9jcHUoY3B1LCBjcHVtYXNrX29mX25vZGUobm9kZSkpOwo+ICsJcmV0dXJuIG5vZGUgPT0g TlVNQV9OT19OT0RFIHx8Cj4gKwkJY3B1bWFza190ZXN0X2NwdShjcHUsIGNwdW1hc2tfb2Zfbm9k ZShub2RlKSk7Cj4gIH0KPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJh bmQvaHcvaGZpMS9hZmZpbml0eS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvYWZmaW5p dHkuYwo+IGluZGV4IDJiYWYzOGMuLjNlOGFjYjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbmZp bmliYW5kL2h3L2hmaTEvYWZmaW5pdHkuYwo+ICsrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9o ZmkxL2FmZmluaXR5LmMKPiBAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgaGZpMV9kZXZfYWZmaW5p dHlfY2xlYW5fdXAoc3RydWN0IGhmaTFfZGV2ZGF0YSAqZGQpCj4gIAlfZGV2X2NvbXBfdmVjdF9j cHVfbWFza19jbGVhbl91cChkZCwgZW50cnkpOwo+ICB1bmxvY2s6Cj4gIAltdXRleF91bmxvY2so Jm5vZGVfYWZmaW5pdHkubG9jayk7Cj4gLQlkZC0+bm9kZSA9IC0xOwo+ICsJZGQtPm5vZGUgPSBO VU1BX05PX05PREU7Cj4gIH0KPiAgCj4gIC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9oZmkxL2luaXQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2luaXQuYwo+ IGluZGV4IDA5MDQ0OTAuLjBiZjQ1NzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2h3L2hmaTEvaW5pdC5jCj4gKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaW5pdC5j Cj4gQEAgLTEzMDMsNyArMTMwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaGZpMV9kZXZkYXRhICpoZmkx X2FsbG9jX2RldmRhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gIAkJZGQtPnVuaXQgPSByZXQ7 Cj4gIAkJbGlzdF9hZGQoJmRkLT5saXN0LCAmaGZpMV9kZXZfbGlzdCk7Cj4gIAl9Cj4gLQlkZC0+ bm9kZSA9IC0xOwo+ICsJZGQtPm5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaGZpMV9kZXZzX2xvY2ssIGZsYWdzKTsKPiAgCWlkcl9wcmVsb2FkX2Vu ZCgpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2RtYXIuYyBiL2RyaXZlcnMvaW9tbXUv ZG1hci5jCj4gaW5kZXggZDljNzQ4Yi4uODZhOWMxOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lv bW11L2RtYXIuYwo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvZG1hci5jCj4gQEAgLTQ3Nyw3ICs0Nzcs NyBAQCBzdGF0aWMgaW50IGRtYXJfcGFyc2Vfb25lX3Joc2Eoc3RydWN0IGFjcGlfZG1hcl9oZWFk ZXIgKmhlYWRlciwgdm9pZCAqYXJnKQo+ICAJCQlpbnQgbm9kZSA9IGFjcGlfbWFwX3B4bV90b19u b2RlKHJoc2EtPnByb3hpbWl0eV9kb21haW4pOwo+ICAKPiAgCQkJaWYgKCFub2RlX29ubGluZShu b2RlKSkKPiAtCQkJCW5vZGUgPSAtMTsKPiArCQkJCW5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAkJ CWRyaGQtPmlvbW11LT5ub2RlID0gbm9kZTsKPiAgCQkJcmV0dXJuIDA7Cj4gIAkJfQo+IEBAIC0x MDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgaW50IGFsbG9jX2lvbW11KHN0cnVjdCBkbWFyX2RyaGRf dW5pdCAqZHJoZCkKPiAgCWlvbW11LT5tc2FnYXcgPSBtc2FnYXc7Cj4gIAlpb21tdS0+c2VnbWVu dCA9IGRyaGQtPnNlZ21lbnQ7Cj4gIAo+IC0JaW9tbXUtPm5vZGUgPSAtMTsKPiArCWlvbW11LT5u b2RlID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCXZlciA9IHJlYWRsKGlvbW11LT5yZWcgKyBETUFS X1ZFUl9SRUcpOwo+ICAJcHJfaW5mbygiJXM6IHJlZ19iYXNlX2FkZHIgJWxseCB2ZXIgJWQ6JWQg Y2FwICVsbHggZWNhcCAlbGx4XG4iLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2ludGVs LWlvbW11LmMgYi9kcml2ZXJzL2lvbW11L2ludGVsLWlvbW11LmMKPiBpbmRleCBmM2NjZjAyLi45 ZjZmYjEzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYwo+ICsrKyBi L2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYwo+IEBAIC0xNzcyLDcgKzE3NzIsNyBAQCBzdGF0 aWMgc3RydWN0IGRtYXJfZG9tYWluICphbGxvY19kb21haW4oaW50IGZsYWdzKQo+ICAJCXJldHVy biBOVUxMOwo+ICAKPiAgCW1lbXNldChkb21haW4sIDAsIHNpemVvZigqZG9tYWluKSk7Cj4gLQlk b21haW4tPm5pZCA9IC0xOwo+ICsJZG9tYWluLT5uaWQgPSBOVU1BX05PX05PREU7Cj4gIAlkb21h aW4tPmZsYWdzID0gZmxhZ3M7Cj4gIAlkb21haW4tPmhhc19pb3RsYl9kZXZpY2UgPSBmYWxzZTsK PiAgCUlOSVRfTElTVF9IRUFEKCZkb21haW4tPmRldmljZXMpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BjaS9pdnR2L2l2dHZmYi5jIGIvZHJpdmVycy9tZWRpYS9wY2kvaXZ0di9pdnR2 ZmIuYwo+IGluZGV4IDNlMDJkZTAuLjgxYmQ0MWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wY2kvaXZ0di9pdnR2ZmIuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGNpL2l2dHYvaXZ0dmZi LmMKPiBAQCAtMTA1NCw3ICsxMDU0LDcgQEAgc3RhdGljIGludCBpdnR2ZmJfaW5pdF92aWRtb2Rl KHN0cnVjdCBpdnR2ICppdHYpCj4gIAo+ICAJLyogR2VuZXJhdGUgdmFsaWQgZmJfaW5mbyAqLwo+ ICAKPiAtCW9pLT5pdnR2ZmJfaW5mby5ub2RlID0gLTE7Cj4gKwlvaS0+aXZ0dmZiX2luZm8ubm9k ZSA9IE5VTUFfTk9fTk9ERTsKPiAgCW9pLT5pdnR2ZmJfaW5mby5mbGFncyA9IEZCSU5GT19GTEFH X0RFRkFVTFQ7Cj4gIAlvaS0+aXZ0dmZiX2luZm8uZmJvcHMgPSAmaXZ0dmZiX29wczsKPiAgCW9p LT5pdnR2ZmJfaW5mby5wYXIgPSBpdHY7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdml2aWQvdml2aWQtb3NkLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZpdmlkL3Zp dmlkLW9zZC5jCj4gaW5kZXggMWE4OTU5My4uNTZhMmQ0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3ZpdmlkL3ZpdmlkLW9zZC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92aXZpZC92aXZpZC1vc2QuYwo+IEBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIGlu dCB2aXZpZF9mYl9pbml0X3ZpZG1vZGUoc3RydWN0IHZpdmlkX2RldiAqZGV2KQo+ICAKPiAgCS8q IEdlbmVyYXRlIHZhbGlkIGZiX2luZm8gKi8KPiAgCj4gLQlkZXYtPmZiX2luZm8ubm9kZSA9IC0x Owo+ICsJZGV2LT5mYl9pbmZvLm5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAlkZXYtPmZiX2luZm8u ZmxhZ3MgPSBGQklORk9fRkxBR19ERUZBVUxUOwo+ICAJZGV2LT5mYl9pbmZvLmZib3BzID0gJnZp dmlkX2ZiX29wczsKPiAgCWRldi0+ZmJfaW5mby5wYXIgPSBkZXY7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWlzYy9zZ2kteHAveHBjX3V2LmMgYi9kcml2ZXJzL21pc2Mvc2dpLXhwL3hwY191di5j Cj4gaW5kZXggMDQ0MWFiZS4uZWVmMzZkZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21pc2Mvc2dp LXhwL3hwY191di5jCj4gKysrIGIvZHJpdmVycy9taXNjL3NnaS14cC94cGNfdXYuYwo+IEBAIC02 MSw3ICs2MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHBjX2hlYXJ0YmVhdF91diAqeHBjX2hlYXJ0YmVh dF91djsKPiAgCQkJCQkgWFBDX05PVElGWV9NU0dfU0laRV9VVikKPiAgI2RlZmluZSBYUENfTk9U SUZZX0lSUV9OQU1FCQkieHBjX25vdGlmeSIKPiAgCj4gLXN0YXRpYyBpbnQgeHBjX21xX25vZGUg PSAtMTsKPiArc3RhdGljIGludCB4cGNfbXFfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIHN0 YXRpYyBzdHJ1Y3QgeHBjX2dydV9tcV91diAqeHBjX2FjdGl2YXRlX21xX3V2Owo+ICBzdGF0aWMg c3RydWN0IHhwY19ncnVfbXFfdXYgKnhwY19ub3RpZnlfbXFfdXY7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYwo+IGluZGV4IDExM2IzOGUuLjRmYWU4 NWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVf bWFpbi5jCj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFp bi5jCj4gQEAgLTY0MTQsNyArNjQxNCw3IEBAIGludCBpeGdiZV9zZXR1cF90eF9yZXNvdXJjZXMo c3RydWN0IGl4Z2JlX3JpbmcgKnR4X3JpbmcpCj4gIHsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9 IHR4X3JpbmctPmRldjsKPiAgCWludCBvcmlnX25vZGUgPSBkZXZfdG9fbm9kZShkZXYpOwo+IC0J aW50IHJpbmdfbm9kZSA9IC0xOwo+ICsJaW50IHJpbmdfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAg CWludCBzaXplOwo+ICAKPiAgCXNpemUgPSBzaXplb2Yoc3RydWN0IGl4Z2JlX3R4X2J1ZmZlcikg KiB0eF9yaW5nLT5jb3VudDsKPiBAQCAtNjUwOCw3ICs2NTA4LDcgQEAgaW50IGl4Z2JlX3NldHVw X3J4X3Jlc291cmNlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwKPiAgewo+ICAJc3Ry dWN0IGRldmljZSAqZGV2ID0gcnhfcmluZy0+ZGV2Owo+ICAJaW50IG9yaWdfbm9kZSA9IGRldl90 b19ub2RlKGRldik7Cj4gLQlpbnQgcmluZ19ub2RlID0gLTE7Cj4gKwlpbnQgcmluZ19ub2RlID0g TlVNQV9OT19OT0RFOwo+ICAJaW50IHNpemU7Cj4gIAo+ICAJc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg aXhnYmVfcnhfYnVmZmVyKSAqIHJ4X3JpbmctPmNvdW50Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L21tcC9mYi9tbXBmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIv bW1wZmIuYwo+IGluZGV4IGVlMjEyYmUuLjI5OGJlOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi9tbXAvZmIvbW1wZmIuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbW1w L2ZiL21tcGZiLmMKPiBAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyBpbnQgZmJfaW5mb19zZXR1 cChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiAgCS8qIEluaXRpYWxpc2Ugc3RhdGljIGZiIHBhcmFt ZXRlcnMuKi8KPiAgCWluZm8tPmZsYWdzID0gRkJJTkZPX0RFRkFVTFQgfCBGQklORk9fUEFSVElB TF9QQU5fT0sgfAo+ICAJCUZCSU5GT19IV0FDQ0VMX1hQQU4gfCBGQklORk9fSFdBQ0NFTF9ZUEFO Owo+IC0JaW5mby0+bm9kZSA9IC0xOwo+ICsJaW5mby0+bm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAg CXN0cmNweShpbmZvLT5maXguaWQsIGZiaS0+bmFtZSk7Cj4gIAlpbmZvLT5maXgudHlwZSA9IEZC X1RZUEVfUEFDS0VEX1BJWEVMUzsKPiAgCWluZm8tPmZpeC50eXBlX2F1eCA9IDA7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHhhMTY4ZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJk ZXYvcHhhMTY4ZmIuYwo+IGluZGV4IGUzMTM0MGYuLjdkNzc1ZGUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92aWRlby9mYmRldi9weGExNjhmYi5jCj4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9w eGExNjhmYi5jCj4gQEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0aWMgaW50IHB4YTE2OGZiX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkgKi8KPiAgCWluZm8tPmZsYWdzID0g RkJJTkZPX0RFRkFVTFQgfCBGQklORk9fUEFSVElBTF9QQU5fT0sgfAo+ICAJCSAgICAgIEZCSU5G T19IV0FDQ0VMX1hQQU4gfCBGQklORk9fSFdBQ0NFTF9ZUEFOOwo+IC0JaW5mby0+bm9kZSA9IC0x Owo+ICsJaW5mby0+bm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCXN0cmxjcHkoaW5mby0+Zml4Lmlk LCBtaS0+aWQsIDE2KTsKPiAgCWluZm8tPmZpeC50eXBlID0gRkJfVFlQRV9QQUNLRURfUElYRUxT Owo+ICAJaW5mby0+Zml4LnR5cGVfYXV4ID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9mYmRldi93MTAwZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvdzEwMGZiLmMKPiBpbmRleCA2 OTYxMDZlLi44YjBmMjBjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvdzEwMGZi LmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3cxMDBmYi5jCj4gQEAgLTcwMyw3ICs3MDMs NyBAQCBpbnQgdzEwMGZiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlp bmZvLT5mYm9wcyA9ICZ3MTAwZmJfb3BzOwo+ICAJaW5mby0+ZmxhZ3MgPSBGQklORk9fREVGQVVM VCB8IEZCSU5GT19IV0FDQ0VMX0NPUFlBUkVBIHwKPiAgCQlGQklORk9fSFdBQ0NFTF9GSUxMUkVD VDsKPiAtCWluZm8tPm5vZGUgPSAtMTsKPiArCWluZm8tPm5vZGUgPSBOVU1BX05PX05PREU7Cj4g IAlpbmZvLT5zY3JlZW5fYmFzZSA9IHJlbWFwcGVkX2ZidWYgKyAoVzEwMF9GQl9CQVNFLU1FTV9X SU5ET1dfQkFTRSk7Cj4gIAlpbmZvLT5zY3JlZW5fc2l6ZSA9IFJFTUFQUEVEX0ZCX0xFTjsKPiAg Cj4gZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1jb21tb24uaCBiL2ZzL29jZnMyL2RsbS9k bG1jb21tb24uaAo+IGluZGV4IGQwNmUyN2UuLjExMTExZjYgMTAwNjQ0Cj4gLS0tIGEvZnMvb2Nm czIvZGxtL2RsbWNvbW1vbi5oCj4gKysrIGIvZnMvb2NmczIvZGxtL2RsbWNvbW1vbi5oCj4gQEAg LTExMjEsNyArMTEyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkbG1fbm9kZV9pdGVyX2luaXQo dW5zaWduZWQgbG9uZyAqbWFwLAo+ICAJCQkJICAgICAgc3RydWN0IGRsbV9ub2RlX2l0ZXIgKml0 ZXIpCj4gIHsKPiAgCW1lbWNweShpdGVyLT5ub2RlX21hcCwgbWFwLCBzaXplb2YoaXRlci0+bm9k ZV9tYXApKTsKPiAtCWl0ZXItPmN1cm5vZGUgPSAtMTsKPiArCWl0ZXItPmN1cm5vZGUgPSBOVU1B X05PX05PREU7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgaW50IGRsbV9ub2RlX2l0ZXJfbmV4 dChzdHJ1Y3QgZGxtX25vZGVfaXRlciAqaXRlcikKPiBkaWZmIC0tZ2l0IGEvZnMvb2NmczIvZGxt L2RsbWRvbWFpbi5jIGIvZnMvb2NmczIvZGxtL2RsbWRvbWFpbi5jCj4gaW5kZXggMmFjZDU4Yi4u MzgxYTMyMyAxMDA2NDQKPiAtLS0gYS9mcy9vY2ZzMi9kbG0vZGxtZG9tYWluLmMKPiArKysgYi9m cy9vY2ZzMi9kbG0vZGxtZG9tYWluLmMKPiBAQCAtNTQ2LDcgKzU0Niw3IEBAIHN0YXRpYyB2b2lk IGRsbV9tYXJrX2RvbWFpbl9sZWF2aW5nKHN0cnVjdCBkbG1fY3R4dCAqZGxtKQo+ICAKPiAgc3Rh dGljIHZvaWQgX19kbG1fcHJpbnRfbm9kZXMoc3RydWN0IGRsbV9jdHh0ICpkbG0pCj4gIHsKPiAt CWludCBub2RlID0gLTEsIG51bSA9IDA7Cj4gKwlpbnQgbm9kZSA9IE5VTUFfTk9fTk9ERSwgbnVt ID0gMDsKPiAgCj4gIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJmRsbS0+c3BpbmxvY2spOwo+ICAKPiBA QCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgZGxtX3NlbmRfb25lX2RvbWFpbl9leGl0KHN0 cnVjdCBkbG1fY3R4dCAqZGxtLCB1MzIgbXNnX3R5cGUsCj4gIAo+ICBzdGF0aWMgdm9pZCBkbG1f YmVnaW5fZXhpdF9kb21haW4oc3RydWN0IGRsbV9jdHh0ICpkbG0pCj4gIHsKPiAtCWludCBub2Rl ID0gLTE7Cj4gKwlpbnQgbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCj4gIAkvKiBTdXBwb3J0IGZv ciBiZWdpbiBleGl0IGRvbWFpbiB3YXMgYWRkZWQgaW4gMS4yICovCj4gIAlpZiAoZGxtLT5kbG1f bG9ja2luZ19wcm90by5wdl9tYWpvciA9PSAxICYmCj4gQEAgLTE0MDcsNyArMTQwNyw3IEBAIHN0 YXRpYyBpbnQgZGxtX3NlbmRfam9pbl9jYW5jZWxzKHN0cnVjdCBkbG1fY3R4dCAqZGxtLAo+ICAJ fQo+ICAKPiAgCXN0YXR1cyA9IDA7Cj4gLQlub2RlID0gLTE7Cj4gKwlub2RlID0gTlVNQV9OT19O T0RFOwo+ICAJd2hpbGUgKChub2RlID0gZmluZF9uZXh0X2JpdChub2RlX21hcCwgTzJOTV9NQVhf Tk9ERVMsCj4gIAkJCQkgICAgIG5vZGUgKyAxKSkgPCBPMk5NX01BWF9OT0RFUykgewo+ICAJCWlm IChub2RlID09IGRsbS0+bm9kZV9udW0pCj4gQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHN0YXRpYyB2 b2lkIGRsbV9zZW5kX2pvaW5fYXNzZXJ0cyhzdHJ1Y3QgZGxtX2N0eHQgKmRsbSwKPiAgCWludCBz dGF0dXMsIG5vZGUsIGxpdmU7Cj4gIAo+ICAJc3RhdHVzID0gMDsKPiAtCW5vZGUgPSAtMTsKPiAr CW5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAl3aGlsZSAoKG5vZGUgPSBmaW5kX25leHRfYml0KG5v ZGVfbWFwLCBPMk5NX01BWF9OT0RFUywKPiAgCQkJCSAgICAgbm9kZSArIDEpKSA8IE8yTk1fTUFY X05PREVTKSB7Cj4gIAkJaWYgKG5vZGUgPT0gZGxtLT5ub2RlX251bSkKPiBAQCAtMTYzMSw3ICsx NjMxLDcgQEAgc3RhdGljIGludCBkbG1fdHJ5X3RvX2pvaW5fZG9tYWluKHN0cnVjdCBkbG1fY3R4 dCAqZGxtKQo+ICAKPiAgCXNwaW5fdW5sb2NrKCZkbG0tPnNwaW5sb2NrKTsKPiAgCj4gLQlub2Rl ID0gLTE7Cj4gKwlub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJd2hpbGUgKChub2RlID0gZmluZF9u ZXh0X2JpdChjdHh0LT5saXZlX21hcCwgTzJOTV9NQVhfTk9ERVMsCj4gIAkJCQkgICAgIG5vZGUg KyAxKSkgPCBPMk5NX01BWF9OT0RFUykgewo+ICAJCWlmIChub2RlID09IGRsbS0+bm9kZV9udW0p Cj4gZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYyBiL2ZzL29jZnMyL2RsbS9k bG1tYXN0ZXIuYwo+IGluZGV4IDgyNmYwNTYuLmU1NGJiYmMgMTAwNjQ0Cj4gLS0tIGEvZnMvb2Nm czIvZGxtL2RsbW1hc3Rlci5jCj4gKysrIGIvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jCj4gQEAg LTExODMsNyArMTE4Myw3IEBAIHN0YXRpYyB2b2lkIGRsbV9iaXRtYXBfZGlmZl9pdGVyX2luaXQo c3RydWN0IGRsbV9iaXRtYXBfZGlmZl9pdGVyICppdGVyLAo+ICAJdW5zaWduZWQgbG9uZyBwMSwg cDI7Cj4gIAlpbnQgaTsKPiAgCj4gLQlpdGVyLT5jdXJub2RlID0gLTE7Cj4gKwlpdGVyLT5jdXJu b2RlID0gTlVNQV9OT19OT0RFOwo+ICAJaXRlci0+b3JpZ19ibSA9IG9yaWdfYm07Cj4gIAlpdGVy LT5jdXJfYm0gPSBjdXJfYm07Cj4gIAo+IGRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kbG0vZGxtcmVj b3ZlcnkuYyBiL2ZzL29jZnMyL2RsbS9kbG1yZWNvdmVyeS5jCj4gaW5kZXggODAyNjM2ZDUuLjcw NGZhOGIgMTAwNjQ0Cj4gLS0tIGEvZnMvb2NmczIvZGxtL2RsbXJlY292ZXJ5LmMKPiArKysgYi9m cy9vY2ZzMi9kbG0vZGxtcmVjb3ZlcnkuYwo+IEBAIC0yOTAzLDcgKzI5MDMsNyBAQCBzdGF0aWMg aW50IGRsbV9zZW5kX2ZpbmFsaXplX3JlY29fbWVzc2FnZShzdHJ1Y3QgZGxtX2N0eHQgKmRsbSkK PiAgCX0KPiAgCWlmIChzdGFnZSA9PSAxKSB7Cj4gIAkJLyogcmVzZXQgdGhlIG5vZGVfaXRlciBi YWNrIHRvIHRoZSB0b3AgYW5kIHNlbmQgZmluYWxpemUyICovCj4gLQkJaXRlci5jdXJub2RlID0g LTE7Cj4gKwkJaXRlci5jdXJub2RlID0gTlVNQV9OT19OT0RFOwo+ICAJCXN0YWdlID0gMjsKPiAg CQlnb3RvIHN0YWdlMjsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZnMvb2NmczIvc3RhY2tfdXNlci5j IGIvZnMvb2NmczIvc3RhY2tfdXNlci5jCj4gaW5kZXggZDJmYjk3Yi4uYTY3M2VmYSAxMDA2NDQK PiAtLS0gYS9mcy9vY2ZzMi9zdGFja191c2VyLmMKPiArKysgYi9mcy9vY2ZzMi9zdGFja191c2Vy LmMKPiBAQCAtMTcxLDcgKzE3MSw3IEBAIHVuaW9uIG9jZnMyX2NvbnRyb2xfbWVzc2FnZSB7Cj4g IHN0YXRpYyBzdHJ1Y3Qgb2NmczJfc3RhY2tfcGx1Z2luIG9jZnMyX3VzZXJfcGx1Z2luOwo+ICAK PiAgc3RhdGljIGF0b21pY190IG9jZnMyX2NvbnRyb2xfb3BlbmVkOwo+IC1zdGF0aWMgaW50IG9j ZnMyX2NvbnRyb2xfdGhpc19ub2RlID0gLTE7Cj4gK3N0YXRpYyBpbnQgb2NmczJfY29udHJvbF90 aGlzX25vZGUgPSBOVU1BX05PX05PREU7Cj4gIHN0YXRpYyBzdHJ1Y3Qgb2NmczJfcHJvdG9jb2xf dmVyc2lvbiBydW5uaW5nX3Byb3RvOwo+ICAKPiAgc3RhdGljIExJU1RfSEVBRChvY2ZzMl9saXZl X2Nvbm5lY3Rpb25fbGlzdCk7Cj4gQEAgLTU4OSw3ICs1ODksNyBAQCBzdGF0aWMgaW50IG9jZnMy X2NvbnRyb2xfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkK PiAgCQkgKiBMYXN0IHZhbGlkIGNsb3NlIGNsZWFycyB0aGUgbm9kZSBudW1iZXIgYW5kIHJlc2V0 cwo+ICAJCSAqIHRoZSBsb2NraW5nIHByb3RvY29sIHZlcnNpb24KPiAgCQkgKi8KPiAtCQlvY2Zz Ml9jb250cm9sX3RoaXNfbm9kZSA9IC0xOwo+ICsJCW9jZnMyX2NvbnRyb2xfdGhpc19ub2RlID0g TlVNQV9OT19OT0RFOwo+ICAJCXJ1bm5pbmdfcHJvdG8ucHZfbWFqb3IgPSAwOwo+ICAJCXJ1bm5p bmdfcHJvdG8ucHZfbWlub3IgPSAwOwo+ICAJfQo+IEBAIC02MTIsNyArNjEyLDcgQEAgc3RhdGlj IGludCBvY2ZzMl9jb250cm9sX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbGUpCj4gIAlwID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG9jZnMyX2NvbnRyb2xfcHJpdmF0 ZSksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCFwKQo+ICAJCXJldHVybiAtRU5PTUVNOwo+IC0JcC0+ b3BfdGhpc19ub2RlID0gLTE7Cj4gKwlwLT5vcF90aGlzX25vZGUgPSBOVU1BX05PX05PREU7Cj4g IAo+ICAJbXV0ZXhfbG9jaygmb2NmczJfY29udHJvbF9sb2NrKTsKPiAgCWZpbGUtPnByaXZhdGVf ZGF0YSA9IHA7Cj4gZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFz ay5jCj4gaW5kZXggNWFlYmUzYi4uNjY0MTgzNiAxMDA2NDQKPiAtLS0gYS9pbml0L2luaXRfdGFz ay5jCj4gKysrIGIvaW5pdC9pbml0X3Rhc2suYwo+IEBAIC0xNTQsNyArMTU0LDcgQEAgc3RydWN0 IHRhc2tfc3RydWN0IGluaXRfdGFzawo+ICAJLnZ0aW1lLnN0YXRlCT0gVlRJTUVfU1lTLAo+ICAj ZW5kaWYKPiAgI2lmZGVmIENPTkZJR19OVU1BX0JBTEFOQ0lORwo+IC0JLm51bWFfcHJlZmVycmVk X25pZCA9IC0xLAo+ICsJLm51bWFfcHJlZmVycmVkX25pZCA9IE5VTUFfTk9fTk9ERSwKPiAgCS5u dW1hX2dyb3VwCT0gTlVMTCwKPiAgCS5udW1hX2ZhdWx0cwk9IE5VTEwsCj4gICNlbmRpZgo+IGRp ZmYgLS1naXQgYS9rZXJuZWwva3RocmVhZC5jIGIva2VybmVsL2t0aHJlYWQuYwo+IGluZGV4IDA4 N2QxOGQuLjc3ZjNkOTQgMTAwNjQ0Cj4gLS0tIGEva2VybmVsL2t0aHJlYWQuYwo+ICsrKyBiL2tl cm5lbC9rdGhyZWFkLmMKPiBAQCAtNjc1LDcgKzY3NSw3IEBAIF9fa3RocmVhZF9jcmVhdGVfd29y a2VyKGludCBjcHUsIHVuc2lnbmVkIGludCBmbGFncywKPiAgewo+ICAJc3RydWN0IGt0aHJlYWRf d29ya2VyICp3b3JrZXI7Cj4gIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gLQlpbnQgbm9k ZSA9IC0xOwo+ICsJaW50IG5vZGUgPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJd29ya2VyID0ga3ph bGxvYyhzaXplb2YoKndvcmtlciksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCF3b3JrZXIpCj4gZGlm ZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9mYWlyLmMgYi9rZXJuZWwvc2NoZWQvZmFpci5jCj4gaW5k ZXggZWUyNzFiYi4uZDgzMGZhNyAxMDA2NDQKPiAtLS0gYS9rZXJuZWwvc2NoZWQvZmFpci5jCj4g KysrIGIva2VybmVsL3NjaGVkL2ZhaXIuYwo+IEBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lkIGlu aXRfbnVtYV9iYWxhbmNpbmcodW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3RydWN0IHRhc2tf c3RydWN0ICpwKQo+ICAKPiAgCS8qIE5ldyBhZGRyZXNzIHNwYWNlLCByZXNldCB0aGUgcHJlZmVy cmVkIG5pZCAqLwo+ICAJaWYgKCEoY2xvbmVfZmxhZ3MgJiBDTE9ORV9WTSkpIHsKPiAtCQlwLT5u dW1hX3ByZWZlcnJlZF9uaWQgPSAtMTsKPiArCQlwLT5udW1hX3ByZWZlcnJlZF9uaWQgPSBOVU1B X05PX05PREU7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiBAQCAtMTE4MSwxMyArMTE4MSwxMyBA QCB2b2lkIGluaXRfbnVtYV9iYWxhbmNpbmcodW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3Ry dWN0IHRhc2tfc3RydWN0ICpwKQo+ICAKPiAgc3RhdGljIHZvaWQgYWNjb3VudF9udW1hX2VucXVl dWUoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKQo+ICB7Cj4gLQlycS0+bnJf bnVtYV9ydW5uaW5nICs9IChwLT5udW1hX3ByZWZlcnJlZF9uaWQgIT0gLTEpOwo+ICsJcnEtPm5y X251bWFfcnVubmluZyArPSAocC0+bnVtYV9wcmVmZXJyZWRfbmlkICE9IE5VTUFfTk9fTk9ERSk7 Cj4gIAlycS0+bnJfcHJlZmVycmVkX3J1bm5pbmcgKz0gKHAtPm51bWFfcHJlZmVycmVkX25pZCA9 PSB0YXNrX25vZGUocCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBhY2NvdW50X251bWFfZGVx dWV1ZShzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCj4gIHsKPiAtCXJxLT5u cl9udW1hX3J1bm5pbmcgLT0gKHAtPm51bWFfcHJlZmVycmVkX25pZCAhPSAtMSk7Cj4gKwlycS0+ bnJfbnVtYV9ydW5uaW5nIC09IChwLT5udW1hX3ByZWZlcnJlZF9uaWQgIT0gTlVNQV9OT19OT0RF KTsKPiAgCXJxLT5ucl9wcmVmZXJyZWRfcnVubmluZyAtPSAocC0+bnVtYV9wcmVmZXJyZWRfbmlk ID09IHRhc2tfbm9kZShwKSk7Cj4gIH0KPiAgCj4gQEAgLTE0MDEsNyArMTQwMSw3IEBAIGJvb2wg c2hvdWxkX251bWFfbWlncmF0ZV9tZW1vcnkoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qg cGFnZSAqIHBhZ2UsCj4gIAkgKiB0d28gZnVsbCBwYXNzZXMgb2YgdGhlICJtdWx0aS1zdGFnZSBu b2RlIHNlbGVjdGlvbiIgdGVzdCB0aGF0IGlzCj4gIAkgKiBleGVjdXRlZCBiZWxvdy4KPiAgCSAq Lwo+IC0JaWYgKChwLT5udW1hX3ByZWZlcnJlZF9uaWQgPT0gLTEgfHwgcC0+bnVtYV9zY2FuX3Nl cSA8PSA0KSAmJgo+ICsJaWYgKChwLT5udW1hX3ByZWZlcnJlZF9uaWQgPT0gTlVNQV9OT19OT0RF IHx8IHAtPm51bWFfc2Nhbl9zZXEgPD0gNCkgJiYKPiAgCSAgICAoY3B1cGlkX3BpZF91bnNldChs YXN0X2NwdXBpZCkgfHwgY3B1cGlkX21hdGNoX3BpZChwLCBsYXN0X2NwdXBpZCkpKQo+ICAJCXJl dHVybiB0cnVlOwo+ICAKPiBAQCAtMTg0OSw3ICsxODQ5LDcgQEAgc3RhdGljIHZvaWQgbnVtYV9t aWdyYXRlX3ByZWZlcnJlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCj4gIAl1bnNpZ25lZCBsb25n IGludGVydmFsID0gSFo7Cj4gIAo+ICAJLyogVGhpcyB0YXNrIGhhcyBubyBOVU1BIGZhdWx0IHN0 YXRpc3RpY3MgeWV0ICovCj4gLQlpZiAodW5saWtlbHkocC0+bnVtYV9wcmVmZXJyZWRfbmlkID09 IC0xIHx8ICFwLT5udW1hX2ZhdWx0cykpCj4gKwlpZiAodW5saWtlbHkocC0+bnVtYV9wcmVmZXJy ZWRfbmlkID09IE5VTUFfTk9fTk9ERSB8fCAhcC0+bnVtYV9mYXVsdHMpKQo+ICAJCXJldHVybjsK PiAgCj4gIAkvKiBQZXJpb2RpY2FsbHkgcmV0cnkgbWlncmF0aW5nIHRoZSB0YXNrIHRvIHRoZSBw cmVmZXJyZWQgbm9kZSAqLwo+IEBAIC0yMDk2LDcgKzIwOTYsNyBAQCBzdGF0aWMgaW50IHByZWZl cnJlZF9ncm91cF9uaWQoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgbmlkKQo+ICAKPiAgc3Rh dGljIHZvaWQgdGFza19udW1hX3BsYWNlbWVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCj4gIHsK PiAtCWludCBzZXEsIG5pZCwgbWF4X25pZCA9IC0xOwo+ICsJaW50IHNlcSwgbmlkLCBtYXhfbmlk ID0gTlVNQV9OT19OT0RFOwo+ICAJdW5zaWduZWQgbG9uZyBtYXhfZmF1bHRzID0gMDsKPiAgCXVu c2lnbmVkIGxvbmcgZmF1bHRfdHlwZXNbMl0gPSB7IDAsIDAgfTsKPiAgCXVuc2lnbmVkIGxvbmcg dG90YWxfZmF1bHRzOwo+IEBAIC0yNjM5LDcgKzI2MzksOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVf c2Nhbl9wZXJpb2Qoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgbmV3X2NwdSkKPiAgCQkgKiB0 aGUgcHJlZmVycmVkIG5vZGUuCj4gIAkJICovCj4gIAkJaWYgKGRzdF9uaWQgPT0gcC0+bnVtYV9w cmVmZXJyZWRfbmlkIHx8Cj4gLQkJICAgIChwLT5udW1hX3ByZWZlcnJlZF9uaWQgIT0gLTEgJiYg c3JjX25pZCAhPSBwLT5udW1hX3ByZWZlcnJlZF9uaWQpKQo+ICsJCSAgICAocC0+bnVtYV9wcmVm ZXJyZWRfbmlkICE9IE5VTUFfTk9fTk9ERSAmJgo+ICsJCQlzcmNfbmlkICE9IHAtPm51bWFfcHJl ZmVycmVkX25pZCkpCj4gIAkJCXJldHVybjsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2xpYi9j cHVtYXNrLmMgYi9saWIvY3B1bWFzay5jCj4gaW5kZXggOGQ2NjZhYi4uYTA4OWMzZiAxMDA2NDQK PiAtLS0gYS9saWIvY3B1bWFzay5jCj4gKysrIGIvbGliL2NwdW1hc2suYwo+IEBAIC0yMDYsNyAr MjA2LDcgQEAgdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBp LCBpbnQgbm9kZSkKPiAgCS8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqLwo+ICAJaSAl PSBudW1fb25saW5lX2NwdXMoKTsKPiAgCj4gLQlpZiAobm9kZSA9PSAtMSkgewo+ICsJaWYgKG5v ZGUgPT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJZm9yX2VhY2hfY3B1KGNwdSwgY3B1X29ubGluZV9t YXNrKQo+ICAJCQlpZiAoaS0tID09IDApCj4gIAkJCQlyZXR1cm4gY3B1Owo+IGRpZmYgLS1naXQg YS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwo+IGluZGV4IDU1NDc4YWIuLjVj Y2Y4OWUgMTAwNjQ0Cj4gLS0tIGEvbW0vaHVnZV9tZW1vcnkuYwo+ICsrKyBiL21tL2h1Z2VfbWVt b3J5LmMKPiBAQCAtMTQ4MCw3ICsxNDgwLDcgQEAgdm1fZmF1bHRfdCBkb19odWdlX3BtZF9udW1h X3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBtZF90IHBtZCkKPiAgCXN0cnVjdCBhbm9uX3Zt YSAqYW5vbl92bWEgPSBOVUxMOwo+ICAJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gIAl1bnNpZ25lZCBs b25nIGhhZGRyID0gdm1mLT5hZGRyZXNzICYgSFBBR0VfUE1EX01BU0s7Cj4gLQlpbnQgcGFnZV9u aWQgPSAtMSwgdGhpc19uaWQgPSBudW1hX25vZGVfaWQoKTsKPiArCWludCBwYWdlX25pZCA9IE5V TUFfTk9fTk9ERSwgdGhpc19uaWQgPSBudW1hX25vZGVfaWQoKTsKPiAgCWludCB0YXJnZXRfbmlk LCBsYXN0X2NwdXBpZCA9IC0xOwo+ICAJYm9vbCBwYWdlX2xvY2tlZDsKPiAgCWJvb2wgbWlncmF0 ZWQgPSBmYWxzZTsKPiBAQCAtMTUyNiw3ICsxNTI2LDcgQEAgdm1fZmF1bHRfdCBkb19odWdlX3Bt ZF9udW1hX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBtZF90IHBtZCkKPiAgCSAqLwo+ICAJ cGFnZV9sb2NrZWQgPSB0cnlsb2NrX3BhZ2UocGFnZSk7Cj4gIAl0YXJnZXRfbmlkID0gbXBvbF9t aXNwbGFjZWQocGFnZSwgdm1hLCBoYWRkcik7Cj4gLQlpZiAodGFyZ2V0X25pZCA9PSAtMSkgewo+ ICsJaWYgKHRhcmdldF9uaWQgPT0gTlVNQV9OT19OT0RFKSB7Cj4gIAkJLyogSWYgdGhlIHBhZ2Ug d2FzIGxvY2tlZCwgdGhlcmUgYXJlIG5vIHBhcmFsbGVsIG1pZ3JhdGlvbnMgKi8KPiAgCQlpZiAo cGFnZV9sb2NrZWQpCj4gIAkJCWdvdG8gY2xlYXJfcG1kbnVtYTsKPiBAQCAtMTUzNCw3ICsxNTM0 LDcgQEAgdm1fZmF1bHRfdCBkb19odWdlX3BtZF9udW1hX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2 bWYsIHBtZF90IHBtZCkKPiAgCj4gIAkvKiBNaWdyYXRpb24gY291bGQgaGF2ZSBzdGFydGVkIHNp bmNlIHRoZSBwbWRfdHJhbnNfbWlncmF0aW5nIGNoZWNrICovCj4gIAlpZiAoIXBhZ2VfbG9ja2Vk KSB7Cj4gLQkJcGFnZV9uaWQgPSAtMTsKPiArCQlwYWdlX25pZCA9IE5VTUFfTk9fTk9ERTsKPiAg CQlpZiAoIWdldF9wYWdlX3VubGVzc196ZXJvKHBhZ2UpKQo+ICAJCQlnb3RvIG91dF91bmxvY2s7 Cj4gIAkJc3Bpbl91bmxvY2sodm1mLT5wdGwpOwo+IEBAIC0xNTU2LDE0ICsxNTU2LDE0IEBAIHZt X2ZhdWx0X3QgZG9faHVnZV9wbWRfbnVtYV9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwbWRf dCBwbWQpCj4gIAlpZiAodW5saWtlbHkoIXBtZF9zYW1lKHBtZCwgKnZtZi0+cG1kKSkpIHsKPiAg CQl1bmxvY2tfcGFnZShwYWdlKTsKPiAgCQlwdXRfcGFnZShwYWdlKTsKPiAtCQlwYWdlX25pZCA9 IC0xOwo+ICsJCXBhZ2VfbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJCWdvdG8gb3V0X3VubG9jazsK PiAgCX0KPiAgCj4gIAkvKiBCYWlsIGlmIHdlIGZhaWwgdG8gcHJvdGVjdCBhZ2FpbnN0IFRIUCBz cGxpdHMgZm9yIGFueSByZWFzb24gKi8KPiAgCWlmICh1bmxpa2VseSghYW5vbl92bWEpKSB7Cj4g IAkJcHV0X3BhZ2UocGFnZSk7Cj4gLQkJcGFnZV9uaWQgPSAtMTsKPiArCQlwYWdlX25pZCA9IE5V TUFfTk9fTk9ERTsKPiAgCQlnb3RvIGNsZWFyX3BtZG51bWE7Cj4gIAl9Cj4gIAo+IEBAIC0xNjI1 LDcgKzE2MjUsNyBAQCB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX251bWFfcGFnZShzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZiwgcG1kX3QgcG1kKQo+ICAJaWYgKGFub25fdm1hKQo+ICAJCXBhZ2VfdW5sb2Nr X2Fub25fdm1hX3JlYWQoYW5vbl92bWEpOwo+ICAKPiAtCWlmIChwYWdlX25pZCAhPSAtMSkKPiAr CWlmIChwYWdlX25pZCAhPSBOVU1BX05PX05PREUpCj4gIAkJdGFza19udW1hX2ZhdWx0KGxhc3Rf Y3B1cGlkLCBwYWdlX25pZCwgSFBBR0VfUE1EX05SLAo+ICAJCQkJZmxhZ3MpOwo+ICAKPiBkaWZm IC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCj4gaW5kZXggYzAwN2ZiNS4uYjc2 OWRiNyAxMDA2NDQKPiAtLS0gYS9tbS9odWdldGxiLmMKPiArKysgYi9tbS9odWdldGxiLmMKPiBA QCAtODg3LDcgKzg4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqZGVxdWV1ZV9odWdlX3BhZ2Vf bm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgZ2ZwX3QgZ2ZwX21hc2ssCj4gIAlzdHJ1Y3Qgem9u ZWxpc3QgKnpvbmVsaXN0Owo+ICAJc3RydWN0IHpvbmUgKnpvbmU7Cj4gIAlzdHJ1Y3Qgem9uZXJl ZiAqejsKPiAtCWludCBub2RlID0gLTE7Cj4gKwlpbnQgbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAg Cj4gIAl6b25lbGlzdCA9IG5vZGVfem9uZWxpc3QobmlkLCBnZnBfbWFzayk7Cj4gIAo+IGRpZmYg LS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jCj4gaW5kZXggNWIwODk0Yi4uZDVmODgzNCAxMDA2 NDQKPiAtLS0gYS9tbS9rc20uYwo+ICsrKyBiL21tL2tzbS5jCj4gQEAgLTU5Nyw3ICs1OTcsNyBA QCBzdGF0aWMgc3RydWN0IHN0YWJsZV9ub2RlICphbGxvY19zdGFibGVfbm9kZV9jaGFpbihzdHJ1 Y3Qgc3RhYmxlX25vZGUgKmR1cCwKPiAgCQljaGFpbi0+Y2hhaW5fcHJ1bmVfdGltZSA9IGppZmZp ZXM7Cj4gIAkJY2hhaW4tPnJtYXBfaGxpc3RfbGVuID0gU1RBQkxFX05PREVfQ0hBSU47Cj4gICNp ZiBkZWZpbmVkIChDT05GSUdfREVCVUdfVk0pICYmIGRlZmluZWQoQ09ORklHX05VTUEpCj4gLQkJ Y2hhaW4tPm5pZCA9IC0xOyAvKiBkZWJ1ZyAqLwo+ICsJCWNoYWluLT5uaWQgPSBOVU1BX05PX05P REU7IC8qIGRlYnVnICovCj4gICNlbmRpZgo+ICAJCWtzbV9zdGFibGVfbm9kZV9jaGFpbnMrKzsK PiAgCj4gZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKPiBpbmRleCA0YWQy ZDI5Li5jMGUwMzQ4IDEwMDY0NAo+IC0tLSBhL21tL21lbW9yeS5jCj4gKysrIGIvbW0vbWVtb3J5 LmMKPiBAQCAtMzU2NCw3ICszNTY0LDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZG9fbnVtYV9wYWdl KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICB7Cj4gIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSA9IHZtZi0+dm1hOwo+ICAJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOwo+IC0JaW50IHBhZ2Vf bmlkID0gLTE7Cj4gKwlpbnQgcGFnZV9uaWQgPSBOVU1BX05PX05PREU7Cj4gIAlpbnQgbGFzdF9j cHVwaWQ7Cj4gIAlpbnQgdGFyZ2V0X25pZDsKPiAgCWJvb2wgbWlncmF0ZWQgPSBmYWxzZTsKPiBA QCAtMzYzMSw3ICszNjMxLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZG9fbnVtYV9wYWdlKHN0cnVj dCB2bV9mYXVsdCAqdm1mKQo+ICAJdGFyZ2V0X25pZCA9IG51bWFfbWlncmF0ZV9wcmVwKHBhZ2Us IHZtYSwgdm1mLT5hZGRyZXNzLCBwYWdlX25pZCwKPiAgCQkJJmZsYWdzKTsKPiAgCXB0ZV91bm1h cF91bmxvY2sodm1mLT5wdGUsIHZtZi0+cHRsKTsKPiAtCWlmICh0YXJnZXRfbmlkID09IC0xKSB7 Cj4gKwlpZiAodGFyZ2V0X25pZCA9PSBOVU1BX05PX05PREUpIHsKPiAgCQlwdXRfcGFnZShwYWdl KTsKPiAgCQlnb3RvIG91dDsKPiAgCX0KPiBAQCAtMzY0NSw3ICszNjQ1LDcgQEAgc3RhdGljIHZt X2ZhdWx0X3QgZG9fbnVtYV9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJCWZsYWdzIHw9 IFRORl9NSUdSQVRFX0ZBSUw7Cj4gIAo+ICBvdXQ6Cj4gLQlpZiAocGFnZV9uaWQgIT0gLTEpCj4g KwlpZiAocGFnZV9uaWQgIT0gTlVNQV9OT19OT0RFKQo+ICAJCXRhc2tfbnVtYV9mYXVsdChsYXN0 X2NwdXBpZCwgcGFnZV9uaWQsIDEsIGZsYWdzKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAt LWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jCj4gaW5kZXgg MmIyYjNjYy4uNzBlMDJmOCAxMDA2NDQKPiAtLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jCj4gKysr IGIvbW0vbWVtb3J5X2hvdHBsdWcuYwo+IEBAIC02ODgsOSArNjg4LDkgQEAgc3RhdGljIHZvaWQg bm9kZV9zdGF0ZXNfY2hlY2tfY2hhbmdlc19vbmxpbmUodW5zaWduZWQgbG9uZyBucl9wYWdlcywK PiAgewo+ICAJaW50IG5pZCA9IHpvbmVfdG9fbmlkKHpvbmUpOwo+ICAKPiAtCWFyZy0+c3RhdHVz X2NoYW5nZV9uaWQgPSAtMTsKPiAtCWFyZy0+c3RhdHVzX2NoYW5nZV9uaWRfbm9ybWFsID0gLTE7 Cj4gLQlhcmctPnN0YXR1c19jaGFuZ2VfbmlkX2hpZ2ggPSAtMTsKPiArCWFyZy0+c3RhdHVzX2No YW5nZV9uaWQgPSBOVU1BX05PX05PREU7Cj4gKwlhcmctPnN0YXR1c19jaGFuZ2VfbmlkX25vcm1h bCA9IE5VTUFfTk9fTk9ERTsKPiArCWFyZy0+c3RhdHVzX2NoYW5nZV9uaWRfaGlnaCA9IE5VTUFf Tk9fTk9ERTsKPiAgCj4gIAlpZiAoIW5vZGVfc3RhdGUobmlkLCBOX01FTU9SWSkpCj4gIAkJYXJn LT5zdGF0dXNfY2hhbmdlX25pZCA9IG5pZDsKPiBAQCAtMTQ4NCw5ICsxNDg0LDkgQEAgc3RhdGlj IHZvaWQgbm9kZV9zdGF0ZXNfY2hlY2tfY2hhbmdlc19vZmZsaW5lKHVuc2lnbmVkIGxvbmcgbnJf cGFnZXMsCj4gIAl1bnNpZ25lZCBsb25nIHByZXNlbnRfcGFnZXMgPSAwOwo+ICAJZW51bSB6b25l X3R5cGUgenQ7Cj4gIAo+IC0JYXJnLT5zdGF0dXNfY2hhbmdlX25pZCA9IC0xOwo+IC0JYXJnLT5z dGF0dXNfY2hhbmdlX25pZF9ub3JtYWwgPSAtMTsKPiAtCWFyZy0+c3RhdHVzX2NoYW5nZV9uaWRf aGlnaCA9IC0xOwo+ICsJYXJnLT5zdGF0dXNfY2hhbmdlX25pZCA9IE5VTUFfTk9fTk9ERTsKPiAr CWFyZy0+c3RhdHVzX2NoYW5nZV9uaWRfbm9ybWFsID0gTlVNQV9OT19OT0RFOwo+ICsJYXJnLT5z dGF0dXNfY2hhbmdlX25pZF9oaWdoID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCS8qCj4gIAkgKiBD aGVjayB3aGV0aGVyIG5vZGVfc3RhdGVzW05fTk9STUFMX01FTU9SWV0gd2lsbCBiZSBjaGFuZ2Vk Lgo+IGRpZmYgLS1naXQgYS9tbS9tZW1wb2xpY3kuYyBiL21tL21lbXBvbGljeS5jCj4gaW5kZXgg NTgzN2EwNi4uZTRmODI0OCAxMDA2NDQKPiAtLS0gYS9tbS9tZW1wb2xpY3kuYwo+ICsrKyBiL21t L21lbXBvbGljeS5jCj4gQEAgLTIyNzgsNyArMjI3OCw3IEBAIGludCBtcG9sX21pc3BsYWNlZChz dHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxv bmcKPiAgCXVuc2lnbmVkIGxvbmcgcGdvZmY7Cj4gIAlpbnQgdGhpc2NwdSA9IHJhd19zbXBfcHJv Y2Vzc29yX2lkKCk7Cj4gIAlpbnQgdGhpc25pZCA9IGNwdV90b19ub2RlKHRoaXNjcHUpOwo+IC0J aW50IHBvbG5pZCA9IC0xOwo+ICsJaW50IHBvbG5pZCA9IE5VTUFfTk9fTk9ERTsKPiAgCWludCBy ZXQgPSAtMTsKPiAgCj4gIAlwb2wgPSBnZXRfdm1hX3BvbGljeSh2bWEsIGFkZHIpOwo+IGRpZmYg LS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmMKPiBpbmRleCBhOTE5YmE1 Li45ZDM4ZDljIDEwMDY0NAo+IC0tLSBhL21tL3BhZ2VfYWxsb2MuYwo+ICsrKyBiL21tL3BhZ2Vf YWxsb2MuYwo+IEBAIC01ODQ2LDcgKzU4NDYsNyBAQCBpbnQgX19tZW1pbml0IF9fZWFybHlfcGZu X3RvX25pZCh1bnNpZ25lZCBsb25nIHBmbiwKPiAgCQlyZXR1cm4gc3RhdGUtPmxhc3RfbmlkOwo+ ICAKPiAgCW5pZCA9IG1lbWJsb2NrX3NlYXJjaF9wZm5fbmlkKHBmbiwgJnN0YXJ0X3BmbiwgJmVu ZF9wZm4pOwo+IC0JaWYgKG5pZCAhPSAtMSkgewo+ICsJaWYgKG5pZCAhPSBOVU1BX05PX05PREUp IHsKPiAgCQlzdGF0ZS0+bGFzdF9zdGFydCA9IHN0YXJ0X3BmbjsKPiAgCQlzdGF0ZS0+bGFzdF9l bmQgPSBlbmRfcGZuOwo+ICAJCXN0YXRlLT5sYXN0X25pZCA9IG5pZDsKPiBAQCAtNjYwNyw3ICs2 NjA3LDcgQEAgdW5zaWduZWQgbG9uZyBfX2luaXQgbm9kZV9tYXBfcGZuX2FsaWdubWVudCh2b2lk KQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIGFjY2xfbWFzayA9IDAsIGxhc3RfZW5kID0gMDsKPiAg CXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZCwgbWFzazsKPiAtCWludCBsYXN0X25pZCA9IC0xOwo+ ICsJaW50IGxhc3RfbmlkID0gTlVNQV9OT19OT0RFOwo+ICAJaW50IGksIG5pZDsKPiAgCj4gIAlm b3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgJnN0YXJ0LCAmZW5kLCAmbmlk KSB7Cj4gZGlmZiAtLWdpdCBhL21tL3BhZ2VfZXh0LmMgYi9tbS9wYWdlX2V4dC5jCj4gaW5kZXgg YWU0NGY3YS4uZGZiMDIwNiAxMDA2NDQKPiAtLS0gYS9tbS9wYWdlX2V4dC5jCj4gKysrIGIvbW0v cGFnZV9leHQuYwo+IEBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGludCBfX21lbWluaXQgb25s aW5lX3BhZ2VfZXh0KHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAo+ICAJc3RhcnQgPSBTRUNUSU9O X0FMSUdOX0RPV04oc3RhcnRfcGZuKTsKPiAgCWVuZCA9IFNFQ1RJT05fQUxJR05fVVAoc3RhcnRf cGZuICsgbnJfcGFnZXMpOwo+ICAKPiAtCWlmIChuaWQgPT0gLTEpIHsKPiArCWlmIChuaWQgPT0g TlVNQV9OT19OT0RFKSB7Cj4gIAkJLyoKPiAgCQkgKiBJbiB0aGlzIGNhc2UsICJuaWQiIGFscmVh ZHkgZXhpc3RzIGFuZCBjb250YWlucyB2YWxpZCBtZW1vcnkuCj4gIAkJICogInN0YXJ0X3BmbiIg cGFzc2VkIHRvIHVzIGlzIGEgcGZuIHdoaWNoIGlzIGFuIGFyZyBmb3IKPiBkaWZmIC0tZ2l0IGEv bmV0L2NvcmUvcGt0Z2VuLmMgYi9uZXQvY29yZS9wa3RnZW4uYwo+IGluZGV4IDZhYzkxOTguLmFm M2E3NDYgMTAwNjQ0Cj4gLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmMKPiArKysgYi9uZXQvY29yZS9w a3RnZW4uYwo+IEBAIC0zNjI1LDcgKzM2MjUsNyBAQCBzdGF0aWMgaW50IHBrdGdlbl9hZGRfZGV2 aWNlKHN0cnVjdCBwa3RnZW5fdGhyZWFkICp0LCBjb25zdCBjaGFyICppZm5hbWUpCj4gIAlwa3Rf ZGV2LT5zdmxhbl9jZmkgPSAwOwo+ICAJcGt0X2Rldi0+c3ZsYW5faWQgPSAweGZmZmY7Cj4gIAlw a3RfZGV2LT5idXJzdCA9IDE7Cj4gLQlwa3RfZGV2LT5ub2RlID0gLTE7Cj4gKwlwa3RfZGV2LT5u b2RlID0gTlVNQV9OT19OT0RFOwo+ICAKPiAgCWVyciA9IHBrdGdlbl9zZXR1cF9kZXYodC0+bmV0 LCBwa3RfZGV2LCBpZm5hbWUpOwo+ICAJaWYgKGVycikKPiBkaWZmIC0tZ2l0IGEvbmV0L3FydHIv cXJ0ci5jIGIvbmV0L3FydHIvcXJ0ci5jCj4gaW5kZXggODZlMWUzNy4uMGM1NmFlMiAxMDA2NDQK PiAtLS0gYS9uZXQvcXJ0ci9xcnRyLmMKPiArKysgYi9uZXQvcXJ0ci9xcnRyLmMKPiBAQCAtMTAx LDcgKzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHFydHJfc29jayAqcXJ0cl9zayhzdHJ1 Y3Qgc29jayAqc2spCj4gIAlyZXR1cm4gY29udGFpbmVyX29mKHNrLCBzdHJ1Y3QgcXJ0cl9zb2Nr LCBzayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgcXJ0cl9sb2NhbF9uaWQgPSAt MTsKPiArc3RhdGljIHVuc2lnbmVkIGludCBxcnRyX2xvY2FsX25pZCA9IE5VTUFfTk9fTk9ERTsK PiAgCj4gIC8qIGZvciBub2RlIGlkcyAqLwo+ICBzdGF0aWMgUkFESVhfVFJFRShxcnRyX25vZGVz LCBHRlBfS0VSTkVMKTsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9iZW5jaC9udW1hLmMgYi90 b29scy9wZXJmL2JlbmNoL251bWEuYwo+IGluZGV4IDQ0MTk1NTEuLmUwYWQ1ZjEgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvcGVyZi9iZW5jaC9udW1hLmMKPiArKysgYi90b29scy9wZXJmL2JlbmNoL251 bWEuYwo+IEBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIGNwdV9zZXRfdCBiaW5kX3RvX25vZGUo aW50IHRhcmdldF9ub2RlKQo+ICAKPiAgCUNQVV9aRVJPKCZtYXNrKTsKPiAgCj4gLQlpZiAodGFy Z2V0X25vZGUgPT0gLTEpIHsKPiArCWlmICh0YXJnZXRfbm9kZSA9PSBOVU1BX05PX05PREUpIHsK PiAgCQlmb3IgKGNwdSA9IDA7IGNwdSA8IGctPnAubnJfY3B1czsgY3B1KyspCj4gIAkJCUNQVV9T RVQoY3B1LCAmbWFzayk7Cj4gIAl9IGVsc2Ugewo+IEBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGlj IHZvaWQgYmluZF90b19tZW1ub2RlKGludCBub2RlKQo+ICAJdW5zaWduZWQgbG9uZyBub2RlbWFz azsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKG5vZGUgPT0gLTEpCj4gKwlpZiAobm9kZSA9PSBO VU1BX05PX05PREUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCUJVR19PTihnLT5wLm5yX25vZGVzID4g KGludClzaXplb2Yobm9kZW1hc2spKjgpOwo+IEBAIC0xMzYzLDcgKzEzNjMsNyBAQCBzdGF0aWMg dm9pZCBpbml0X3RocmVhZF9kYXRhKHZvaWQpCj4gIAkJaW50IGNwdTsKPiAgCj4gIAkJLyogQWxs b3cgYWxsIG5vZGVzIGJ5IGRlZmF1bHQ6ICovCj4gLQkJdGQtPmJpbmRfbm9kZSA9IC0xOwo+ICsJ CXRkLT5iaW5kX25vZGUgPSBOVU1BX05PX05PREU7Cj4gIAo+ICAJCS8qIEFsbG93IGFsbCBDUFVz IGJ5IGRlZmF1bHQ6ICovCj4gIAkJQ1BVX1pFUk8oJnRkLT5iaW5kX2NwdW1hc2spOwo+Cg==