From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: Re: [PATCH] drm/amdgpu: cleanup firmware requests v2 Date: Fri, 20 Apr 2018 15:35:16 -0400 Message-ID: <705fa570-e838-b9b4-681c-7a5f0e7d67da@gmail.com> References: <20180417221232.13179-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180417221232.13179-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, =?UTF-8?Q?Christian_K=c3=b6nig?= List-Id: dri-devel@lists.freedesktop.org UGluZy4KCk9uIDIwMTgtMDQtMTcgMDY6MTIgUE0sIEFuZHJlcyBSb2RyaWd1ZXogd3JvdGU6Cj4g QWRkIGEgbmV3IGZ1bmN0aW9uIGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKCkgdGhhdCBl bmNhcHN1bGF0ZXMgYQo+IGxvdCBvZiB0aGUgY29tbW9uIGJlaGF2aW91ciB3ZSBoYXZlIGFyb3Vu ZCBmaXJtd2FyZSByZXF1ZXN0cy4KPiAKPiBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIGluIG15IHF1 ZXN0IHRvIGdldCByaWQgb2YgdGhlIGZvbGxvd2luZyBhbm5veWluZwo+IG1lc3NhZ2VzIHdoZW4g bXkgcG9sYXJpczEwIGJvb3RzIHVwOgo+IFsgICAgMC41NTg1MzddIGFtZGdwdSAwMDAwOjAxOjAw LjA6IERpcmVjdCBmaXJtd2FyZSBsb2FkIGZvciBhbWRncHUvcG9sYXJpczEwX3BmcF8yLmJpbiBm YWlsZWQgd2l0aCBlcnJvciAtMgo+IFsgICAgMC41NTg1NTFdIGFtZGdwdSAwMDAwOjAxOjAwLjA6 IERpcmVjdCBmaXJtd2FyZSBsb2FkIGZvciBhbWRncHUvcG9sYXJpczEwX21lXzIuYmluIGZhaWxl ZCB3aXRoIGVycm9yIC0yCj4gWyAgICAwLjU1ODU2Ml0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogRGly ZWN0IGZpcm13YXJlIGxvYWQgZm9yIGFtZGdwdS9wb2xhcmlzMTBfY2VfMi5iaW4gZmFpbGVkIHdp dGggZXJyb3IgLTIKPiBbICAgIDAuNTU4NTgwXSBhbWRncHUgMDAwMDowMTowMC4wOiBEaXJlY3Qg ZmlybXdhcmUgbG9hZCBmb3IgYW1kZ3B1L3BvbGFyaXMxMF9tZWNfMi5iaW4gZmFpbGVkIHdpdGgg ZXJyb3IgLTIKPiBbICAgIDAuNTU4NjE5XSBhbWRncHUgMDAwMDowMTowMC4wOiBEaXJlY3QgZmly bXdhcmUgbG9hZCBmb3IgYW1kZ3B1L3BvbGFyaXMxMF9tZWMyXzIuYmluIGZhaWxlZCB3aXRoIGVy cm9yIC0yCj4gCj4gdjI6IG1ha2UgYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlIGZpbGUgc2NvcGUgb25s eQo+ICAgICAgYWRkIGtlcm5lbC1kb2MgZm9yIGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJl KCkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5j b20+Cj4gLS0tCj4gCj4gU29ycnkgZm9yIHRoZSBxdWljayBWMiwgbm90aWNlZCBzb21lIGRvY3Mg bWlnaHQgaGVscCBhbmQgdGhhdAo+IF92YWxpZGF0ZSgpIGNvdWxkIGJlIHJlZHVjZWQgaW4gc2Nv cGUuIFBhc3RpbmcgbXkgb2xkIG1lc3NhZ2UKPiBhZ2FpbiBqdXN0IGluIGNhc2UuCj4gCj4gSGV5 IENocmlzdGlhbiwKPiAKPiBXYW50ZWQgdG8gZ28gdGhyb3VnaCBhIGNsZWFudXAgb2YgdGhlIHVj b2RlIGxvYWRpbmcgaW4gYW1kZ3B1Cj4gdG8gZmFjaWxpdGF0ZSBzb21lIG9mIG91ciBoZWF0ZWQg ZGlzY3Vzc2lvbnMgOikKPiAKPiBGb3Igbm93LCBmdW5jdGlvbmFsaXR5IHNob3VsZCByZW1haW4g dGhlIHNhbWUuIE9uY2UgX25vd2FybigpCj4gbGFuZHMgd2UgY2FuIGNoYW5nZSBhbWRncHVfdWNv ZGVfcmVxdWVzdF9maXJtd2FyZSgpIHdpdGggZWl0aGVyOgo+IAo+IEFsdGVybmF0aXZlIEE6Cj4g LSAgICAgICBlcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZsb2FkZWRfZncsIG5hbWUsIGFkZXYtPmRl dik7Cj4gKyAgICAgICBlcnIgPSByZXF1ZXN0X2Zpcm13YXJlX25vd2FybigmbG9hZGVkX2Z3LCBu YW1lLCBhZGV2LT5kZXYpOwo+IAo+IEFsdGVybmF0aXZlIEI6Cj4gLSAgICAgICBlcnIgPSByZXF1 ZXN0X2Zpcm13YXJlKCZsb2FkZWRfZncsIG5hbWUsIGFkZXYtPmRldik7Cj4gKyAgICAgICBpZiAo b3B0aW9uYWwpCj4gKyAgICAgICAgICAgICAgIGVyciA9IHJlcXVlc3RfZmlybXdhcmVfbm93YXJu KCZsb2FkZWRfZncsIG5hbWUsIGFkZXYtPmRldik7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAg ICAgICAgIGVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmxvYWRlZF9mdywgbmFtZSwgYWRldi0+ZGV2 KTsKPiAKPiBJIHByZWZlciBBLCBidXQgSSdtIG5vdCBvcHBvc2VkIHRvIEIuIEknbGwgbGVhdmUg aXQgdXAgdG8geW91Lgo+IAo+IFJlZ2FyZHMsCj4gQW5kcmVzCj4gCj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY2dzLmMgICAgfCAgMTQgKy0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgIDE2ICstLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuYyAgfCAgNzQgKysrKysrKysrKysrKysrKy0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmggIHwgICA0ICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgICAgfCAgMTYgKy0t LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYyAgICB8ICAxNiAr LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jICAgIHwgIDE2 ICstLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaV9kcG0uYyAgICAgICAgfCAg MTUgKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX3NkbWEuYyAgICAgIHwg ICA1ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jICAgICAgfCAg MTkgKystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMgICAgICB8 ICAzMCArKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAg ICAgIHwgMTEyICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jICAgICAgfCAgMzkgKysrLS0tLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYyAgICAgIHwgIDE3ICstLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jICAgICAgfCAgMTQgKy0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYyAgICAgIHwgIDE0ICstLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jICAgICB8ICAxOCArLS0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YzXzEuYyAgICAgIHwgIDE1ICstLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5jICAgICB8ICAgNiArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92M18wLmMgICAgIHwgICA2ICstCj4gICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyAgICAgfCAgIDcgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jICAgICAgICB8ICAxNiArLS0tLQo+ICAg MjIgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlvbnMoKyksIDMyNSBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jCj4gaW5kZXggYThhOTQyYzYw ZWEyLi4zNDdhYjE3MTA1MjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Nncy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Nncy5jCj4gQEAgLTQwMiwxOSArNDAyLDkgQEAgc3RhdGljIGludCBhbWRncHVfY2dzX2dldF9m aXJtd2FyZV9pbmZvKHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLAo+ICAgCQkJCXJldHVy biAtRUlOVkFMOwo+ICAgCQkJfQo+ICAgCj4gLQkJCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFk ZXYtPnBtLmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCQlpZiAoZXJyKSB7Cj4gLQkJCQlE Uk1fRVJST1IoIkZhaWxlZCB0byByZXF1ZXN0IGZpcm13YXJlXG4iKTsKPiArCQkJZXJyID0gYW1k Z3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPnBtLmZ3LCBmd19uYW1lLCBm YWxzZSk7Cj4gKwkJCWlmIChlcnIpCj4gICAJCQkJcmV0dXJuIGVycjsKPiAtCQkJfQo+IC0KPiAt CQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBtLmZ3KTsKPiAtCQkJaWYgKGVy cikgewo+IC0JCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBcIiVzXCIiLCBm d19uYW1lKTsKPiAtCQkJCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+cG0uZncpOwo+IC0JCQkJYWRl di0+cG0uZncgPSBOVUxMOwo+IC0JCQkJcmV0dXJuIGVycjsKPiAtCQkJfQo+ICAgCj4gICAJCQlp ZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09IEFNREdQVV9GV19MT0FEX1BTUCkgewo+ICAg CQkJCXVjb2RlID0gJmFkZXYtPmZpcm13YXJlLnVjb2RlW0FNREdQVV9VQ09ERV9JRF9TTUNdOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKPiBpbmRleCBhYmMz MzQ2NDk1OWUuLjk2N2UxNGYxNGFiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMKPiBAQCAtMTM1NSwyMCArMTM1NSwxMCBAQCBzdGF0aWMgaW50IGFt ZGdwdV9kZXZpY2VfcGFyc2VfZ3B1X2luZm9fZncoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp Cj4gICAJfQo+ICAgCj4gICAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1k Z3B1LyVzX2dwdV9pbmZvLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIgPSByZXF1ZXN0X2Zpcm13 YXJlKCZhZGV2LT5maXJtd2FyZS5ncHVfaW5mb19mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAt CWlmIChlcnIpIHsKPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwKPiAtCQkJIkZhaWxlZCB0byBsb2Fk IGdwdV9pbmZvIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkJZndfbmFtZSk7Cj4gKwllcnIgPSBh bWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+ZmlybXdhcmUuZ3B1X2lu Zm9fZncsCj4gKwkJCQkJICAgIGZ3X25hbWUsIGZhbHNlKTsKPiArCWlmIChlcnIpCj4gICAJCWdv dG8gb3V0Owo+IC0JfQo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmZpcm13 YXJlLmdwdV9pbmZvX2Z3KTsKPiAtCWlmIChlcnIpIHsKPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwK PiAtCQkJIkZhaWxlZCB0byB2YWxpZGF0ZSBncHVfaW5mbyBmaXJtd2FyZSBcIiVzXCJcbiIsCj4g LQkJCWZ3X25hbWUpOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+ICAgCj4gICAJaGRyID0gKGNvbnN0 IHN0cnVjdCBncHVfaW5mb19maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmZpcm13YXJlLmdw dV9pbmZvX2Z3LT5kYXRhOwo+ICAgCWFtZGdwdV91Y29kZV9wcmludF9ncHVfaW5mb19oZHIoJmhk ci0+aGVhZGVyKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Vjb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUuYwo+ IGluZGV4IGRkNmY5ODkyMTkxOC4uYjljYjhhNDg4ZDNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmMKPiBAQCAtMjgsNiArMjgsNzAgQEAKPiAgICNpbmNs dWRlICJhbWRncHUuaCIKPiAgICNpbmNsdWRlICJhbWRncHVfdWNvZGUuaCIKPiAgIAo+ICtzdGF0 aWMgaW50IGFtZGdwdV91Y29kZV92YWxpZGF0ZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQo+ ICt7Cj4gKwljb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqaGRyID0KPiArCQko Y29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilmdy0+ZGF0YTsKPiArCj4gKwlp ZiAoZnctPnNpemUgPT0gbGUzMl90b19jcHUoaGRyLT5zaXplX2J5dGVzKSkKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGFtZGdwdV91 Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKCkgLSByZXF1ZXN0IGEgZmlybXdhcmUgYmluYXJ5IGZpbGUK PiArICoKPiArICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgo+ICsgKiBAZnc6IHdpbGwg YmUgcG9wdWxhdGVkIHdpdGggdGhlIGZpcm13YXJlIG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVy ZQo+ICsgKiBAbmFtZTogbmFtZSBvZiB0aGUgZmlybXdhcmUgZmlsZSB0byBsb2FkCj4gKyAqIEBv cHRpb25hbDogc2lnbmFsIHdlIGFyZSBsb2FkaW5nIGEgbm9uLWVzc2VudGlhbCBmdyBmaWxlLgo+ ICsgKgo+ICsgKiBXaGVuIGxvYWRpbmcgb3B0aW9uYWwgZmlybXdhcmUsIGlmIHRoZSBmaWxlIGlz IG5vdCBmb3VuZCBpdCB3aWxsIG5vdAo+ICsgKiBiZSB0cmVhdGVkIGFzIGFuIGVycm9yLiBIb3dl dmVyLCBpZiB0aGUgZmlsZSBpcyBmb3VuZCwgYnV0IHdlIGVuY291bnRlcgo+ICsgKiB2YWxpZGF0 aW9uIG9yIG90aGVyIGVycm9ycywgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWlsdXJlLgo+ ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZQo+ICsgKi8K PiAraW50IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAo+ICsJCQkJICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdywKPiArCQkJCSAgY29u c3QgY2hhciAqbmFtZSwgYm9vbCBvcHRpb25hbCkKPiArewo+ICsJaW50IGVycjsKPiArCWNvbnN0 IHN0cnVjdCBmaXJtd2FyZSAqbG9hZGVkX2Z3ID0gTlVMTDsKPiArCj4gKwlpZiAoIWZ3KQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmxvYWRlZF9m dywgbmFtZSwgYWRldi0+ZGV2KTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBlcnJvcjsKPiArCj4g KwllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUobG9hZGVkX2Z3KTsKPiArCWlmIChlcnIpCj4g KwkJZ290byBlcnJvcjsKPiArCj4gKwkqZncgPSBsb2FkZWRfZnc7Cj4gKwlyZXR1cm4gZXJyOwo+ ICsKPiArZXJyb3I6Cj4gKwlpZiAobG9hZGVkX2Z3KQo+ICsJCXJlbGVhc2VfZmlybXdhcmUobG9h ZGVkX2Z3KTsKPiArCj4gKwlpZiAoIW9wdGlvbmFsKQo+ICsJCWRldl9lcnIoYWRldi0+ZGV2LCAi ZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXNcbiIsIG5hbWUpOwo+ICsKPiArCS8vIE5vdGhpbmcg dXNlZnVsIHdhcyBsb2FkZWQKPiArCSpmdyA9IE5VTEw7Cj4gKwo+ICsJLy8gSWYgd2UgY2FuJ3Qg ZmluZCBvcHRpb25hbCBGVywgZG9uJ3QgcmV0dXJuIGFuIGVycm9yCj4gKwlpZiAob3B0aW9uYWwg JiYgIWxvYWRlZF9mdykKPiArCQllcnIgPSAwOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiAr Cj4gKwo+ICAgc3RhdGljIHZvaWQgYW1kZ3B1X3Vjb2RlX3ByaW50X2NvbW1vbl9oZHIoY29uc3Qg c3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcikKPiAgIHsKPiAgIAlEUk1fREVCVUco InNpemVfYnl0ZXM6ICV1XG4iLCBsZTMyX3RvX2NwdShoZHItPnNpemVfYnl0ZXMpKTsKPiBAQCAt MjE4LDE2ICsyODIsNiBAQCB2b2lkIGFtZGdwdV91Y29kZV9wcmludF9ncHVfaW5mb19oZHIoY29u c3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcikKPiAgIAl9Cj4gICB9Cj4gICAK PiAtaW50IGFtZGdwdV91Y29kZV92YWxpZGF0ZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQo+ IC17Cj4gLQljb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqaGRyID0KPiAtCQko Y29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilmdy0+ZGF0YTsKPiAtCj4gLQlp ZiAoZnctPnNpemUgPT0gbGUzMl90b19jcHUoaGRyLT5zaXplX2J5dGVzKSkKPiAtCQlyZXR1cm4g MDsKPiAtCj4gLQlyZXR1cm4gLUVJTlZBTDsKPiAtfQo+ICAgCj4gICBib29sIGFtZGdwdV91Y29k ZV9oZHJfdmVyc2lvbih1bmlvbiBhbWRncHVfZmlybXdhcmVfaGVhZGVyICpoZHIsCj4gICAJCQkJ dWludDE2X3QgaGRyX21ham9yLCB1aW50MTZfdCBoZHJfbWlub3IpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3Vjb2RlLmgKPiBpbmRleCAzMGI1NTAwZGMxNTIuLjA4OTNiY2Y2 ODZlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNv ZGUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5oCj4g QEAgLTIwNiwxMyArMjA2LDE1IEBAIHN0cnVjdCBhbWRncHVfZmlybXdhcmVfaW5mbyB7Cj4gICAJ dWludDMyX3QgdWNvZGVfc2l6ZTsKPiAgIH07Cj4gICAKPiAraW50IGFtZGdwdV91Y29kZV9yZXF1 ZXN0X2Zpcm13YXJlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsJCQkJICBjb25zdCBz dHJ1Y3QgZmlybXdhcmUgKipmdywKPiArCQkJCSAgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBvcHRp b25hbCk7Cj4gICB2b2lkIGFtZGdwdV91Y29kZV9wcmludF9tY19oZHIoY29uc3Qgc3RydWN0IGNv bW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcik7Cj4gICB2b2lkIGFtZGdwdV91Y29kZV9wcmludF9z bWNfaGRyKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICpoZHIpOwo+ICAgdm9p ZCBhbWRncHVfdWNvZGVfcHJpbnRfZ2Z4X2hkcihjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJl X2hlYWRlciAqaGRyKTsKPiAgIHZvaWQgYW1kZ3B1X3Vjb2RlX3ByaW50X3JsY19oZHIoY29uc3Qg c3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcik7Cj4gICB2b2lkIGFtZGdwdV91Y29k ZV9wcmludF9zZG1hX2hkcihjb25zdCBzdHJ1Y3QgY29tbW9uX2Zpcm13YXJlX2hlYWRlciAqaGRy KTsKPiAgIHZvaWQgYW1kZ3B1X3Vjb2RlX3ByaW50X2dwdV9pbmZvX2hkcihjb25zdCBzdHJ1Y3Qg Y29tbW9uX2Zpcm13YXJlX2hlYWRlciAqaGRyKTsKPiAtaW50IGFtZGdwdV91Y29kZV92YWxpZGF0 ZShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KTsKPiAgIGJvb2wgYW1kZ3B1X3Vjb2RlX2hkcl92 ZXJzaW9uKHVuaW9uIGFtZGdwdV9maXJtd2FyZV9oZWFkZXIgKmhkciwKPiAgIAkJCQl1aW50MTZf dCBoZHJfbWFqb3IsIHVpbnQxNl90IGhkcl9taW5vcik7Cj4gICBpbnQgYW1kZ3B1X3Vjb2RlX2lu aXRfYm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdXZkLmMKPiBpbmRleCA2Mjc1NDJiMjJhZTQuLmZiM2M3NTk1YWQwOSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPiBAQCAtMTc2LDIxICsx NzYsOSBAQCBpbnQgYW1kZ3B1X3V2ZF9zd19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAl9Cj4gICAKPiAtCXIgPSByZXF1ZXN0X2Zpcm13 YXJlKCZhZGV2LT51dmQuZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAocikgewo+IC0J CWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X3V2ZDogQ2FuJ3QgbG9hZCBmaXJtd2FyZSBcIiVz XCJcbiIsCj4gLQkJCWZ3X25hbWUpOwo+IC0JCXJldHVybiByOwo+IC0JfQo+IC0KPiAtCXIgPSBh bWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+dXZkLmZ3KTsKPiAtCWlmIChyKSB7Cj4gLQkJZGV2 X2VycihhZGV2LT5kZXYsICJhbWRncHVfdXZkOiBDYW4ndCB2YWxpZGF0ZSBmaXJtd2FyZSBcIiVz XCJcbiIsCj4gLQkJCWZ3X25hbWUpOwo+IC0JCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+dXZkLmZ3 KTsKPiAtCQlhZGV2LT51dmQuZncgPSBOVUxMOwo+ICsJciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0 X2Zpcm13YXJlKGFkZXYsICZhZGV2LT51dmQuZncsIGZ3X25hbWUsIGZhbHNlKTsKPiArCWlmIChy KQo+ICAgCQlyZXR1cm4gcjsKPiAtCX0KPiAgIAo+ICAgCS8qIFNldCB0aGUgZGVmYXVsdCBVVkQg aGFuZGxlcyB0aGF0IHRoZSBmaXJtd2FyZSBjYW4gaGFuZGxlICovCj4gICAJYWRldi0+dXZkLm1h eF9oYW5kbGVzID0gQU1ER1BVX0RFRkFVTFRfVVZEX0hBTkRMRVM7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+IGluZGV4IGEzMzgwNGJkMzMxNC4uNGY0MWYzZmQyNzg2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+IEBAIC0xNDMs MjEgKzE0Myw5IEBAIGludCBhbWRncHVfdmNlX3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+ ICAgCj4gLQlyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+dmNlLmZ3LCBmd19uYW1lLCBhZGV2 LT5kZXYpOwo+IC0JaWYgKHIpIHsKPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwgImFtZGdwdV92Y2U6 IENhbid0IGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLAo+IC0JCQlmd19uYW1lKTsKPiAtCQlyZXR1 cm4gcjsKPiAtCX0KPiAtCj4gLQlyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnZjZS5m dyk7Cj4gLQlpZiAocikgewo+IC0JCWRldl9lcnIoYWRldi0+ZGV2LCAiYW1kZ3B1X3ZjZTogQ2Fu J3QgdmFsaWRhdGUgZmlybXdhcmUgXCIlc1wiXG4iLAo+IC0JCQlmd19uYW1lKTsKPiAtCQlyZWxl YXNlX2Zpcm13YXJlKGFkZXYtPnZjZS5mdyk7Cj4gLQkJYWRldi0+dmNlLmZ3ID0gTlVMTDsKPiAr CXIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+dmNlLmZ3LCBm d19uYW1lLCBmYWxzZSk7Cj4gKwlpZiAocikKPiAgIAkJcmV0dXJuIHI7Cj4gLQl9Cj4gICAKPiAg IAloZHIgPSAoY29uc3Qgc3RydWN0IGNvbW1vbl9maXJtd2FyZV9oZWFkZXIgKilhZGV2LT52Y2Uu ZnctPmRhdGE7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3Zjbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4g aW5kZXggNThlNDk1MzMwYjM4Li4wN2YzOTlhNjRjYjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4gQEAgLTY3LDIxICs2Nyw5IEBAIGludCBhbWRncHVfdmNu X3N3X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJCXJldHVybiAtRUlOVkFM Owo+ICAgCX0KPiAgIAo+IC0JciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnZjbi5mdywgZndf bmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlmIChyKSB7Cj4gLQkJZGV2X2VycihhZGV2LT5kZXYsICJh bWRncHVfdmNuOiBDYW4ndCBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkJZndfbmFtZSk7 Cj4gLQkJcmV0dXJuIHI7Cj4gLQl9Cj4gLQo+IC0JciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShh ZGV2LT52Y24uZncpOwo+IC0JaWYgKHIpIHsKPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwgImFtZGdw dV92Y246IENhbid0IHZhbGlkYXRlIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkJZndfbmFtZSk7 Cj4gLQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT52Y24uZncpOwo+IC0JCWFkZXYtPnZjbi5mdyA9 IE5VTEw7Cj4gKwlyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYt PnZjbi5mdywgZndfbmFtZSwgZmFsc2UpOwo+ICsJaWYgKHIpCj4gICAJCXJldHVybiByOwo+IC0J fQo+ICAgCj4gICAJaGRyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVfaGVhZGVyICop YWRldi0+dmNuLmZ3LT5kYXRhOwo+ICAgCWZhbWlseV9pZCA9IGxlMzJfdG9fY3B1KGhkci0+dWNv ZGVfdmVyc2lvbikgJiAweGZmOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9jaV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCj4gaW5k ZXggYmU2YjE5OTUxZTZhLi4zNDExODAzMTg4YWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvY2lfZHBtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9jaV9kcG0uYwo+IEBAIC01Nzg5LDcgKzU3ODksNiBAQCBzdGF0aWMgaW50IGNpX2RwbV9pbml0 X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgIHsKPiAgIAljb25zdCBj aGFyICpjaGlwX25hbWU7Cj4gICAJY2hhciBmd19uYW1lWzMwXTsKPiAtCWludCBlcnI7Cj4gICAK PiAgIAlEUk1fREVCVUcoIlxuIik7Cj4gICAKPiBAQCAtNTgxNSwxOCArNTgxNCw4IEBAIHN0YXRp YyBpbnQgY2lfZHBtX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgCX0KPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVv bi8lc19zbWMuYmluIiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFk ZXYtPnBtLmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JaWYgKGVycikKPiAtCQlnb3RvIG91 dDsKPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5wbS5mdyk7Cj4gLQo+IC1v dXQ6Cj4gLQlpZiAoZXJyKSB7Cj4gLQkJcHJfZXJyKCJjaWtfc21jOiBGYWlsZWQgdG8gbG9hZCBm aXJtd2FyZSBcIiVzXCJcbiIsIGZ3X25hbWUpOwo+IC0JCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+ cG0uZncpOwo+IC0JCWFkZXYtPnBtLmZ3ID0gTlVMTDsKPiAtCX0KPiAtCXJldHVybiBlcnI7Cj4g KwlyZXR1cm4gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPnBtLmZ3 LCBmd19uYW1lLAo+ICsJCQkJCSAgICAgZmFsc2UpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50 IGNpX2RwbV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfc2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvY2lrX3NkbWEuYwo+IGluZGV4IGE3NTc2MjU1Y2MzMC4uNzc0ZDlhZWNhYjAyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfc2RtYS5jCj4gQEAgLTEzNSwxNCArMTM1 LDEzIEBAIHN0YXRpYyBpbnQgY2lrX3NkbWFfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCj4gICAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJy YWRlb24vJXNfc2RtYS5iaW4iLCBjaGlwX25hbWUpOwo+ICAgCQllbHNlCj4gICAJCQlzbnByaW50 Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNfc2RtYTEuYmluIiwgY2hpcF9u YW1lKTsKPiAtCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5zZG1hLmluc3RhbmNlW2ld LmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+ICsJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0 X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3LAo+ICsJCQkJCQkgICAg ZndfbmFtZSwgZmFsc2UpOwo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJZ290byBvdXQ7Cj4gLQkJZXJy ID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncpOwo+ICAg CX0KPiAgIG91dDoKPiAgIAlpZiAoZXJyKSB7Cj4gLQkJcHJfZXJyKCJjaWtfc2RtYTogRmFpbGVk IHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKPiAgIAkJZm9yIChpID0gMDsg aSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4gICAJCQlyZWxlYXNlX2Zpcm13 YXJlKGFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncpOwo+ICAgCQkJYWRldi0+c2RtYS5pbnN0YW5j ZVtpXS5mdyA9IE5VTEw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dmeF92Nl8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jCj4gaW5k ZXggY2Q2YmYyOTFhODUzLi5lNWJjYmVjNDFhMWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dmeF92Nl8wLmMKPiBAQCAtMzM2LDEwICszMzYsNyBAQCBzdGF0aWMgaW50IGdmeF92Nl8w X2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCX0KPiAgIAo+ ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVvbi8lc19wZnAuYmlu IiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5wZnBf ZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0J ZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5wZnBfZncpOwo+ICsJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3 X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAljcF9oZHIg PSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5wZnBf ZnctPmRhdGE7Cj4gQEAgLTM0NywxMCArMzQ0LDcgQEAgc3RhdGljIGludCBnZnhfdjZfMF9pbml0 X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgIAlhZGV2LT5nZngucGZw X2ZlYXR1cmVfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KGNwX2hkci0+dWNvZGVfZmVhdHVyZV92ZXJz aW9uKTsKPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVv bi8lc19tZS5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRl di0+Z2Z4Lm1lX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JaWYgKGVycikKPiAtCQlnb3Rv IG91dDsKPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngubWVfZncpOwo+ ICsJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5t ZV9mdywgZndfbmFtZSwgZmFsc2UpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0Owo+ICAg CWNwX2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+ Z2Z4Lm1lX2Z3LT5kYXRhOwo+IEBAIC0zNTgsMTAgKzM1Miw3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y2 XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJYWRldi0+ Z2Z4Lm1lX2ZlYXR1cmVfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KGNwX2hkci0+dWNvZGVfZmVhdHVy ZV92ZXJzaW9uKTsKPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwg InJhZGVvbi8lc19jZS5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2Fy ZSgmYWRldi0+Z2Z4LmNlX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JaWYgKGVycikKPiAt CQlnb3RvIG91dDsKPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZnguY2Vf ZncpOwo+ICsJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYt PmdmeC5jZV9mdywgZndfbmFtZSwgZmFsc2UpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0 Owo+ICAgCWNwX2hkciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICop YWRldi0+Z2Z4LmNlX2Z3LT5kYXRhOwo+IEBAIC0zNjksMTcgKzM2MCwxNSBAQCBzdGF0aWMgaW50 IGdmeF92Nl8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAg CWFkZXYtPmdmeC5jZV9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVjb2Rl X2ZlYXR1cmVfdmVyc2lvbik7Cj4gICAKPiAgIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndf bmFtZSksICJyYWRlb24vJXNfcmxjLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIgPSByZXF1ZXN0 X2Zpcm13YXJlKCZhZGV2LT5nZngucmxjX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+ICsJZXJy ID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5ybGNfZncs IGZ3X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAtCWVyciA9 IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngucmxjX2Z3KTsKPiAgIAlybGNfaGRyID0g KGNvbnN0IHN0cnVjdCBybGNfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5nZngucmxjX2Z3 LT5kYXRhOwo+ICAgCWFkZXYtPmdmeC5ybGNfZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KHJsY19o ZHItPmhlYWRlci51Y29kZV92ZXJzaW9uKTsKPiAgIAlhZGV2LT5nZngucmxjX2ZlYXR1cmVfdmVy c2lvbiA9IGxlMzJfdG9fY3B1KHJsY19oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7Cj4gICAK PiAgIG91dDoKPiAgIAlpZiAoZXJyKSB7Cj4gLQkJcHJfZXJyKCJnZng2OiBGYWlsZWQgdG8gbG9h ZCBmaXJtd2FyZSBcIiVzXCJcbiIsIGZ3X25hbWUpOwo+ICAgCQlyZWxlYXNlX2Zpcm13YXJlKGFk ZXYtPmdmeC5wZnBfZncpOwo+ICAgCQlhZGV2LT5nZngucGZwX2Z3ID0gTlVMTDsKPiAgIAkJcmVs ZWFzZV9maXJtd2FyZShhZGV2LT5nZngubWVfZncpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y3XzAuYwo+IGluZGV4IDQyYjYxNDRjMWZkNS4uOWFlZDFiZTFjOWI0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCj4gQEAgLTkyNiw1NiArOTI2LDQwIEBAIHN0 YXRpYyBpbnQgZ2Z4X3Y3XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCj4gICAJfQo+ICAgCj4gICAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAi cmFkZW9uLyVzX3BmcC5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2Fy ZSgmYWRldi0+Z2Z4LnBmcF9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlmIChlcnIpCj4g LQkJZ290byBvdXQ7Cj4gLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LnBm cF9mdyk7Cj4gKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRl di0+Z2Z4LnBmcF9mdywgZndfbmFtZSwgZmFsc2UpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8g b3V0Owo+ICAgCj4gICAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAicmFkZW9u LyVzX21lLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2 LT5nZngubWVfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8g b3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5tZV9mdyk7Cj4g KwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4Lm1l X2Z3LCBmd19uYW1lLCBmYWxzZSk7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byBvdXQ7Cj4gICAK PiAgIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJyYWRlb24vJXNfY2UuYmlu IiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5jZV9m dywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQll cnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4LmNlX2Z3KTsKPiArCWVyciA9IGFt ZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZnguY2VfZncsIGZ3X25h bWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAo+ICAgCXNucHJp bnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVvbi8lc19tZWMuYmluIiwgY2hpcF9u YW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25h bWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1k Z3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5tZWNfZncpOwo+ICsJZXJyID0gYW1kZ3B1X3Vj b2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUsIGZh bHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAo+ICAgCWlmIChhZGV2LT5h c2ljX3R5cGUgPT0gQ0hJUF9LQVZFUkkpIHsKPiAgIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9m KGZ3X25hbWUpLCAicmFkZW9uLyVzX21lYzIuYmluIiwgY2hpcF9uYW1lKTsKPiAtCQllcnIgPSBy ZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVjMl9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsK PiAtCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dDsKPiAtCQllcnIgPSBhbWRncHVfdWNvZGVfdmFs aWRhdGUoYWRldi0+Z2Z4Lm1lYzJfZncpOwo+ICsJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0 X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVjMl9mdywgZndfbmFtZSwKPiArCQkJCQkJICAg IGZhbHNlKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAg CXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVvbi8lc19ybGMuYmluIiwg Y2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5ybGNfZncs IGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gKwllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJt d2FyZShhZGV2LCAmYWRldi0+Z2Z4LnJsY19mdywgZndfbmFtZSwgZmFsc2UpOwo+ICAgCWlmIChl cnIpCj4gICAJCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYt PmdmeC5ybGNfZncpOwo+ICAgCj4gICBvdXQ6Cj4gICAJaWYgKGVycikgewo+IC0JCXByX2Vycigi Z2Z4NzogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKPiAgIAkJ cmVsZWFzZV9maXJtd2FyZShhZGV2LT5nZngucGZwX2Z3KTsKPiAgIAkJYWRldi0+Z2Z4LnBmcF9m dyA9IE5VTEw7Cj4gICAJCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+Z2Z4Lm1lX2Z3KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKPiBpbmRleCBiMGU1OTFlYWE3MWEuLmIxMGNl NDc4NmI4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhf MC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwo+IEBAIC05 MzQsNjMgKzkzNCw1NyBAQCBzdGF0aWMgaW50IGdmeF92OF8wX2luaXRfbWljcm9jb2RlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCQlCVUcoKTsKPiAgIAl9Cj4gICAKPiArCWFkZXYt PmdmeC5wZnBfZncgPSBOVUxMOwo+ICAgCWlmIChhZGV2LT5hc2ljX3R5cGUgPj0gQ0hJUF9QT0xB UklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENISVBfUE9MQVJJUzEyKSB7Cj4gICAJCXNucHJp bnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19wZnBfMi5iaW4iLCBjaGlw X25hbWUpOwo+IC0JCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5wZnBfZncsIGZ3 X25hbWUsIGFkZXYtPmRldik7Cj4gLQkJaWYgKGVyciA9PSAtRU5PRU5UKSB7Cj4gLQkJCXNucHJp bnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19wZnAuYmluIiwgY2hpcF9u YW1lKTsKPiAtCQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LnBmcF9mdywgZndf bmFtZSwgYWRldi0+ZGV2KTsKPiAtCQl9Cj4gLQl9IGVsc2Ugewo+ICsJCWVyciA9IGFtZGdwdV91 Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngucGZwX2Z3LCBmd19uYW1lLCB0 cnVlKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAoIWFk ZXYtPmdmeC5wZnBfZncpIHsKPiAgIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiYW1kZ3B1LyVzX3BmcC5iaW4iLCBjaGlwX25hbWUpOwo+IC0JCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmFkZXYtPmdmeC5wZnBfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gKwkJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5wZnBfZncsIGZ3 X25hbWUsIGZhbHNlKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIG91dDsKPiAgIAl9Cj4gLQlp ZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFk ZXYtPmdmeC5wZnBfZncpOwo+IC0JaWYgKGVycikKPiAtCQlnb3RvIG91dDsKPiArCj4gICAJY3Bf aGRyID0gKGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5nZngu cGZwX2Z3LT5kYXRhOwo+ICAgCWFkZXYtPmdmeC5wZnBfZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1 KGNwX2hkci0+aGVhZGVyLnVjb2RlX3ZlcnNpb24pOwo+ICAgCWFkZXYtPmdmeC5wZnBfZmVhdHVy ZV92ZXJzaW9uID0gbGUzMl90b19jcHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwo+ ICAgCj4gKwlhZGV2LT5nZngubWVfZncgPSBOVUxMOwo+ICAgCWlmIChhZGV2LT5hc2ljX3R5cGUg Pj0gQ0hJUF9QT0xBUklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENISVBfUE9MQVJJUzEyKSB7 Cj4gICAJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZV8y LmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4 Lm1lX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCWlmIChlcnIgPT0gLUVOT0VOVCkgewo+ IC0JCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfbWUuYmlu IiwgY2hpcF9uYW1lKTsKPiAtCQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1l X2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gKwkJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZV9mdywgZndf bmFtZSwgdHJ1ZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJ aWYgKCFhZGV2LT5nZngubWVfZncpIHsKPiAgIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3 X25hbWUpLCAiYW1kZ3B1LyVzX21lLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJZXJyID0gcmVxdWVz dF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+ICsJCWVy ciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVfZncs IGZ3X25hbWUsIGZhbHNlKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIG91dDsKPiAgIAl9Cj4g LQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRl KGFkZXYtPmdmeC5tZV9mdyk7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+ICAgCWNwX2hk ciA9IChjb25zdCBzdHJ1Y3QgZ2Z4X2Zpcm13YXJlX2hlYWRlcl92MV8wICopYWRldi0+Z2Z4Lm1l X2Z3LT5kYXRhOwo+ICAgCWFkZXYtPmdmeC5tZV9md192ZXJzaW9uID0gbGUzMl90b19jcHUoY3Bf aGRyLT5oZWFkZXIudWNvZGVfdmVyc2lvbik7Cj4gICAKPiAgIAlhZGV2LT5nZngubWVfZmVhdHVy ZV92ZXJzaW9uID0gbGUzMl90b19jcHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwo+ ICAgCj4gKwlhZGV2LT5nZnguY2VfZncgPSBOVUxMOwo+ICAgCWlmIChhZGV2LT5hc2ljX3R5cGUg Pj0gQ0hJUF9QT0xBUklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENISVBfUE9MQVJJUzEyKSB7 Cj4gICAJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19jZV8y LmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4 LmNlX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCWlmIChlcnIgPT0gLUVOT0VOVCkgewo+ IC0JCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfY2UuYmlu IiwgY2hpcF9uYW1lKTsKPiAtCQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4LmNl X2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gKwkJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5jZV9mdywgZndf bmFtZSwgdHJ1ZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlpZiAo IWFkZXYtPmdmeC5jZV9mdykgewo+ICAgCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFt ZSksICJhbWRncHUvJXNfY2UuYmluIiwgY2hpcF9uYW1lKTsKPiAtCQllcnIgPSByZXF1ZXN0X2Zp cm13YXJlKCZhZGV2LT5nZnguY2VfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gKwkJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5jZV9mdywgZndf bmFtZSwgZmFsc2UpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gb3V0Owo+ICAgCX0KPiAtCWlm IChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRl di0+Z2Z4LmNlX2Z3KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gICAJY3BfaGRyID0g KGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5nZnguY2VfZnct PmRhdGE7Cj4gICAJYWRldi0+Z2Z4LmNlX2Z3X3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHIt PmhlYWRlci51Y29kZV92ZXJzaW9uKTsKPiAgIAlhZGV2LT5nZnguY2VfZmVhdHVyZV92ZXJzaW9u ID0gbGUzMl90b19jcHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwo+IEBAIC0xMDA3 LDEwICsxMDAxLDkgQEAgc3RhdGljIGludCBnZnhfdjhfMF9pbml0X21pY3JvY29kZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKPiAgIAkJYWRldi0+dmlydC5jaGFpbmVkX2liX3N1cHBvcnQg PSBmYWxzZTsKPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFt ZGdwdS8lc19ybGMuYmluIiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUo JmFkZXYtPmdmeC5ybGNfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gKwllcnIgPSBhbWRncHVf dWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4LnJsY19mdywgZndfbmFtZSwg ZmFsc2UpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vj b2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5ybGNfZncpOwo+ICAgCXJsY19oZHIgPSAoY29uc3Qgc3Ry dWN0IHJsY19maXJtd2FyZV9oZWFkZXJfdjJfMCAqKWFkZXYtPmdmeC5ybGNfZnctPmRhdGE7Cj4g ICAJYWRldi0+Z2Z4LnJsY19md192ZXJzaW9uID0gbGUzMl90b19jcHUocmxjX2hkci0+aGVhZGVy LnVjb2RlX3ZlcnNpb24pOwo+ICAgCWFkZXYtPmdmeC5ybGNfZmVhdHVyZV92ZXJzaW9uID0gbGUz Ml90b19jcHUocmxjX2hkci0+dWNvZGVfZmVhdHVyZV92ZXJzaW9uKTsKPiBAQCAtMTA1NSw0MyAr MTA0OCwzOSBAQCBzdGF0aWMgaW50IGdmeF92OF8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQo+ICAgCWZvciAoaSA9IDAgOyBpIDwgKHJsY19oZHItPnJlZ19saXN0 X3NpemVfYnl0ZXMgPj4gMik7IGkrKykKPiAgIAkJYWRldi0+Z2Z4LnJsYy5yZWdpc3Rlcl9yZXN0 b3JlW2ldID0gbGUzMl90b19jcHUodG1wW2ldKTsKPiAgIAo+ICsJYWRldi0+Z2Z4Lm1lY19mdyA9 IE5VTEw7Cj4gICAJaWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX1BPTEFSSVMxMCAmJiBhZGV2 LT5hc2ljX3R5cGUgPD0gQ0hJUF9QT0xBUklTMTIpIHsKPiAgIAkJc25wcmludGYoZndfbmFtZSwg c2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX21lY18yLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJ ZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+Z2Z4Lm1lY19mdywgZndfbmFtZSwgYWRldi0+ ZGV2KTsKPiAtCQlpZiAoZXJyID09IC1FTk9FTlQpIHsKPiAtCQkJc25wcmludGYoZndfbmFtZSwg c2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX21lYy5iaW4iLCBjaGlwX25hbWUpOwo+IC0JCQll cnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVjX2Z3LCBmd19uYW1lLCBhZGV2LT5k ZXYpOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3Rf ZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUsIHRydWUpOwo+ICsJCWlm IChlcnIpCj4gKwkJCWdvdG8gb3V0Owo+ICsJfQo+ICsJaWYgKCFhZGV2LT5nZngubWVjX2Z3KSB7 Cj4gICAJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZWMu YmluIiwgY2hpcF9uYW1lKTsKPiAtCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngu bWVjX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+ICsJCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1 ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVjX2Z3LCBmd19uYW1lLCBmYWxzZSk7Cj4g KwkJaWYgKGVycikKPiArCQkJZ290byBvdXQ7Cj4gICAJfQo+IC0JaWYgKGVycikKPiAtCQlnb3Rv IG91dDsKPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngubWVjX2Z3KTsK PiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gICAJY3BfaGRyID0gKGNvbnN0IHN0cnVjdCBn ZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5nZngubWVjX2Z3LT5kYXRhOwo+ICAgCWFk ZXYtPmdmeC5tZWNfZndfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KGNwX2hkci0+aGVhZGVyLnVjb2Rl X3ZlcnNpb24pOwo+ICAgCWFkZXYtPmdmeC5tZWNfZmVhdHVyZV92ZXJzaW9uID0gbGUzMl90b19j cHUoY3BfaGRyLT51Y29kZV9mZWF0dXJlX3ZlcnNpb24pOwo+ICAgCj4gICAJaWYgKChhZGV2LT5h c2ljX3R5cGUgIT0gQ0hJUF9TVE9ORVkpICYmCj4gICAJICAgIChhZGV2LT5hc2ljX3R5cGUgIT0g Q0hJUF9UT1BBWikpIHsKPiArCQlhZGV2LT5nZngubWVjMl9mdyA9IE5VTEw7Cj4gICAJCWlmIChh ZGV2LT5hc2ljX3R5cGUgPj0gQ0hJUF9QT0xBUklTMTAgJiYgYWRldi0+YXNpY190eXBlIDw9IENI SVBfUE9MQVJJUzEyKSB7Cj4gICAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSks ICJhbWRncHUvJXNfbWVjMl8yLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJCWVyciA9IHJlcXVlc3Rf ZmlybXdhcmUoJmFkZXYtPmdmeC5tZWMyX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCQlp ZiAoZXJyID09IC1FTk9FTlQpIHsKPiAtCQkJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19u YW1lKSwgImFtZGdwdS8lc19tZWMyLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJCQllcnIgPSByZXF1 ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVjMl9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAt CQkJfQo+IC0JCX0gZWxzZSB7Cj4gLQkJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1l KSwgImFtZGdwdS8lc19tZWMyLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJCWVyciA9IHJlcXVlc3Rf ZmlybXdhcmUoJmFkZXYtPmdmeC5tZWMyX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+ICsJCQll cnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShhZGV2LCAmYWRldi0+Z2Z4Lm1lYzJf ZncsIGZ3X25hbWUsIHRydWUpOwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byBvdXQ7Cj4gICAJ CX0KPiAtCQlpZiAoIWVycikgewo+IC0JCQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRl di0+Z2Z4Lm1lYzJfZncpOwo+ICsJCWlmICghYWRldi0+Z2Z4Lm1lYzJfZncpIHsKPiArCQkJc25w cmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX21lYzIuYmluIiwgY2hp cF9uYW1lKTsKPiArCQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwg JmFkZXYtPmdmeC5tZWMyX2Z3LCBmd19uYW1lLCB0cnVlKTsKPiAgIAkJCWlmIChlcnIpCj4gICAJ CQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsJCWlmICghZXJyKSB7Cj4gICAJCQljcF9oZHIgPSAoY29u c3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKQo+ICAgCQkJCWFkZXYtPmdmeC5t ZWMyX2Z3LT5kYXRhOwo+ICAgCQkJYWRldi0+Z2Z4Lm1lYzJfZndfdmVyc2lvbiA9Cj4gQEAgLTEx NjYsOSArMTE1NSw2IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAKPiAgIG91dDoKPiAgIAlpZiAoZXJyKSB7Cj4gLQkJ ZGV2X2VycihhZGV2LT5kZXYsCj4gLQkJCSJnZng4OiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBc IiVzXCJcbiIsCj4gLQkJCWZ3X25hbWUpOwo+ICAgCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdm eC5wZnBfZncpOwo+ICAgCQlhZGV2LT5nZngucGZwX2Z3ID0gTlVMTDsKPiAgIAkJcmVsZWFzZV9m aXJtd2FyZShhZGV2LT5nZngubWVfZncpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nZnhfdjlfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5 XzAuYwo+IGluZGV4IDlkMzlmZDViMTgyMi4uZGEyYTgyOWQ3NzI1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCj4gQEAgLTQzMCwxMCArNDMwLDcgQEAgc3RhdGljIGlu dCBnZnhfdjlfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAg IAl9Cj4gICAKPiAgIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUv JXNfcGZwLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2 LT5nZngucGZwX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JaWYgKGVycikKPiAtCQlnb3Rv IG91dDsKPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngucGZwX2Z3KTsK PiArCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngu cGZwX2Z3LCBmd19uYW1lLCBmYWxzZSk7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byBvdXQ7Cj4g ICAJY3BfaGRyID0gKGNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2 LT5nZngucGZwX2Z3LT5kYXRhOwo+IEBAIC00NDEsMTAgKzQzOCw3IEBAIHN0YXRpYyBpbnQgZ2Z4 X3Y5XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJYWRl di0+Z2Z4LnBmcF9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2Zl YXR1cmVfdmVyc2lvbik7Cj4gICAKPiAgIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFt ZSksICJhbWRncHUvJXNfbWUuYmluIiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmFkZXYtPmdmeC5tZV9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlmIChlcnIp Cj4gLQkJZ290byBvdXQ7Cj4gLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+Z2Z4 Lm1lX2Z3KTsKPiArCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZh ZGV2LT5nZngubWVfZncsIGZ3X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3Rv IG91dDsKPiAgIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFf MCAqKWFkZXYtPmdmeC5tZV9mdy0+ZGF0YTsKPiBAQCAtNDUyLDEwICs0NDYsNyBAQCBzdGF0aWMg aW50IGdmeF92OV8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgCWFkZXYtPmdmeC5tZV9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9oZHItPnVj b2RlX2ZlYXR1cmVfdmVyc2lvbik7Cj4gICAKPiAgIAlzbnByaW50Zihmd19uYW1lLCBzaXplb2Yo ZndfbmFtZSksICJhbWRncHUvJXNfY2UuYmluIiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVl c3RfZmlybXdhcmUoJmFkZXYtPmdmeC5jZV9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlm IChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRl di0+Z2Z4LmNlX2Z3KTsKPiArCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFk ZXYsICZhZGV2LT5nZnguY2VfZncsIGZ3X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAg CQlnb3RvIG91dDsKPiAgIAljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9maXJtd2FyZV9oZWFk ZXJfdjFfMCAqKWFkZXYtPmdmeC5jZV9mdy0+ZGF0YTsKPiBAQCAtNDYzLDEwICs0NTQsOSBAQCBz dGF0aWMgaW50IGdmeF92OV8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQo+ICAgCWFkZXYtPmdmeC5jZV9mZWF0dXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShjcF9o ZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7Cj4gICAKPiAgIAlzbnByaW50Zihmd19uYW1lLCBz aXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfcmxjLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIg PSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngucmxjX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYp Owo+ICsJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdm eC5ybGNfZncsIGZ3X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsK PiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nZngucmxjX2Z3KTsKPiAgIAly bGNfaGRyID0gKGNvbnN0IHN0cnVjdCBybGNfZmlybXdhcmVfaGVhZGVyX3YyXzAgKilhZGV2LT5n ZngucmxjX2Z3LT5kYXRhOwo+ICAgCWFkZXYtPmdmeC5ybGNfZndfdmVyc2lvbiA9IGxlMzJfdG9f Y3B1KHJsY19oZHItPmhlYWRlci51Y29kZV92ZXJzaW9uKTsKPiAgIAlhZGV2LT5nZngucmxjX2Zl YXR1cmVfdmVyc2lvbiA9IGxlMzJfdG9fY3B1KHJsY19oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lv bik7Cj4gQEAgLTUwOSwxMCArNDk5LDcgQEAgc3RhdGljIGludCBnZnhfdjlfMF9pbml0X21pY3Jv Y29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgIAkJYWRldi0+Z2Z4LnJsYy5yZWdp c3Rlcl9yZXN0b3JlW2ldID0gbGUzMl90b19jcHUodG1wW2ldKTsKPiAgIAo+ICAgCXNucHJpbnRm KGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZWMuYmluIiwgY2hpcF9uYW1l KTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUs IGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1 X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPmdmeC5tZWNfZncpOwo+ICsJZXJyID0gYW1kZ3B1X3Vjb2Rl X3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPmdmeC5tZWNfZncsIGZ3X25hbWUsIGZhbHNl KTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAljcF9oZHIgPSAoY29uc3Qgc3Ry dWN0IGdmeF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPmdmeC5tZWNfZnctPmRhdGE7Cj4g QEAgLTUyMSwyMCArNTA4LDE3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfaW5pdF9taWNyb2NvZGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAKPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25h bWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8lc19tZWMyLmJpbiIsIGNoaXBfbmFtZSk7Cj4g LQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5nZngubWVjMl9mdywgZndfbmFtZSwgYWRl di0+ZGV2KTsKPiAtCWlmICghZXJyKSB7Cj4gLQkJZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRl KGFkZXYtPmdmeC5tZWMyX2Z3KTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dDsKPiArCWVy ciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nZngubWVjMl9m dywgZndfbmFtZSwgdHJ1ZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCWlm IChhZGV2LT5nZngubWVjMl9mdykgewo+ICAgCQljcF9oZHIgPSAoY29uc3Qgc3RydWN0IGdmeF9m aXJtd2FyZV9oZWFkZXJfdjFfMCAqKQo+ICAgCQlhZGV2LT5nZngubWVjMl9mdy0+ZGF0YTsKPiAg IAkJYWRldi0+Z2Z4Lm1lYzJfZndfdmVyc2lvbiA9Cj4gICAJCWxlMzJfdG9fY3B1KGNwX2hkci0+ aGVhZGVyLnVjb2RlX3ZlcnNpb24pOwo+ICAgCQlhZGV2LT5nZngubWVjMl9mZWF0dXJlX3ZlcnNp b24gPQo+ICAgCQlsZTMyX3RvX2NwdShjcF9oZHItPnVjb2RlX2ZlYXR1cmVfdmVyc2lvbik7Cj4g LQl9IGVsc2Ugewo+IC0JCWVyciA9IDA7Cj4gLQkJYWRldi0+Z2Z4Lm1lYzJfZncgPSBOVUxMOwo+ ICAgCX0KPiAgIAo+ICAgCWlmIChhZGV2LT5maXJtd2FyZS5sb2FkX3R5cGUgPT0gQU1ER1BVX0ZX X0xPQURfUFNQKSB7Cj4gQEAgLTU5OSw5ICs1ODMsNiBAQCBzdGF0aWMgaW50IGdmeF92OV8wX2lu aXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCj4gICBvdXQ6Cj4g ICAJaWYgKGVycikgewo+IC0JCWRldl9lcnIoYWRldi0+ZGV2LAo+IC0JCQkiZ2Z4OTogRmFpbGVk IHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLAo+IC0JCQlmd19uYW1lKTsKPiAgIAkJcmVsZWFz ZV9maXJtd2FyZShhZGV2LT5nZngucGZwX2Z3KTsKPiAgIAkJYWRldi0+Z2Z4LnBmcF9mdyA9IE5V TEw7Cj4gICAJCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+Z2Z4Lm1lX2Z3KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMKPiBpbmRleCA1NjE3Y2Y2MmM1NjYuLmI0OWFkMjFmNTQ2 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYwo+IEBAIC0xMDUsNyAr MTA1LDYgQEAgc3RhdGljIGludCBnbWNfdjZfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKPiAgIHsKPiAgIAljb25zdCBjaGFyICpjaGlwX25hbWU7Cj4gICAJY2hh ciBmd19uYW1lWzMwXTsKPiAtCWludCBlcnI7Cj4gICAJYm9vbCBpc181OF9mdyA9IGZhbHNlOwo+ ICAgCj4gICAJRFJNX0RFQlVHKCJcbiIpOwo+IEBAIC0xMzcsMjEgKzEzNiw3IEBAIHN0YXRpYyBp bnQgZ21jX3Y2XzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4g ICAJCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgInJhZGVvbi9zaTU4X21jLmJp biIpOwo+ICAgCWVsc2UKPiAgIAkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAi cmFkZW9uLyVzX21jLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJl KCZhZGV2LT5nbWMuZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdv dG8gb3V0Owo+IC0KPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nbWMuZncp Owo+IC0KPiAtb3V0Ogo+IC0JaWYgKGVycikgewo+IC0JCWRldl9lcnIoYWRldi0+ZGV2LAo+IC0J CSAgICAgICAic2lfbWM6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkg ICAgICAgZndfbmFtZSk7Cj4gLQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5nbWMuZncpOwo+IC0J CWFkZXYtPmdtYy5mdyA9IE5VTEw7Cj4gLQl9Cj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIGFt ZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nbWMuZncsIGZ3X25hbWUs IGZhbHNlKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBnbWNfdjZfMF9tY19sb2FkX21pY3Jv Y29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192N18wLmMKPiBpbmRleCA4MDA1NGYzNmU0ODcuLjdiMDEwZmVkYjZlYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYwo+IEBAIC0xMjYsNyArMTI2LDYgQEAgc3Rh dGljIGludCBnbWNfdjdfMF9pbml0X21pY3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKPiAgIHsKPiAgIAljb25zdCBjaGFyICpjaGlwX25hbWU7Cj4gICAJY2hhciBmd19uYW1lWzMw XTsKPiAtCWludCBlcnI7Cj4gICAKPiAgIAlEUk1fREVCVUcoIlxuIik7Cj4gICAKPiBAQCAtMTUy LDE4ICsxNTEsNyBAQCBzdGF0aWMgaW50IGdtY192N18wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQo+ICAgCWVsc2UKPiAgIAkJc25wcmludGYoZndfbmFtZSwgc2l6 ZW9mKGZ3X25hbWUpLCAicmFkZW9uLyVzX21jLmJpbiIsIGNoaXBfbmFtZSk7Cj4gICAKPiAtCWVy ciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPmdtYy5mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsK PiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRh dGUoYWRldi0+Z21jLmZ3KTsKPiAtCj4gLW91dDoKPiAtCWlmIChlcnIpIHsKPiAtCQlwcl9lcnIo ImNpa19tYzogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKPiAt CQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPmdtYy5mdyk7Cj4gLQkJYWRldi0+Z21jLmZ3ID0gTlVM TDsKPiAtCX0KPiAtCXJldHVybiBlcnI7Cj4gKwlyZXR1cm4gYW1kZ3B1X3Vjb2RlX3JlcXVlc3Rf ZmlybXdhcmUoYWRldiwgJmFkZXYtPmdtYy5mdywgZndfbmFtZSwgZmFsc2UpOwo+ICAgfQo+ICAg Cj4gICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4 XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMKPiBpbmRleCBkNzFk NGNiNjhmOWMuLjM2OTM4NzNhZTY0NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nbWNfdjhfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21j X3Y4XzAuYwo+IEBAIC0yMTEsNyArMjExLDYgQEAgc3RhdGljIGludCBnbWNfdjhfMF9pbml0X21p Y3JvY29kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgIHsKPiAgIAljb25zdCBjaGFy ICpjaGlwX25hbWU7Cj4gICAJY2hhciBmd19uYW1lWzMwXTsKPiAtCWludCBlcnI7Cj4gICAKPiAg IAlEUk1fREVCVUcoIlxuIik7Cj4gICAKPiBAQCAtMjM2LDE4ICsyMzUsNyBAQCBzdGF0aWMgaW50 IGdtY192OF8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAg CX0KPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdwdS8l c19tYy5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+ Z21jLmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JaWYgKGVycikKPiAtCQlnb3RvIG91dDsK PiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5nbWMuZncpOwo+IC0KPiAtb3V0 Ogo+IC0JaWYgKGVycikgewo+IC0JCXByX2VycigibWM6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJl IFwiJXNcIlxuIiwgZndfbmFtZSk7Cj4gLQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5nbWMuZncp Owo+IC0JCWFkZXYtPmdtYy5mdyA9IE5VTEw7Cj4gLQl9Cj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0 dXJuIGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5nbWMuZncsIGZ3 X25hbWUsIGZhbHNlKTsKPiAgIH0KPiAgIAo+ICAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvcHNwX3YxMF8wLmMKPiBpbmRleCA4ODczZDgzM2E3ZjcuLjlhZDNiZjZlYmM1NCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jCj4gQEAgLTEwNSwxMyArMTA1LDkg QEAgc3RhdGljIGludCBwc3BfdjEwXzBfaW5pdF9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0 ICpwc3ApCj4gICAJfQo+ICAgCj4gICAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiYW1kZ3B1LyVzX2FzZC5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJt d2FyZSgmYWRldi0+cHNwLmFzZF9mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiArCWVyciA9IGFt ZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2LT5wc3AuYXNkX2Z3LCBmd19u YW1lLCBmYWxzZSk7Cj4gICAJaWYgKGVycikKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQllcnIgPSBh bWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+cHNwLmFzZF9mdyk7Cj4gLQlpZiAoZXJyKQo+IC0J CWdvdG8gb3V0Owo+ICsJCXJldHVybiBlcnI7Cj4gICAKPiAgIAloZHIgPSAoY29uc3Qgc3RydWN0 IHBzcF9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKWFkZXYtPnBzcC5hc2RfZnctPmRhdGE7Cj4gICAJ YWRldi0+cHNwLmFzZF9md192ZXJzaW9uID0gbGUzMl90b19jcHUoaGRyLT5oZWFkZXIudWNvZGVf dmVyc2lvbik7Cj4gQEAgLTEyMSwxNiArMTE3LDYgQEAgc3RhdGljIGludCBwc3BfdjEwXzBfaW5p dF9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4gICAJCQkJbGUzMl90b19jcHUo aGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsKPiAgIAo+ICAgCXJldHVybiAw Owo+IC1vdXQ6Cj4gLQlpZiAoZXJyKSB7Cj4gLQkJZGV2X2VycihhZGV2LT5kZXYsCj4gLQkJCSJw c3AgdjEwLjA6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkJZndfbmFt ZSk7Cj4gLQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5wc3AuYXNkX2Z3KTsKPiAtCQlhZGV2LT5w c3AuYXNkX2Z3ID0gTlVMTDsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgaW50IHBzcF92MTBfMF9wcmVwX2NtZF9idWYoc3RydWN0IGFtZGdwdV9maXJtd2Fy ZV9pbmZvICp1Y29kZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv cHNwX3YzXzEuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92M18xLmMKPiBpbmRl eCAxOTZlNzVkZWYxZjIuLmI5MWY3YWYxMTk4YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9wc3BfdjNfMS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvcHNwX3YzXzEuYwo+IEBAIC0xMTYsMTEgKzExNiw3IEBAIHN0YXRpYyBpbnQgcHNwX3YzXzFf aW5pdF9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4gICAJfQo+ICAgCj4gICAJ c25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3Nvcy5iaW4iLCBj aGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLnNvc19mdywg ZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0J ZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBzcC5zb3NfZncpOwo+ICsJZXJyID0g YW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPnBzcC5zb3NfZncsIGZ3 X25hbWUsIGZhbHNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAo+IEBAIC0x MzYsMTEgKzEzMiw3IEBAIHN0YXRpYyBpbnQgcHNwX3YzXzFfaW5pdF9taWNyb2NvZGUoc3RydWN0 IHBzcF9jb250ZXh0ICpwc3ApCj4gICAJCQkJbGUzMl90b19jcHUoaGRyLT5zb3Nfb2Zmc2V0X2J5 dGVzKTsKPiAgIAo+ICAgCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwgImFtZGdw dS8lc19hc2QuYmluIiwgY2hpcF9uYW1lKTsKPiAtCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmFk ZXYtPnBzcC5hc2RfZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJyKQo+IC0JCWdv dG8gb3V0Owo+IC0KPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5wc3AuYXNk X2Z3KTsKPiArCWVyciA9IGFtZGdwdV91Y29kZV9yZXF1ZXN0X2Zpcm13YXJlKGFkZXYsICZhZGV2 LT5wc3AuYXNkX2Z3LCBmd19uYW1lLCBmYWxzZSk7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byBv dXQ7Cj4gICAKPiBAQCAtMTU0LDkgKzE0Niw2IEBAIHN0YXRpYyBpbnQgcHNwX3YzXzFfaW5pdF9t aWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCj4gICAJcmV0dXJuIDA7Cj4gICBvdXQ6 Cj4gICAJaWYgKGVycikgewo+IC0JCWRldl9lcnIoYWRldi0+ZGV2LAo+IC0JCQkicHNwIHYzLjE6 IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNcIlxuIiwKPiAtCQkJZndfbmFtZSk7Cj4gICAJ CXJlbGVhc2VfZmlybXdhcmUoYWRldi0+cHNwLnNvc19mdyk7Cj4gICAJCWFkZXYtPnBzcC5zb3Nf ZncgPSBOVUxMOwo+ICAgCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPnBzcC5hc2RfZncpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YyXzQuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5jCj4gaW5kZXggYzcxOTBjMzljNGY1Li43 MWUyZDgyMmUyNDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2Rt YV92Ml80LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YyXzQuYwo+ IEBAIC0xNDYsMTAgKzE0Niw3IEBAIHN0YXRpYyBpbnQgc2RtYV92Ml80X2luaXRfbWljcm9jb2Rl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCQkJc25wcmludGYoZndfbmFtZSwgc2l6 ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWEuYmluIiwgY2hpcF9uYW1lKTsKPiAgIAkJZWxz ZQo+ICAgCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3Nk bWExLmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+ c2RtYS5pbnN0YW5jZVtpXS5mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCQlpZiAoZXJyKQo+ IC0JCQlnb3RvIG91dDsKPiAtCQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+c2Rt YS5pbnN0YW5jZVtpXS5mdyk7Cj4gKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdh cmUoYWRldiwgJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncsIGZ3X25hbWUsIGZhbHNlKTsKPiAg IAkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQloZHIgPSAoY29uc3Qgc3RydWN0IHNk bWFfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3LT5kYXRh Owo+IEBAIC0xNzAsNyArMTY3LDYgQEAgc3RhdGljIGludCBzZG1hX3YyXzRfaW5pdF9taWNyb2Nv ZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAKPiAgIG91dDoKPiAgIAlpZiAoZXJy KSB7Cj4gLQkJcHJfZXJyKCJzZG1hX3YyXzQ6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNc IlxuIiwgZndfbmFtZSk7Cj4gICAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0 YW5jZXM7IGkrKykgewo+ICAgCQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5zZG1hLmluc3RhbmNl W2ldLmZ3KTsKPiAgIAkJCWFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncgPSBOVUxMOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YzXzAuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCj4gaW5kZXggYmUyMGEzODdkOTYxLi5kZTMx NWJhZWYzMGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92 M18wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YzXzAuYwo+IEBA IC0yOTgsMTAgKzI5OCw3IEBAIHN0YXRpYyBpbnQgc2RtYV92M18wX2luaXRfbWljcm9jb2RlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9m KGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWEuYmluIiwgY2hpcF9uYW1lKTsKPiAgIAkJZWxzZQo+ ICAgCQkJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kZ3B1LyVzX3NkbWEx LmJpbiIsIGNoaXBfbmFtZSk7Cj4gLQkJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+c2Rt YS5pbnN0YW5jZVtpXS5mdywgZndfbmFtZSwgYWRldi0+ZGV2KTsKPiAtCQlpZiAoZXJyKQo+IC0J CQlnb3RvIG91dDsKPiAtCQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+c2RtYS5p bnN0YW5jZVtpXS5mdyk7Cj4gKwkJZXJyID0gYW1kZ3B1X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUo YWRldiwgJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0uZncsIGZ3X25hbWUsIGZhbHNlKTsKPiAgIAkJ aWYgKGVycikKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQloZHIgPSAoY29uc3Qgc3RydWN0IHNkbWFf ZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5zZG1hLmluc3RhbmNlW2ldLmZ3LT5kYXRhOwo+ IEBAIC0zMjEsNyArMzE4LDYgQEAgc3RhdGljIGludCBzZG1hX3YzXzBfaW5pdF9taWNyb2NvZGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJfQo+ICAgb3V0Ogo+ICAgCWlmIChlcnIp IHsKPiAtCQlwcl9lcnIoInNkbWFfdjNfMDogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wi XG4iLCBmd19uYW1lKTsKPiAgIAkJZm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3Rh bmNlczsgaSsrKSB7Cj4gICAJCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPnNkbWEuaW5zdGFuY2Vb aV0uZncpOwo+ICAgCQkJYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyA9IE5VTEw7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMKPiBpbmRleCAyYzYxOGExYmUwM2UuLjA3NzZi ZjQxMDc4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0 XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jCj4gQEAg LTE5NCwxMCArMTk0LDggQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfaW5pdF9taWNyb2NvZGUoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2Yo ZndfbmFtZSksICJhbWRncHUvJXNfc2RtYS5iaW4iLCBjaGlwX25hbWUpOwo+ICAgCQllbHNlCj4g ICAJCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfc2RtYTEu YmluIiwgY2hpcF9uYW1lKTsKPiAtCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2LT5zZG1h Lmluc3RhbmNlW2ldLmZ3LCBmd19uYW1lLCBhZGV2LT5kZXYpOwo+IC0JCWlmIChlcnIpCj4gLQkJ CWdvdG8gb3V0Owo+IC0JCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5zZG1hLmlu c3RhbmNlW2ldLmZ3KTsKPiArCQllcnIgPSBhbWRncHVfdWNvZGVfcmVxdWVzdF9maXJtd2FyZShh ZGV2LCAmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdywKPiArCQkJCQkJICAgIGZ3X25hbWUsIGZh bHNlKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQloZHIgPSAoY29uc3Qg c3RydWN0IHNkbWFfZmlybXdhcmVfaGVhZGVyX3YxXzAgKilhZGV2LT5zZG1hLmluc3RhbmNlW2ld LmZ3LT5kYXRhOwo+IEBAIC0yMTksNyArMjE3LDYgQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfaW5p dF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJfQo+ICAgb3V0Ogo+ ICAgCWlmIChlcnIpIHsKPiAtCQlEUk1fRVJST1IoInNkbWFfdjRfMDogRmFpbGVkIHRvIGxvYWQg ZmlybXdhcmUgXCIlc1wiXG4iLCBmd19uYW1lKTsKPiAgIAkJZm9yIChpID0gMDsgaSA8IGFkZXYt PnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4gICAJCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYt PnNkbWEuaW5zdGFuY2VbaV0uZncpOwo+ICAgCQkJYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5mdyA9 IE5VTEw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmMKPiBpbmRleCBiMTJkN2M5ZDQy YTAuLmJlZTJiMGE1ZGY1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9zaV9kcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jCj4g QEAgLTc2MDUsNyArNzYwNSw2IEBAIHN0YXRpYyBpbnQgc2lfZHBtX2luaXRfbWljcm9jb2RlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgewo+ICAgCWNvbnN0IGNoYXIgKmNoaXBfbmFt ZTsKPiAgIAljaGFyIGZ3X25hbWVbMzBdOwo+IC0JaW50IGVycjsKPiAgIAo+ICAgCURSTV9ERUJV RygiXG4iKTsKPiAgIAlzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgewo+IEBAIC03NjY1LDIwICs3 NjY0LDcgQEAgc3RhdGljIGludCBzaV9kcG1faW5pdF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCj4gICAJfQo+ICAgCj4gICAJc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3 X25hbWUpLCAicmFkZW9uLyVzX3NtYy5iaW4iLCBjaGlwX25hbWUpOwo+IC0JZXJyID0gcmVxdWVz dF9maXJtd2FyZSgmYWRldi0+cG0uZncsIGZ3X25hbWUsIGFkZXYtPmRldik7Cj4gLQlpZiAoZXJy KQo+IC0JCWdvdG8gb3V0Owo+IC0JZXJyID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBt LmZ3KTsKPiAtCj4gLW91dDoKPiAtCWlmIChlcnIpIHsKPiAtCQlEUk1fRVJST1IoInNpX3NtYzog RmFpbGVkIHRvIGxvYWQgZmlybXdhcmUuIGVyciA9ICVkXCIlc1wiXG4iLAo+IC0JCQkgIGVyciwg ZndfbmFtZSk7Cj4gLQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5wbS5mdyk7Cj4gLQkJYWRldi0+ cG0uZncgPSBOVUxMOwo+IC0JfQo+IC0JcmV0dXJuIGVycjsKPiAtCj4gKwlyZXR1cm4gYW1kZ3B1 X3Vjb2RlX3JlcXVlc3RfZmlybXdhcmUoYWRldiwgJmFkZXYtPnBtLmZ3LCBmd19uYW1lLCBmYWxz ZSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgc2lfZHBtX3N3X2luaXQodm9pZCAqaGFuZGxl KQo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQt Z2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK