From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm: Add checks for NULL drm_*_helper_funcs Date: Thu, 31 May 2018 09:29:44 +0200 Message-ID: <20180531072944.GP3438@phenom.ffwll.local> References: <20180525022008.GA29417@haneen-vb> <20180529080353.GC3438@phenom.ffwll.local> <20180529090324.GA3010@Haneen> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5AFAE6E1FA for ; Thu, 31 May 2018 07:29:49 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id z6-v6so631867wma.0 for ; Thu, 31 May 2018 00:29:49 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180529090324.GA3010@Haneen> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Haneen Mohammed Cc: rodrigosiqueiramelo@gmail.com, David Airlie , Daniel Vetter , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMjksIDIwMTggYXQgMTI6MDM6MjRQTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIFR1ZSwgTWF5IDI5LCAyMDE4IGF0IDEwOjAzOjUzQU0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBGcmksIE1heSAyNSwgMjAxOCBhdCAwNToyMDowOEFNICsw MzAwLCBIYW5lZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+IFRoaXMgcGF0Y2ggYWRkIGNoZWNrcyBm b3IgTlVMTCBkcm1fW2Nvbm5lY3Rvci9jcnRjL3BsYW5lXV9oZWxwZXJfZnVuY3MKPiA+ID4gcG9p bnRlcnMgYmVmb3JlIGRlcmVmcmVuY2luZyB0aGUgdmFyaWFibGUgdG8gYXZvaWQgTlVMTCBwb2lu dGVyCj4gPiA+IGRlcmVmZXJlbmNlIGFuZCBtYWtlIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGFzIG9w dGlvbmFsIGFzIHBvc3NpYmxlLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogSGFuZWVuIE1v aGFtbWVkIDxoYW1vaGFtbWVkLnNhQGdtYWlsLmNvbT4KPiA+IAo+ID4gSSBzdGFydGVkIHJldmll d2luZyB0aGlzLCBhbmQgdGhlbiByZWFsaXplZCBpdCdzIGEgYml0IGEgY2FuIG9mIHdvcm1zLgo+ ID4gRS5nLiBjb25uZWN0b3ItPmZ1bmNzLT5kZXRlY3Qgc2hvdWxkbid0IGJlIHRoZXJlLCBpdCdz IGEgaGVscGVyIGNhbGxiYWNrCj4gPiByZWFsbHkgKGJ1dCBwbGFjZWQgaW4gdGhlIHdyb25nIGZ1 bmN0aW9uIHRhYmxlKS4gU28gY29ubmVjdG9yLT5mdW5jcyBpc24ndAo+ID4gb3B0aW9uYWwsIGJ1 dCBjb25uZWN0b3ItPmZ1bmNzLT5kZXRlY3QgbWF5YmUgc2hvdWxkIGJlIG9wdGlvbmFsLgo+ID4g Cj4gPiBTbyBJJ20gbm90IHN1cmUgYW55bW9yZSB3aGV0aGVyIGRvaW5nIHRoaXMgaG9sZXNhbGUg aXMgYSBnb29kIGlkZWEuIERvIHdlCj4gPiBzdGlsbCBuZWVkIHRoaXMgZm9yIHZrbXM/IElmIHll cywgdGhlbiBhIG1vcmUgZm9jdXNlZCBwYXRjaCB0byBqdXN0IG1ha2UKPiA+IHRoZSB0aGluZ3Mg b3B0aW9uYWwgdGhhdCB2a21zIGRvZXMgbm90ICh5ZXQpIHByb3ZpZGUgbWlnaHQgYmUgYmV0dGVy Lgo+ID4gSW5jbHVkaW5nIGFuIGV4cGxhbmF0aW9uIG9mIHdoYXQgZXhhY3RseSBibG93cyB1cCBp biB2a21zLgo+ID4gCj4gCj4gaG0gb25seSBmb3IgcnVubmluZyB0aGUgaWd0IHRlc3RzICYgbW9k ZXRlc3QgaW4gbGliZHJtLiAKPiAKPiBJdCB3YXMgZWFzaWVyIHRvIGFkZCBjaGVjayBmb3IgYWxs IHRoZSBmdW5jcywgYnV0IEkgd2lsbCBjaGVjayBhZ2FpbiB0aGUKPiBsZWFzdCBhbW91bnQgb2Yg Y2hlY2tzIG5lZWRlZCBmb3Igdmttcy4KClRvIGNsYXJpZnkgd2hhdCBJJ20gbG9va2luZyBmb3I6 IEkgdGhpbmsgYSBtb3JlIHNwZWNpZmljIGFwcHJvYWNoIGxpa2UKInZrbXMgZG9lc24gaGF2ZSBm dW5jcyBmb3IgJG9iamVjdCwgYW5kIHRoYXQgbWFrZXMgc2Vuc2UgYmVjYXVzZSAkcmVhc29uLiIK SSB0aGluayBtYWtpbmcgc29tZSBvZiB0aGUgZnVuY3Mgb3B0aW9uYWwgbWlnaHQgbm90IG1ha2Ug YW55IHNlbnNlIGF0IGFsbCwKc2luY2UgYW55IHdvcmtpbmcgZHJpdmVyIG5lZWRzIHRoZW0uIHZr bXMgYXRtIGlzIHNwZWNpYWwsIHNpbmNlIGl0IGp1c3QKYWJzb2x1dGVseSBub3RoaW5nIHJpZ2h0 IG5vdyAoYnV0IHRoYXQgd2lsbCBjaGFuZ2UpLgoKVGhlIGdvYWwgaGVyZSBpcyB0byBtYWtlIGRy aXZlciB3cml0aW5nIGVhc2llciBieSBvbmx5IHJlcXVpcmluZyB3aGF0J3MKcmVhbGx5IG5lZWRl ZCwgbm90IG1pc2xlYWQgdGhlbSBieSBub3QgcmVxdWlyaW5nIHN0dWZmIHRoYXQgcmVhbGx5IHNo b3VsZApiZSB0aGVyZSBmb3IgYSB3b3JraW5nIGRyaXZlciA6LSkKLURhbmllbAoKPiAKPiBUaGFu ayB5b3UhCj4gSGFuZWVuCj4gCj4gPiBUaGFua3MsIERhbmllbAo+ID4gPiAtLS0KPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgNDIgKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMgIHwg MTEgKysrKy0tLS0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjUg ZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ ID4gPiBpbmRleCBjMzU2NTQ1OTFjMTIuLjUyMDkyZGViNzQxZCAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ID4gQEAgLTExMiw5ICsxMTIsOSBAQCBzdGF0 aWMgaW50IGhhbmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gPiA+ICAJCWlmICghbmV3X2Nvbm5fc3RhdGUtPmNydGMpCj4gPiA+ICAJCQlj b250aW51ZTsKPiA+ID4gIAo+ID4gPiAtCQlpZiAoZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIp Cj4gPiA+ICsJCWlmIChmdW5jcyAmJiBmdW5jcy0+YXRvbWljX2Jlc3RfZW5jb2RlcikKPiA+ID4g IAkJCW5ld19lbmNvZGVyID0gZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIoY29ubmVjdG9yLCBu ZXdfY29ubl9zdGF0ZSk7Cj4gPiA+IC0JCWVsc2UgaWYgKGZ1bmNzLT5iZXN0X2VuY29kZXIpCj4g PiA+ICsJCWVsc2UgaWYgKGZ1bmNzICYmIGZ1bmNzLT5iZXN0X2VuY29kZXIpCj4gPiA+ICAJCQlu ZXdfZW5jb2RlciA9IGZ1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsKPiA+ID4gIAkJZWxz ZQo+ID4gPiAgCQkJbmV3X2VuY29kZXIgPSBkcm1fYXRvbWljX2hlbHBlcl9iZXN0X2VuY29kZXIo Y29ubmVjdG9yKTsKPiA+ID4gQEAgLTMwOCwxMCArMzA4LDEwIEBAIHVwZGF0ZV9jb25uZWN0b3Jf cm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiA+ICAKPiA+ID4gIAlm dW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoZnVu Y3MtPmF0b21pY19iZXN0X2VuY29kZXIpCj4gPiA+ICsJaWYgKGZ1bmNzICYmIGZ1bmNzLT5hdG9t aWNfYmVzdF9lbmNvZGVyKQo+ID4gPiAgCQluZXdfZW5jb2RlciA9IGZ1bmNzLT5hdG9taWNfYmVz dF9lbmNvZGVyKGNvbm5lY3RvciwKPiA+ID4gIAkJCQkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSk7 Cj4gPiA+IC0JZWxzZSBpZiAoZnVuY3MtPmJlc3RfZW5jb2RlcikKPiA+ID4gKwllbHNlIGlmIChm dW5jcyAmJiBmdW5jcy0+YmVzdF9lbmNvZGVyKQo+ID4gPiAgCQluZXdfZW5jb2RlciA9IGZ1bmNz LT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsKPiA+ID4gIAllbHNlCj4gPiA+ICAJCW5ld19lbmNv ZGVyID0gZHJtX2F0b21pY19oZWxwZXJfYmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gPiA+IEBA IC00MzgsNyArNDM4LDcgQEAgbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gPiA+ICAJCQljb250aW51ZTsKPiA+ID4gIAo+ID4gPiAgCQlmdW5jcyA9IGNydGMtPmhl bHBlcl9wcml2YXRlOwo+ID4gPiAtCQlpZiAoIWZ1bmNzLT5tb2RlX2ZpeHVwKQo+ID4gPiArCQlp ZiAoIWZ1bmNzIHx8ICFmdW5jcy0+bW9kZV9maXh1cCkKPiA+ID4gIAkJCWNvbnRpbnVlOwo+ID4g PiAgCj4gPiA+ICAJCXJldCA9IGZ1bmNzLT5tb2RlX2ZpeHVwKGNydGMsICZuZXdfY3J0Y19zdGF0 ZS0+bW9kZSwKPiA+ID4gQEAgLTYzOSw3ICs2MzksNyBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAJCQkJbmV3X2NydGNfc3Rh dGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7Cj4gPiA+ICAJCX0KPiA+ID4gIAo+ID4gPiAt CQlpZiAoZnVuY3MtPmF0b21pY19jaGVjaykKPiA+ID4gKwkJaWYgKGZ1bmNzICYmIGZ1bmNzLT5h dG9taWNfY2hlY2spCj4gPiA+ICAJCQlyZXQgPSBmdW5jcy0+YXRvbWljX2NoZWNrKGNvbm5lY3Rv ciwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSk7Cj4gPiA+ICAJCWlmIChyZXQpCj4gPiA+ICAJCQlyZXR1 cm4gcmV0Owo+ID4gPiBAQCAtNjgxLDcgKzY4MSw3IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNr X21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gIAkJaWYgKGNvbm5lY3RvcnNf bWFzayAmIEJJVChpKSkKPiA+ID4gIAkJCWNvbnRpbnVlOwo+ID4gPiAgCj4gPiA+IC0JCWlmIChm dW5jcy0+YXRvbWljX2NoZWNrKQo+ID4gPiArCQlpZiAoZnVuY3MgJiYgZnVuY3MtPmF0b21pY19j aGVjaykKPiA+ID4gIAkJCXJldCA9IGZ1bmNzLT5hdG9taWNfY2hlY2soY29ubmVjdG9yLCBuZXdf Y29ubmVjdG9yX3N0YXRlKTsKPiA+ID4gIAkJaWYgKHJldCkKPiA+ID4gIAkJCXJldHVybiByZXQ7 Cj4gPiA+IEBAIC05NzIsMTQgKzk3MiwxNiBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ID4gIAo+ ID4gPiAgCj4gPiA+ICAJCS8qIFJpZ2h0IGZ1bmN0aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3Rh dGUuICovCj4gPiA+IC0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5wcmVw YXJlKQo+ID4gPiAtCQkJZnVuY3MtPnByZXBhcmUoY3J0Yyk7Cj4gPiA+IC0JCWVsc2UgaWYgKGZ1 bmNzLT5hdG9taWNfZGlzYWJsZSkKPiA+ID4gLQkJCWZ1bmNzLT5hdG9taWNfZGlzYWJsZShjcnRj LCBvbGRfY3J0Y19zdGF0ZSk7Cj4gPiA+IC0JCWVsc2UgaWYgKGZ1bmNzLT5kaXNhYmxlKQo+ID4g PiAtCQkJZnVuY3MtPmRpc2FibGUoY3J0Yyk7Cj4gPiA+IC0JCWVsc2UKPiA+ID4gLQkJCWZ1bmNz LT5kcG1zKGNydGMsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiA+ID4gKwkJaWYgKGZ1bmNzKSB7Cj4g PiA+ICsJCQlpZiAobmV3X2NydGNfc3RhdGUtPmVuYWJsZSAmJiBmdW5jcy0+cHJlcGFyZSkKPiA+ ID4gKwkJCQlmdW5jcy0+cHJlcGFyZShjcnRjKTsKPiA+ID4gKwkJCWVsc2UgaWYgKGZ1bmNzLT5h dG9taWNfZGlzYWJsZSkKPiA+ID4gKwkJCQlmdW5jcy0+YXRvbWljX2Rpc2FibGUoY3J0Yywgb2xk X2NydGNfc3RhdGUpOwo+ID4gPiArCQkJZWxzZSBpZiAoZnVuY3MtPmRpc2FibGUpCj4gPiA+ICsJ CQkJZnVuY3MtPmRpc2FibGUoY3J0Yyk7Cj4gPiA+ICsJCQllbHNlCj4gPiA+ICsJCQkJZnVuY3Mt PmRwbXMoY3J0YywgRFJNX01PREVfRFBNU19PRkYpOwo+ID4gPiArCQl9Cj4gPiA+ICAKPiA+ID4g IAkJaWYgKCEoZGV2LT5pcnFfZW5hYmxlZCAmJiBkZXYtPm51bV9jcnRjcykpCj4gPiA+ICAJCQlj b250aW51ZTsKPiA+ID4gQEAgLTEwOTMsNyArMTA5NSw3IEBAIGNydGNfc2V0X21vZGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ ID4gIAo+ID4gPiAgCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ID4gPiAgCj4gPiA+ IC0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5tb2RlX3NldF9ub2ZiKSB7 Cj4gPiA+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzICYmIGZ1bmNzLT5t b2RlX3NldF9ub2ZiKSB7Cj4gPiA+ICAJCQlEUk1fREVCVUdfQVRPTUlDKCJtb2Rlc2V0IG9uIFtD UlRDOiVkOiVzXVxuIiwKPiA+ID4gIAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+ ID4gPiAgCj4gPiA+IEBAIC0xMTk3LDcgKzExOTksNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gIAo+ ID4gPiAgCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ID4gPiAgCj4gPiA+IC0JCWlm IChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4gPiA+ICsJCWlmIChmdW5jcyAmJiBuZXdfY3J0 Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4gPiA+ICAJCQlEUk1fREVCVUdfQVRPTUlDKCJlbmFibGluZyBb Q1JUQzolZDolc11cbiIsCj4gPiA+ICAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsK PiA+ID4gIAo+ID4gPiBAQCAtMjExNyw3ICsyMTE5LDcgQEAgaW50IGRybV9hdG9taWNfaGVscGVy X3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAKPiA+ID4gIAkJ ZnVuY3MgPSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKGZ1bmNz LT5wcmVwYXJlX2ZiKSB7Cj4gPiA+ICsJCWlmIChmdW5jcyAmJiBmdW5jcy0+cHJlcGFyZV9mYikg ewo+ID4gPiAgCQkJcmV0ID0gZnVuY3MtPnByZXBhcmVfZmIocGxhbmUsIG5ld19wbGFuZV9zdGF0 ZSk7Cj4gPiA+ICAJCQlpZiAocmV0KQo+ID4gPiAgCQkJCWdvdG8gZmFpbDsKPiA+ID4gQEAgLTIx MzUsNyArMjEzNyw3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiAgCj4gPiA+ICAJCWZ1bmNzID0gcGxhbmUtPmhlbHBl cl9wcml2YXRlOwo+ID4gPiAgCj4gPiA+IC0JCWlmIChmdW5jcy0+Y2xlYW51cF9mYikKPiA+ID4g KwkJaWYgKGZ1bmNzICYmIGZ1bmNzLT5jbGVhbnVwX2ZiKQo+ID4gPiAgCQkJZnVuY3MtPmNsZWFu dXBfZmIocGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IEBA IC0yNDEyLDcgKzI0MTQsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAKPiA+ID4gIAkJZnVuY3MgPSBwbGFuZS0+ aGVscGVyX3ByaXZhdGU7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKGZ1bmNzLT5jbGVhbnVwX2ZiKQo+ ID4gPiArCQlpZiAoZnVuY3MgJiYgZnVuY3MtPmNsZWFudXBfZmIpCj4gPiA+ICAJCQlmdW5jcy0+ Y2xlYW51cF9mYihwbGFuZSwgcGxhbmVfc3RhdGUpOwo+ID4gPiAgCX0KPiA+ID4gIH0KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gPiA+IGluZGV4IDUyNzc0MzM5NDE1MC4uNDI1 MDdhYTdmNzYzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hl bHBlci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKPiA+ ID4gQEAgLTI3Miw5ICsyNzIsOSBAQCBkcm1faGVscGVyX3Byb2JlX2RldGVjdF9jdHgoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiA+ID4gIHJldHJ5Ogo+ID4g PiAgCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbm5lY3Rvci0+ZGV2LT5tb2RlX2NvbmZpZy5j b25uZWN0aW9uX211dGV4LCAmY3R4KTsKPiA+ID4gIAlpZiAoIXJldCkgewo+ID4gPiAtCQlpZiAo ZnVuY3MtPmRldGVjdF9jdHgpCj4gPiA+ICsJCWlmIChmdW5jcyAmJiBmdW5jcy0+ZGV0ZWN0X2N0 eCkKPiA+ID4gIAkJCXJldCA9IGZ1bmNzLT5kZXRlY3RfY3R4KGNvbm5lY3RvciwgJmN0eCwgZm9y Y2UpOwo+ID4gPiAtCQllbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5kZXRlY3QpCj4gPiA+ICsJ CWVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVuY3MgJiYgY29ubmVjdG9yLT5mdW5jcy0+ZGV0ZWN0KQo+ ID4gPiAgCQkJcmV0ID0gY29ubmVjdG9yLT5mdW5jcy0+ZGV0ZWN0KGNvbm5lY3RvciwgZm9yY2Up Owo+ID4gPiAgCQllbHNlCj4gPiA+ICAJCQlyZXQgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsKPiA+ID4gQEAgLTMyMCw5ICszMjAsOSBAQCBkcm1faGVscGVyX3Byb2JlX2RldGVjdChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiAgCWlmIChyZXQpCj4gPiA+ICAJCXJl dHVybiByZXQ7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoZnVuY3MtPmRldGVjdF9jdHgpCj4gPiA+ICsJ aWYgKGZ1bmNzICYmIGZ1bmNzLT5kZXRlY3RfY3R4KQo+ID4gPiAgCQlyZXR1cm4gZnVuY3MtPmRl dGVjdF9jdHgoY29ubmVjdG9yLCBjdHgsIGZvcmNlKTsKPiA+ID4gLQllbHNlIGlmIChjb25uZWN0 b3ItPmZ1bmNzLT5kZXRlY3QpCj4gPiA+ICsJZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcyAmJiBj b25uZWN0b3ItPmZ1bmNzLT5kZXRlY3QpCj4gPiA+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNz LT5kZXRlY3QoY29ubmVjdG9yLCBmb3JjZSk7Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQlyZXR1cm4g Y29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gPiA+IEBAIC00ODAsNyArNDgwLDggQEAgaW50 IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+ID4gPiAgCQlnb3RvIHBydW5lOwo+ID4gPiAgCX0KPiA+ID4gIAo+ ID4gPiAtCWNvdW50ID0gKCpjb25uZWN0b3JfZnVuY3MtPmdldF9tb2RlcykoY29ubmVjdG9yKTsK PiA+ID4gKwlpZiAoY29ubmVjdG9yX2Z1bmNzICYmIGNvbm5lY3Rvcl9mdW5jcy0+Z2V0X21vZGVz KQo+ID4gPiArCQljb3VudCA9ICgqY29ubmVjdG9yX2Z1bmNzLT5nZXRfbW9kZXMpKGNvbm5lY3Rv cik7Cj4gPiA+ICAKPiA+ID4gIAlpZiAoY291bnQgPT0gMCAmJiBjb25uZWN0b3ItPnN0YXR1cyA9 PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiA+ID4gIAkJY291bnQgPSBkcm1fYWRkX21v ZGVzX25vZWRpZChjb25uZWN0b3IsIDEwMjQsIDc2OCk7Cj4gPiA+IC0tIAo+ID4gPiAyLjE3LjAK PiA+ID4gCj4gPiAKPiA+IC0tIAo+ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=