From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 09/11] drm/msm/dpu: Cleanup the debugfs functions Date: Tue, 6 Nov 2018 10:05:40 -0500 Message-ID: <20181106150540.GT154160@art_vandelay> References: <20181105233103.7657-1-jcrouse@codeaurora.org> <20181105233103.7657-10-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181105233103.7657-10-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jordan Crouse Cc: sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bzwang-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBOb3YgMDUsIDIwMTggYXQgMDQ6MzE6MDFQTSAtMDcwMCwgSm9yZGFuIENyb3VzZSB3 cm90ZToKPiBEbyBzb21lIGRlYnVnZnMgY2xlYW51cHMgZnJvbSBhY3Jvc3MgdGhlIERQVSBkcml2 ZXIuIFRoZSBEUk0KPiBkZXN0cm95IGZ1bmN0aW9ucyB3aWxsIGRvIGEgcmVjdXJzaXZlIGRlbGV0 ZSBvbiB0aGUgZW50aXJlCj4gZGVidWdmcyBub2RlIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gc3Rv cmUgZGVudHJ5IHBvaW50ZXJzIGZvcgo+IHRoZSBkZWJ1Z2ZzIGZpbGVzIHRoYXQgYXJlIHBlcnNp c3RlbnQgZm9yIHRoZSBsaWZlIG9mIHRoZQo+IGRyaXZlci4gVGhpcyBhbHNvIG1lYW5zIHRoYXQg dGhlIGRlc3Ryb3kgZnVuY3Rpb25zIGNhbiBnbwo+IGF3YXkgdG9vLgo+IAo+IEFsc28sIHVzZSBz dGFuZGFyZCBBUEkgZnVuY3Rpb25zIHdoZXJlIGFwcGxpY2FibGUgaW5zdGVhZCBvZgo+IHVzaW5n IGhhbmQgd3JpdHRlbiBjb2RlLgoKVGhlcmUncyBwcm9iYWJseSAyIHBhdGNoZXMgaW4gdGhpcyBv bmUsIGJ1dCBzaW5jZSBpdCdzIGRlYnVnIGNvZGUgaXQncyBwcm9iYWJseQpub3Qgd29ydGggcmVz cGlubmluZy4KClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5AcG9vcmx5LnJ1bj4KCgo+IAo+ IHYyOiBBZGQgbW9yZSBjb2RlOyBtb3N0IG9mIHRoZSBkcHUgZGVidWdmcyBmaWxlcyBzaG91bGQg YmUKPiBhZGRyZXNzZWQgbm93Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEpvcmRhbiBDcm91c2UgPGpj cm91c2VAY29kZWF1cm9yYS5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jb3JlX2lycS5jICB8ICAzMCArLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29yZV9pcnEuaCAgfCAgIDkgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jIHwgMTA1ICsrKysrLS0tLS0tLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmggfCAgIDcgKy0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgIHwgIDMwICstLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICB8ICAzMSArLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jICAgICAgIHwgMTA0 ICsrKystLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9r bXMuaCAgICAgICB8ICAgNiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9t ZHNzLmMgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf cGxhbmUuYyAgICAgfCAgOTAgKysrLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV92YmlmLmMgICAgICB8ICAyNCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV92YmlmLmggICAgICB8ICAxNSArLS0KPiAgMTIgZmlsZXMgY2hhbmdl ZCwgOTMgaW5zZXJ0aW9ucygrKSwgMzYxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jCj4gaW5kZXggZjY2MDcwY2IyZjQyLi5m MTg4Yzc4ZGQ3MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NvcmVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y29yZV9pcnEuYwo+IEBAIC0zMDcsMTAgKzMwNyw4IEBAIHN0YXRpYyBpbnQgZHB1X2RlYnVnZnNf Y29yZV9pcnFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpCj4gIAl1bnNpZ25lZCBs b25nIGlycV9mbGFnczsKPiAgCWludCBpLCBpcnFfY291bnQsIGVuYWJsZV9jb3VudCwgY2JfY291 bnQ7Cj4gIAo+IC0JaWYgKCFpcnFfb2JqIHx8ICFpcnFfb2JqLT5lbmFibGVfY291bnRzIHx8ICFp cnFfb2JqLT5pcnFfY2JfdGJsKSB7Cj4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtZXRlcnNc biIpOwo+ICsJaWYgKFdBUk5fT04oIWlycV9vYmotPmVuYWJsZV9jb3VudHMgfHwgIWlycV9vYmot PmlycV9jYl90YmwpKQo+ICAJCXJldHVybiAwOwo+IC0JfQo+ICAKPiAgCWZvciAoaSA9IDA7IGkg PCBpcnFfb2JqLT50b3RhbF9pcnFzOyBpKyspIHsKPiAgCQlzcGluX2xvY2tfaXJxc2F2ZSgmaXJx X29iai0+Y2JfbG9jaywgaXJxX2ZsYWdzKTsKPiBAQCAtMzMxLDMxICszMjksMTEgQEAgc3RhdGlj IGludCBkcHVfZGVidWdmc19jb3JlX2lycV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAq dikKPiAgCj4gIERFRklORV9TSE9XX0FUVFJJQlVURShkcHVfZGVidWdmc19jb3JlX2lycSk7Cj4g IAo+IC1pbnQgZHB1X2RlYnVnZnNfY29yZV9pcnFfaW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2tt cywKPiAtCQlzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpCj4gLXsKPiAtCWRwdV9rbXMtPmlycV9vYmou ZGVidWdmc19maWxlID0gZGVidWdmc19jcmVhdGVfZmlsZSgiY29yZV9pcnEiLCAwNjAwLAo+IC0J CQlwYXJlbnQsICZkcHVfa21zLT5pcnFfb2JqLAo+IC0JCQkmZHB1X2RlYnVnZnNfY29yZV9pcnFf Zm9wcyk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXZvaWQgZHB1X2RlYnVnZnNfY29y ZV9pcnFfZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiAtewo+IC0JZGVidWdmc19y ZW1vdmUoZHB1X2ttcy0+aXJxX29iai5kZWJ1Z2ZzX2ZpbGUpOwo+IC0JZHB1X2ttcy0+aXJxX29i ai5kZWJ1Z2ZzX2ZpbGUgPSBOVUxMOwo+IC19Cj4gLQo+IC0jZWxzZQo+IC1pbnQgZHB1X2RlYnVn ZnNfY29yZV9pcnFfaW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKPiArdm9pZCBkcHVfZGVi dWdmc19jb3JlX2lycV9pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAo+ICAJCXN0cnVjdCBk ZW50cnkgKnBhcmVudCkKPiAgewo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXZvaWQgZHB1X2Rl YnVnZnNfY29yZV9pcnFfZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiAtewo+ICsJ ZGVidWdmc19jcmVhdGVfZmlsZSgiY29yZV9pcnEiLCAwNjAwLCBwYXJlbnQsICZkcHVfa21zLT5p cnFfb2JqLAo+ICsJCSZkcHVfZGVidWdmc19jb3JlX2lycV9mb3BzKTsKPiAgfQo+ICAjZW5kaWYK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3Jl X2lycS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmgKPiBp bmRleCA4ODRmNzdmYTNlYjYuLmU5MDE1YTJiMjNmZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9pcnEuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5oCj4gQEAgLTEzMiwxNSArMTMyLDggQEAgaW50 IGRwdV9jb3JlX2lycV91bnJlZ2lzdGVyX2NhbGxiYWNrKAo+ICAgKiBkcHVfZGVidWdmc19jb3Jl X2lycV9pbml0IC0gcmVnaXN0ZXIgY29yZSBpcnEgZGVidWdmcwo+ICAgKiBAZHB1X2ttczogcG9p bnRlciB0byBrbXMKPiAgICogQHBhcmVudDogZGVidWdmcyBkaXJlY3Rvcnkgcm9vdAo+IC0gKiBA UmV0dXJuOiAwIG9uIHN1Y2Nlc3MKPiAgICovCj4gLWludCBkcHVfZGVidWdmc19jb3JlX2lycV9p bml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAo+ICt2b2lkIGRwdV9kZWJ1Z2ZzX2NvcmVfaXJx X2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCj4gIAkJc3RydWN0IGRlbnRyeSAqcGFyZW50 KTsKPiAgCj4gLS8qKgo+IC0gKiBkcHVfZGVidWdmc19jb3JlX2lycV9kZXN0cm95IC0gZGVyZWdp c3RlciBjb3JlIGlycSBkZWJ1Z2ZzCj4gLSAqIEBkcHVfa21zOiBwb2ludGVyIHRvIGttcwo+IC0g Ki8KPiAtdm9pZCBkcHVfZGVidWdmc19jb3JlX2lycV9kZXN0cm95KHN0cnVjdCBkcHVfa21zICpk cHVfa21zKTsKPiAtCj4gICNlbmRpZiAvKiBfX0RQVV9DT1JFX0lSUV9IX18gKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jCj4gaW5kZXggZTY4Y2Ni N2E4OThhLi44YTc2NTNhMmZjN2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NvcmVfcGVyZi5jCj4gQEAgLTI0LDggKzI0LDYgQEAKPiAgI2luY2x1ZGUgImRw dV9jcnRjLmgiCj4gICNpbmNsdWRlICJkcHVfY29yZV9wZXJmLmgiCj4gIAo+IC0jZGVmaW5lIERQ VV9QRVJGX01PREVfU1RSSU5HX1NJWkUJMTI4Cj4gLQo+ICAvKioKPiAgICogZW51bSBkcHVfcGVy Zl9tb2RlIC0gcGVyZm9ybWFuY2UgdHVuaW5nIG1vZGUKPiAgICogQERQVV9QRVJGX01PREVfTk9S TUFMOiBwZXJmb3JtYW5jZSBjb250cm9sbGVkIGJ5IHVzZXIgbW9kZSBjbGllbnQKPiBAQCAtNDUx LDI0ICs0NDksMTQgQEAgc3RhdGljIHNzaXplX3QgX2RwdV9jb3JlX3BlcmZfbW9kZV93cml0ZShz dHJ1Y3QgZmlsZSAqZmlsZSwKPiAgCXN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmID0gZmlsZS0+ cHJpdmF0ZV9kYXRhOwo+ICAJc3RydWN0IGRwdV9wZXJmX2NmZyAqY2ZnID0gJnBlcmYtPmNhdGFs b2ctPnBlcmY7Cj4gIAl1MzIgcGVyZl9tb2RlID0gMDsKPiAtCWNoYXIgYnVmWzEwXTsKPiAtCj4g LQlpZiAoIXBlcmYpCj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gLQo+IC0JaWYgKGNvdW50ID49IHNp emVvZihidWYpKQo+IC0JCXJldHVybiAtRUZBVUxUOwo+IC0KPiAtCWlmIChjb3B5X2Zyb21fdXNl cihidWYsIHVzZXJfYnVmLCBjb3VudCkpCj4gLQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQo+IC0JYnVm W2NvdW50XSA9IDA7CS8qIGVuZCBvZiBzdHJpbmcgKi8KPiArCWludCByZXQ7Cj4gIAo+IC0JaWYg KGtzdHJ0b3VpbnQoYnVmLCAwLCAmcGVyZl9tb2RlKSkKPiAtCQlyZXR1cm4gLUVGQVVMVDsKPiAr CXJldCA9IGtzdHJ0b3VpbnRfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgJnBlcmZfbW9k ZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+ICAJaWYgKHBlcmZfbW9kZSA+ PSBEUFVfUEVSRl9NT0RFX01BWCkKPiAtCQlyZXR1cm4gLUVGQVVMVDsKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCj4gIAlpZiAocGVyZl9tb2RlID09IERQVV9QRVJGX01PREVfRklYRUQpIHsKPiAg CQlEUk1fSU5GTygiZml4IHBlcmZvcm1hbmNlIG1vZGVcbiIpOwo+IEBAIC00OTMsMjkgKzQ4MSwx NiBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X2NvcmVfcGVyZl9tb2RlX3JlYWQoc3RydWN0IGZpbGUg KmZpbGUsCj4gIAkJCWNoYXIgX191c2VyICpidWZmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBv cykKPiAgewo+ICAJc3RydWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYgPSBmaWxlLT5wcml2YXRlX2Rh dGE7Cj4gLQlpbnQgbGVuID0gMDsKPiAtCWNoYXIgYnVmW0RQVV9QRVJGX01PREVfU1RSSU5HX1NJ WkVdID0geydcMCd9Owo+ICsJaW50IGxlbjsKPiArCWNoYXIgYnVmWzEyOF07Cj4gIAo+IC0JaWYg KCFwZXJmKQo+IC0JCXJldHVybiAtRU5PREVWOwo+IC0KPiAtCWlmICgqcHBvcykKPiAtCQlyZXR1 cm4gMDsJLyogdGhlIGVuZCAqLwo+IC0KPiAtCWxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1 ZiksCj4gKwlsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKPiAgCQkJIm1vZGUgJWQg bWluX21kcF9jbGsgJWxsdSBtaW5fYnVzX3ZvdGUgJWxsdVxuIiwKPiAgCQkJcGVyZi0+cGVyZl90 dW5lLm1vZGUsCj4gIAkJCXBlcmYtPnBlcmZfdHVuZS5taW5fY29yZV9jbGssCj4gIAkJCXBlcmYt PnBlcmZfdHVuZS5taW5fYnVzX3ZvdGUpOwo+IC0JaWYgKGxlbiA8IDAgfHwgbGVuID49IHNpemVv ZihidWYpKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWlmICgoY291bnQgPCBzaXplb2YoYnVmKSkg fHwgY29weV90b191c2VyKGJ1ZmYsIGJ1ZiwgbGVuKSkKPiAtCQlyZXR1cm4gLUVGQVVMVDsKPiAg Cj4gLQkqcHBvcyArPSBsZW47ICAgLyogaW5jcmVhc2Ugb2Zmc2V0ICovCj4gLQo+IC0JcmV0dXJu IGxlbjsKPiArCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcihidWZmLCBjb3VudCwgcHBv cywgYnVmLCBsZW4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBkcHVfY29yZV9wZXJmX21vZGVfZm9wcyA9IHsKPiBAQCAtNTI0LDcwICs0OTksNDMgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHB1X2NvcmVfcGVyZl9tb2RlX2Zv cHMgPSB7Cj4gIAkud3JpdGUgPSBfZHB1X2NvcmVfcGVyZl9tb2RlX3dyaXRlLAo+ICB9Owo+ICAK PiAtc3RhdGljIHZvaWQgZHB1X2NvcmVfcGVyZl9kZWJ1Z2ZzX2Rlc3Ryb3koc3RydWN0IGRwdV9j b3JlX3BlcmYgKnBlcmYpCj4gLXsKPiAtCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShwZXJmLT5k ZWJ1Z2ZzX3Jvb3QpOwo+IC0JcGVyZi0+ZGVidWdmc19yb290ID0gTlVMTDsKPiAtfQo+IC0KPiAt aW50IGRwdV9jb3JlX3BlcmZfZGVidWdmc19pbml0KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJm LAo+IC0JCXN0cnVjdCBkZW50cnkgKnBhcmVudCkKPiAraW50IGRwdV9jb3JlX3BlcmZfZGVidWdm c19pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpCj4g IHsKPiArCXN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmID0gJmRwdV9rbXMtPnBlcmY7Cj4gIAlz dHJ1Y3QgZHB1X21kc3NfY2ZnICpjYXRhbG9nID0gcGVyZi0+Y2F0YWxvZzsKPiAtCXN0cnVjdCBt c21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gLQlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKPiAtCj4g LQlwcml2ID0gcGVyZi0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWlmICghcHJpdiB8fCAhcHJpdi0+ a21zKSB7Cj4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIEtNUyByZWZlcmVuY2VcbiIpOwo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmtt cyk7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICplbnRyeTsKPiAgCj4gLQlwZXJmLT5kZWJ1Z2ZzX3Jvb3Qg PSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImNvcmVfcGVyZiIsIHBhcmVudCk7Cj4gLQlpZiAoIXBlcmYt PmRlYnVnZnNfcm9vdCkgewo+IC0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBjb3JlIHBl cmYgZGVidWdmc1xuIik7Cj4gKwllbnRyeSA9IGRlYnVnZnNfY3JlYXRlX2RpcigiY29yZV9wZXJm IiwgcGFyZW50KTsKPiArCWlmIChJU19FUlJfT1JfTlVMTChlbnRyeSkpCj4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gLQl9Cj4gIAo+IC0JZGVidWdmc19jcmVhdGVfdTY0KCJtYXhfY29yZV9jbGtfcmF0 ZSIsIDA2MDAsIHBlcmYtPmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNfY3JlYXRlX3U2NCgibWF4 X2NvcmVfY2xrX3JhdGUiLCAwNjAwLCBlbnRyeSwKPiAgCQkJJnBlcmYtPm1heF9jb3JlX2Nsa19y YXRlKTsKPiAtCWRlYnVnZnNfY3JlYXRlX3U2NCgiY29yZV9jbGtfcmF0ZSIsIDA2MDAsIHBlcmYt PmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNfY3JlYXRlX3U2NCgiY29yZV9jbGtfcmF0ZSIsIDA2 MDAsIGVudHJ5LAo+ICAJCQkmcGVyZi0+Y29yZV9jbGtfcmF0ZSk7Cj4gLQlkZWJ1Z2ZzX2NyZWF0 ZV91MzIoImVuYWJsZV9id19yZWxlYXNlIiwgMDYwMCwgcGVyZi0+ZGVidWdmc19yb290LAo+ICsJ ZGVidWdmc19jcmVhdGVfdTMyKCJlbmFibGVfYndfcmVsZWFzZSIsIDA2MDAsIGVudHJ5LAo+ICAJ CQkodTMyICopJnBlcmYtPmVuYWJsZV9id19yZWxlYXNlKTsKPiAtCWRlYnVnZnNfY3JlYXRlX3Uz MigidGhyZXNob2xkX2xvdyIsIDA2MDAsIHBlcmYtPmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNf Y3JlYXRlX3UzMigidGhyZXNob2xkX2xvdyIsIDA2MDAsIGVudHJ5LAo+ICAJCQkodTMyICopJmNh dGFsb2ctPnBlcmYubWF4X2J3X2xvdyk7Cj4gLQlkZWJ1Z2ZzX2NyZWF0ZV91MzIoInRocmVzaG9s ZF9oaWdoIiwgMDYwMCwgcGVyZi0+ZGVidWdmc19yb290LAo+ICsJZGVidWdmc19jcmVhdGVfdTMy KCJ0aHJlc2hvbGRfaGlnaCIsIDA2MDAsIGVudHJ5LAo+ICAJCQkodTMyICopJmNhdGFsb2ctPnBl cmYubWF4X2J3X2hpZ2gpOwo+IC0JZGVidWdmc19jcmVhdGVfdTMyKCJtaW5fY29yZV9pYiIsIDA2 MDAsIHBlcmYtPmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNfY3JlYXRlX3UzMigibWluX2NvcmVf aWIiLCAwNjAwLCBlbnRyeSwKPiAgCQkJKHUzMiAqKSZjYXRhbG9nLT5wZXJmLm1pbl9jb3JlX2li KTsKPiAtCWRlYnVnZnNfY3JlYXRlX3UzMigibWluX2xsY2NfaWIiLCAwNjAwLCBwZXJmLT5kZWJ1 Z2ZzX3Jvb3QsCj4gKwlkZWJ1Z2ZzX2NyZWF0ZV91MzIoIm1pbl9sbGNjX2liIiwgMDYwMCwgZW50 cnksCj4gIAkJCSh1MzIgKikmY2F0YWxvZy0+cGVyZi5taW5fbGxjY19pYik7Cj4gLQlkZWJ1Z2Zz X2NyZWF0ZV91MzIoIm1pbl9kcmFtX2liIiwgMDYwMCwgcGVyZi0+ZGVidWdmc19yb290LAo+ICsJ ZGVidWdmc19jcmVhdGVfdTMyKCJtaW5fZHJhbV9pYiIsIDA2MDAsIGVudHJ5LAo+ICAJCQkodTMy ICopJmNhdGFsb2ctPnBlcmYubWluX2RyYW1faWIpOwo+IC0JZGVidWdmc19jcmVhdGVfZmlsZSgi cGVyZl9tb2RlIiwgMDYwMCwgcGVyZi0+ZGVidWdmc19yb290LAo+ICsJZGVidWdmc19jcmVhdGVf ZmlsZSgicGVyZl9tb2RlIiwgMDYwMCwgZW50cnksCj4gIAkJCSh1MzIgKilwZXJmLCAmZHB1X2Nv cmVfcGVyZl9tb2RlX2ZvcHMpOwo+IC0JZGVidWdmc19jcmVhdGVfdTY0KCJmaXhfY29yZV9jbGtf cmF0ZSIsIDA2MDAsIHBlcmYtPmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNfY3JlYXRlX3U2NCgi Zml4X2NvcmVfY2xrX3JhdGUiLCAwNjAwLCBlbnRyeSwKPiAgCQkJJnBlcmYtPmZpeF9jb3JlX2Ns a19yYXRlKTsKPiAtCWRlYnVnZnNfY3JlYXRlX3U2NCgiZml4X2NvcmVfaWJfdm90ZSIsIDA2MDAs IHBlcmYtPmRlYnVnZnNfcm9vdCwKPiArCWRlYnVnZnNfY3JlYXRlX3U2NCgiZml4X2NvcmVfaWJf dm90ZSIsIDA2MDAsIGVudHJ5LAo+ICAJCQkmcGVyZi0+Zml4X2NvcmVfaWJfdm90ZSk7Cj4gLQlk ZWJ1Z2ZzX2NyZWF0ZV91NjQoImZpeF9jb3JlX2FiX3ZvdGUiLCAwNjAwLCBwZXJmLT5kZWJ1Z2Zz X3Jvb3QsCj4gKwlkZWJ1Z2ZzX2NyZWF0ZV91NjQoImZpeF9jb3JlX2FiX3ZvdGUiLCAwNjAwLCBl bnRyeSwKPiAgCQkJJnBlcmYtPmZpeF9jb3JlX2FiX3ZvdGUpOwo+ICAKPiAgCXJldHVybiAwOwo+ ICB9Cj4gLSNlbHNlCj4gLXN0YXRpYyB2b2lkIGRwdV9jb3JlX3BlcmZfZGVidWdmc19kZXN0cm95 KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmKQo+IC17Cj4gLX0KPiAtCj4gLWludCBkcHVfY29y ZV9wZXJmX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZiwKPiAtCQlzdHJ1 Y3QgZGVudHJ5ICpwYXJlbnQpCj4gLXsKPiAtCXJldHVybiAwOwo+IC19Cj4gICNlbmRpZgo+ICAK PiAgdm9pZCBkcHVfY29yZV9wZXJmX2Rlc3Ryb3koc3RydWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYp Cj4gQEAgLTU5Nyw3ICs1NDUsNiBAQCB2b2lkIGRwdV9jb3JlX3BlcmZfZGVzdHJveShzdHJ1Y3Qg ZHB1X2NvcmVfcGVyZiAqcGVyZikKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JZHB1X2NvcmVf cGVyZl9kZWJ1Z2ZzX2Rlc3Ryb3kocGVyZik7Cj4gIAlwZXJmLT5tYXhfY29yZV9jbGtfcmF0ZSA9 IDA7Cj4gIAlwZXJmLT5jb3JlX2NsayA9IE5VTEw7Cj4gIAlwZXJmLT5waGFuZGxlID0gTlVMTDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVy Zi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCj4gaW5k ZXggZmJjYmUwYzc1MjdhLi42NjhjYWM3MTczNmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5oCj4gQEAgLTEyMiwxMiArMTIyLDEzIEBAIGlu dCBkcHVfY29yZV9wZXJmX2luaXQoc3RydWN0IGRwdV9jb3JlX3BlcmYgKnBlcmYsCj4gIAkJc3Ry dWN0IGRwdV9wb3dlcl9oYW5kbGUgKnBoYW5kbGUsCj4gIAkJc3RydWN0IGRzc19jbGsgKmNvcmVf Y2xrKTsKPiAgCj4gK3N0cnVjdCBkcHVfa21zOwo+ICsKPiAgLyoqCj4gICAqIGRwdV9jb3JlX3Bl cmZfZGVidWdmc19pbml0IC0gaW5pdGlhbGl6ZSBkZWJ1Z2ZzIGZvciBjb3JlIHBlcmZvcm1hbmNl IGNvbnRleHQKPiAtICogQHBlcmY6IFBvaW50ZXIgdG8gY29yZSBwZXJmb3JtYW5jZSBjb250ZXh0 Cj4gKyAqIEBkcHVfa21zOiBQb2ludGVyIHRvIHRoZSBkcHVfa21zIHN0cnVjdAo+ICAgKiBAZGVi dWdmc19wYXJlbnQ6IFBvaW50ZXIgdG8gcGFyZW50IGRlYnVnZnMKPiAgICovCj4gLWludCBkcHVf Y29yZV9wZXJmX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZiwKPiAtCQlz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQpOwo+ICtpbnQgZHB1X2NvcmVfcGVyZl9kZWJ1Z2ZzX2luaXQo c3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsIHN0cnVjdCBkZW50cnkgKnBhcmVudCk7Cj4gIAo+ICAj ZW5kaWYgLyogX0RQVV9DT1JFX1BFUkZfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmMKPiBpbmRleCAwMGIxOGJlZTI4N2EuLmVkY2M0NTgwZDQxYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IEBAIC0xMjQ2LDkgKzEy NDYsNiBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2RlYnVnZnNfc3RhdHVzX3Nob3coc3RydWN0IHNl cV9maWxlICpzLCB2b2lkICpkYXRhKQo+ICAKPiAgCWludCBpLCBvdXRfd2lkdGg7Cj4gIAo+IC0J aWYgKCFzIHx8ICFzLT5wcml2YXRlKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAgCWRwdV9j cnRjID0gcy0+cHJpdmF0ZTsKPiAgCWNydGMgPSAmZHB1X2NydGMtPmJhc2U7Cj4gIAo+IEBAIC0x Mzc4LDE0ICsxMzc1LDcgQEAgREVGSU5FX1NIT1dfQVRUUklCVVRFKGRwdV9jcnRjX2RlYnVnZnNf c3RhdGUpOwo+ICAKPiAgc3RhdGljIGludCBfZHB1X2NydGNfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgewo+IC0Jc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKPiAtCXN0 cnVjdCBkcHVfa21zICpkcHVfa21zOwo+IC0KPiAtCWlmICghY3J0YykKPiAtCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Cj4gLQo+IC0JZHB1X2ttcyA9 IF9kcHVfY3J0Y19nZXRfa21zKGNydGMpOwo+ICsJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9 IHRvX2RwdV9jcnRjKGNydGMpOwo+ICAKPiAgCWRwdV9jcnRjLT5kZWJ1Z2ZzX3Jvb3QgPSBkZWJ1 Z2ZzX2NyZWF0ZV9kaXIoZHB1X2NydGMtPm5hbWUsCj4gIAkJCWNydGMtPmRldi0+cHJpbWFyeS0+ ZGVidWdmc19yb290KTsKPiBAQCAtMTQwMywyNSArMTM5MywxMSBAQCBzdGF0aWMgaW50IF9kcHVf Y3J0Y19pbml0X2RlYnVnZnMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCXJldHVybiAw Owo+ICB9Cj4gLQo+IC1zdGF0aWMgdm9pZCBfZHB1X2NydGNfZGVzdHJveV9kZWJ1Z2ZzKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiAtewo+IC0Jc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKPiAt Cj4gLQlpZiAoIWNydGMpCj4gLQkJcmV0dXJuOwo+IC0JZHB1X2NydGMgPSB0b19kcHVfY3J0Yyhj cnRjKTsKPiAtCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcHVfY3J0Yy0+ZGVidWdmc19yb290 KTsKPiAtfQo+ICAjZWxzZQo+ICBzdGF0aWMgaW50IF9kcHVfY3J0Y19pbml0X2RlYnVnZnMoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IC0KPiAtc3RhdGlj IHZvaWQgX2RwdV9jcnRjX2Rlc3Ryb3lfZGVidWdmcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g LXsKPiAtfQo+ICAjZW5kaWYgLyogQ09ORklHX0RFQlVHX0ZTICovCj4gIAo+ICBzdGF0aWMgaW50 IGRwdV9jcnRjX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+IEBAIC0xNDMx LDcgKzE0MDcsOSBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAKPiAgc3RhdGljIHZvaWQgZHB1X2NydGNfZWFybHlfdW5yZWdpc3Rl cihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAtCV9kcHVfY3J0Y19kZXN0cm95X2RlYnVn ZnMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0 Yyk7Cj4gKwo+ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGRwdV9jcnRjLT5kZWJ1Z2ZzX3Jv b3QpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGRwdV9j cnRjX2Z1bmNzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXIuYwo+IGluZGV4IDU1NTllNWQ0MDE0Mi4uMjgxMTg2MGYyNjg4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4gQEAgLTE4MzgsMTQgKzE4Mzgs OSBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZW5jb2RlciAq ZHJtX2VuYykKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+ICBzdGF0aWMgaW50IGRwdV9lbmNv ZGVyX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKPiAgewo+IC0J c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Cj4gKwlzdHJ1Y3QgZHB1X2VuY29kZXJf dmlydCAqZHB1X2VuYyA9IHMtPnByaXZhdGU7Cj4gIAlpbnQgaTsKPiAgCj4gLQlpZiAoIXMgfHwg IXMtPnByaXZhdGUpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JZHB1X2VuYyA9IHMtPnBy aXZhdGU7Cj4gLQo+ICAJbXV0ZXhfbG9jaygmZHB1X2VuYy0+ZW5jX2xvY2spOwo+ICAJZm9yIChp ID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlzX2VuY3M7IGkrKykgewo+ICAJCXN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+IEBAIC0xODc5LDE4 ICsxODc0LDE3IEBAIERFRklORV9TSE9XX0FUVFJJQlVURShkcHVfZW5jb2Rlcl9zdGF0dXMpOwo+ ICAKPiAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBkcm1fZW5j b2RlciAqZHJtX2VuYykKPiAgewo+IC0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7 Cj4gKwlzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3Zp cnQoZHJtX2VuYyk7Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+ICAJc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXM7Cj4gIAlpbnQgaTsKPiAgCWNoYXIgbmFtZVtEUFVfTkFNRV9TSVpF XTsKPiAgCj4gLQlpZiAoIWRybV9lbmMgfHwgIWRybV9lbmMtPmRldiB8fCAhZHJtX2VuYy0+ZGV2 LT5kZXZfcHJpdmF0ZSkgewo+ICsJaWYgKCFkcm1fZW5jLT5kZXYgfHwgIWRybV9lbmMtPmRldi0+ ZGV2X3ByaXZhdGUpIHsKPiAgCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlciBvciBrbXNcbiIp Owo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAtCWRwdV9lbmMgPSB0b19kcHVfZW5j b2Rlcl92aXJ0KGRybV9lbmMpOwo+ICAJcHJpdiA9IGRybV9lbmMtPmRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlkcHVfa21zID0gdG9fZHB1X2ttcyhwcml2LT5rbXMpOwo+ICAKPiBAQCAtMTkxNSwyNiAr MTkwOSwxMSBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9pbml0X2RlYnVnZnMoc3RydWN0IGRy bV9lbmNvZGVyICpkcm1fZW5jKQo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gLQo+IC1zdGF0aWMg dm9pZCBfZHB1X2VuY29kZXJfZGVzdHJveV9kZWJ1Z2ZzKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJt X2VuYykKPiAtewo+IC0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Cj4gLQo+IC0J aWYgKCFkcm1fZW5jKQo+IC0JCXJldHVybjsKPiAtCj4gLQlkcHVfZW5jID0gdG9fZHB1X2VuY29k ZXJfdmlydChkcm1fZW5jKTsKPiAtCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcHVfZW5jLT5k ZWJ1Z2ZzX3Jvb3QpOwo+IC19Cj4gICNlbHNlCj4gIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX2lu aXRfZGVidWdmcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCj4gIHsKPiAgCXJldHVybiAw Owo+ICB9Cj4gLQo+IC1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfZGVzdHJveV9kZWJ1Z2ZzKHN0 cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKPiAtewo+IC19Cj4gICNlbmRpZgo+ICAKPiAgc3Rh dGljIGludCBkcHVfZW5jb2Rlcl9sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKPiBAQCAtMTk0NCw3ICsxOTIzLDkgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9sYXRl X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX2Vhcmx5X3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ICB7Cj4gLQlfZHB1X2VuY29kZXJfZGVzdHJveV9kZWJ1Z2ZzKGVuY29kZXIpOwo+ICsJc3Ry dWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGVuY29k ZXIpOwo+ICsKPiArCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcHVfZW5jLT5kZWJ1Z2ZzX3Jv b3QpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3ZpcnRfYWRkX3BoeXNfZW5j cygKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gaW5kZXggMmE5MTg4 MTA0OGM4Li4zZDBjOTNjNDk3NjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2ttcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5jCj4gQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIGludCBfZHB1X2Rhbmdlcl9zaWdu YWxfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqcywKPiAgCXN0cnVjdCBkcHVfZGFuZ2VyX3NhZmVf c3RhdHVzIHN0YXR1czsKPiAgCWludCBpOwo+ICAKPiAtCWlmICgha21zIHx8ICFrbXMtPmRldiB8 fCAha21zLT5kZXYtPmRldl9wcml2YXRlIHx8ICFrbXMtPmh3X21kcCkgewo+ICsJaWYgKCFrbXMt PmRldiB8fCAha21zLT5kZXYtPmRldl9wcml2YXRlIHx8ICFrbXMtPmh3X21kcCkgewo+ICAJCURQ VV9FUlJPUigiaW52YWxpZCBhcmcocylcbiIpOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+IEBAIC0x MjUsNDYgKzEyNSwyOSBAQCBzdGF0aWMgaW50IGRwdV9kZWJ1Z2ZzX3NhZmVfc3RhdHNfc2hvdyhz dHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpCj4gIH0KPiAgREVGSU5FX1NIT1dfQVRUUklCVVRF KGRwdV9kZWJ1Z2ZzX3NhZmVfc3RhdHMpOwo+ICAKPiAtc3RhdGljIHZvaWQgZHB1X2RlYnVnZnNf ZGFuZ2VyX2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCj4gLXsKPiAtCWRlYnVnZnNf cmVtb3ZlX3JlY3Vyc2l2ZShkcHVfa21zLT5kZWJ1Z2ZzX2Rhbmdlcik7Cj4gLQlkcHVfa21zLT5k ZWJ1Z2ZzX2RhbmdlciA9IE5VTEw7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZHB1X2RlYnVnZnNf ZGFuZ2VyX2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCj4gK3N0YXRpYyB2b2lkIGRwdV9k ZWJ1Z2ZzX2Rhbmdlcl9pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAo+ICAJCXN0cnVjdCBk ZW50cnkgKnBhcmVudCkKPiAgewo+IC0JZHB1X2ttcy0+ZGVidWdmc19kYW5nZXIgPSBkZWJ1Z2Zz X2NyZWF0ZV9kaXIoImRhbmdlciIsCj4gLQkJCXBhcmVudCk7Cj4gLQlpZiAoIWRwdV9rbXMtPmRl YnVnZnNfZGFuZ2VyKSB7Cj4gLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGRhbmdlciBk ZWJ1Z2ZzXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiArCXN0cnVjdCBkZW50cnkg KmVudHJ5ID0gZGVidWdmc19jcmVhdGVfZGlyKCJkYW5nZXIiLCBwYXJlbnQpOwo+ICsJaWYgKElT X0VSUl9PUl9OVUxMKGVudHJ5KSkKPiArCQlyZXR1cm47Cj4gIAo+IC0JZGVidWdmc19jcmVhdGVf ZmlsZSgiZGFuZ2VyX3N0YXR1cyIsIDA2MDAsIGRwdV9rbXMtPmRlYnVnZnNfZGFuZ2VyLAo+ICsJ ZGVidWdmc19jcmVhdGVfZmlsZSgiZGFuZ2VyX3N0YXR1cyIsIDA2MDAsIGVudHJ5LAo+ICAJCQlk cHVfa21zLCAmZHB1X2RlYnVnZnNfZGFuZ2VyX3N0YXRzX2ZvcHMpOwo+IC0JZGVidWdmc19jcmVh dGVfZmlsZSgic2FmZV9zdGF0dXMiLCAwNjAwLCBkcHVfa21zLT5kZWJ1Z2ZzX2RhbmdlciwKPiAr CWRlYnVnZnNfY3JlYXRlX2ZpbGUoInNhZmVfc3RhdHVzIiwgMDYwMCwgZW50cnksCj4gIAkJCWRw dV9rbXMsICZkcHVfZGVidWdmc19zYWZlX3N0YXRzX2ZvcHMpOwo+IC0KPiAtCXJldHVybiAwOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGRwdV9kZWJ1Z2ZzX3JlZ3NldDMyX3Nob3coc3RydWN0IHNl cV9maWxlICpzLCB2b2lkICpkYXRhKQo+ICB7Cj4gLQlzdHJ1Y3QgZHB1X2RlYnVnZnNfcmVnc2V0 MzIgKnJlZ3NldDsKPiAtCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwo+ICsJc3RydWN0IGRwdV9k ZWJ1Z2ZzX3JlZ3NldDMyICpyZWdzZXQgPSBzLT5wcml2YXRlOwo+ICsJc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMgPSByZWdzZXQtPmRwdV9rbXM7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAgCXZvaWQgX19pb21lbSAqYmFzZTsK PiAgCXVpbnQzMl90IGksIGFkZHI7Cj4gIAo+IC0JaWYgKCFzIHx8ICFzLT5wcml2YXRlKQo+IC0J CXJldHVybiAwOwo+IC0KPiAtCXJlZ3NldCA9IHMtPnByaXZhdGU7Cj4gLQo+IC0JZHB1X2ttcyA9 IHJlZ3NldC0+ZHB1X2ttczsKPiAtCWlmICghZHB1X2ttcyB8fCAhZHB1X2ttcy0+bW1pbykKPiAr CWlmICghZHB1X2ttcy0+bW1pbykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlkZXYgPSBkcHVfa21z LT5kZXY7Cj4gQEAgLTIyNiw1MSArMjA5LDI0IEBAIHZvaWQgKmRwdV9kZWJ1Z2ZzX2NyZWF0ZV9y ZWdzZXQzMihjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCj4gIAo+ICBzdGF0aWMgaW50 IF9kcHVfZGVidWdmc19pbml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQo+ICB7Cj4gLQl2b2lk ICpwOwo+IC0JaW50IHJjOwo+IC0KPiAtCXAgPSBkcHVfaHdfdXRpbF9nZXRfbG9nX21hc2tfcHRy KCk7Cj4gKwl2b2lkICpwID0gZHB1X2h3X3V0aWxfZ2V0X2xvZ19tYXNrX3B0cigpOwo+ICsJc3Ry dWN0IGRlbnRyeSAqZW50cnk7Cj4gIAo+IC0JaWYgKCFkcHVfa21zIHx8ICFwKQo+ICsJaWYgKCFw KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWRwdV9rbXMtPmRlYnVnZnNfcm9vdCA9IGRl YnVnZnNfY3JlYXRlX2RpcigiZGVidWciLAo+IC0JCQkJCSAgIGRwdV9rbXMtPmRldi0+cHJpbWFy eS0+ZGVidWdmc19yb290KTsKPiAtCWlmIChJU19FUlJfT1JfTlVMTChkcHVfa21zLT5kZWJ1Z2Zz X3Jvb3QpKSB7Cj4gLQkJRFJNX0VSUk9SKCJkZWJ1Z2ZzIGNyZWF0ZV9kaXIgZmFpbGVkICVsZFxu IiwKPiAtCQkJICBQVFJfRVJSKGRwdV9rbXMtPmRlYnVnZnNfcm9vdCkpOwo+IC0JCXJldHVybiBQ VFJfRVJSKGRwdV9rbXMtPmRlYnVnZnNfcm9vdCk7Cj4gLQl9Cj4gKwllbnRyeSA9IGRlYnVnZnNf Y3JlYXRlX2RpcigiZGVidWciLCBkcHVfa21zLT5kZXYtPnByaW1hcnktPmRlYnVnZnNfcm9vdCk7 Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZW50cnkpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICAK PiAgCS8qIGFsbG93IHJvb3QgdG8gYmUgTlVMTCAqLwo+IC0JZGVidWdmc19jcmVhdGVfeDMyKERQ VV9ERUJVR0ZTX0hXTUFTS05BTUUsIDA2MDAsIGRwdV9rbXMtPmRlYnVnZnNfcm9vdCwgcCk7Cj4g LQo+IC0JKHZvaWQpIGRwdV9kZWJ1Z2ZzX2Rhbmdlcl9pbml0KGRwdV9rbXMsIGRwdV9rbXMtPmRl YnVnZnNfcm9vdCk7Cj4gLQkodm9pZCkgZHB1X2RlYnVnZnNfdmJpZl9pbml0KGRwdV9rbXMsIGRw dV9rbXMtPmRlYnVnZnNfcm9vdCk7Cj4gLQkodm9pZCkgZHB1X2RlYnVnZnNfY29yZV9pcnFfaW5p dChkcHVfa21zLCBkcHVfa21zLT5kZWJ1Z2ZzX3Jvb3QpOwo+ICsJZGVidWdmc19jcmVhdGVfeDMy KERQVV9ERUJVR0ZTX0hXTUFTS05BTUUsIDA2MDAsIGVudHJ5LCBwKTsKPiAgCj4gLQlyYyA9IGRw dV9jb3JlX3BlcmZfZGVidWdmc19pbml0KCZkcHVfa21zLT5wZXJmLCBkcHVfa21zLT5kZWJ1Z2Zz X3Jvb3QpOwo+IC0JaWYgKHJjKSB7Cj4gLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBwZXJm ICVkXG4iLCByYyk7Cj4gLQkJcmV0dXJuIHJjOwo+IC0JfQo+ICsJZHB1X2RlYnVnZnNfZGFuZ2Vy X2luaXQoZHB1X2ttcywgZW50cnkpOwo+ICsJZHB1X2RlYnVnZnNfdmJpZl9pbml0KGRwdV9rbXMs IGVudHJ5KTsKPiArCWRwdV9kZWJ1Z2ZzX2NvcmVfaXJxX2luaXQoZHB1X2ttcywgZW50cnkpOwo+ ICAKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfZHB1X2RlYnVnZnNfZGVz dHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiAtewo+IC0JLyogZG9uJ3QgbmVlZCB0byBO VUxMIGNoZWNrIGRlYnVnZnNfcm9vdCAqLwo+IC0JaWYgKGRwdV9rbXMpIHsKPiAtCQlkcHVfZGVi dWdmc192YmlmX2Rlc3Ryb3koZHB1X2ttcyk7Cj4gLQkJZHB1X2RlYnVnZnNfZGFuZ2VyX2Rlc3Ry b3koZHB1X2ttcyk7Cj4gLQkJZHB1X2RlYnVnZnNfY29yZV9pcnFfZGVzdHJveShkcHVfa21zKTsK PiAtCQlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZHB1X2ttcy0+ZGVidWdmc19yb290KTsKPiAt CX0KPiAtfQo+IC0jZWxzZQo+IC1zdGF0aWMgdm9pZCBfZHB1X2RlYnVnZnNfZGVzdHJveShzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcykKPiAtewo+ICsJcmV0dXJuIGRwdV9jb3JlX3BlcmZfZGVidWdm c19pbml0KGRwdV9rbXMsIGVudHJ5KTsKPiAgfQo+ICAjZW5kaWYKPiAgCj4gQEAgLTU4MywyMiAr NTM5LDcgQEAgc3RhdGljIGludCBfZHB1X2ttc19kcm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMpCj4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMKPiAgc3RhdGljIGludCBkcHVfa21z X2RlYnVnZnNfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5v cikKPiAgewo+IC0Jc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+IC0JaW50IHJjOwo+IC0KPiAtCWlmICghZHB1X2tt cyB8fCAhZHB1X2ttcy0+ZGV2IHx8ICFkcHVfa21zLT5kZXYtPmRldikgewo+IC0JCURQVV9FUlJP UigiaW52YWxpZCBkcHVfa21zXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4g LQlkZXYgPSBkcHVfa21zLT5kZXY7Cj4gLQo+IC0JcmMgPSBfZHB1X2RlYnVnZnNfaW5pdChkcHVf a21zKTsKPiAtCWlmIChyYykKPiAtCQlEUFVfRVJST1IoImRwdV9kZWJ1Z2ZzIGluaXQgZmFpbGVk OiAlZFxuIiwgcmMpOwo+IC0KPiAtCXJldHVybiByYzsKPiArCXJldHVybiBfZHB1X2RlYnVnZnNf aW5pdCh0b19kcHVfa21zKGttcykpOwo+ICB9Cj4gICNlbmRpZgo+ICAKPiBAQCAtNjI2LDcgKzU2 Nyw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfa21zX2h3X2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRw dV9rbXMpCj4gIAkJCQkmZHB1X2ttcy0+cGhhbmRsZSwgZHB1X2ttcy0+cG93ZXJfZXZlbnQpOwo+ ICAKPiAgCS8qIHNhZmUgdG8gY2FsbCB0aGVzZSBtb3JlIHRoYW4gb25jZSBkdXJpbmcgc2h1dGRv d24gKi8KPiAtCV9kcHVfZGVidWdmc19kZXN0cm95KGRwdV9rbXMpOwo+ICAJX2RwdV9rbXNfbW11 X2Rlc3Ryb3koZHB1X2ttcyk7Cj4gIAo+ICAJaWYgKGRwdV9rbXMtPmNhdGFsb2cpIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCj4gaW5kZXggZTc1MzljOTg3MGU0Li5j YjFhNjg1ZGNmZWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5o Cj4gQEAgLTEwMiw3ICsxMDIsNiBAQCBzdHJ1Y3QgZHB1X2lycSB7Cj4gIAlhdG9taWNfdCAqZW5h YmxlX2NvdW50czsKPiAgCWF0b21pY190ICppcnFfY291bnRzOwo+ICAJc3BpbmxvY2tfdCBjYl9s b2NrOwo+IC0Jc3RydWN0IGRlbnRyeSAqZGVidWdmc19maWxlOwo+ICB9Owo+ICAKPiAgc3RydWN0 IGRwdV9rbXMgewo+IEBAIC0xMTUsMTEgKzExNCw2IEBAIHN0cnVjdCBkcHVfa21zIHsKPiAgCXN0 cnVjdCBkcHVfcG93ZXJfY2xpZW50ICpjb3JlX2NsaWVudDsKPiAgCXN0cnVjdCBkcHVfcG93ZXJf ZXZlbnQgKnBvd2VyX2V2ZW50Owo+ICAKPiAtCS8qIGRpcmVjdG9yeSBlbnRyeSBmb3IgZGVidWdm cyAqLwo+IC0Jc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290Owo+IC0Jc3RydWN0IGRlbnRyeSAq ZGVidWdmc19kYW5nZXI7Cj4gLQlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3ZiaWY7Cj4gLQo+ICAJ LyogaW8vcmVnaXN0ZXIgc3BhY2VzOiAqLwo+ICAJdm9pZCBfX2lvbWVtICptbWlvLCAqdmJpZltW QklGX01BWF0sICpyZWdfZG1hOwo+ICAJdW5zaWduZWQgbG9uZyBtbWlvX2xlbiwgdmJpZl9sZW5b VkJJRl9NQVhdLCByZWdfZG1hX2xlbjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X21kc3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9tZHNzLmMKPiBpbmRleCAxOWFiZjcxOTgxMWEuLjVlY2MyNmZkYzMyOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfbWRzcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYwo+IEBAIC0xMjAsMTMgKzEyMCwxMiBA QCBzdGF0aWMgaW50IF9kcHVfbWRzc19pcnFfZG9tYWluX2FkZChzdHJ1Y3QgZHB1X21kc3MgKmRw dV9tZHNzKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgX2RwdV9tZHNzX2ly cV9kb21haW5fZmluaShzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQo+ICtzdGF0aWMgdm9pZCBf ZHB1X21kc3NfaXJxX2RvbWFpbl9maW5pKHN0cnVjdCBkcHVfbWRzcyAqZHB1X21kc3MpCj4gIHsK PiAgCWlmIChkcHVfbWRzcy0+aXJxX2NvbnRyb2xsZXIuZG9tYWluKSB7Cj4gIAkJaXJxX2RvbWFp bl9yZW1vdmUoZHB1X21kc3MtPmlycV9jb250cm9sbGVyLmRvbWFpbik7Cj4gIAkJZHB1X21kc3Mt PmlycV9jb250cm9sbGVyLmRvbWFpbiA9IE5VTEw7Cj4gIAl9Cj4gLQlyZXR1cm4gMDsKPiAgfQo+ ICBzdGF0aWMgaW50IGRwdV9tZHNzX2VuYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCj4gIHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcGxhbmUuYwo+IGluZGV4IDk4ZDgz MTVmNjI1ZC4uYmNkOGQ0NmZmYzM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3BsYW5lLmMKPiBAQCAtMTI2NCwyNiArMTI2NCwxMiBAQCBzdGF0aWMgc3NpemVfdCBf ZHB1X3BsYW5lX2Rhbmdlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAo+ICAJCQljaGFyIF9fdXNl ciAqYnVmZiwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCj4gIHsKPiAgCXN0cnVjdCBkcHVf a21zICprbXMgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gLQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICpj ZmcgPSBrbXMtPmNhdGFsb2c7Cj4gLQlpbnQgbGVuID0gMDsKPiAtCWNoYXIgYnVmWzQwXSA9IHsn XDAnfTsKPiArCWludCBsZW47Cj4gKwljaGFyIGJ1Zls0MF07Cj4gIAo+IC0JaWYgKCFjZmcpCj4g LQkJcmV0dXJuIC1FTk9ERVY7Cj4gKwlsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwg IiVkXG4iLCAha21zLT5oYXNfZGFuZ2VyX2N0cmwpOwo+ICAKPiAtCWlmICgqcHBvcykKPiAtCQly ZXR1cm4gMDsgLyogdGhlIGVuZCAqLwo+IC0KPiAtCWxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9m KGJ1ZiksICIlZFxuIiwgIWttcy0+aGFzX2Rhbmdlcl9jdHJsKTsKPiAtCWlmIChsZW4gPCAwIHx8 IGxlbiA+PSBzaXplb2YoYnVmKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAoKGNvdW50IDwg c2l6ZW9mKGJ1ZikpIHx8IGNvcHlfdG9fdXNlcihidWZmLCBidWYsIGxlbikpCj4gLQkJcmV0dXJu IC1FRkFVTFQ7Cj4gLQo+IC0JKnBwb3MgKz0gbGVuOyAgIC8qIGluY3JlYXNlIG9mZnNldCAqLwo+ IC0KPiAtCXJldHVybiBsZW47Cj4gKwlyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIoYnVm ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX2RwdV9w bGFuZV9zZXRfZGFuZ2VyX3N0YXRlKHN0cnVjdCBkcHVfa21zICprbXMsIGJvb2wgZW5hYmxlKQo+ IEBAIC0xMzEzLDIzICsxMjk5LDEyIEBAIHN0YXRpYyBzc2l6ZV90IF9kcHVfcGxhbmVfZGFuZ2Vy X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAo+ICAJCSAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNl cl9idWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQo+ICB7Cj4gIAlzdHJ1Y3QgZHB1X2tt cyAqa21zID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+IC0Jc3RydWN0IGRwdV9tZHNzX2NmZyAqY2Zn ID0ga21zLT5jYXRhbG9nOwo+ICAJaW50IGRpc2FibGVfcGFuaWM7Cj4gLQljaGFyIGJ1ZlsxMF07 Cj4gLQo+IC0JaWYgKCFjZmcpCj4gLQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQo+IC0JaWYgKGNvdW50 ID49IHNpemVvZihidWYpKQo+IC0JCXJldHVybiAtRUZBVUxUOwo+IC0KPiAtCWlmIChjb3B5X2Zy b21fdXNlcihidWYsIHVzZXJfYnVmLCBjb3VudCkpCj4gLQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQo+ IC0JYnVmW2NvdW50XSA9IDA7CS8qIGVuZCBvZiBzdHJpbmcgKi8KPiArCWludCByZXQ7Cj4gIAo+ IC0JaWYgKGtzdHJ0b2ludChidWYsIDAsICZkaXNhYmxlX3BhbmljKSkKPiAtCQlyZXR1cm4gLUVG QVVMVDsKPiArCXJldCA9IGtzdHJ0b3VpbnRfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwg JmRpc2FibGVfcGFuaWMpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWlm IChkaXNhYmxlX3BhbmljKSB7Cj4gIAkJLyogRGlzYWJsZSBwYW5pYyBzaWduYWwgZm9yIGFsbCBh Y3RpdmUgcGlwZXMgKi8KPiBAQCAtMTM1NCwzMyArMTMyOSwxMCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyBkcHVfcGxhbmVfZGFuZ2VyX2VuYWJsZSA9IHsKPiAgCj4gIHN0 YXRpYyBpbnQgX2RwdV9wbGFuZV9pbml0X2RlYnVnZnMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Cj4gIHsKPiAtCXN0cnVjdCBkcHVfcGxhbmUgKnBkcHU7Cj4gLQlzdHJ1Y3QgZHB1X2ttcyAqa21z Owo+IC0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAtCWNvbnN0IHN0cnVjdCBkcHVf c3NwcF9zdWJfYmxrcyAqc2JsayA9IDA7Cj4gLQljb25zdCBzdHJ1Y3QgZHB1X3NzcHBfY2ZnICpj ZmcgPSAwOwo+IC0KPiAtCWlmICghcGxhbmUgfHwgIXBsYW5lLT5kZXYpIHsKPiAtCQlEUFVfRVJS T1IoImludmFsaWQgYXJndW1lbnRzXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAt Cj4gLQlwcml2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlpZiAoIXByaXYgfHwgIXBy aXYtPmttcykgewo+IC0JCURQVV9FUlJPUigiaW52YWxpZCBLTVMgcmVmZXJlbmNlXG4iKTsKPiAt CQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gLQlrbXMgPSB0b19kcHVfa21zKHByaXYtPmtt cyk7Cj4gLQlwZHB1ID0gdG9fZHB1X3BsYW5lKHBsYW5lKTsKPiAtCj4gLQlpZiAocGRwdSAmJiBw ZHB1LT5waXBlX2h3KQo+IC0JCWNmZyA9IHBkcHUtPnBpcGVfaHctPmNhcDsKPiAtCWlmIChjZmcp Cj4gLQkJc2JsayA9IGNmZy0+c2JsazsKPiAtCj4gLQlpZiAoIXNibGspCj4gLQkJcmV0dXJuIDA7 Cj4gKwlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1ID0gdG9fZHB1X3BsYW5lKHBsYW5lKTsKPiArCXN0 cnVjdCBkcHVfa21zICprbXMgPSBfZHB1X3BsYW5lX2dldF9rbXMocGxhbmUpOwo+ICsJY29uc3Qg c3RydWN0IGRwdV9zc3BwX2NmZyAqY2ZnID0gcGRwdS0+cGlwZV9ody0+Y2FwOwo+ICsJY29uc3Qg c3RydWN0IGRwdV9zc3BwX3N1Yl9ibGtzICpzYmxrID0gY2ZnLT5zYmxrOwo+ICAKPiAgCS8qIGNy ZWF0ZSBvdmVyYWxsIHN1Yi1kaXJlY3RvcnkgZm9yIHRoZSBwaXBlICovCj4gIAlwZHB1LT5kZWJ1 Z2ZzX3Jvb3QgPQo+IEBAIC0xNDUxLDI1ICsxNDAzLDExIEBAIHN0YXRpYyBpbnQgX2RwdV9wbGFu ZV9pbml0X2RlYnVnZnMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gIAo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAtCj4gLXN0YXRpYyB2b2lkIF9kcHVfcGxhbmVfZGVzdHJveV9kZWJ1Z2ZzKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lKQo+IC17Cj4gLQlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1Owo+IC0K PiAtCWlmICghcGxhbmUpCj4gLQkJcmV0dXJuOwo+IC0JcGRwdSA9IHRvX2RwdV9wbGFuZShwbGFu ZSk7Cj4gLQo+IC0JZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHBkcHUtPmRlYnVnZnNfcm9vdCk7 Cj4gLX0KPiAgI2Vsc2UKPiAgc3RhdGljIGludCBfZHB1X3BsYW5lX2luaXRfZGVidWdmcyhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgewo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAtc3RhdGljIHZv aWQgX2RwdV9wbGFuZV9kZXN0cm95X2RlYnVnZnMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4g LXsKPiAtfQo+ICAjZW5kaWYKPiAgCj4gIHN0YXRpYyBpbnQgZHB1X3BsYW5lX2xhdGVfcmVnaXN0 ZXIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gQEAgLTE0NzksNyArMTQxNyw5IEBAIHN0YXRp YyBpbnQgZHB1X3BsYW5lX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4g IAo+ICBzdGF0aWMgdm9pZCBkcHVfcGxhbmVfZWFybHlfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSkKPiAgewo+IC0JX2RwdV9wbGFuZV9kZXN0cm95X2RlYnVnZnMocGxhbmUpOwo+ ICsJc3RydWN0IGRwdV9wbGFuZSAqcGRwdSA9IHRvX2RwdV9wbGFuZShwbGFuZSk7Cj4gKwo+ICsJ ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHBkcHUtPmRlYnVnZnNfcm9vdCk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGRwdV9wbGFuZV9mdW5jcyA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3ZiaWYuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV92YmlmLmMKPiBpbmRleCBmZjUwOTFk MjU1NWQuLmVmNzUzZWE5YzQ5OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfdmJpZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X3ZiaWYuYwo+IEBAIC0zMTAsMzEgKzMxMCwyNSBAQCB2b2lkIGRwdV92YmlmX2luaXRfbWVt dHlwZXMoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCj4gIH0KPiAgCj4gICNpZmRlZiBDT05GSUdf REVCVUdfRlMKPiAtdm9pZCBkcHVfZGVidWdmc192YmlmX2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMpCj4gLXsKPiAtCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkcHVfa21zLT5kZWJ1 Z2ZzX3ZiaWYpOwo+IC0JZHB1X2ttcy0+ZGVidWdmc192YmlmID0gTlVMTDsKPiAtfQo+ICAKPiAt aW50IGRwdV9kZWJ1Z2ZzX3ZiaWZfaW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywgc3RydWN0 IGRlbnRyeSAqZGVidWdmc19yb290KQo+ICt2b2lkIGRwdV9kZWJ1Z2ZzX3ZiaWZfaW5pdChzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcywgc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290KQo+ICB7Cj4g IAljaGFyIHZiaWZfbmFtZVszMl07Cj4gLQlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3ZiaWY7Cj4g KwlzdHJ1Y3QgZGVudHJ5ICplbnRyeSwgKmRlYnVnZnNfdmJpZjsKPiAgCWludCBpLCBqOwo+ICAK PiAtCWRwdV9rbXMtPmRlYnVnZnNfdmJpZiA9IGRlYnVnZnNfY3JlYXRlX2RpcigidmJpZiIsIGRl YnVnZnNfcm9vdCk7Cj4gLQlpZiAoIWRwdV9rbXMtPmRlYnVnZnNfdmJpZikgewo+IC0JCURQVV9F UlJPUigiZmFpbGVkIHRvIGNyZWF0ZSB2YmlmIGRlYnVnZnNcbiIpOwo+IC0JCXJldHVybiAtRUlO VkFMOwo+IC0JfQo+ICsJZW50cnkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoInZiaWYiLCBkZWJ1Z2Zz X3Jvb3QpOwo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGVudHJ5KSkKPiArCQlyZXR1cm47Cj4gIAo+ ICAJZm9yIChpID0gMDsgaSA8IGRwdV9rbXMtPmNhdGFsb2ctPnZiaWZfY291bnQ7IGkrKykgewo+ ICAJCXN0cnVjdCBkcHVfdmJpZl9jZmcgKnZiaWYgPSAmZHB1X2ttcy0+Y2F0YWxvZy0+dmJpZltp XTsKPiAgCj4gIAkJc25wcmludGYodmJpZl9uYW1lLCBzaXplb2YodmJpZl9uYW1lKSwgIiVkIiwg dmJpZi0+aWQpOwo+ICAKPiAtCQlkZWJ1Z2ZzX3ZiaWYgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIodmJp Zl9uYW1lLAo+IC0JCQkJZHB1X2ttcy0+ZGVidWdmc192YmlmKTsKPiArCQlkZWJ1Z2ZzX3ZiaWYg PSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIodmJpZl9uYW1lLCBlbnRyeSk7Cj4gKwkJaWYgKElTX0VSUl9P Ul9OVUxMKGRlYnVnZnNfdmJpZikpCj4gKwkJCWNvbnRpbnVlOwo+ICAKPiAgCQlkZWJ1Z2ZzX2Ny ZWF0ZV91MzIoImZlYXR1cmVzIiwgMDYwMCwgZGVidWdmc192YmlmLAo+ICAJCQkodTMyICopJnZi aWYtPmZlYXR1cmVzKTsKPiBAQCAtMzc2LDcgKzM3MCw1IEBAIGludCBkcHVfZGVidWdmc192Ymlm X2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9v dCkKPiAgCQkJCQkodTMyICopJmNmZy0+b3RfbGltaXQpOwo+ICAJCX0KPiAgCX0KPiAtCj4gLQly ZXR1cm4gMDsKPiAgfQo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X3ZiaWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV92YmlmLmgKPiBpbmRleCBmMTdhZjUyZGJiZDUuLjYzNTY4NzZkN2E2NiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdmJpZi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3ZiaWYuaAo+IEBAIC03OCwxNyArNzgsNiBAQCB2 b2lkIGRwdV92YmlmX2NsZWFyX2Vycm9ycyhzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyk7Cj4gICAq Lwo+ICB2b2lkIGRwdV92YmlmX2luaXRfbWVtdHlwZXMoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMp Owo+ICAKPiAtI2lmZGVmIENPTkZJR19ERUJVR19GUwo+IC1pbnQgZHB1X2RlYnVnZnNfdmJpZl9p bml0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Qp Owo+IC12b2lkIGRwdV9kZWJ1Z2ZzX3ZiaWZfZGVzdHJveShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2tt cyk7Cj4gLSNlbHNlCj4gLXN0YXRpYyBpbmxpbmUgaW50IGRwdV9kZWJ1Z2ZzX3ZiaWZfaW5pdChz dHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKPiAtCQlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Qp Cj4gLXsKPiAtCXJldHVybiAwOwo+IC19Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBkcHVfZGVidWdm c192YmlmX2Rlc3Ryb3koc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCj4gLXsKPiAtfQo+IC0jZW5k aWYKPiArdm9pZCBkcHVfZGVidWdmc192YmlmX2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMs IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9vdCk7Cj4gKwo+ICAjZW5kaWYgLyogX19EUFVfVkJJ Rl9IX18gKi8KPiAtLSAKPiAyLjE4LjAKPiAKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2lu ZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9mcmVlZHJlbm8K