Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing
Daeho Jeong <[email protected]> Mon, 3 Aug 2026 09:18:33 -0700
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CACOAw_w_ksEhi+56ENJqq9GTpPZvJhR3Q7v9GCVTaNQkf7YWnQ@mail.gmail.com> |
T24gU3VuLCBBdWcgMiwgMjAyNiBhdCA3OjAw4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn PiB3cm90ZToKPgo+IE9uIDcvMzAvMjYgMjM6NDYsIERhZWhvIEplb25nIHdyb3RlOgo+ID4gRnJv bTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+Cj4gPiBUaGlzIHBhdGNo IGFkZHMgYSBkeW5hbWljIG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhpc3RpbmcgZGV2aWNl Cj4gPiBhbGlhc2luZyBmdW5jdGlvbmFsaXR5LiBJdCBhbGxvd3MgdXNlcnMgdG8gZHluYW1pY2Fs bHkgcmVzZXJ2ZSBvcgo+ID4gcmVsZWFzZSBzcGVjaWZpYyBkZXZpY2VzIGZyb20gdGhlIGZpbGVz eXN0ZW0ncyBmcmVlIHBvb2wgYXQgcnVudGltZQo+ID4gdGhyb3VnaCBuZXcgaW9jdGxzLgo+ID4K PiA+IFRvIHN1cHBvcnQgdGhpcywgdGhyZWUgbmV3IGlvY3RscyBhcmUgaW50cm9kdWNlZDoKPiA+ IC0gRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6IFRoaXMgcmVjbGFpbXMgdGhlIHNwYWNlIG9j Y3VwaWVkIGJ5IGEKPiA+ICAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBwZXJmb3Jt cyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPiA+ICAgIHZpY3RpbSBpbmZvcm1hdGlvbiBm b3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3MgdGhlIHNlZ21lbnRzIGFzIGluLXVzZQo+ID4gICAg dG8gcHJldmVudCBuZXcgYWxsb2NhdGlvbnMsIGFuZCB0aGVuIHRyaWdnZXJzIEdDIHRvIG1pZ3Jh dGUgZXhpc3RpbmcKPiA+ICAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSByYW5nZS4gRmluYWxseSwg aXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+ID4gICAgU0lUIHRvIGVmZmVjdGl2ZWx5 IGV4Y2x1ZGUgdGhlIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4gPgo+ID4gLSBG MkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3Bh Y2Ugb2YgYQo+ID4gICAgcHJldmlvdXNseSByZXNlcnZlZCBkZXZpY2UgYWxpYXNpbmcgZmlsZS4g SXQgdHJ1bmNhdGVzIHRoZSBibG9ja3MKPiA+ICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwg d2hpY2ggbWFrZXMgdGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+ICAgIGZpbGVzeXN0ZW0g YWxsb2NhdGlvbiBhZ2Fpbi4KPiA+Cj4gPiAtIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVT OiBUaGlzIHJldHJpZXZlcyB0aGUgY3VycmVudCBhbGlhc2luZwo+ID4gICAgc3RhdHVzIG9mIGEg ZGV2aWNlIGFsaWFzaW5nIGZpbGUsIHJldHVybmluZyB3aGV0aGVyIHRoZSBmaWxlIGlzCj4gPiAg ICByZWxlYXNlZCAoaW5hY3RpdmUgYWxpYXMpIG9yIHJlc2VydmVkIChhY3RpdmUgYWxpYXMsIHdp dGggYmxvY2tzCj4gPiAgICBmdWxseSBhbGxvY2F0ZWQgb24gdGhlIGRldmljZSkuCj4gPgo+ID4g U2lnbmVkLW9mZi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+IC0t LQo+ID4gdjY6IGZpeGVkIGR1cGxpY2F0ZWQgYmxvY2sgcmVzZXJ2YXRpb25zIGFuZCByYWNpbmcg dy8gbW1hcC4KPiA+ICAgICAgYWRkZWQgdGhlIGV4dGVudCBhbGlnbm1lbnQgY2hlY2sgZm9yIGRl dmljZSBhbGlhc2luZyBhcmVhcy4KPiA+IHY1OiBwcmV2ZW50ZWQgbmV3IHNlZ21lbnQgYWxsb2Nh dGlvbiBvbiBkZXZpY2VzIHVuZGVyZ29pbmcgcmVzZXJ2YXRpb24KPiA+ICAgICAgb3Igd2l0aCBh Y3RpdmUgYWxpYXNlcy4KPiA+ICAgICAgdXNlZCBpbi1tZW1vcnkgc3RydWN0IHRvIHJlc2VydmUg YmxvY2tzIGZvciBkZXZpY2UgYWxpYXNpbmcuCj4gPiAgICAgIGNsZWFyZWQgcHJlZnJlZSAoUFJF KSBkaXJ0eSBzZWdtZW50IGJpdG1hcC4KPiA+IHY0OiByZW5hbWVkIGludGVyZmFjZXMuCj4gPiAg ICAgIGZpeGVkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIGNoZWNrcG9pbnQ9ZGlzYWJsZSBtb3Vu dCBhbmQgaW9jdGxzLgo+ID4gICAgICByZWZhY3RvcmVkIHNlZ21lbnQgcmVzZXJ2YXRpb24gcGFy dC4KPiA+ICAgICAgbW9kaWZpZWQgbG9jayB1c2FnZS4KPiA+IHYzOiBhZGQgQ0FQX1NZU19BRE1J TiBhbmQgY2hlY2twb2ludD1kaXNhYmxlZCBjaGVjay4KPiA+ICAgICAgcmVtb3ZlIGEgZjJmcyBz cGVjaWZpYyBmbGFnIGV4cG9zZWQgd2l0aCBnZXRmbGFncy4KPiA+IHYyOiBwcmV2ZW50IG9wZXJh dGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJsZWQuCj4gPiAtLS0KPiA+IC0tLQo+ID4gICBE b2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IHwgIDM1ICsrKysKPiA+ICAgZnMvZjJm cy9kYXRhLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ID4gICBmcy9mMmZzL2V4dGVu dF9jYWNoZS5jICAgICAgICAgICAgIHwgICA3ICsKPiA+ICAgZnMvZjJmcy9mMmZzLmggICAgICAg ICAgICAgICAgICAgICB8ICAxOSArLQo+ID4gICBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAg ICAgICAgIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgIGZzL2YyZnMv Z2MuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKystLQo+ID4gICBmcy9mMmZzL25hbWVp LmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4gPiAgIGZzL2YyZnMvc2VnbWVudC5jICAg ICAgICAgICAgICAgICAgfCAxNzYgKysrKysrKysrKysrKy0tLS0tLQo+ID4gICBmcy9mMmZzL3Nl Z21lbnQuaCAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwo+ID4gICBmcy9mMmZzL3N1cGVyLmMg ICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKysKPiA+ICAgaW5jbHVkZS91YXBpL2xpbnV4L2Yy ZnMuaCAgICAgICAgICB8ICAgNyArCj4gPiAgIDExIGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRp b25zKCspLCA2OCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv bi9maWxlc3lzdGVtcy9mMmZzLnJzdCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5y c3QKPiA+IGluZGV4IDhjNGExNGFlNDQ0Zi4uMWE1ZmQ0YWZlNjA5IDEwMDY0NAo+ID4gLS0tIGEv RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gKysrIGIvRG9jdW1lbnRhdGlv bi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gQEAgLTEwNDUsNiArMTA0NSw0MSBAQCBTbywgdGhl IGtleSBpZGVhIGlzLCB1c2VyIGNhbiBkbyBhbnkgZmlsZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRj LCBhbmQKPiA+ICAgcmVjbGFpbSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIHVzZSwgd2hpbGUgdGhlIHNw YWNlIGlzIGNvdW50ZWQgYXMgL2RhdGEuCj4gPiAgIFRoYXQgZG9lc24ndCByZXF1aXJlIG1vZGlm eWluZyBwYXJ0aXRpb24gc2l6ZSBhbmQgZmlsZXN5c3RlbSBmb3JtYXQuCj4gPgo+ID4gK0R5bmFt aWMgRGV2aWNlIEFsaWFzaW5nIE1hbmFnZW1lbnQKPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPiArCj4gPiArSW4gYWRkaXRpb24gdG8gc3RhdGljIGRldmljZSBhbGlh c2luZyBieSBkZWxldGluZyB0aGUgYWxpYXNpbmcgZmlsZSwgRjJGUwo+ID4gK3N1cHBvcnRzIGR5 bmFtaWMgbWFuYWdlbWVudCBvZiBkZXZpY2UgYWxpYXNpbmcuIFRoaXMgbWVjaGFuaXNtIGFsbG93 cyB0aGUgc3lzdGVtCj4gPiArdG8gZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBwYXJ0aXRpb24gb3du ZXJzaGlwIGJldHdlZW4gRjJGUyB1c2VyZGF0YSBhbmQgZXh0ZXJuYWwKPiA+ICtlbnRpdGllcyAo ZS5nLiwgelJBTSwgcmF3IHBhcnRpdGlvbikgYmFzZWQgb24gc3lzdGVtIHJlcXVpcmVtZW50cyB3 aXRob3V0Cj4gPiArZGVsZXRpbmcgdGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIG9yIHJlcXVpcmlu ZyB1bm1vdW50L3JlbW91bnQuCj4gPiArCj4gPiArVGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIGlz IGNyZWF0ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGZvcm1hdCBvZiB0aGUgZmlsZSBzeXN0ZW0KPiA+ ICthbmQgcmVtYWlucyBhcyBhIHBlcnNpc3RlbnQgY29udHJvbCBlbnRpdHkgKGlvY3RsIGdhdGV3 YXkpIGluIHRoZSByb290IGRpcmVjdG9yeS4KPiA+ICsKPiA+ICstIFBhcnRpdGlvbiBSZXNlcnZh dGlvbiAoSW4tc2VydmljZSB0byBBbGlhc2VkKQo+ID4gKyAgV2hlbiBhIHNwZWNpZmljIHBhcnRp dGlvbiBuZWVkcyB0byBiZSBkZWRpY2F0ZWQgdG8gZXh0ZXJuYWwgc2VydmljZXMgKGUuZy4sIHpS QU0pLAo+ID4gKyAgYSB1c2VyIGNhbiByZXNlcnZlIHRoZSBkZXZpY2UgYWxpYXMgcmFuZ2Ugdmlh IGlvY3RsLiBUaGUga2VybmVsIHJlc2V0cyBHQyB2aWN0aW0KPiA+ICsgIGluZm9ybWF0aW9uIGZv ciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyBzZWdtZW50cyBhcyBpbi11c2UgdG8gcHJldmVudCBu ZXcKPiA+ICsgIGFsbG9jYXRpb25zLCBhbmQgdHJpZ2dlcnMgZm9yY2VkIEdDIHRvIG1pZ3JhdGUg ZXhpc3RpbmcgdmFsaWQgZGF0YSBvdXQgb2YgdGhlCj4gPiArICByYW5nZS4gRmluYWxseSwgaXQg cmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZSBTSVQgdG8gZWZmZWN0aXZlbHkgZXhjbHVkZSB0 aGUKPiA+ICsgIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4gPiArCj4gPiArLSBQ YXJ0aXRpb24gUmVsZWFzZSAoQWxpYXNlZCB0byBJbi1zZXJ2aWNlKQo+ID4gKyAgV2hlbiBleHRl cm5hbCB1c2FnZSBjb25jbHVkZXMsIHRoZSBzcGFjZSBpcyByZWNsYWltZWQgbm90IGJ5IGRlbGV0 aW5nIHRoZSBmaWxlLAo+ID4gKyAgYnV0IHRocm91Z2ggdGhlIHJlbGVhc2UgaW9jdGwuIFRoZSBr ZXJuZWwgdHJ1bmNhdGVzIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGgKPiA+ICsgIHRoZSBmaWxlLCBy ZWxlYXNpbmcgdGhlbSBiYWNrIHRvIGdlbmVyYWwgZmlsZXN5c3RlbSBhbGxvY2F0aW9uLgo+ID4g Kwo+ID4gKy4uIGNvZGUtYmxvY2s6Ogo+ID4gKwo+ID4gKyAgICMgZjJmc19pbyBkZXZfYWxpYXMg cmVsZWFzZSAvbW50L2YyZnMvdmRjLmZpbGUKPiA+ICsgICAjIGRmIC1oCj4gPiArICAgL2Rldi92 ZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICA3NTNNICAgNjRHICAgMiUgL21udC9m MmZzCj4gPiArCj4gPiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZXNlcnZlIC9tbnQvZjJmcy92 ZGMuZmlsZQo+ID4gKyAgICMgZGYgLWgKPiA+ICsgICAvZGV2L3ZkYiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA2NEcgICAzM0cgICAzMkcgIDUyJSAvbW50L2YyZnMKPiA+ICsKPiA+ICAgUGVy LWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQKPiA+ICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9kYXRh LmMgYi9mcy9mMmZzL2RhdGEuYwo+ID4gaW5kZXggYWMxY2Y0ZGUzZDYyLi44OTJkNTk0MDQ4Yjcg MTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+ID4gKysrIGIvZnMvZjJmcy9kYXRhLmMK PiA+IEBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQgZjJmc19yZXNlcnZlX25ld19ibG9ja3Moc3Ry dWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3VudCkKPiA+Cj4gPiAgICAgICBpZiAo dW5saWtlbHkoaXNfaW5vZGVfZmxhZ19zZXQoZG4tPmlub2RlLCBGSV9OT19BTExPQykpKQo+ID4g ICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gLSAgICAgZXJyID0gaW5jX3ZhbGlkX2Js b2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUpOwo+ID4gKyAgICAgZXJyID0g aW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNl KTsKPiA+ICAgICAgIGlmICh1bmxpa2VseShlcnIpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4g ZXJyOwo+ID4KPiA+IEBAIC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0aWMgaW50IF9fYWxsb2NhdGVf ZGF0YV9ibG9jayhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIGludCBzZWdfdHlwZSkKPiA+Cj4g PiAgICAgICBkbi0+ZGF0YV9ibGthZGRyID0gZjJmc19kYXRhX2Jsa2FkZHIoZG4pOwo+ID4gICAg ICAgaWYgKGRuLT5kYXRhX2Jsa2FkZHIgPT0gTlVMTF9BRERSKSB7Cj4gPiAtICAgICAgICAgICAg IGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNvdW50LCB0cnVl KTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4t Pmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgaWYgKHVubGlr ZWx5KGVycikpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ICAgICAg IH0KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jIGIvZnMvZjJmcy9leHRl bnRfY2FjaGUuYwo+ID4gaW5kZXggNjFmNmI5NzE0MzY2Li4zYTczN2RiMGM5ZTEgMTAwNjQ0Cj4g PiAtLS0gYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4gPiArKysgYi9mcy9mMmZzL2V4dGVudF9j YWNoZS5jCj4gPiBAQCAtNjIsNiArNjIsMTMgQEAgYm9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2Nh Y2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBlaS5ibGssIGVpLmZv ZnMsIGVpLmxlbik7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4g ICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIGlmICgoZWkuYmxrICUgQkxL U19QRVJfU0VDKHNiaSkpIHx8IChlaS5sZW4gJSBCTEtTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiJXM6IGRldmljZSBhbGlhcyBpbm9k ZSAoaW5vPSVsbHgpJ3MgZXh0ZW50IGluZm8gWyV1LCAldSwgJXVdIGlzIG5vdCBhbGlnbmVkIHRv IHNlY3Rpb24gc2l6ZSAldSIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBpbm9kZS0+aV9pbm8sIGVpLmJsaywgZWkuZm9mcywgZWkubGVuLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCTEtTX1BFUl9TRUMoc2JpKSk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gICAgICAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9m cy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gPiBpbmRleCBmMTc3NGQ0ZTE4ZDIuLmYy NGUzMGJiNWMzZCAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPiArKysgYi9mcy9m MmZzL2YyZnMuaAo+ID4gQEAgLTE0MDQsNiArMTQwNCw4IEBAIHN0cnVjdCBmMmZzX2Rldl9pbmZv IHsKPiA+ICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9zZWdtZW50czsKPiA+ICAgICAgIGJsb2Nr X3Qgc3RhcnRfYmxrOwo+ID4gICAgICAgYmxvY2tfdCBlbmRfYmxrOwo+ID4gKyAgICAgYm9vbCBo YXNfYWxpYXM7Cj4gPiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPiA+ICAgI2lmZGVmIENPTkZJ R19CTEtfREVWX1pPTkVECj4gPiAgICAgICB1bnNpZ25lZCBpbnQgbnJfYmxrejsgICAgICAgICAg IC8qIFRvdGFsIG51bWJlciBvZiB6b25lcyAqLwo+ID4gICAgICAgdW5zaWduZWQgbG9uZyAqYmxr el9zZXE7ICAgICAgICAvKiBCaXRtYXAgaW5kaWNhdGluZyBzZXF1ZW50aWFsIHpvbmVzICovCj4g PiBAQCAtMTg1Nyw2ICsxODU5LDcgQEAgc3RydWN0IGYyZnNfc2JfaW5mbyB7Cj4gPiAgICAgICBi bG9ja190IGxhc3RfdmFsaWRfYmxvY2tfY291bnQ7ICAgICAgICAgLyogZm9yIHJlY292ZXJ5ICov Cj4gPiAgICAgICBibG9ja190IHJlc2VydmVkX2Jsb2NrczsgICAgICAgICAgICAgICAgLyogY29u ZmlndXJhYmxlIHJlc2VydmVkIGJsb2NrcyAqLwo+ID4gICAgICAgYmxvY2tfdCBjdXJyZW50X3Jl c2VydmVkX2Jsb2NrczsgICAgICAgIC8qIGN1cnJlbnQgcmVzZXJ2ZWQgYmxvY2tzICovCj4gPiAr ICAgICBibG9ja190IGFsaWFzX3Jlc2VydmVkX2Jsb2NrczsgICAgICAgICAgLyogcmVzZXJ2ZWQg YmxvY2tzIGZvciBkZXZpY2UgYWxpYXMgKi8KPiA+Cj4gPiAgICAgICAvKiBBZGRpdGlvbmFsIHRy YWNraW5nIGZvciBubyBjaGVja3BvaW50IG1vZGUgKi8KPiA+ICAgICAgIGJsb2NrX3QgdW51c2Fi bGVfYmxvY2tfY291bnQ7ICAgICAgICAgICAvKiAjIG9mIGJsb2NrcyBzYXZlZCBieSBsYXN0IGNw ICovCj4gPiBAQCAtMjU1OSw3ICsyNTYyLDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg Z2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAg ICAgICBibG9ja190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPgo+ID4gICAgICAgYXZhaWxf dXNlcl9ibG9ja19jb3VudCA9IHNiaS0+dXNlcl9ibG9ja19jb3VudCAtCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3M7 Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9y ZXNlcnZlZF9ibG9ja3MgLQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrczsKPiA+Cj4gPiAgICAgICBpZiAodGVzdF9vcHQo c2JpLCBSRVNFUlZFX1JPT1QpICYmICFfX2FsbG93X3Jlc2VydmVkX3Jvb3Qoc2JpLCBpbm9kZSwg Y2FwKSkKPiA+ICAgICAgICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCAtPSBGMkZTX09Q VElPTihzYmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4gQEAgLTI1NzYsNyArMjU4MCw4IEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4KPiA+ICAgc3RhdGljIGlubGluZSB2b2lkIGYyZnNf aV9ibG9ja3Nfd3JpdGUoc3RydWN0IGlub2RlICosIGJsb2NrX3QsIGJvb2wsIGJvb2wpOwo+ID4g ICBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9k ZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwgYm9vbCBwYXJ0aWFsKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhcnRpYWwsIGJvb2wgYWxp YXNfcmVzZXJ2ZWQpCj4gPiAgIHsKPiA+ICAgICAgIGxvbmcgbG9uZyBkaWZmID0gMCwgcmVsZWFz ZSA9IDA7Cj4gPiAgICAgICBibG9ja190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPiBAQCAt MjU5OSwxMCArMjYwNCwxNiBAQCBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tfY291 bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4KPiA+ICAgICAgIHNwaW5fbG9jaygmc2Jp LT5zdGF0X2xvY2spOwo+ID4KPiA+ICsgICAgIGlmIChhbGlhc19yZXNlcnZlZCkKPiA+ICsgICAg ICAgICAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gKmNvdW50Owo+ID4gKwo+ID4g ICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCA9IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQo c2JpLCBpbm9kZSwgdHJ1ZSk7Cj4gPiAgICAgICBkaWZmID0gKGxvbmcgbG9uZylzYmktPnRvdGFs X3ZhbGlkX2Jsb2NrX2NvdW50ICsgKmNvdW50IC0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4gICAgICAg aWYgKHVubGlrZWx5KGRpZmYgPiAwKSkgewo+ID4gKyAgICAgICAgICAgICBpZiAoYWxpYXNfcmVz ZXJ2ZWQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9j a3MgKz0gKmNvdW50Owo+ID4gKwo+ID4gICAgICAgICAgICAgICBpZiAoIXBhcnRpYWwpIHsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4g ICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgPSAqY291bnQ7Cj4gPiBAQCAtNDAxMCw2ICs0 MDIxLDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSk7Cj4gPiAgIHZvaWQgZjJmc19kZXN0cm95X2ZsdXNoX2NtZF9jb250cm9sKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwgYm9vbCBmcmVlKTsKPiA+ICAgdm9pZCBmMmZzX2ludmFsaWRhdGVf YmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4p Owo+ID4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsKPiA+ICAgYm9vbCBmMmZzX2lzX2NoZWNr cG9pbnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsK PiA+ICAgaW50IGYyZnNfc3RhcnRfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpKTsKPiA+ICAgdm9pZCBmMmZzX2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpKTsKPiA+IEBAIC00MjMxLDYgKzQyNDQsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFu YWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+ID4gICBpbnQgZjJmc19nY19yYW5nZShz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz dGFydF9zZWcsIHVuc2lnbmVkIGludCBlbmRfc2VnLAo+ID4gICAgICAgICAgICAgICBib29sIGRy eV9ydW4sIHVuc2lnbmVkIGludCBkcnlfcnVuX3NlY3Rpb25zKTsKPiA+ICt2b2lkIGYyZnNfcmVz ZXRfZ2NfdmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+ICAgaW50 IGYyZnNfcmVzaXplX2ZzKHN0cnVjdCBmaWxlICpmaWxwLCBfX3U2NCBibG9ja19jb3VudCk7Cj4g PiAgIGludCBfX2luaXQgZjJmc19jcmVhdGVfZ2FyYmFnZV9jb2xsZWN0aW9uX2NhY2hlKHZvaWQp Owo+ID4gICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9pZCk7 Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+ID4gaW5k ZXggNGI1MmM1NmQ3MWYwLi44MzVmMTBiYzU5YjUgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2Zp bGUuYwo+ID4gKysrIGIvZnMvZjJmcy9maWxlLmMKPiA+IEBAIC04MTMsMTMgKzgxMywxOSBAQCBp bnQgZjJmc19kb190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyb20s IGJvb2wgbG9jaykKPiA+Cj4gPiAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkg ewo+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2Rl KS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRf aW5mbyBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2lu Zm8gZWk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4g KyAgICAgICAgICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICByZWFkX3Vu bG9jaygmZXQtPmxvY2spOwo+ID4KPiA+ICAgICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Js b2NrcyhzYmksIGVpLmJsaywgZWkubGVuKTsKPiA+Cj4gPiAgICAgICAgICAgICAgIGRlY192YWxp ZF9ibG9ja19jb3VudChzYmksIGlub2RlLCBlaS5sZW4pOwo+ID4gICAgICAgICAgICAgICBmMmZz X3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgZjJmc19k cm9wX2V4dGVudF90cmVlKGlub2RlKTsKPiA+ICsKPiA+ICAgICAgICAgICAgICAgZjJmc19mb2xp b19wdXQoaWZvbGlvLCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAg ICB9Cj4gPiBAQCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0YXR0cihzdHJ1Y3QgbW50 X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4gICAgICAgaWYgKChhdHRy LT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPiA+ICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdf bGFyZ2VfZm9saW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5nKSkKPiA+ICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGlmICghZjJmc19p c19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAg aWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FUEVSTTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2Jh Y2tlbmRfcmVhZHkoaW5vZGUpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9Q Tk9UU1VQUDsKPiA+ICAgICAgICAgICAgICAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBG SV9DT01QUkVTU19SRUxFQVNFRCkgJiYKPiA+ICAgICAgICAgICAgICAgICAgICAgICAhSVNfQUxJ R05FRChhdHRyLT5pYV9zaXplLAo+ID4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQg ZjJmc19zZXRmbGFnc19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMy IG1hc2spCj4gPiAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPiAgICAgICAgICAgICAg IHJldHVybiAtRVBFUk07Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9k ZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAo KGlmbGFncyBeIG1hc2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4gPiAgICAgICAg ICAgICAgIGlmICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gQEAgLTI2NzgsNiAr MjY4OCwxNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3BvbGljeShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICByZXR1cm4gZnNjcnlw dF9pb2N0bF9nZXRfcG9saWN5KGZpbHAsICh2b2lkIF9fdXNlciAqKWFyZyk7Cj4gPiAgIH0KPiA+ Cj4gPiArc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhzdHJ1Y3QgZmls ZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IGlub2Rl ICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiArCj4gPiArICAgICBpZiAoIUlTX0RFVklD RV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4g Kwo+ID4gKyAgICAgcmV0dXJuIHB1dF91c2VyKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkgPyBGMkZT X0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgOgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRjJGU19ERVZfQUxJQVNfU1RBVFVTX1JFTEVBU0VELCAodTMyIF9fdXNlciAqKWFyZyk7 Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3B3 c2FsdChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgIHsKPiA+ICAg ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+ID4gQEAgLTM2MTYs NiArMzYzNywyNDEgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3Ry dWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICh1MzIgX191c2VyICopYXJnKTsKPiA+ICAgfQo+ID4KPiA+ICtzdGF0aWMgYm9vbCBmMmZz X2dldF9kZXZfYWxpYXNfZXh0ZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZv ICplaSkKPiA+ICt7Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIGZvciAoaSA9IDE7 IGkgPCBzYmktPnNfbmRldnM7IGkrKykgewo+ID4gKyAgICAgICAgICAgICBjaGFyICpuYW1lID0g c3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIG5hbWUg PSBuYW1lID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4gPiArICAgICAgICAgICAgIGlmIChz dHJjbXAobmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgIGVpLT5ibGsgPSBGREVWKGkpLnN0 YXJ0X2JsazsKPiA+ICsgICAgICAgICAgICAgZWktPmxlbiA9IEZERVYoaSkudG90YWxfc2VnbWVu dHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4gPiArICAgICAgICAgICAgIGVpLT5mb2Zz ID0gMDsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAgICB9Cj4gPiArICAg ICByZXR1cm4gZmFsc2U7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZjJmc19pb2NfcmVz ZXJ2ZV9kZXZfYWxpYXMoc3RydWN0IGZpbGUgKmZpbHApCj4gPiArewo+ID4gKyAgICAgc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiArICAgICBzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gKyAgICAgc3RydWN0IGV4dGVudF90 cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4gKyAgICAg c3RydWN0IGV4dGVudF9pbmZvIGVpOwo+ID4gKyAgICAgc3RydWN0IGNwX2NvbnRyb2wgY3BjID0g eyBDUF9TWU5DLCAwLCAwLCAwIH07Cj4gPiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQg bGMsIGdsYzsKPiA+ICsgICAgIGJsa2NudF90IGNvdW50Owo+ID4gKyAgICAgdW5zaWduZWQgaW50 IHN0YXJ0LCBlbmQ7Cj4gPiArICAgICBpbnQgdHlwZSwgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYg KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJN Owo+ID4gKwo+ID4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9D UF9ESVNBQkxFRCkpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ ICsgICAgIGVyciA9IG1udF93YW50X3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJy KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9j ayhpbm9kZSk7Cj4gPiArCj4gPiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkp IHsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290 byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKEYyRlNf SEFTX0JMT0NLUyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJyID0gMDsKPiA+ICsgICAg ICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAg ICAgaWYgKCFmMmZzX2dldF9kZXZfYWxpYXNfZXh0ZW50KHNiaSwgZmlscC0+Zl9wYXRoLmRlbnRy eSwgJmVpKSkgewo+ID4gKyAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiZGV2aWNlIGFsaWFz IGZpbGUgKCVzLCBpbm89JWxsdSkgaGFzIG5vIG1hdGNoaW5nIGRldmljZSIsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBmaWxwLT5mX3BhdGguZGVudHJ5LT5kX25hbWUubmFtZSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUtPmlfaW5vKTsK PiA+ICsgICAgICAgICAgICAgc2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7Cj4gPiAr ICAgICAgICAgICAgIGYyZnNfaGFuZGxlX2Vycm9yKHNiaSwgRVJST1JfQ09SUlVQVEVEX0lOT0RF KTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsKPiA+ICsgICAgICAgICAg ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgc3Bp bl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArICAgICBpZiAoc2JpLT50b3RhbF92YWxpZF9i bG9ja19jb3VudCArIGVpLmxlbiA+Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZ2V0X2F2YWls YWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCB0cnVlKSkgewo+ID4gKyAgICAgICAgICAgICBz cGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRU5P U1BDOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArICAgICB9 Cj4gPiArICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyArPSBlaS5sZW47Cj4gPiArICAg ICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3Bpbl9sb2Nr KCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9k ZXZpY2VfaW5kZXgoc2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcgPSB0cnVlOwo+ID4gKyAgICAg c3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4gPiArCj4gPiArICAgICBz dGFydCA9IEdFVF9TRUdOTyhzYmksIGVpLmJsayk7Cj4gPiArICAgICBlbmQgPSBHRVRfU0VHTk8o c2JpLCBlaS5ibGsgKyBlaS5sZW4gLSAxKTsKPiA+ICsKPiA+ICsgICAgIC8qIEFjcXVpcmUgZ2Nf bG9jayBmb3IgdmljdGltIHJlc2V0LCBjdXJzZWcgcmVzaXplLCBhbmQgcmFuZ2UgR0MgKi8KPiA+ ICsgICAgIGYyZnNfZG93bl93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsK PiA+ICsgICAgIC8qIFJlc2V0IHRoZSB2aWN0aW0gaW5mb3JtYXRpb24gdG8gcHJldmVudCBHQyBm cm9tIHRhcmdldGluZyB0aGUgcmFuZ2UgKi8KPiA+ICsgICAgIGYyZnNfcmVzZXRfZ2NfdmljdGlt X3Jlc291cmNlKHNiaSwgc3RhcnQsIGVuZCk7Cj4gPiArCj4gPiArICAgICAvKiBNb3ZlIG91dCBj dXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ID4gKyAgICAgZm9yICh0eXBlID0gQ1VS U0VHX0hPVF9EQVRBOyB0eXBlIDwgTlJfQ1VSU0VHX1BFUlNJU1RfVFlQRTsgdHlwZSsrKSB7Cj4g PiArICAgICAgICAgICAgIGVyciA9IGYyZnNfYWxsb2NhdGVfc2VnbWVudF9mb3JfcmVzaXplKHNi aSwgdHlwZSwgc3RhcnQsIGVuZCk7Cj4gPiArICAgICAgICAgICAgIGlmIChlcnIpCj4gPiArICAg ICAgICAgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ ID4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPiA+ICsKPiA+ICsgICAgIGlmICh1bmxp a2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4gKyAgICAg ICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ID4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChz YmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+ICsgICAg IH0KPiA+ICsKPiA+ICsgICAgIC8qIGRvIEdDIHRvIG1vdmUgb3V0IHZhbGlkIGJsb2NrcyBpbiB0 aGUgcmFuZ2UgYWxsIGF0IG9uY2UhICovCj4gPiArICAgICBlcnIgPSBmMmZzX2djX3JhbmdlKHNi aSwgc3RhcnQsIGVuZCwgZmFsc2UsIDApOwo+ID4gKyAgICAgaWYgKGVycikgewo+ID4gKyAgICAg ICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8g b3V0X2djX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGNvdW50ID0gZWkubGVu Owo+ID4gKyAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsICZjb3Vu dCwgZmFsc2UsIHRydWUpOwo+ID4gKyAgICAgaWYgKGVycikgewo+ID4gKyAgICAgICAgICAgICBm MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3Vu bG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHdyaXRlX2xvY2soJmV0LT5sb2NrKTsK PiA+ICsgICAgIGV0LT5sYXJnZXN0ID0gZWk7Cj4gPiArICAgICB3cml0ZV91bmxvY2soJmV0LT5s b2NrKTsKPiA+ICsgICAgIGNsZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX0VYVEVOVCk7Cj4g PiArCj4gPiArICAgICBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHNiaSwgZWkuYmxrLCBlaS5s ZW4pOwo+ID4gKwo+ID4gKyAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8 PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+ID4gKyAgICAgZjJmc191cGRhdGVfaW5vZGVfcGFnZShp bm9kZSk7Cj4gPiArCj4gPiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9j ayk7Cj4gPiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIGVpLmJsaykp LmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkp LT5zZWdtYXBfbG9jayk7Cj4gPiArCj4gPiArICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7 Cj4gPiArICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Cj4g RG8gd2UgbmVlZCB0byBjYWxsIGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpIGhlcmUg dG8gbWFrZSBzdXJlIHBlcnNpc3QKPiBkZXZpY2UgYWxpYXMgZmlsZSBmaXJzdD8gdG8gYXZvaWQg Zm9sbG93aW5nIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKCkgcmFjaW4KPiAgIHcvIGYyZnNf aW9jX3Jlc2VydmVfZGV2X2FsaWFzKCk/Cj4KPiAtIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFz ICAgICAgICAgICAgLSBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcwo+IC4uLgo+ICAgLSBmMmZz X3VubG9ja19vcAo+ICAgLSBmMmZzX3VwX3dyaXRlX3RyYWNlKGdjX2xvY2spCj4gICAtIGlub2Rl X3VubG9jawo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbm9k ZV9sb2NrCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KPiAg IC0gZjJmc193cml0ZV9jaGVja3BvaW50CgpIaSBDaGFvLAoKSSBjb3VsZG4ndCBnZXQgeW91ciBw b2ludC4gQ291bGQgeW91IGVsYWJvcmF0ZSBtb3JlLCBpZiBJIG1pc3NlZCBpdD8KCjEuIEluLW1l bW9yeSBzdGF0ZSBpcyBhbHJlYWR5IGF0b21pYyAoTm8gUmFjZSk6CiAgICBCZWZvcmUgaW5vZGVf dW5sb2NrKCksIGFsbCBpbi1tZW1vcnkgbWV0YWRhdGEgKGV4dGVudF90cmVlLCBTSVQKc2VnbWVu dCBiaXRtYXBzLCBpX3NpemUsIGFuZCBkaXJ0eSBpbm9kZSBwYWdlKSBhcmUgZnVsbHkgdXBkYXRl ZCB1bmRlcgppbm9kZV9sb2NrICsgZjJmc19sb2NrX29wLiBBIHN1YnNlcXVlbnQgZjJmc19pb2Nf cmVsZWFzZV9kZXZfYWxpYXMoKQp3aWxsIG9ic2VydmUgYSBjb21wbGV0ZSwgY29uc2lzdGVudCBz dGF0ZS4KCjIuIE9uLWRpc2sgY29uc2lzdGVuY3kgJiBjcmFzaCBzYWZldHk6CiAgICBDaGVja3Bv aW50cyBhcmUgc2VyaWFsaXplZCBpbnRlcm5hbGx5IHZpYSBjcF9tdXRleCAvCmYyZnNfbG9ja19h bGwoKS4gUmVnYXJkbGVzcyBvZiB0aGUgY2hlY2twb2ludCBleGVjdXRpb24gdGltaW5nIG9yIGFu eQpzdWRkZW4gcG93ZXItb2ZmIChTUE8pIGJldHdlZW4gdGhlIHR3byBpb2N0bHMsIHRoZSBmaWxl c3lzdGVtIGFsd2F5cwpyZWNvdmVycyB0byB0aGUgbGFzdCBjb21taXR0ZWQgYXRvbWljIGNoZWNr cG9pbnQgd2l0aG91dCBtZXRhZGF0YQpjb3JydXB0aW9uLgoKVGhhbmtzLAoKPgo+ID4gKwo+ID4g KyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUo ZmlscCk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwg JmNwYyk7Cj4gPiArCj4gPiArb3V0X2djX3VubG9jazoKPiA+ICsgICAgIHNwaW5fbG9jaygmc2Jp LT5zdGF0X2xvY2spOwo+ID4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWku bGVuOwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+ICsKPiA+ICsg ICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+ICsgICAgIEZERVYo ZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gZmFs c2U7Cj4gPiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+ ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArCj4g PiArb3V0X2lub2RlX3VubG9jazoKPiA+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiAr ICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHApOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhzdHJ1 Y3QgZmlsZSAqZmlscCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZV9pbm9kZShmaWxwKTsKPiA+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNf SV9TQihpbm9kZSk7Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlu b2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8g ZWkgPSB7MCwgfTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywg MCwgMCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4g PiArICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURN SU4pKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gKyAgICAgaWYg KHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIGVyciA9IG1udF93YW50 X3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPiArCj4gPiAr ICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAg ZXJyID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKCFGMkZTX0hBU19CTE9DS1MoaW5vZGUpKSB7 Cj4gPiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGVyciA9IGZpbGVtYXBfd3Jp dGVfYW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAg ICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArCj4gPiArICAgICByZWFkX2xv Y2soJmV0LT5sb2NrKTsKPiA+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4gPiArICAgICByZWFk X3VubG9jaygmZXQtPmxvY2spOwo+ID4gKwo+ID4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNl KCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsK PiA+ICsKPiA+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1Bf RElTQUJMRUQpKSkgewo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ID4gKyAgICAg ICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGYyZnNf dXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAgICAgICAgIGdv dG8gb3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGZpbGVtYXBf aW52YWxpZGF0ZV9sb2NrKGlub2RlLT5pX21hcHBpbmcpOwo+ID4gKyAgICAgdHJ1bmNhdGVfc2V0 c2l6ZShpbm9kZSwgMCk7Cj4gPiArCj4gPiArICAgICBlcnIgPSBmMmZzX3RydW5jYXRlX2Jsb2Nr cyhpbm9kZSwgMCwgZmFsc2UpOwo+ID4gKyAgICAgaWYgKGVycikKPiA+ICsgICAgICAgICAgICAg aV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxvZ19ibG9ja3NpemUp Owo+ID4gKyAgICAgZmlsZW1hcF9pbnZhbGlkYXRlX3VubG9jayhpbm9kZS0+aV9tYXBwaW5nKTsK PiA+ICsKPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tf b3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmkt PmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2Rl KTsKPiA+ICsKPiA+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+ICsgICAgIGYy ZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4KPiAgICAgICAgIGVyciA9 IGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpOwo+Cj4gVGhhbmtzLAo+Cj4gPiArCj4g PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4gKyAgICAgbW50X2Ryb3Bfd3JpdGVfZmls ZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIHJldHVybiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2Jp LCAmY3BjKTsKPiA+ICsKPiA+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4gKyAgICAgaW5vZGVfdW5s b2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAg ICByZXR1cm4gZXJyOwo+ID4gK30KPiA+ICsKPiA+ICAgc3RhdGljIGludCBmMmZzX2lvY19pb19w cmlvKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ICAgewo+ID4gICAg ICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiBAQCAtNDA0MSw3 ICs0Mjk3LDcgQEAgc3RhdGljIGludCByZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZG5v ZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgY291bnQsCj4gPiAgICAgICAgICAgICAgIH0KPiA+Cj4g PiAgICAgICAgICAgICAgIHJldCA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9k ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG9f cmVzZXJ2ZWQsIGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmdG9fcmVzZXJ2ZWQsIGZhbHNlLCBmYWxzZSk7Cj4gPiAgICAgICAgICAgICAg IGlmICh1bmxpa2VseShyZXQpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gPgo+ID4gQEAgLTQ3NDIsOCArNDk5OCwxNCBAQCBzdGF0aWMgbG9uZyBfX2YyZnNfaW9jdGwo c3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ ID4gICAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfY29tcHJlc3NfZmlsZShmaWxwKTsKPiA+ ICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19GSUxFOgo+ID4gICAgICAgICAgICAg ICByZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19maWxlKGZpbHAsIGFyZyk7Cj4gPiArICAg ICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19zdGF0dXMoZmlscCwgYXJnKTsKPiA+ICAgICAg IGNhc2UgRjJGU19JT0NfSU9fUFJJTzoKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9j X2lvX3ByaW8oZmlscCwgYXJnKTsKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZf QUxJQVM6Cj4gPiArICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlh cyhmaWxwKTsKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6Cj4gPiAr ICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhmaWxwKTsKPiA+ ICAgICAgIGRlZmF1bHQ6Cj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFRZOwo+ID4gICAg ICAgfQo+ID4gQEAgLTU1MzAsNyArNTc5MiwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0 cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ ICAgICAgIGNhc2UgRjJGU19JT0NfREVDT01QUkVTU19GSUxFOgo+ID4gICAgICAgY2FzZSBGMkZT X0lPQ19DT01QUkVTU19GSUxFOgo+ID4gICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT X0ZJTEU6Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+ID4g ICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+ID4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNF UlZFX0RFVl9BTElBUzoKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6 Cj4gPiAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgZGVmYXVsdDoKPiA+ICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9JT0NUTENNRDsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2djLmMg Yi9mcy9mMmZzL2djLmMKPiA+IGluZGV4IGZmYWE3YmE3NmExYi4uOTNiY2IzNWE1YjVkIDEwMDY0 NAo+ID4gLS0tIGEvZnMvZjJmcy9nYy5jCj4gPiArKysgYi9mcy9mMmZzL2djLmMKPiA+IEBAIC0y MTk3LDI5ICsyMTk3LDM3IEBAIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwKPiA+ICAgICAgIHJldHVybiAwOwo+ID4gICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNl dF9nY192aWN0aW1fcmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCkKPiA+ ICt7Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0ko c2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9M SUNZOyBpKyspCj4gPiArICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtp XSA+PSBzdGFydCAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3Rf dmljdGltW2ldIDw9IGVuZCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s YXN0X3ZpY3RpbVtpXSA9IDA7Cj4gPiArCj4gPiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBG R19HQzsgaSsrKQo+ID4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0g Pj0gc3RhcnQgJiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3Nl Z1tpXSA8PSBlbmQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9z ZWdbaV0gPSBOVUxMX1NFR05POwo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSkt PnNlZ2xpc3RfbG9jayk7Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgaW50IGZyZWVfc2VnbWVu dF9yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VjcywgYm9vbCBkcnlfcnVuKQo+ID4gICB7Cj4gPiAg ICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pbnVzZSwgc3RhcnQsIGVuZDsKPiA+ICAgICAgIHN0cnVj dCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfUkVTSVpFLCAwLCAwLCAwIH07Cj4gPiAtICAgICBpbnQg Z2NfbW9kZSwgZ2NfdHlwZTsKPiA+ICAgICAgIGludCBlcnIgPSAwOwo+ID4gICAgICAgaW50IHR5 cGU7Cj4gPgo+ID4gLSAgICAgLyogRm9yY2UgYmxvY2sgYWxsb2NhdGlvbiBmb3IgR0MgKi8KPiA+ ICAgICAgIE1BSU5fU0VDUyhzYmkpIC09IHNlY3M7Cj4gPiAgICAgICBzdGFydCA9IE1BSU5fU0VD UyhzYmkpICogU0VHU19QRVJfU0VDKHNiaSk7Cj4gPiAgICAgICBlbmQgPSBNQUlOX1NFR1Moc2Jp KSAtIDE7Cj4gPgo+ID4gLSAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xv Y2spOwo+ID4gLSAgICAgZm9yIChnY19tb2RlID0gMDsgZ2NfbW9kZSA8IE1BWF9HQ19QT0xJQ1k7 IGdjX21vZGUrKykKPiA+IC0gICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxhc3RfdmljdGlt W2djX21vZGVdID49IHN0YXJ0KQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSkt Pmxhc3RfdmljdGltW2djX21vZGVdID0gMDsKPiA+IC0KPiA+IC0gICAgIGZvciAoZ2NfdHlwZSA9 IEJHX0dDOyBnY190eXBlIDw9IEZHX0dDOyBnY190eXBlKyspCj4gPiAtICAgICAgICAgICAgIGlm IChzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA+PSBzdGFydCkKPiA+IC0gICAgICAgICAg ICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA9IE5VTExfU0VHTk87Cj4g PiAtICAgICBtdXRleF91bmxvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+ICsg ICAgIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNlKHNiaSwgc3RhcnQsIGVuZCk7Cj4gPgo+ ID4gICAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRoZSB0YXJnZXQgcmFuZ2UgKi8KPiA+ ICAgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsgdHlwZSA8IE5SX0NVUlNFR19QRVJT SVNUX1RZUEU7IHR5cGUrKykgewo+ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2Zz L2YyZnMvbmFtZWkuYwo+ID4gaW5kZXggY2FjMDNiOGU5MWExLi44YzNiNTc5ODdmNmMgMTAwNjQ0 Cj4gPiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPiA+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4g QEAgLTQyNSw2ICs0MjUsOSBAQCBzdGF0aWMgaW50IGYyZnNfbGluayhzdHJ1Y3QgZGVudHJ5ICpv bGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+ICAgICAgIGlmICghZjJmc19pc19jaGVj a3BvaW50X3JlYWR5KHNiaSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRU5PU1BDOwo+ID4K PiA+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gICAgICAgZXJyID0gZnNjcnlwdF9wcmVwYXJlX2xp bmsob2xkX2RlbnRyeSwgZGlyLCBkZW50cnkpOwo+ID4gICAgICAgaWYgKGVycikKPiA+ICAgICAg ICAgICAgICAgcmV0dXJuIGVycjsKPiA+IEBAIC01NjgsNiArNTcxLDkgQEAgc3RhdGljIGludCBm MmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQo+ID4K PiA+ICAgICAgIHRyYWNlX2YyZnNfdW5saW5rX2VudGVyKGRpciwgZGVudHJ5KTsKPiA+Cj4gPiAr ICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNi aSkpKSB7Cj4gPiAgICAgICAgICAgICAgIGVyciA9IC1FSU87Cj4gPiAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ID4gQEAgLTk0Niw2ICs5NTIsOSBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0 cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPiAgICAgICBi b29sIG9sZF9pc19kaXIgPSBTX0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKTsKPiA+ICAgICAgIGlu dCBlcnI7Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpKQo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gICAgICAgaWYgKHVubGlr ZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwo+ ID4gICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHkoc2JpKSkKPiA+IEBAIC0xMDE2 LDYgKzEwMjUsOCBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlk bWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPiAgICAgICB9Cj4gPgo+ID4gICAgICAgaWYg KG5ld19pbm9kZSkgewo+ID4gKyAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKG5l d19pbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+Cj4g PiAgICAgICAgICAgICAgIGVyciA9IC1FTk9URU1QVFk7Cj4gPiAgICAgICAgICAgICAgIGlmIChv bGRfaXNfZGlyICYmICFmMmZzX2VtcHR5X2RpcihuZXdfaW5vZGUpKQo+ID4gQEAgLTExNDMsNiAr MTE1NCw5IEBAIHN0YXRpYyBpbnQgZjJmc19jcm9zc19yZW5hbWUoc3RydWN0IGlub2RlICpvbGRf ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAo+ID4gICAgICAgaW50IG9sZF9ubGluayA9 IDAsIG5ld19ubGluayA9IDA7Cj4gPiAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICsgICAgIGlmIChJ U19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSB8fCBJU19ERVZJQ0VfQUxJQVNJTkcobmV3X2lu b2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlm ICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNiaSkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4g LUVJTzsKPiA+ICAgICAgIGlmICghZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4gPiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gaW5k ZXggZDcxZGRiM2VlOTE4Li5kNzBkYzVlZjNkZTQgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL3Nl Z21lbnQuYwo+ID4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+IEBAIC0yNjEsNyArMjYxLDcg QEAgc3RhdGljIGludCBfX3JlcGxhY2VfYXRvbWljX3dyaXRlX2Jsb2NrKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gPiAgICAgICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAg ICBibGtjbnRfdCBjb3VudCA9IDE7Cj4gPgo+ID4gLSAgICAgICAgICAgICBlcnIgPSBpbmNfdmFs aWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCB0cnVlKTsKPiA+ICsgICAgICAgICAg ICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsICZjb3VudCwgdHJ1ZSwg ZmFsc2UpOwo+ID4gICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgZjJmc19wdXRfZG5vZGUoJmRuKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZXJyOwo+ID4gQEAgLTI1MDIsMzUgKzI1MDIsNDIgQEAgc3RhdGljIGludCB1cGRhdGVfc2l0 X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBzZWdfZW50 cnkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWdubywg YmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgZGVsKQo+ID4gICB7Cj4g PiAgICAgICBib29sIGV4aXN0Owo+ID4gKyAgICAgaW50IGRlbF9jb3VudCA9IGRlbDsKPiA+ICsg ICAgIGludCBpOwo+ID4KPiA+IC0gICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9m ZnNldCwgc2UtPmN1cl92YWxpZF9tYXApOwo+ID4gLSAgICAgaWYgKHVubGlrZWx5KGV4aXN0KSkg ewo+ID4gLSAgICAgICAgICAgICBmMmZzX2VycihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0 LCBibGs6JXUiLCBibGthZGRyKTsKPiA+IC0gICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAx KTsKPiA+IC0gICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nrcy0tOwo+ID4gLSAgICAgICAgICAg ICBkZWwgPSAwOwo+ID4gLSAgICAgfQo+ID4gKyAgICAgZjJmc19idWdfb24oc2JpLCBHRVRfU0VH Tk8oc2JpLCBibGthZGRyKSAhPSBHRVRfU0VHTk8oc2JpLCBibGthZGRyICsgZGVsX2NvdW50IC0g MSkpOwo+ID4KPiA+IC0gICAgIGlmIChmMmZzX2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4g PiAtICAgICAgICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQsIHNl LT5kaXNjYXJkX21hcCkpCj4gPiAtICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9ibGtzLS07Cj4g PiArICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsX2NvdW50OyBpKyspIHsKPiA+ICsgICAgICAgICAg ICAgZXhpc3QgPSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmN1cl92YWxp ZF9tYXApOwo+ID4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3cm9uZ2x5IHNldCwg YmxrOiV1IiwgYmxrYWRkciArIGkpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfYnVn X29uKHNiaSwgMSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nrcy0t Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRlbCAtPSAxOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgLyoKPiA+ IC0gICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hpY2ggaXMgY2hlY2twb2lu dGVkCj4gPiAtICAgICAgKiBvciBuZXdseSBpbnZhbGlkYXRlZC4KPiA+IC0gICAgICAqLwo+ID4g LSAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSB7Cj4gPiAt ICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmNrcHRf dmFsaWRfbWFwKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Js b2NrcysrOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24o c2JpKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2Jp LCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAgIGlmIChmMmZz X2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCArIGksIHNlLT5kaXNjYXJkX21hcCkp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICogU1NSIHNob3VsZCBuZXZlciBy ZXVzZSBibG9jayB3aGljaCBpcyBjaGVja3BvaW50ZWQKPiA+ICsgICAgICAgICAgICAgICogb3Ig bmV3bHkgaW52YWxpZGF0ZWQuCj4gPiArICAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAgICAg ICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpIHsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBz ZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9j a3MrKzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgICAgICAgIH0KPiA+ IC0gICAgIH0KPiA+Cj4gPiAtICAgICBpZiAoIWYyZnNfdGVzdF9iaXQob2Zmc2V0LCBzZS0+Y2tw dF92YWxpZF9tYXApKSB7Cj4gPiAtICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyAr PSBkZWw7Cj4gPiAtICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+ IC0gICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3Zh bGlkX2Jsb2NrcyArPSBkZWw7Cj4gPiArICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2JpdChv ZmZzZXQgKyBpLCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzICs9IDE7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg aWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsK PiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIGlmIChfX2lzX2xh cmdlX3NlY3Rpb24oc2JpKSkKPiA+IEBAIC0yNTg1LDkgKzI1OTIsMTQgQEAgdm9pZCBmMmZzX2lu dmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+ ID4gICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPiAg ICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+ICAgICAgIGJsb2Nr X3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPiAtICAg ICB1bnNpZ25lZCBpbnQgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25v ICsgMTsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBzZWdfbnVtOwo+ID4gICAgICAgdW5zaWduZWQg aW50IGkgPSAxLCBtYXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+ID4KPiA+ ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4g KyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsgMTsKPiA+ ICsKPiA+ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIpOwo+ID4gICAg ICAgaWYgKGFkZHIgPT0gTkVXX0FERFIgfHwgYWRkciA9PSBDT01QUkVTU19BRERSKQo+ID4gICAg ICAgICAgICAgICByZXR1cm47Cj4gPiBAQCAtMjYyMCw2ICsyNjMyLDUyIEBAIHZvaWQgZjJmc19p bnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwK PiA+ICAgICAgIHVwX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+ID4gICB9Cj4gPgo+ID4g K3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBsZW4pCj4gPiArewo+ID4gKyAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05P KHNiaSwgYWRkcik7Cj4gPiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2Jp KTsKPiA+ICsgICAgIGJsb2NrX3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciAr IGxlbiAtIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+ICsgICAgIHVuc2ln bmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+ ICsKPiA+ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4g Kwo+ID4gKyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsg MTsKPiA+ICsKPiA+ICsgICAgIGRvd25fd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9jayk7Cj4gPiAr Cj4gPiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4gKyAgICAgICAgICAgICBjbnQgPSBsZW47 Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIGNudCA9IG1heF9ibG9ja3MgLSBHRVRf QkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4gKwo+ID4gKyAgICAgZG8gewo+ID4gKyAg ICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGltZShzYmksIGFkZHJfc3RhcnQsIDApOwo+ID4g KyAgICAgICAgICAgICB1cGRhdGVfc2l0X2VudHJ5KHNiaSwgYWRkcl9zdGFydCwgY250KTsKPiA+ ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2JpLCBzZWdubyk7Cj4gPiArCj4g PiArICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc2VnbWVudCBmcm9tIFBSRSAocHJlZnJlZSkg dG8gcHJldmVudCBjaGVja3BvaW50IGZyb20gZnJlZWluZyBpdCEgKi8KPiA+ICsgICAgICAgICAg ICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ID4gKyAgICAgICAg ICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KHNlZ25vLCBESVJUWV9JKHNiaSktPmRpcnR5X3Nl Z21hcFtQUkVdKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBESVJUWV9JKHNiaSktPm5yX2Rp cnR5W1BSRV0tLTsKPiA+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSkt PnNlZ2xpc3RfbG9jayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIGFkZCBpdCBpbnRvIGRp cnR5IHNlZ2xpc3QgKi8KPiA+ICsgICAgICAgICAgICAgbG9jYXRlX2RpcnR5X3NlZ21lbnQoc2Jp LCBzZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIHVwZGF0ZSBAYWRkcl9zdGFydCBh bmQgQGNudCBhbmQgQHNlZ25vICovCj4gPiArICAgICAgICAgICAgIGFkZHJfc3RhcnQgPSBTVEFS VF9CTE9DSyhzYmksICsrc2Vnbm8pOwo+ID4gKyAgICAgICAgICAgICBpZiAoKytpID09IHNlZ19u dW0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gR0VUX0JMS09GRl9GUk9NX1NFRzAo c2JpLCBhZGRyX2VuZCkgKyAxOwo+ID4gKyAgICAgICAgICAgICBlbHNlCj4gPiArICAgICAgICAg ICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+ICsgICAgIH0gd2hpbGUgKGkgPD0gc2Vn X251bSk7Cj4gPiArCj4gPiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsKPiA+ ICt9Cj4gPiArCj4gPiAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRkcikKPiA+ICAgewo+ID4gICAgICAgc3RydWN0 IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4gPiBAQCAtMjc1OCw4ICsyODE2LDEzIEBA IHN0YXRpYyBpbnQgaXNfbmV4dF9zZWdtZW50X2ZyZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LAo+ID4gICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gY3Vyc2VnLT5zZWdubyArIDE7Cj4gPiAg ICAgICBzdHJ1Y3QgZnJlZV9zZWdtYXBfaW5mbyAqZnJlZV9pID0gRlJFRV9JKHNiaSk7Cj4gPgo+ ID4gLSAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9T RUMoc2JpKSkKPiA+ICsgICAgIGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUg U0VHU19QRVJfU0VDKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgaW50IGRldmkgPSBmMmZzX3Rh cmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4gPiArCj4g PiArICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPiA+ ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICAgICAgICAgICAgICAgcmV0dXJu ICF0ZXN0X2JpdChzZWdubywgZnJlZV9pLT5mcmVlX3NlZ21hcCk7Cj4gPiArICAgICB9Cj4gPiAg ICAgICByZXR1cm4gMDsKPiA+ICAgfQo+ID4KPiA+IEBAIC0yNzc4LDcgKzI4NDEsOCBAQCBzdGF0 aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAg ICB1bnNpZ25lZCBpbnQgYWxsb2NfcG9saWN5ID0gc2JpLT5hbGxvY2F0ZV9zZWN0aW9uX3BvbGlj eTsKPiA+ICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19oaW50ID0gc2JpLT5hbGxvY2F0ZV9zZWN0 aW9uX2hpbnQ7Cj4gPiAgICAgICBib29sIGluaXQgPSB0cnVlOwo+ID4gLSAgICAgaW50IGk7Cj4g PiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4gKyAgICAgaW50IGksIGRldmk7Cj4gPiAg ICAgICBpbnQgcmV0ID0gMDsKPiA+Cj4gPiAgICAgICBzcGluX2xvY2soJmZyZWVfaS0+c2VnbWFw X2xvY2spOwo+ID4gQEAgLTI3OTEsOCArMjg1NSwxMyBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2Vn bWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICBpZiAoIW5ld19zZWMgJiYg KCgqbmV3c2VnICsgMSkgJSBTRUdTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICAgICAgICAgICAgICAg c2Vnbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlZ21hcCwKPiA+ICAgICAg ICAgICAgICAgICAgICAgICBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpLCAqbmV3c2Vn ICsgMSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9TRUMoc2Jp LCBoaW50ICsgMSkpCj4gPiArICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9T RUMoc2JpLCBoaW50ICsgMSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZpID0gZjJm c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4g Kwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2Vk KHNiaSwgZGV2aSwgcGlubmluZykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdvdF9p dDsKPiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAgI2lmZGVmIENPTkZJ R19CTEtfREVWX1pPTkVECj4gPiBAQCAtMjgyOCwzMyArMjg5Nyw0MiBAQCBzdGF0aWMgaW50IGdl dF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgIGZpbmRfb3RoZXJf em9uZToKPiA+ICAgICAgIHNlY25vID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9z ZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50KTsKPiA+Cj4gPiAtI2lmZGVmIENPTkZJR19CTEtf REVWX1pPTkVECj4gPiAtICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkgJiYgZjJmc19z Yl9oYXNfYmxrem9uZWQoc2JpKSkgewo+ID4gLSAgICAgICAgICAgICAvKiBXcml0ZSBvbmx5IHRv IHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+IC0gICAgICAgICAgICAgaWYgKHNiaS0+Ymxrem9uZV9h bGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkgewo+ID4gLSAgICAgICAgICAg ICAgICAgICAgIGhpbnQgPSBHRVRfU0VDX0ZST01fU0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9u ZV9zZWdubyk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgc2Vjbm8gPSBmaW5kX25leHRfemVy b19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+ID4gLSAg ICAgICAgICAgICB9IGVsc2UKPiA+IC0gICAgICAgICAgICAgICAgICAgICBzZWNubyA9IGZpbmRf Zmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFJTl9TRUNTKHNi aSkpOwo+ID4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+ IC0gICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PU1BDOwo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXRfdW5sb2NrOwo+ID4gLSAgICAgICAgICAgICB9Cj4gPiAtICAgICB9Cj4gPiAtI2VuZGlm Cj4gPiAtCj4gPiAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+IC0gICAg ICAgICAgICAgc2Vjbm8gPSBmaW5kX2ZpcnN0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAs Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNQUlOX1NFQ1Moc2JpKSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWNubyA+PSBNQUlOX1NF Q1Moc2JpKSkgewo+ID4gKyAgICAgICAgICAgICBpZiAobG9vcGVkKSB7Cj4gPiAgICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBmMmZz X2J1Z19vbihzYmksICFwaW5uaW5nKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91 dF91bmxvY2s7Cj4gPiAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgaGludCA9IDA7 Cj4gPiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4gPiArICAgICAgICAgICAgIC8qIFdy aXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJm c19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+ Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNiaS0+Zmlyc3Rf c2VxX3pvbmVfc2Vnbm8pOwo+ID4gKyNlbmRpZgo+ID4gKyAgICAgICAgICAgICBsb29wZWQgPSB0 cnVlOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgIH0K PiA+ICsKPiA+ICAgICAgIHNlZ25vID0gR0VUX1NFR19GUk9NX1NFQyhzYmksIHNlY25vKTsKPiA+ ICsKPiA+ICsgICAgIGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9C TE9DSyhzYmksIHNlZ25vKSk7Cj4gPiArCj4gPiArICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2Nf YmxvY2tlZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPiArICAgICAgICAgICAgIHdoaWxlIChk ZXZpIDwgc2JpLT5zX25kZXZzICYmCj4gPiArICAgICAgICAgICAgICAgICAgICAgZjJmc19kZXZf aXNfYWxsb2NfYmxvY2tlZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGVuZF9zZWdubyA9IEdFVF9TRUdOTyhzYmksIEZERVYoZGV2 aSkuZW5kX2Jsayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9T RUNfRlJPTV9TRUcoc2JpLCBlbmRfc2Vnbm8pICsgMTsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBkZXZpKys7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgZ290byBmaW5k X290aGVyX3pvbmU7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAoc2VjX3VzYWdlX2No ZWNrKHNiaSwgc2Vjbm8pKSB7Cj4gPiArICAgICAgICAgICAgIGhpbnQgPSBzZWNubyArIDE7Cj4g PiArICAgICAgICAgICAgIGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4gKyAgICAgfQo+ID4gICAg ICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4gPgo+ID4gICAgICAg LyogZ2l2ZSB1cCBvbiBmaW5kaW5nIGFub3RoZXIgem9uZSAqLwo+ID4gZGlmZiAtLWdpdCBhL2Zz L2YyZnMvc2VnbWVudC5oIGIvZnMvZjJmcy9zZWdtZW50LmgKPiA+IGluZGV4IGIwYzA2YjM1ODBi NC4uMTA3NTA4YWU3ZWIzIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+ICsr KyBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBAQCAtOTU0LDEwICs5NTQsMzIgQEAgc3RhdGljIGlu bGluZSBibG9ja190IHN1bV9ibGtfYWRkcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBi YXNlLCBpbnQgdHlwZSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gKGJhc2Ug KyAxKSArIHR5cGU7Cj4gPiAgIH0KPiA+Cj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2 X2lzX3Jlc2VydmluZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBkZXZpKQo+ID4gK3sK PiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiBGREVWKGRldmkpLmlzX3Jlc2Vy dmluZzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2X2lzX2Fs bG9jX2Jsb2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+ID4gK3sKPiA+ ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiAocGlubmluZyAmJiBGREVWKGRldmkp Lmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4gPiArfQo+ID4gKwo+ID4g ICBzdGF0aWMgaW5saW5lIGJvb2wgc2VjX3VzYWdlX2NoZWNrKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwgdW5zaWduZWQgaW50IHNlY25vKQo+ID4gICB7Cj4gPiAgICAgICBpZiAoaXNfY3Vyc2Vj KHNiaSwgc2Vjbm8pIHx8IChzYmktPmN1cl92aWN0aW1fc2VjID09IHNlY25vKSkKPiA+ICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAgICBpZiAoZjJmc19zYl9oYXNfZGV2aWNlX2Fs aWFzKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgYmxvY2tfdCBzdGFydF9ibGsgPSBTVEFSVF9C TE9DSyhzYmksIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBzZWNubykpOwo+ID4gKyAgICAgICAgICAg ICBpbnQgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIHN0YXJ0X2Jsayk7Cj4g PiArCj4gPiArICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZp KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ICsgICAgIH0KPiA+ ICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZz L3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+IGluZGV4IGM0NDhkOTkyZmYyYS4uZDVkYzgz ZTYxM2UyIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4gPiArKysgYi9mcy9mMmZz L3N1cGVyLmMKPiA+IEBAIC01MDAxLDYgKzUwMDEsMzkgQEAgc3RhdGljIHZvaWQgZjJmc190dW5p bmdfcGFyYW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICBzYmktPnJl YWRkaXJfcmEgPSB0cnVlOwo+ID4gICB9Cj4gPgo+ID4gK3N0YXRpYyB2b2lkIGYyZnNfcmVzdG9y ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gK3sKPiA+ICsgICAg IHN0cnVjdCBpbm9kZSAqcm9vdCA9IGRfaW5vZGUoc2JpLT5zYi0+c19yb290KTsKPiA+ICsgICAg IHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4gPiArICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlv Owo+ID4gKyAgICAgaW50IGk7Cj4gPiArCj4gPiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2Rldmlj ZV9hbGlhcyhzYmkpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICBm b3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgY2hh ciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+ID4gKyAgICAgICAgICAgICBz dHJ1Y3QgaW5vZGUgKmlub2RlOwo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgcXN0ciBxc3RyOwo+ ID4gKwo+ID4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5w YXRoOwo+ID4gKyAgICAgICAgICAgICBxc3RyLm5hbWUgPSBuYW1lOwo+ID4gKyAgICAgICAgICAg ICBxc3RyLmxlbiA9IHN0cmxlbihuYW1lKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgZGUgPSBm MmZzX2ZpbmRfZW50cnkocm9vdCwgJnFzdHIsICZmb2xpbyk7Cj4gPiArICAgICAgICAgICAgIGlm ICghZGUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAg ICAgICAgICAgIGlub2RlID0gZjJmc19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8p KTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFJU19FUlIoaW5vZGUpKSB7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgaXB1dChpbm9kZSk7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsgICAg ICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIDApOwo+ID4gKyAgICAgfQo+ID4gK30KPiA+ ICsKPiA+ICAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+ID4gICB7Cj4gPiAgICAgICBzdHJ1Y3QgZjJmc19m c19jb250ZXh0ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPiA+IEBAIC01MjA5LDYgKzUyNDIsNyBA QCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1 Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQg PSBzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50Owo+ID4gICAgICAgc2JpLT5yZXNlcnZlZF9i bG9ja3MgPSAwOwo+ID4gICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4g PiArICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiAgICAgICBsaW1pdF9y ZXNlcnZlX3Jvb3Qoc2JpKTsKPiA+ICAgICAgIGFkanVzdF91bnVzYWJsZV9jYXBfcGVyYyhzYmkp Owo+ID4KPiA+IEBAIC01NDM2LDYgKzU0NzAsOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAg ICBmMmZzX3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4gICAgICAgY2xlYXJfc2JpX2Zs YWcoc2JpLCBTQklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4KPiA+ICsgICAgIGYyZnNfcmVzdG9y ZV9kZXZpY2VfYWxpYXMoc2JpKTsKPiA+ICsKPiA+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tfaG9s ZGVyID0gTlVMTDsKPiA+ICAgICAgIHJldHVybiAwOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9pbmNs dWRlL3VhcGkvbGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4gaW5k ZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL3Vh cGkvbGludXgvZjJmcy5oCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4gPiBA QCAtNDUsNiArNDUsOSBAQAo+ID4gICAjZGVmaW5lIEYyRlNfSU9DX1NUQVJUX0FUT01JQ19SRVBM QUNFICAgICAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyNSkKPiA+ICAgI2RlZmluZSBGMkZTX0lP Q19HRVRfREVWX0FMSUFTX0ZJTEUgX0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4g PiAgICNkZWZpbmUgRjJGU19JT0NfSU9fUFJJTyAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9N QUdJQywgMjcsIF9fdTMyKQo+ID4gKyNkZWZpbmUgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVMg ICBfSU8oRjJGU19JT0NUTF9NQUdJQywgMjgpCj4gPiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNF X0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOSkKPiA+ICsjZGVmaW5lIEYyRlNf SU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMw LCBfX3UzMikKPiA+Cj4gPiAgIC8qCj4gPiAgICAqIHNob3VsZCBiZSBzYW1lIGFzIFhGU19JT0Nf R09JTkdET1dOLgo+ID4gQEAgLTcwLDYgKzczLDEwIEBAIGVudW0gewo+ID4gICAgICAgRjJGU19J T1BSSU9fTUFYLAo+ID4gICB9Owo+ID4KPiA+ICsvKiBmb3IgRjJGU19JT0NfR0VUX0RFVl9BTElB U19TVEFUVVMgKi8KPiA+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAg ICAgICAwCj4gPiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgICAgICAg MQo+ID4gKwo+ID4gICBzdHJ1Y3QgZjJmc19nY19yYW5nZSB7Cj4gPiAgICAgICBfX3UzMiBzeW5j Owo+ID4gICAgICAgX191NjQgc3RhcnQ7Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1m MmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdl Lm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg==