From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/3] drm/i915: Prevent leaking of -EIO from i915_wait_request() Date: Thu, 3 Dec 2015 10:14:54 +0100 Message-ID: <20151203091454.GL10243@phenom.ffwll.local> References: <20151201091535.GI22663@nuc-i3427.alporthouse.com> <1448967935-21760-1-git-send-email-chris@chris-wilson.co.uk> <1448967935-21760-3-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 55BF17A010 for ; Thu, 3 Dec 2015 01:14:58 -0800 (PST) Received: by wmec201 with SMTP id c201so16765963wme.0 for ; Thu, 03 Dec 2015 01:14:56 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448967935-21760-3-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMDEsIDIwMTUgYXQgMTE6MDU6MzVBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFJlcG9ydGluZyAtRUlPIGZyb20gaTkxNV93YWl0X3JlcXVlc3QoKSBoYXMgcHJvdmVu IHZlcnkgdHJvdWJsZW1hdGljCj4gb3ZlciB0aGUgeWVhcnMsIHdpdGggbnVtZXJvdXMgaGFyZC10 by1yZXByb2R1Y2UgYnVncyBjcm9wcGluZyB1cCBpbiB0aGUKPiBjb3JuZXIgY2FzZSBvZiB3aGVy ZSBhIHJlc2V0IG9jY3VycyBhbmQgdGhlIGNvZGUgd2Fzbid0IGV4cGVjdGluZyBzdWNoCj4gYW4g ZXJyb3IuCj4gCj4gSWYgdGhlIHdlIHJlc2V0IHRoZSBHUFUgb3IgaGF2ZSBkZXRlY3RlZCBhIGhh bmcgYW5kIHdpc2ggdG8gcmVzZXQgdGhlCj4gR1BVLCB0aGUgcmVxdWVzdCBpcyBmb3JjaWJseSBj b21wbGV0ZSBhbmQgdGhlIHdhaXQgYnJva2VuLiBDdXJyZW50bHksIHdlCj4gcmVwb3J0IGVpdGhl ciAtRUFHQUlOIG9yIC1FSU8gaW4gb3JkZXIgZm9yIHRoZSBjYWxsZXIgdG8gcmV0cmVhdCBhbmQK PiByZXN0YXJ0IHRoZSB3YWl0IChpZiBhcHByb3ByaWF0ZSkgYWZ0ZXIgZHJvcHBpbmcgYW5kIHRo ZW4gcmVhY3F1aXJpbmcKPiB0aGUgc3RydWN0X211dGV4IChlc3NlbnRpYWwgdG8gYWxsb3cgdGhl IEdQVSByZXNldCB0byBwcm9jZWVkKS4gSG93ZXZlciwKPiBpZiB3ZSB0YWtlIHRoZSB2aWV3IHRo YXQgdGhlIHJlcXVlc3QgaXMgY29tcGxldGUgKG5vIGZ1cnRoZXIgd29yayB3aWxsCj4gYmUgZG9u ZSBvbiBpdCBieSB0aGUgR1BVIGJlY2F1c2UgaXQgaXMgZGVhZCBhbmQgc29vbiB0byBiZSByZXNl dCksIHRoZW4KPiB3ZSBjYW4gcHJvY2VlZCB3aXRoIHRoZSB0YXNrIGF0IGhhbmQgYW5kIHRoZW4g ZHJvcCB0aGUgc3RydWN0X211dGV4Cj4gYWxsb3dpbmcgdGhlIHJlc2V0IHRvIG9jY3VyLiBUaGlz IHRyYW5zZmVycyB0aGUgYnVyZGVuIG9mIGNoZWNraW5nCj4gd2hldGhlciBpdCBpcyBzYWZlIHRv IHByb2NlZWQgdG8gdGhlIGNhbGxlciwgd2hpY2ggaW4gYWxsIGJ1dCBvbmUKPiBpbnN0YW5jZSBp dCBpcyBzYWZlIC0gY29tcGxldGVseSBlbGltaW5hdGluZyB0aGUgc291cmNlIG9mIGFsbCBzcHVy aW91cwo+IC1FSU8uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAg ICB8IDMyICsrKysrKysrKysrKystLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgICB8ICA1ICstLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgIHwgNDUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8IDIxICsrLS0tLS0tLS0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAzMiArKysrKysr LS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgfCAgOCArKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IHwgIDggKysrKysrCj4gIDggZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgODggZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA4NjRi M2FlOTQxOWMuLjA1ODNlZGE2NDJkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gQEAgLTQ2NTYsNyArNDY1Niw3IEBAIGk5MTVfd2VkZ2VkX2dldCh2b2lkICpkYXRhLCB1 NjQgKnZhbCkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkYXRhOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQkqdmFs ID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKPiArCSp2YWwgPSBp OTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKPiAgCj4gIAlyZXR1 cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDkwZmFhOGUwM2ZjYS4u ZWI4OTNhNWUwMGIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTkyMywyMyAr OTIzLDMxIEBAIGludCBpOTE1X3Jlc3VtZV9zd2l0Y2hlcm9vKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJmRldl9wcml2LT5ncHVfZXJyb3I7Cj4gKwl1 bnNpZ25lZCByZXNldF9jb3VudGVyOwo+ICAJYm9vbCBzaW11bGF0ZWQ7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCWludGVsX3Jlc2V0X2d0X3Bvd2Vyc2F2ZShkZXYpOwo+ICAKPiAgCW11dGV4X2xvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiArCWF0b21pY19hbmRub3QoSTkxNV9XRURHRUQsICZlcnJv ci0+cmVzZXRfY291bnRlcik7Cj4gKwlyZXNldF9jb3VudGVyID0gYXRvbWljX2luY19yZXR1cm4o JmVycm9yLT5yZXNldF9jb3VudGVyKTsKPiArCWlmIChXQVJOX09OKF9faTkxNV9yZXNldF9pbl9w cm9ncmVzcyhyZXNldF9jb3VudGVyKSkpIHsKPiArCQlyZXQgPSAtRUlPOwo+ICsJCWdvdG8gZXJy b3I7Cj4gKwl9Cj4gIAo+ICAJaTkxNV9nZW1fcmVzZXQoZGV2KTsKPiAgCj4gLQlzaW11bGF0ZWQg PSBkZXZfcHJpdi0+Z3B1X2Vycm9yLnN0b3BfcmluZ3MgIT0gMDsKPiArCXNpbXVsYXRlZCA9IGVy cm9yLT5zdG9wX3JpbmdzICE9IDA7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfZ3B1X3Jlc2V0KGRldik7 Cj4gIAo+ICAJLyogQWxzbyByZXNldCB0aGUgZ3B1IGhhbmdtYW4uICovCj4gIAlpZiAoc2ltdWxh dGVkKSB7Cj4gIAkJRFJNX0lORk8oIlNpbXVsYXRlZCBncHUgaGFuZywgcmVzZXR0aW5nIHN0b3Bf cmluZ3NcbiIpOwo+IC0JCWRldl9wcml2LT5ncHVfZXJyb3Iuc3RvcF9yaW5ncyA9IDA7Cj4gKwkJ ZXJyb3ItPnN0b3BfcmluZ3MgPSAwOwo+ICAJCWlmIChyZXQgPT0gLUVOT0RFVikgewo+ICAJCQlE Uk1fSU5GTygiUmVzZXQgbm90IGltcGxlbWVudGVkLCBidXQgaWdub3JpbmcgIgo+ICAJCQkJICJl cnJvciBmb3Igc2ltdWxhdGVkIGdwdSBoYW5nc1xuIik7Cj4gQEAgLTk1Miw4ICs5NjAsNyBAQCBp bnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWlmIChyZXQpIHsK PiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZXNldCBjaGlwOiAlaVxuIiwgcmV0KTsKPiAtCQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdv dG8gZXJyb3I7Cj4gIAl9Cj4gIAo+ICAJaW50ZWxfb3ZlcmxheV9yZXNldChkZXZfcHJpdik7Cj4g QEAgLTk3MiwyMCArOTc5LDE0IEBAIGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkgKiB3YXMgcnVubmluZyBhdCB0aGUgdGltZSBvZiB0aGUgcmVzZXQgKGkuZS4gd2Ug d2VyZW4ndCBWVAo+ICAJICogc3dpdGNoZWQgYXdheSkuCj4gIAkgKi8KPiAtCj4gLQkvKiBVc2Vk IHRvIHByZXZlbnQgZ2VtX2NoZWNrX3dlZGdlZCByZXR1cm5pbmcgLUVBR0FJTiBkdXJpbmcgZ3B1 IHJlc2V0ICovCj4gLQlkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlbG9hZF9pbl9yZXNldCA9IHRydWU7 Cj4gLQo+ICAJcmV0ID0gaTkxNV9nZW1faW5pdF9odyhkZXYpOwo+IC0KPiAtCWRldl9wcml2LT5n cHVfZXJyb3IucmVsb2FkX2luX3Jlc2V0ID0gZmFsc2U7Cj4gLQo+IC0JbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQg aHcgaW5pdCBvbiByZXNldCAlZFxuIiwgcmV0KTsKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8g ZXJyb3I7Cj4gIAl9Cj4gIAo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g Kwo+ICAJLyoKPiAgCSAqIHJwcy9yYzYgcmUtaW5pdCBpcyBuZWNlc3NhcnkgdG8gcmVzdG9yZSBz dGF0ZSBsb3N0IGFmdGVyIHRoZQo+ICAJICogcmVzZXQgYW5kIHRoZSByZS1pbnN0YWxsIG9mIGd0 IGlycXMuIFNraXAgZm9yIGlyb25sYWtlIHBlcgo+IEBAIC05OTYsNiArOTk3LDExIEBAIGludCBp OTE1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaW50ZWxfZW5hYmxlX2d0X3Bv d2Vyc2F2ZShkZXYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICsKPiArZXJyb3I6Cj4gKwlhdG9taWNf b3IoSTkxNV9XRURHRUQsICZlcnJvci0+cmVzZXRfY291bnRlcik7Cj4gKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiArCXJldHVybiByZXQ7CgpJJ3ZlIHdhcm1lZCB1cCB0byB5 b3VyIGFwcHJvYWNoIHRvIHJlbW92aW5nIHJlbG9hZF9pbl9yZXNldCwgYnV0IEkgc3RpbGwKbWFp bnRhaW4gdGhhdCBpdCBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaCBhbmQgbm90IG1peGVkIGlu IHdpdGggdGhlIC1FSU8KQUJJIGNoYW5nZS4KCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9w Y2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lk ICplbnQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZWU3Njc3MzQzMDU2Li5jMjRj MjNkOGEwYzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTM4NCw5ICsxMzg0 LDYgQEAgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKPiAgCj4gIAkvKiBGb3IgbWlzc2VkIGlycS9z ZXFubyBzaW11bGF0aW9uLiAqLwo+ICAJdW5zaWduZWQgaW50IHRlc3RfaXJxX3JpbmdzOwo+IC0K PiAtCS8qIFVzZWQgdG8gcHJldmVudCBnZW1fY2hlY2tfd2VkZ2VkIHJldHVybmluZyAtRUFHQUlO IGR1cmluZyBncHUgcmVzZXQgICAqLwo+IC0JYm9vbCByZWxvYWRfaW5fcmVzZXQ7Cj4gIH07Cj4g IAo+ICBlbnVtIG1vZGVzZXRfcmVzdG9yZSB7Cj4gQEAgLTI5NzcsNyArMjk3NCw3IEBAIGk5MTVf Z2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4g IAo+ICBib29sIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiAgdm9pZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKTsKPiAtaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9jaGVja193ZWRnZShz dHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yLAo+ICtpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2Vt X2NoZWNrX3dlZGdlKHVuc2lnbmVkIHJlc2V0X2NvdW50ZXIsCj4gIAkJCQkgICAgICBib29sIGlu dGVycnVwdGlibGUpOwo+ICAKPiAgc3RhdGljIGlubGluZSB1MzIgaTkxNV9yZXNldF9jb3VudGVy KHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g aW5kZXggNjhkNGJhYjkzZmQ4Li5jZTRiODlmMjhkMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBAQCAtODUsOSArODUsNyBAQCBpOTE1X2dlbV93YWl0X2Zvcl9lcnJvcihzdHJ1Y3Qg aTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtI2RlZmluZSBF WElUX0NPTkQgKCFpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKGVycm9yKSB8fCBcCj4gLQkJICAgaTkx NV90ZXJtaW5hbGx5X3dlZGdlZChlcnJvcikpCj4gLQlpZiAoRVhJVF9DT05EKQo+ICsJaWYgKCFp OTE1X3Jlc2V0X2luX3Byb2dyZXNzKGVycm9yKSkKClRoaXMgaXMgb25lIG9mIHRoZSBjYXNlcyBJ IHRoaW5rIHNob3VsZCBiZSBtb3ZlZCB0byBwYXRjaCAxLiBJaXJjIHRoZXJlJ3MKMSBtb3JlIHNv bWV3aGVyZSB3aGVyZSB3ZSByZWFsbHkgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgdGVybWluYWxs eQp3ZWRnZWQuCgo+ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qCj4gQEAgLTk2LDE3ICs5NCwxNiBA QCBpOTE1X2dlbV93YWl0X2Zvcl9lcnJvcihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ ICAJICogd2Ugc2hvdWxkIHNpbXBseSB0cnkgdG8gYmFpbCBvdXQgYW5kIGZhaWwgYXMgZ3JhY2Vm dWxseSBhcyBwb3NzaWJsZS4KPiAgCSAqLwo+ICAJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRp YmxlX3RpbWVvdXQoZXJyb3ItPnJlc2V0X3F1ZXVlLAo+IC0JCQkJCSAgICAgICBFWElUX0NPTkQs Cj4gKwkJCQkJICAgICAgICFpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKGVycm9yKSwKPiAgCQkJCQkg ICAgICAgMTAqSFopOwo+ICAJaWYgKHJldCA9PSAwKSB7Cj4gIAkJRFJNX0VSUk9SKCJUaW1lZCBv dXQgd2FpdGluZyBmb3IgdGhlIGdwdSByZXNldCB0byBjb21wbGV0ZVxuIik7Cj4gIAkJcmV0dXJu IC1FSU87Cj4gIAl9IGVsc2UgaWYgKHJldCA8IDApIHsKPiAgCQlyZXR1cm4gcmV0Owo+ICsJfSBl bHNlIHsKPiArCQlyZXR1cm4gMDsKPiAgCX0KPiAtI3VuZGVmIEVYSVRfQ09ORAo+IC0KPiAtCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICBpbnQgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMTExMCwyNiArMTEwNywxOSBAQCBwdXRfcnBtOgo+ ICB9Cj4gIAo+ICBpbnQKPiAtaTkxNV9nZW1fY2hlY2tfd2VkZ2Uoc3RydWN0IGk5MTVfZ3B1X2Vy cm9yICplcnJvciwKPiAtCQkgICAgIGJvb2wgaW50ZXJydXB0aWJsZSkKPiAraTkxNV9nZW1fY2hl Y2tfd2VkZ2UodW5zaWduZWQgcmVzZXRfY291bnRlciwgYm9vbCBpbnRlcnJ1cHRpYmxlKQo+ICB7 Cj4gLQlpZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcyhlcnJvcikpIHsKPiArCWlmIChfX2k5MTVf cmVzZXRfaW5fcHJvZ3Jlc3Nfb3Jfd2VkZ2VkKHJlc2V0X2NvdW50ZXIpKSB7Cj4gIAkJLyogTm9u LWludGVycnVwdGlibGUgY2FsbGVycyBjYW4ndCBoYW5kbGUgLUVBR0FJTiwgaGVuY2UgcmV0dXJu Cj4gIAkJICogLUVJTyB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZXNlLiAqLwo+ICAJCWlmICghaW50 ZXJydXB0aWJsZSkKPiAgCQkJcmV0dXJuIC1FSU87Cj4gIAo+ICAJCS8qIFJlY292ZXJ5IGNvbXBs ZXRlLCBidXQgdGhlIHJlc2V0IGZhaWxlZCAuLi4gKi8KPiAtCQlpZiAoaTkxNV90ZXJtaW5hbGx5 X3dlZGdlZChlcnJvcikpCj4gKwkJaWYgKF9faTkxNV90ZXJtaW5hbGx5X3dlZGdlZChyZXNldF9j b3VudGVyKSkKPiAgCQkJcmV0dXJuIC1FSU87Cj4gIAo+IC0JCS8qCj4gLQkJICogQ2hlY2sgaWYg R1BVIFJlc2V0IGlzIGluIHByb2dyZXNzIC0gd2UgbmVlZCBpbnRlbF9yaW5nX2JlZ2luCj4gLQkJ ICogdG8gd29yayBwcm9wZXJseSB0byByZWluaXQgdGhlIGh3IHN0YXRlIHdoaWxlIHRoZSBncHUg aXMKPiAtCQkgKiBzdGlsbCBtYXJrZWQgYXMgcmVzZXQtaW4tcHJvZ3Jlc3MuIEhhbmRsZSB0aGlz IHdpdGggYSBmbGFnLgo+IC0JCSAqLwo+IC0JCWlmICghZXJyb3ItPnJlbG9hZF9pbl9yZXNldCkK PiAtCQkJcmV0dXJuIC1FQUdBSU47Cj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gIAl9Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gQEAgLTEyOTYsMTEgKzEyODYsMTEgQEAgaW50IF9faTkxNV93YWl0X3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJLyogV2UgbmVlZCB0byBj aGVjayB3aGV0aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQgaW4gYmV0d2Vlbgo+ICAJCSAqIHRo ZSBjYWxsZXIgZ3JhYmJpbmcgdGhlIHNlcW5vIGFuZCBub3cgLi4uICovCj4gIAkJaWYgKHJlcS0+ cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3Ip KSB7Cj4gLQkJCS8qIC4uLiBidXQgdXBncmFkZSB0aGUgLUVBR0FJTiB0byBhbiAtRUlPIGlmIHRo ZSBncHUKPiAtCQkJICogaXMgdHJ1ZWx5IGdvbmUuICovCj4gLQkJCXJldCA9IGk5MTVfZ2VtX2No ZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLCBpbnRlcnJ1cHRpYmxlKTsKPiAtCQkJaWYg KHJldCA9PSAwKQo+IC0JCQkJcmV0ID0gLUVBR0FJTjsKPiArCQkJLyogQXMgd2UgZG8gbm90IHJl cXVldWUgdGhlIHJlcXVlc3Qgb3ZlciBhIEdQVSByZXNldCwKPiArCQkJICogaWYgb25lIGRvZXMg b2NjdXIgd2Uga25vdyB0aGF0IHRoZSByZXF1ZXN0IGlzCj4gKwkJCSAqIGVmZmVjdGl2ZWx5IGNv bXBsZXRlLgo+ICsJCQkgKi8KPiArCQkJcmV0ID0gMDsKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+ICAK PiBAQCAtMjY4Nyw4ICsyNjc3LDcgQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCj4gIAkqcmVxX291dCA9IE5VTEw7Cj4gIAo+IC0J cmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCj4gLQkJCQkg ICBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9jaGVja193 ZWRnZShyZXNldF9jb3VudGVyLCBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSk7Cj4gIAlpZiAo cmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC00MDc4LDkgKzQwNjcsOSBAQCBpOTE1X2dl bV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBpOTE1X2dl bV9jaGVja193ZWRnZSgmZGV2X3ByaXYtPmdwdV9lcnJvciwgZmFsc2UpOwo+IC0JaWYgKHJldCkK PiAtCQlyZXR1cm4gcmV0Owo+ICsJLyogQUJJOiByZXR1cm4gLUVJTyBpZiBhbHJlYWR5IHdlZGdl ZCAqLwo+ICsJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5ncHVfZXJyb3Ip KQoKQ29tbWl0IG1lc3NhZ2Ugc2F5cyB0aGVyZSdzIG9ubHkgb25lIGNhc2UsIGJ1dCBJIGNvdW50 IHR3bzoKLSB0aHJvdHRsZSBoZXJlCi0gd2FpdGluZyBmb3IgcmluZyBzcGFjZSBpbiBjYXNlIHRo ZSBncHUgZGllZCBtZWFud2hpbGUKClBsZWFzZSBhbWVuZCB0aGUgY29tbWl0IG1lc3NhZ2Ugd2l0 aCB0aGF0LgoKPiArCQlyZXR1cm4gLUVJTzsKPiAgCj4gIAlzcGluX2xvY2soJmZpbGVfcHJpdi0+ bW0ubG9jayk7Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZmaWxlX3ByaXYtPm1t LnJlcXVlc3RfbGlzdCwgY2xpZW50X2xpc3QpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBp bmRleCBlODhkNjkyNTgzYTUuLjNiMmE4ZmJlMDM5MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwo+IEBAIC0yNDM0LDcgKzI0MzQsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2Vycm9yX3dha2Vf dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdm9pZCBpOTE1 X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGk5 MTVfZ3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9yOwo+ICAJY2hhciAqZXJy b3JfZXZlbnRbXSA9IHsgSTkxNV9FUlJPUl9VRVZFTlQgIj0xIiwgTlVMTCB9Owo+ICAJY2hhciAq cmVzZXRfZXZlbnRbXSA9IHsgSTkxNV9SRVNFVF9VRVZFTlQgIj0xIiwgTlVMTCB9Owo+ICAJY2hh ciAqcmVzZXRfZG9uZV9ldmVudFtdID0geyBJOTE1X0VSUk9SX1VFVkVOVCAiPTAiLCBOVUxMIH07 Cj4gQEAgLTI0NTIsNyArMjQ1MSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dha2V1 cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJICogdGhlIHJlc2V0IGluLXByb2dyZXNzIGJp dCBpcyBvbmx5IGV2ZXIgc2V0IGJ5IGNvZGUgb3V0c2lkZSBvZiB0aGlzCj4gIAkgKiB3b3JrIHdl IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgYW55IG90aGVyIHJhY2VzLgo+ICAJICovCj4gLQlp ZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcyhlcnJvcikgJiYgIWk5MTVfdGVybWluYWxseV93ZWRn ZWQoZXJyb3IpKSB7Cj4gKwlpZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmZGV2X3ByaXYtPmdw dV9lcnJvcikpIHsKCkltbyB3ZSBzaG91bGQgdGFrZSB0aGlzIHBhdGggaGVyZSBpZmYgd2VkZ2Vk ID09IHRydWUgaW4gaTkxNV9oYW5kbGVfZXJyb3IuCk90aGVyd2lzZSBjb250cm9sIGZsb3cganVz dCBiZWNvbWVzIGluY29uc2lzdGVudCBJIHRoaW5rLiBSZWNoZWNraW5nIHRoZQpyZXNldCBjb3Vu dGVyIGp1c3Qgc2VlbXMgZnJhZ2lsZS4KCj4gIAkJRFJNX0RFQlVHX0RSSVZFUigicmVzZXR0aW5n IGNoaXBcbiIpOwo+ICAJCWtvYmplY3RfdWV2ZW50X2VudigmZGV2LT5wcmltYXJ5LT5rZGV2LT5r b2JqLCBLT0JKX0NIQU5HRSwKPiAgCQkJCSAgIHJlc2V0X2V2ZW50KTsKPiBAQCAtMjQ4MCwyNSAr MjQ3OSw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dha2V1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAKPiAgCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gIAo+ IC0JCWlmIChyZXQgPT0gMCkgewo+IC0JCQkvKgo+IC0JCQkgKiBBZnRlciBhbGwgdGhlIGdlbSBz dGF0ZSBpcyByZXNldCwgaW5jcmVtZW50IHRoZSByZXNldAo+IC0JCQkgKiBjb3VudGVyIGFuZCB3 YWtlIHVwIGV2ZXJ5b25lIHdhaXRpbmcgZm9yIHRoZSByZXNldCB0bwo+IC0JCQkgKiBjb21wbGV0 ZS4KPiAtCQkJICoKPiAtCQkJICogU2luY2UgdW5sb2NrIG9wZXJhdGlvbnMgYXJlIGEgb25lLXNp ZGVkIGJhcnJpZXIgb25seSwKPiAtCQkJICogd2UgbmVlZCB0byBpbnNlcnQgYSBiYXJyaWVyIGhl cmUgdG8gb3JkZXIgYW55IHNlcW5vCj4gLQkJCSAqIHVwZGF0ZXMgYmVmb3JlCj4gLQkJCSAqIHRo ZSBjb3VudGVyIGluY3JlbWVudC4KPiAtCQkJICovCj4gLQkJCXNtcF9tYl9fYmVmb3JlX2F0b21p YygpOwo+IC0JCQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIp Owo+IC0KPiArCQlpZiAocmV0ID09IDApCj4gIAkJCWtvYmplY3RfdWV2ZW50X2VudigmZGV2LT5w cmltYXJ5LT5rZGV2LT5rb2JqLAo+ICAJCQkJCSAgIEtPQkpfQ0hBTkdFLCByZXNldF9kb25lX2V2 ZW50KTsKPiAtCQl9IGVsc2Ugewo+IC0JCQlhdG9taWNfb3IoSTkxNV9XRURHRUQsICZlcnJvci0+ cmVzZXRfY291bnRlcik7Cj4gLQkJfQo+ICAKPiAgCQkvKgo+ICAJCSAqIE5vdGU6IFRoZSB3YWtl X3VwIGFsc28gc2VydmVzIGFzIGEgbWVtb3J5IGJhcnJpZXIgc28gdGhhdAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0NDQ3ZTczYjU0ZGIuLjczYzYxYjk0ZjdmZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMzI4NywxMiArMzI4 Nyw5IEBAIHN0YXRpYyBib29sIGludGVsX2NydGNfaGFzX3BlbmRpbmdfZmxpcChzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAt CXVuc2lnbmVkIHJlc2V0X2NvdW50ZXI7Cj4gIAlib29sIHBlbmRpbmc7Cj4gIAo+IC0JcmVzZXRf Y291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7Cj4gLQlp ZiAoaW50ZWxfY3J0Yy0+cmVzZXRfY291bnRlciAhPSByZXNldF9jb3VudGVyIHx8Cj4gLQkgICAg X19pOTE1X3Jlc2V0X2luX3Byb2dyZXNzKHJlc2V0X2NvdW50ZXIpKQo+ICsJaWYgKGludGVsX2Ny dGMtPnJlc2V0X2NvdW50ZXIgIT0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVu dF9sb2NrKTsKPiBAQCAtMTA4NjcsMTEgKzEwODY0LDggQEAgc3RhdGljIGJvb2wgcGFnZV9mbGlw X2ZpbmlzaGVkKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JdW5zaWduZWQgcmVzZXRfY291bnRlcjsK PiAgCj4gLQlyZXNldF9jb3VudGVyID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1 X2Vycm9yKTsKPiAtCWlmIChjcnRjLT5yZXNldF9jb3VudGVyICE9IHJlc2V0X2NvdW50ZXIgfHwK PiAtCSAgICBfX2k5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MocmVzZXRfY291bnRlcikpCj4gKwlpZiAo Y3J0Yy0+cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVf ZXJyb3IpKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAgCS8qCj4gQEAgLTEzMzAzLDkgKzEzMjk3 LDkgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwo+IC0JaWYgKCFyZXQgJiYgIWFzeW5jICYm ICFpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkgewo+IC0JCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gIAo+ICsJaWYgKCFyZXQgJiYgIWFzeW5jKSB7Cj4gIAkJZm9yX2VhY2hf cGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+ICAJCQlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BsYW5lX3N0YXRlID0KPiAgCQkJCXRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKPiBAQCAtMTMzMTUsMjMgKzEzMzA5LDE1IEBAIHN0 YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAo+ICAJCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KGludGVsX3BsYW5lX3N0YXRl LT53YWl0X3JlcSwKPiAgCQkJCQkJICB0cnVlLCBOVUxMLCBOVUxMKTsKPiAtCj4gLQkJCS8qIFN3 YWxsb3cgLUVJTyBlcnJvcnMgdG8gYWxsb3cgdXBkYXRlcyBkdXJpbmcgaHcgbG9ja3VwLiAqLwo+ IC0JCQlpZiAocmV0ID09IC1FSU8pCj4gLQkJCQlyZXQgPSAwOwo+IC0KPiAtCQkJaWYgKHJldCkK PiArCQkJaWYgKHJldCkgewo+ICsJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJCQkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwkJ CQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCQkJCWJyZWFrOwo+ICsJCQl9 Cj4gIAkJfQo+IC0KPiAtCQlpZiAoIXJldCkKPiAtCQkJcmV0dXJuIDA7Cj4gLQo+IC0JCW11dGV4 X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVw X3BsYW5lcyhkZXYsIHN0YXRlKTsKPiAgCX0KPiAgCj4gLQltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKClNuZWFraW5nIGluIGxvY2tsZXNzIHdhaXRzISBTZXBhcmF0ZSBwYXRjaCBw bGVhc2UuCgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IGluZGV4IGZlNzFjNzY4ZGJjNC4uMDhiOTgyYTZhZTgxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBAQCAtNzExLDYgKzcxMSwxNCBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmlu Z193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCWlm IChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gKwkvKiBJZiB0aGUgcmVxdWVzdCB3YXMgY29t cGxldGVkIGR1ZSB0byBhIEdQVSBoYW5nLCB3ZSB3YW50IHRvCj4gKwkgKiBlcnJvciBvdXQgYmVm b3JlIHdlIGNvbnRpbnVlIHRvIGVtaXQgbW9yZSBjb21tYW5kcyB0byB0aGUgR1BVLgo+ICsJICov Cj4gKwlyZXQgPSBpOTE1X2dlbV9jaGVja193ZWRnZShpOTE1X3Jlc2V0X2NvdW50ZXIoJnJlcS0+ aTkxNS0+Z3B1X2Vycm9yKSwKPiArCQkJCSAgIHJlcS0+aTkxNS0+bW0uaW50ZXJydXB0aWJsZSk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7CgpEbyB3ZSByZWFsbHkgbmVlZCB0byByZWNo ZWNrIGhlcmU/IFdlIGNoZWNrIHdoZW4gY3JlYXRpbmcgdGhlIHJlcXVlc3QsIGFuZAphdCBtb3N0 IHdlIGNhbiB0cmFuc2l0aW9uIHRvIHdlZGdlZC4gQnV0IHdpdGhvdXQgZHJvcHBpbmcgc3RydWN0 X211dGV4IHRoZQpyZXNldCBoYW5kbGVyIGNhbid0IHNuZWFrIGluIGFuZCBkZWNsYXJlIHRoZSBn cHUgdGVybWluYWwuIEFuZCBldmVuIGlmCnRoYXQgY2hhbmdlcyB3b3JzdCBjYXNlIHdlJ2xsIHJl c3RhcnQgdGhlIGVudGlyZSBvcmRlYWwgYW5kIHRoZW4gbm90aWNlIGF0CnRoZSBzdGFydCBvZiBl eGVjYnVmIHRoYXQgaXQncyByZWFsbHkgZGVhZCBhbmQgcmV0dXJuIHRoZSAtRUlPIHRvCnVzZXJz cGFjZS4KCkkgdGhpbmsgd2UgY2FuIGRyb3AgdGhlc2UgdHdvIHBhcnRzLCBvciBkaWQgSSBtaXNz IHNvbWV0aGluZz8KCkJlc2lkZXMgdGhlIG5pdHBpY2tzIGFuZCAyIHBhdGNoZXMgdGhhdCBzaG91 bGQgYmUgc3BsaXQgb3V0IGxndG0uCi1EYW5pZWwKCj4gKwo+ICAJcmluZ2J1Zi0+c3BhY2UgPSBz cGFjZTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+IGluZGV4IDkxMzUyNmMwMjY0Zi4uNTExZWZlNTU2ZDczIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0yMjU0LDYgKzIyNTQsMTQgQEAg c3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsIGludCBuKQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiArCS8qIElmIHRo ZSByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgZHVlIHRvIGEgR1BVIGhhbmcsIHdlIHdhbnQgdG8KPiAr CSAqIGVycm9yIG91dCBiZWZvcmUgd2UgY29udGludWUgdG8gZW1pdCBtb3JlIGNvbW1hbmRzIHRv IHRoZSBHUFUuCj4gKwkgKi8KPiArCXJldCA9IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKGk5MTVfcmVz ZXRfY291bnRlcigmdG9faTkxNShyaW5nLT5kZXYpLT5ncHVfZXJyb3IpLAo+ICsJCQkJICAgdG9f aTkxNShyaW5nLT5kZXYpLT5tbS5pbnRlcnJ1cHRpYmxlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0 dXJuIHJldDsKPiArCj4gIAlyaW5nYnVmLT5zcGFjZSA9IHNwYWNlOwo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAtLSAKPiAyLjYuMgo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==