From: Boris Brezillon Subject: Re: [PATCH 1/2] drm/vc4: Demote user-accessible DRM_ERROR paths to DRM_DEBUG. Date: Fri, 4 Aug 2017 11:38:59 +0200 Message-ID: <20170804113859.061cfa79@bbrezillon> References: <20170725162733.28007-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id DF12E6E386 for ; Fri, 4 Aug 2017 09:39:00 +0000 (UTC) In-Reply-To: <20170725162733.28007-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyNSBKdWwgMjAxNyAwOToyNzozMiAtMDcwMApFcmljIEFuaG9sdCA8ZXJpY0Bhbmhv bHQubmV0PiB3cm90ZToKCj4gVXNlcnNwYWNlIHNob3VsZG4ndCBiZSBhYmxlIHRvIHNwYW0gZG1l c2cgYnkgcGFzc2luZyBiYWQgYXJndW1lbnRzLgo+IFRoaXMgaGFzIHBhcnRpY3VsYXJseSBiZWNv bWUgYW4gaXNzdWVzIHNpbmNlIHdlIHN0YXJ0ZWQgdXNpbmcgYSBiYWQKPiBhcmd1bWVudCB0byBz ZXRfdGlsaW5nIHRvIGRldGVjdCBpZiBzZXRfdGlsaW5nIHdhcyBzdXBwb3J0ZWQuCj4gCj4gU2ln bmVkLW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KPiBGaXhlczogODM3NTMx MTdmMWRlICgiZHJtL3ZjNDogQWRkIGdldC9zZXQgdGlsaW5nIGlvY3Rscy4iKQoKUmV2aWV3ZWQt Ynk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4K Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMgICAgICAgICAgICAgICB8IDE0 ICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYyAgICAgICAgICAgICAgfCAx MCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jICAgICAgICAgICAgICB8ICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlbmRlcl9jbC5jICAgICAgICB8IDQwICsr KysrKystLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92YWxpZGF0ZS5jICAgICAg ICAgfCA3OCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfdmFsaWRhdGVfc2hhZGVycy5jIHwgNzIgKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDEwOCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKPiBpbmRleCA0ODdmOTY0MTJkMzUuLmVkZTgwMTk5MDAx ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYwo+IEBAIC0zODksNyArMzg5LDcgQEAgdmM0X3ByaW1l X2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwgaW50IGZsYWdzKQo+ICAJc3RydWN0IHZjNF9ibyAqYm8gPSB0b192YzRfYm8ob2JqKTsKPiAg Cj4gIAlpZiAoYm8tPnZhbGlkYXRlZF9zaGFkZXIpIHsKPiAtCQlEUk1fRVJST1IoIkF0dGVtcHRp bmcgdG8gZXhwb3J0IHNoYWRlciBCT1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRv IGV4cG9ydCBzaGFkZXIgQk9cbiIpOwo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAJ fQo+ICAKPiBAQCAtNDEwLDcgKzQxMCw3IEBAIGludCB2YzRfbW1hcChzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIAlibyA9IHRvX3ZjNF9ibyhnZW1fb2Jq KTsKPiAgCj4gIAlpZiAoYm8tPnZhbGlkYXRlZF9zaGFkZXIgJiYgKHZtYS0+dm1fZmxhZ3MgJiBW TV9XUklURSkpIHsKPiAtCQlEUk1fRVJST1IoIm1tYXBpbmcgb2Ygc2hhZGVyIEJPcyBmb3Igd3Jp dGluZyBub3QgYWxsb3dlZC5cbiIpOwo+ICsJCURSTV9ERUJVRygibW1hcGluZyBvZiBzaGFkZXIg Qk9zIGZvciB3cml0aW5nIG5vdCBhbGxvd2VkLlxuIik7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4g IAl9Cj4gIAo+IEBAIC00MzUsNyArNDM1LDcgQEAgaW50IHZjNF9wcmltZV9tbWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiAgCXN0cnVj dCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKG9iaik7Cj4gIAo+ICAJaWYgKGJvLT52YWxpZGF0ZWRf c2hhZGVyICYmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpKSB7Cj4gLQkJRFJNX0VSUk9SKCJt bWFwaW5nIG9mIHNoYWRlciBCT3MgZm9yIHdyaXRpbmcgbm90IGFsbG93ZWQuXG4iKTsKPiArCQlE Uk1fREVCVUcoIm1tYXBpbmcgb2Ygc2hhZGVyIEJPcyBmb3Igd3JpdGluZyBub3QgYWxsb3dlZC5c biIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtNDQ3LDcgKzQ0Nyw3IEBA IHZvaWQgKnZjNF9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ICAJc3Ry dWN0IHZjNF9ibyAqYm8gPSB0b192YzRfYm8ob2JqKTsKPiAgCj4gIAlpZiAoYm8tPnZhbGlkYXRl ZF9zaGFkZXIpIHsKPiAtCQlEUk1fRVJST1IoIm1tYXBpbmcgb2Ygc2hhZGVyIEJPcyBub3QgYWxs b3dlZC5cbiIpOwo+ICsJCURSTV9ERUJVRygibW1hcGluZyBvZiBzaGFkZXIgQk9zIG5vdCBhbGxv d2VkLlxuIik7Cj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gIAl9Cj4gIAo+IEBAIC01 MDEsNyArNTAxLDcgQEAgaW50IHZjNF9tbWFwX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gIAo+ICAJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChm aWxlX3ByaXYsIGFyZ3MtPmhhbmRsZSk7Cj4gIAlpZiAoIWdlbV9vYmopIHsKPiAtCQlEUk1fRVJS T1IoIkZhaWxlZCB0byBsb29rIHVwIEdFTSBCTyAlZFxuIiwgYXJncy0+aGFuZGxlKTsKPiArCQlE Uk1fREVCVUcoIkZhaWxlZCB0byBsb29rIHVwIEdFTSBCTyAlZFxuIiwgYXJncy0+aGFuZGxlKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTYwNSw3ICs2MDUsNyBAQCBpbnQg dmM0X3NldF90aWxpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgCj4gIAlnZW1fb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+ aGFuZGxlKTsKPiAgCWlmICghZ2VtX29iaikgewo+IC0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGxv b2sgdXAgR0VNIEJPICVkXG4iLCBhcmdzLT5oYW5kbGUpOwo+ICsJCURSTV9ERUJVRygiRmFpbGVk IHRvIGxvb2sgdXAgR0VNIEJPICVkXG4iLCBhcmdzLT5oYW5kbGUpOwo+ICAJCXJldHVybiAtRU5P RU5UOwo+ICAJfQo+ICAJYm8gPSB0b192YzRfYm8oZ2VtX29iaik7Cj4gQEAgLTYzNiw3ICs2MzYs NyBAQCBpbnQgdmM0X2dldF90aWxpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiAgCj4gIAlnZW1fb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJp diwgYXJncy0+aGFuZGxlKTsKPiAgCWlmICghZ2VtX29iaikgewo+IC0JCURSTV9FUlJPUigiRmFp bGVkIHRvIGxvb2sgdXAgR0VNIEJPICVkXG4iLCBhcmdzLT5oYW5kbGUpOwo+ICsJCURSTV9ERUJV RygiRmFpbGVkIHRvIGxvb2sgdXAgR0VNIEJPICVkXG4iLCBhcmdzLT5oYW5kbGUpOwo+ICAJCXJl dHVybiAtRU5PRU5UOwo+ICAJfQo+ICAJYm8gPSB0b192YzRfYm8oZ2VtX29iaik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfZ2VtLmMKPiBpbmRleCBkNWI4MjFhZDA2YWYuLmEzZTQ1ZTY3ZjQxNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2dlbS5jCj4gQEAgLTY1OSw3ICs2NTksNyBAQCB2YzRfY2xfbG9va3VwX2Jvcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCS8qIFNlZSBjb21tZW50IG9uIGJvX2luZGV4IGZv ciB3aHkgd2UgaGF2ZSB0byBjaGVjawo+ICAJCSAqIHRoaXMuCj4gIAkJICovCj4gLQkJRFJNX0VS Uk9SKCJSZW5kZXJpbmcgcmVxdWlyZXMgQk9zIHRvIHZhbGlkYXRlXG4iKTsKPiArCQlEUk1fREVC VUcoIlJlbmRlcmluZyByZXF1aXJlcyBCT3MgdG8gdmFsaWRhdGVcbiIpOwo+ICAJCXJldHVybiAt RUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtNjkxLDcgKzY5MSw3IEBAIHZjNF9jbF9sb29rdXBfYm9z KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpibyA9 IGlkcl9maW5kKCZmaWxlX3ByaXYtPm9iamVjdF9pZHIsCj4gIAkJCQkJCSAgICAgaGFuZGxlc1tp XSk7Cj4gIAkJaWYgKCFibykgewo+IC0JCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb29rIHVwIEdF TSBCTyAlZDogJWRcbiIsCj4gKwkJCURSTV9ERUJVRygiRmFpbGVkIHRvIGxvb2sgdXAgR0VNIEJP ICVkOiAlZFxuIiwKPiAgCQkJCSAgaSwgaGFuZGxlc1tpXSk7Cj4gIAkJCXJldCA9IC1FSU5WQUw7 Cj4gIAkJCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPnRhYmxlX2xvY2spOwo+IEBAIC03MjksNyAr NzI5LDcgQEAgdmM0X2dldF9iY2woc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9l eGVjX2luZm8gKmV4ZWMpCj4gIAkgICAgYXJncy0+c2hhZGVyX3JlY19jb3VudCA+PSAoVUlOVF9N QVggLwo+ICAJCQkJCSAgc2l6ZW9mKHN0cnVjdCB2YzRfc2hhZGVyX3N0YXRlKSkgfHwKPiAgCSAg ICB0ZW1wX3NpemUgPCBleGVjX3NpemUpIHsKPiAtCQlEUk1fRVJST1IoIm92ZXJmbG93IGluIGV4 ZWMgYXJndW1lbnRzXG4iKTsKPiArCQlEUk1fREVCVUcoIm92ZXJmbG93IGluIGV4ZWMgYXJndW1l bnRzXG4iKTsKPiAgCQlyZXQgPSAtRUlOVkFMOwo+ICAJCWdvdG8gZmFpbDsKPiAgCX0KPiBAQCAt OTc0LDcgKzk3NCw3IEBAIHZjNF93YWl0X2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gIAo+ICAJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxl X3ByaXYsIGFyZ3MtPmhhbmRsZSk7Cj4gIAlpZiAoIWdlbV9vYmopIHsKPiAtCQlEUk1fRVJST1Io IkZhaWxlZCB0byBsb29rIHVwIEdFTSBCTyAlZFxuIiwgYXJncy0+aGFuZGxlKTsKPiArCQlEUk1f REVCVUcoIkZhaWxlZCB0byBsb29rIHVwIEdFTSBCTyAlZFxuIiwgYXJncy0+aGFuZGxlKTsKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCWJvID0gdG9fdmM0X2JvKGdlbV9vYmopOwo+IEBA IC0xMDA5LDcgKzEwMDksNyBAQCB2YzRfc3VibWl0X2NsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gIAlpZiAoKGFyZ3MtPmZs YWdzICYgflZDNF9TVUJNSVRfQ0xfVVNFX0NMRUFSX0NPTE9SKSAhPSAwKSB7Cj4gLQkJRFJNX0VS Uk9SKCJVbmtub3duIGZsYWdzOiAweCUwMnhcbiIsIGFyZ3MtPmZsYWdzKTsKPiArCQlEUk1fREVC VUcoIlVua25vd24gZmxhZ3M6IDB4JTAyeFxuIiwgYXJncy0+ZmxhZ3MpOwo+ICAJCXJldHVybiAt RUlOVkFMOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf a21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYwo+IGluZGV4IGFlZWM2ZTg3MDNk Mi4uOWI5YWFjMjFkZDhjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2tt cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKPiBAQCAtMTY5LDcgKzE2 OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICp2YzRfZmJfY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChm aWxlX3ByaXYsCj4gIAkJCQkJCW1vZGVfY21kLT5oYW5kbGVzWzBdKTsKPiAgCQlpZiAoIWdlbV9v YmopIHsKPiAtCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gbG9vayB1cCBHRU0gQk8gJWRcbiIsCj4g KwkJCURSTV9ERUJVRygiRmFpbGVkIHRvIGxvb2sgdXAgR0VNIEJPICVkXG4iLAo+ICAJCQkJICBt b2RlX2NtZC0+aGFuZGxlc1swXSk7Cj4gIAkJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwo+ICAJ CX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcmVuZGVyX2NsLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZW5kZXJfY2wuYwo+IGluZGV4IDVkYzE5NDI5ZDRhZS4u ZGEzYmZkNTNmMGJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlbmRl cl9jbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcmVuZGVyX2NsLmMKPiBAQCAt Mzc4LDE0ICszNzgsMTQgQEAgc3RhdGljIGludCB2YzRfZnVsbF9yZXNfYm91bmRzX2NoZWNrKHN0 cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAo+ICAJdTMyIHJlbmRlcl90aWxlc19zdHJpZGUgPSBE SVZfUk9VTkRfVVAoZXhlYy0+YXJncy0+d2lkdGgsIDMyKTsKPiAgCj4gIAlpZiAoc3VyZi0+b2Zm c2V0ID4gb2JqLT5iYXNlLnNpemUpIHsKPiAtCQlEUk1fRVJST1IoInN1cmZhY2Ugb2Zmc2V0ICVk ID4gQk8gc2l6ZSAlemRcbiIsCj4gKwkJRFJNX0RFQlVHKCJzdXJmYWNlIG9mZnNldCAlZCA+IEJP IHNpemUgJXpkXG4iLAo+ICAJCQkgIHN1cmYtPm9mZnNldCwgb2JqLT5iYXNlLnNpemUpOwo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAgCWlmICgob2JqLT5iYXNlLnNpemUgLSBzdXJm LT5vZmZzZXQpIC8gVkM0X1RJTEVfQlVGRkVSX1NJWkUgPAo+ICAJICAgIHJlbmRlcl90aWxlc19z dHJpZGUgKiBhcmdzLT5tYXhfeV90aWxlICsgYXJncy0+bWF4X3hfdGlsZSkgewo+IC0JCURSTV9F UlJPUigiTVNBQSB0aWxlICVkLCAlZCBvdXQgb2YgYm91bmRzICIKPiArCQlEUk1fREVCVUcoIk1T QUEgdGlsZSAlZCwgJWQgb3V0IG9mIGJvdW5kcyAiCj4gIAkJCSAgIihibyBzaXplICV6ZCwgb2Zm c2V0ICVkKS5cbiIsCj4gIAkJCSAgYXJncy0+bWF4X3hfdGlsZSwgYXJncy0+bWF4X3lfdGlsZSwK PiAgCQkJICBvYmotPmJhc2Uuc2l6ZSwKPiBAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBpbnQg dmM0X3JjbF9tc2FhX3N1cmZhY2Vfc2V0dXAoc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsCj4g IAkJCQkgICAgICBzdHJ1Y3QgZHJtX3ZjNF9zdWJtaXRfcmNsX3N1cmZhY2UgKnN1cmYpCj4gIHsK PiAgCWlmIChzdXJmLT5mbGFncyAhPSAwIHx8IHN1cmYtPmJpdHMgIT0gMCkgewo+IC0JCURSTV9F UlJPUigiTVNBQSBzdXJmYWNlIGhhZCBub256ZXJvIGZsYWdzL2JpdHNcbiIpOwo+ICsJCURSTV9E RUJVRygiTVNBQSBzdXJmYWNlIGhhZCBub256ZXJvIGZsYWdzL2JpdHNcbiIpOwo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgdmM0 X3JjbF9tc2FhX3N1cmZhY2Vfc2V0dXAoc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsCj4gIAll eGVjLT5yY2xfd3JpdGVfYm9bZXhlYy0+cmNsX3dyaXRlX2JvX2NvdW50KytdID0gKm9iajsKPiAg Cj4gIAlpZiAoc3VyZi0+b2Zmc2V0ICYgMHhmKSB7Cj4gLQkJRFJNX0VSUk9SKCJNU0FBIHdyaXRl IG11c3QgYmUgMTZiIGFsaWduZWQuXG4iKTsKPiArCQlEUk1fREVCVUcoIk1TQUEgd3JpdGUgbXVz dCBiZSAxNmIgYWxpZ25lZC5cbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBA QCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBpbnQgdmM0X3JjbF9zdXJmYWNlX3NldHVwKHN0cnVj dCB2YzRfZXhlY19pbmZvICpleGVjLAo+ICAJaW50IHJldDsKPiAgCj4gIAlpZiAoc3VyZi0+Zmxh Z3MgJiB+VkM0X1NVQk1JVF9SQ0xfU1VSRkFDRV9SRUFEX0lTX0ZVTExfUkVTKSB7Cj4gLQkJRFJN X0VSUk9SKCJFeHRyYSBmbGFncyBzZXRcbiIpOwo+ICsJCURSTV9ERUJVRygiRXh0cmEgZmxhZ3Mg c2V0XG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTQ1MywxMiArNDUz LDEyIEBAIHN0YXRpYyBpbnQgdmM0X3JjbF9zdXJmYWNlX3NldHVwKHN0cnVjdCB2YzRfZXhlY19p bmZvICpleGVjLAo+ICAKPiAgCWlmIChzdXJmLT5mbGFncyAmIFZDNF9TVUJNSVRfUkNMX1NVUkZB Q0VfUkVBRF9JU19GVUxMX1JFUykgewo+ICAJCWlmIChzdXJmID09ICZleGVjLT5hcmdzLT56c193 cml0ZSkgewo+IC0JCQlEUk1fRVJST1IoImdlbmVyYWwgenMgd3JpdGUgbWF5IG5vdCBiZSBhIGZ1 bGwtcmVzLlxuIik7Cj4gKwkJCURSTV9ERUJVRygiZ2VuZXJhbCB6cyB3cml0ZSBtYXkgbm90IGJl IGEgZnVsbC1yZXMuXG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiAgCQlp ZiAoc3VyZi0+Yml0cyAhPSAwKSB7Cj4gLQkJCURSTV9FUlJPUigibG9hZC9zdG9yZSBnZW5lcmFs IGJpdHMgc2V0IHdpdGggIgo+ICsJCQlEUk1fREVCVUcoImxvYWQvc3RvcmUgZ2VuZXJhbCBiaXRz IHNldCB3aXRoICIKPiAgCQkJCSAgImZ1bGwgcmVzIGxvYWQvc3RvcmUuXG4iKTsKPiAgCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAkJfQo+IEBAIC00NzMsMTkgKzQ3MywxOSBAQCBzdGF0aWMgaW50IHZj NF9yY2xfc3VyZmFjZV9zZXR1cChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKPiAgCWlmIChz dXJmLT5iaXRzICYgfihWQzRfTE9BRFNUT1JFX1RJTEVfQlVGRkVSX1RJTElOR19NQVNLIHwKPiAg CQkJICAgVkM0X0xPQURTVE9SRV9USUxFX0JVRkZFUl9CVUZGRVJfTUFTSyB8Cj4gIAkJCSAgIFZD NF9MT0FEU1RPUkVfVElMRV9CVUZGRVJfRk9STUFUX01BU0spKSB7Cj4gLQkJRFJNX0VSUk9SKCJV bmtub3duIGJpdHMgaW4gbG9hZC9zdG9yZTogMHglMDR4XG4iLAo+ICsJCURSTV9ERUJVRygiVW5r bm93biBiaXRzIGluIGxvYWQvc3RvcmU6IDB4JTA0eFxuIiwKPiAgCQkJICBzdXJmLT5iaXRzKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gIAlpZiAodGlsaW5nID4gVkM0X1RJTElO R19GT1JNQVRfTFQpIHsKPiAtCQlEUk1fRVJST1IoIkJhZCB0aWxpbmcgZm9ybWF0XG4iKTsKPiAr CQlEUk1fREVCVUcoIkJhZCB0aWxpbmcgZm9ybWF0XG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gIAlpZiAoYnVmZmVyID09IFZDNF9MT0FEU1RPUkVfVElMRV9CVUZGRVJfWlMp IHsKPiAgCQlpZiAoZm9ybWF0ICE9IDApIHsKPiAtCQkJRFJNX0VSUk9SKCJObyBjb2xvciBmb3Jt YXQgc2hvdWxkIGJlIHNldCBmb3IgWlNcbiIpOwo+ICsJCQlEUk1fREVCVUcoIk5vIGNvbG9yIGZv cm1hdCBzaG91bGQgYmUgc2V0IGZvciBaU1xuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJ CX0KPiAgCQljcHAgPSA0Owo+IEBAIC00OTksMTYgKzQ5OSwxNiBAQCBzdGF0aWMgaW50IHZjNF9y Y2xfc3VyZmFjZV9zZXR1cChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKPiAgCQkJY3BwID0g NDsKPiAgCQkJYnJlYWs7Cj4gIAkJZGVmYXVsdDoKPiAtCQkJRFJNX0VSUk9SKCJCYWQgdGlsZSBi dWZmZXIgZm9ybWF0XG4iKTsKPiArCQkJRFJNX0RFQlVHKCJCYWQgdGlsZSBidWZmZXIgZm9ybWF0 XG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAtCQlEUk1f RVJST1IoIkJhZCBsb2FkL3N0b3JlIGJ1ZmZlciAlZC5cbiIsIGJ1ZmZlcik7Cj4gKwkJRFJNX0RF QlVHKCJCYWQgbG9hZC9zdG9yZSBidWZmZXIgJWQuXG4iLCBidWZmZXIpOwo+ICAJCXJldHVybiAt RUlOVkFMOwo+ICAJfQo+ICAKPiAgCWlmIChzdXJmLT5vZmZzZXQgJiAweGYpIHsKPiAtCQlEUk1f RVJST1IoImxvYWQvc3RvcmUgYnVmZmVyIG11c3QgYmUgMTZiIGFsaWduZWQuXG4iKTsKPiArCQlE Uk1fREVCVUcoImxvYWQvc3RvcmUgYnVmZmVyIG11c3QgYmUgMTZiIGFsaWduZWQuXG4iKTsKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTUzMyw3ICs1MzMsNyBAQCB2YzRfcmNs X3JlbmRlcl9jb25maWdfc3VyZmFjZV9zZXR1cChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywK PiAgCWludCBjcHA7Cj4gIAo+ICAJaWYgKHN1cmYtPmZsYWdzICE9IDApIHsKPiAtCQlEUk1fRVJS T1IoIk5vIGZsYWdzIHN1cHBvcnRlZCBvbiByZW5kZXIgY29uZmlnLlxuIik7Cj4gKwkJRFJNX0RF QlVHKCJObyBmbGFncyBzdXBwb3J0ZWQgb24gcmVuZGVyIGNvbmZpZy5cbiIpOwo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtNTQxLDcgKzU0MSw3IEBAIHZjNF9yY2xfcmVuZGVy X2NvbmZpZ19zdXJmYWNlX3NldHVwKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAo+ICAJCQkg ICBWQzRfUkVOREVSX0NPTkZJR19GT1JNQVRfTUFTSyB8Cj4gIAkJCSAgIFZDNF9SRU5ERVJfQ09O RklHX01TX01PREVfNFggfAo+ICAJCQkgICBWQzRfUkVOREVSX0NPTkZJR19ERUNJTUFURV9NT0RF XzRYKSkgewo+IC0JCURSTV9FUlJPUigiVW5rbm93biBiaXRzIGluIHJlbmRlciBjb25maWc6IDB4 JTA0eFxuIiwKPiArCQlEUk1fREVCVUcoIlVua25vd24gYml0cyBpbiByZW5kZXIgY29uZmlnOiAw eCUwNHhcbiIsCj4gIAkJCSAgc3VyZi0+Yml0cyk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9 Cj4gQEAgLTU1Niw3ICs1NTYsNyBAQCB2YzRfcmNsX3JlbmRlcl9jb25maWdfc3VyZmFjZV9zZXR1 cChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKPiAgCWV4ZWMtPnJjbF93cml0ZV9ib1tleGVj LT5yY2xfd3JpdGVfYm9fY291bnQrK10gPSAqb2JqOwo+ICAKPiAgCWlmICh0aWxpbmcgPiBWQzRf VElMSU5HX0ZPUk1BVF9MVCkgewo+IC0JCURSTV9FUlJPUigiQmFkIHRpbGluZyBmb3JtYXRcbiIp Owo+ICsJCURSTV9ERUJVRygiQmFkIHRpbGluZyBmb3JtYXRcbiIpOwo+ICAJCXJldHVybiAtRUlO VkFMOwo+ICAJfQo+ICAKPiBAQCAtNTY5LDcgKzU2OSw3IEBAIHZjNF9yY2xfcmVuZGVyX2NvbmZp Z19zdXJmYWNlX3NldHVwKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAo+ICAJCWNwcCA9IDQ7 Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCURSTV9FUlJPUigiQmFkIHRpbGUgYnVmZmVy IGZvcm1hdFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJCYWQgdGlsZSBidWZmZXIgZm9ybWF0XG4iKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTU5MCw3ICs1OTAsNyBAQCBpbnQg dmM0X2dldF9yY2woc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9leGVjX2luZm8g KmV4ZWMpCj4gIAo+ICAJaWYgKGFyZ3MtPm1pbl94X3RpbGUgPiBhcmdzLT5tYXhfeF90aWxlIHx8 Cj4gIAkgICAgYXJncy0+bWluX3lfdGlsZSA+IGFyZ3MtPm1heF95X3RpbGUpIHsKPiAtCQlEUk1f RVJST1IoIkJhZCByZW5kZXIgdGlsZSBzZXQgKCVkLCVkKS0oJWQsJWQpXG4iLAo+ICsJCURSTV9E RUJVRygiQmFkIHJlbmRlciB0aWxlIHNldCAoJWQsJWQpLSglZCwlZClcbiIsCj4gIAkJCSAgYXJn cy0+bWluX3hfdGlsZSwgYXJncy0+bWluX3lfdGlsZSwKPiAgCQkJICBhcmdzLT5tYXhfeF90aWxl LCBhcmdzLT5tYXhfeV90aWxlKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtNTk5LDcgKzU5 OSw3IEBAIGludCB2YzRfZ2V0X3JjbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0 X2V4ZWNfaW5mbyAqZXhlYykKPiAgCWlmIChoYXNfYmluICYmCj4gIAkgICAgKGFyZ3MtPm1heF94 X3RpbGUgPiBleGVjLT5iaW5fdGlsZXNfeCB8fAo+ICAJICAgICBhcmdzLT5tYXhfeV90aWxlID4g ZXhlYy0+YmluX3RpbGVzX3kpKSB7Cj4gLQkJRFJNX0VSUk9SKCJSZW5kZXIgdGlsZXMgKCVkLCVk KSBvdXRzaWRlIG9mIGJpbiBjb25maWcgIgo+ICsJCURSTV9ERUJVRygiUmVuZGVyIHRpbGVzICgl ZCwlZCkgb3V0c2lkZSBvZiBiaW4gY29uZmlnICIKPiAgCQkJICAiKCVkLCVkKVxuIiwKPiAgCQkJ ICBhcmdzLT5tYXhfeF90aWxlLCBhcmdzLT5tYXhfeV90aWxlLAo+ICAJCQkgIGV4ZWMtPmJpbl90 aWxlc194LCBleGVjLT5iaW5fdGlsZXNfeSk7Cj4gQEAgLTY0Miw3ICs2NDIsNyBAQCBpbnQgdmM0 X2dldF9yY2woc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9leGVjX2luZm8gKmV4 ZWMpCj4gIAkgKi8KPiAgCWlmICghc2V0dXAuY29sb3Jfd3JpdGUgJiYgIXNldHVwLnpzX3dyaXRl ICYmCj4gIAkgICAgIXNldHVwLm1zYWFfY29sb3Jfd3JpdGUgJiYgIXNldHVwLm1zYWFfenNfd3Jp dGUpIHsKPiAtCQlEUk1fRVJST1IoIlJDTCByZXF1aXJlcyBjb2xvciBvciBaL1Mgd3JpdGVcbiIp Owo+ICsJCURSTV9ERUJVRygiUkNMIHJlcXVpcmVzIGNvbG9yIG9yIFovUyB3cml0ZVxuIik7Cj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF92YWxpZGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRhdGUu Ywo+IGluZGV4IDgxNGI1MTJjNmI5YS4uMmRiNDg1YWJiMTg2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X3ZhbGlkYXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF92YWxpZGF0ZS5jCj4gQEAgLTEwOSw3ICsxMDksNyBAQCB2YzRfdXNlX2JvKHN0cnVjdCB2 YzRfZXhlY19pbmZvICpleGVjLCB1aW50MzJfdCBoaW5kZXgpCj4gIAlzdHJ1Y3QgdmM0X2JvICpi bzsKPiAgCj4gIAlpZiAoaGluZGV4ID49IGV4ZWMtPmJvX2NvdW50KSB7Cj4gLQkJRFJNX0VSUk9S KCJCTyBpbmRleCAlZCBncmVhdGVyIHRoYW4gQk8gY291bnQgJWRcbiIsCj4gKwkJRFJNX0RFQlVH KCJCTyBpbmRleCAlZCBncmVhdGVyIHRoYW4gQk8gY291bnQgJWRcbiIsCj4gIAkJCSAgaGluZGV4 LCBleGVjLT5ib19jb3VudCk7Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAl9Cj4gQEAgLTExNyw3ICsx MTcsNyBAQCB2YzRfdXNlX2JvKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLCB1aW50MzJfdCBo aW5kZXgpCj4gIAlibyA9IHRvX3ZjNF9ibygmb2JqLT5iYXNlKTsKPiAgCj4gIAlpZiAoYm8tPnZh bGlkYXRlZF9zaGFkZXIpIHsKPiAtCQlEUk1fRVJST1IoIlRyeWluZyB0byB1c2Ugc2hhZGVyIEJP IGFzIHNvbWV0aGluZyBvdGhlciB0aGFuICIKPiArCQlEUk1fREVCVUcoIlRyeWluZyB0byB1c2Ug c2hhZGVyIEJPIGFzIHNvbWV0aGluZyBvdGhlciB0aGFuICIKPiAgCQkJICAiYSBzaGFkZXJcbiIp Owo+ICAJCXJldHVybiBOVUxMOwo+ICAJfQo+IEBAIC0xNzIsNyArMTcyLDcgQEAgdmM0X2NoZWNr X3RleF9zaXplKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLCBzdHJ1Y3QgZHJtX2dlbV9jbWFf b2JqZWN0ICpmYm8sCj4gIAkgKiBvdXIgbWF0aC4KPiAgCSAqLwo+ICAJaWYgKHdpZHRoID4gNDA5 NiB8fCBoZWlnaHQgPiA0MDk2KSB7Cj4gLQkJRFJNX0VSUk9SKCJTdXJmYWNlIGRpbWVuc2lvbnMg KCVkLCVkKSB0b28gbGFyZ2UiLAo+ICsJCURSTV9ERUJVRygiU3VyZmFjZSBkaW1lbnNpb25zICgl ZCwlZCkgdG9vIGxhcmdlIiwKPiAgCQkJICB3aWR0aCwgaGVpZ2h0KTsKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAl9Cj4gQEAgLTE5MSw3ICsxOTEsNyBAQCB2YzRfY2hlY2tfdGV4X3NpemUoc3RydWN0 IHZjNF9leGVjX2luZm8gKmV4ZWMsIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmZibywKPiAg CQlhbGlnbmVkX2hlaWdodCA9IHJvdW5kX3VwKGhlaWdodCwgdXRpbGVfaCk7Cj4gIAkJYnJlYWs7 Cj4gIAlkZWZhdWx0Ogo+IC0JCURSTV9FUlJPUigiYnVmZmVyIHRpbGluZyAlZCB1bnN1cHBvcnRl ZFxuIiwgdGlsaW5nX2Zvcm1hdCk7Cj4gKwkJRFJNX0RFQlVHKCJidWZmZXIgdGlsaW5nICVkIHVu c3VwcG9ydGVkXG4iLCB0aWxpbmdfZm9ybWF0KTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4g IAo+IEBAIC0yMDAsNyArMjAwLDcgQEAgdmM0X2NoZWNrX3RleF9zaXplKHN0cnVjdCB2YzRfZXhl Y19pbmZvICpleGVjLCBzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpmYm8sCj4gIAo+ICAJaWYg KHNpemUgKyBvZmZzZXQgPCBzaXplIHx8Cj4gIAkgICAgc2l6ZSArIG9mZnNldCA+IGZiby0+YmFz ZS5zaXplKSB7Cj4gLQkJRFJNX0VSUk9SKCJPdmVyZmxvdyBpbiAlZHglZCAoJWR4JWQpIGZibyBz aXplICglZCArICVkID4gJXpkKVxuIiwKPiArCQlEUk1fREVCVUcoIk92ZXJmbG93IGluICVkeCVk ICglZHglZCkgZmJvIHNpemUgKCVkICsgJWQgPiAlemQpXG4iLAo+ICAJCQkgIHdpZHRoLCBoZWln aHQsCj4gIAkJCSAgYWxpZ25lZF93aWR0aCwgYWxpZ25lZF9oZWlnaHQsCj4gIAkJCSAgc2l6ZSwg b2Zmc2V0LCBmYm8tPmJhc2Uuc2l6ZSk7Cj4gQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW50 Cj4gIHZhbGlkYXRlX2ZsdXNoKFZBTElEQVRFX0FSR1MpCj4gIHsKPiAgCWlmICghdmFsaWRhdGVf YmluX3BvcyhleGVjLCB1bnRydXN0ZWQsIGV4ZWMtPmFyZ3MtPmJpbl9jbF9zaXplIC0gMSkpIHsK PiAtCQlEUk1fRVJST1IoIkJpbiBDTCBtdXN0IGVuZCB3aXRoIFZDNF9QQUNLRVRfRkxVU0hcbiIp Owo+ICsJCURSTV9ERUJVRygiQmluIENMIG11c3QgZW5kIHdpdGggVkM0X1BBQ0tFVF9GTFVTSFxu Iik7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAlleGVjLT5mb3VuZF9mbHVzaCA9IHRy dWU7Cj4gQEAgLTIyNiwxMyArMjI2LDEzIEBAIHN0YXRpYyBpbnQKPiAgdmFsaWRhdGVfc3RhcnRf dGlsZV9iaW5uaW5nKFZBTElEQVRFX0FSR1MpCj4gIHsKPiAgCWlmIChleGVjLT5mb3VuZF9zdGFy dF90aWxlX2Jpbm5pbmdfcGFja2V0KSB7Cj4gLQkJRFJNX0VSUk9SKCJEdXBsaWNhdGUgVkM0X1BB Q0tFVF9TVEFSVF9USUxFX0JJTk5JTkdcbiIpOwo+ICsJCURSTV9ERUJVRygiRHVwbGljYXRlIFZD NF9QQUNLRVRfU1RBUlRfVElMRV9CSU5OSU5HXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg CX0KPiAgCWV4ZWMtPmZvdW5kX3N0YXJ0X3RpbGVfYmlubmluZ19wYWNrZXQgPSB0cnVlOwo+ICAK PiAgCWlmICghZXhlYy0+Zm91bmRfdGlsZV9iaW5uaW5nX21vZGVfY29uZmlnX3BhY2tldCkgewo+ IC0JCURSTV9FUlJPUigibWlzc2luZyBWQzRfUEFDS0VUX1RJTEVfQklOTklOR19NT0RFX0NPTkZJ R1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJtaXNzaW5nIFZDNF9QQUNLRVRfVElMRV9CSU5OSU5HX01P REVfQ09ORklHXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTI0Myw3 ICsyNDMsNyBAQCBzdGF0aWMgaW50Cj4gIHZhbGlkYXRlX2luY3JlbWVudF9zZW1hcGhvcmUoVkFM SURBVEVfQVJHUykKPiAgewo+ICAJaWYgKCF2YWxpZGF0ZV9iaW5fcG9zKGV4ZWMsIHVudHJ1c3Rl ZCwgZXhlYy0+YXJncy0+YmluX2NsX3NpemUgLSAyKSkgewo+IC0JCURSTV9FUlJPUigiQmluIENM IG11c3QgZW5kIHdpdGggIgo+ICsJCURSTV9ERUJVRygiQmluIENMIG11c3QgZW5kIHdpdGggIgo+ ICAJCQkgICJWQzRfUEFDS0VUX0lOQ1JFTUVOVF9TRU1BUEhPUkVcbiIpOwo+ICAJCXJldHVybiAt RUlOVkFMOwo+ICAJfQo+IEBAIC0yNjQsNyArMjY0LDcgQEAgdmFsaWRhdGVfaW5kZXhlZF9wcmlt X2xpc3QoVkFMSURBVEVfQVJHUykKPiAgCj4gIAkvKiBDaGVjayBvdmVyZmxvdyBjb25kaXRpb24g Ki8KPiAgCWlmIChleGVjLT5zaGFkZXJfc3RhdGVfY291bnQgPT0gMCkgewo+IC0JCURSTV9FUlJP Uigic2hhZGVyIHN0YXRlIG11c3QgcHJlY2VkZSBwcmltaXRpdmVzXG4iKTsKPiArCQlEUk1fREVC VUcoInNoYWRlciBzdGF0ZSBtdXN0IHByZWNlZGUgcHJpbWl0aXZlc1xuIik7Cj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAl9Cj4gIAlzaGFkZXJfc3RhdGUgPSAmZXhlYy0+c2hhZGVyX3N0YXRlW2V4 ZWMtPnNoYWRlcl9zdGF0ZV9jb3VudCAtIDFdOwo+IEBAIC0yODEsNyArMjgxLDcgQEAgdmFsaWRh dGVfaW5kZXhlZF9wcmltX2xpc3QoVkFMSURBVEVfQVJHUykKPiAgCj4gIAlpZiAob2Zmc2V0ID4g aWItPmJhc2Uuc2l6ZSB8fAo+ICAJICAgIChpYi0+YmFzZS5zaXplIC0gb2Zmc2V0KSAvIGluZGV4 X3NpemUgPCBsZW5ndGgpIHsKPiAtCQlEUk1fRVJST1IoIklCIGFjY2VzcyBvdmVyZmxvdyAoJWQg KyAlZColZCA+ICV6ZClcbiIsCj4gKwkJRFJNX0RFQlVHKCJJQiBhY2Nlc3Mgb3ZlcmZsb3cgKCVk ICsgJWQqJWQgPiAlemQpXG4iLAo+ICAJCQkgIG9mZnNldCwgbGVuZ3RoLCBpbmRleF9zaXplLCBp Yi0+YmFzZS5zaXplKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtMzAxLDEzICsz MDEsMTMgQEAgdmFsaWRhdGVfZ2xfYXJyYXlfcHJpbWl0aXZlKFZBTElEQVRFX0FSR1MpCj4gIAo+ ICAJLyogQ2hlY2sgb3ZlcmZsb3cgY29uZGl0aW9uICovCj4gIAlpZiAoZXhlYy0+c2hhZGVyX3N0 YXRlX2NvdW50ID09IDApIHsKPiAtCQlEUk1fRVJST1IoInNoYWRlciBzdGF0ZSBtdXN0IHByZWNl ZGUgcHJpbWl0aXZlc1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJzaGFkZXIgc3RhdGUgbXVzdCBwcmVj ZWRlIHByaW1pdGl2ZXNcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAJc2hhZGVy X3N0YXRlID0gJmV4ZWMtPnNoYWRlcl9zdGF0ZVtleGVjLT5zaGFkZXJfc3RhdGVfY291bnQgLSAx XTsKPiAgCj4gIAlpZiAobGVuZ3RoICsgYmFzZV9pbmRleCA8IGxlbmd0aCkgewo+IC0JCURSTV9F UlJPUigicHJpbWl0aXZlIHZlcnRleCBjb3VudCBvdmVyZmxvd1xuIik7Cj4gKwkJRFJNX0RFQlVH KCJwcmltaXRpdmUgdmVydGV4IGNvdW50IG92ZXJmbG93XG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCX0KPiAgCW1heF9pbmRleCA9IGxlbmd0aCArIGJhc2VfaW5kZXggLSAxOwo+IEBAIC0z MjQsNyArMzI0LDcgQEAgdmFsaWRhdGVfZ2xfc2hhZGVyX3N0YXRlKFZBTElEQVRFX0FSR1MpCj4g IAl1aW50MzJfdCBpID0gZXhlYy0+c2hhZGVyX3N0YXRlX2NvdW50Kys7Cj4gIAo+ICAJaWYgKGkg Pj0gZXhlYy0+c2hhZGVyX3N0YXRlX3NpemUpIHsKPiAtCQlEUk1fRVJST1IoIk1vcmUgcmVxdWVz dHMgZm9yIHNoYWRlciBzdGF0ZXMgdGhhbiBkZWNsYXJlZFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJN b3JlIHJlcXVlc3RzIGZvciBzaGFkZXIgc3RhdGVzIHRoYW4gZGVjbGFyZWRcbiIpOwo+ICAJCXJl dHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtMzMyLDcgKzMzMiw3IEBAIHZhbGlkYXRlX2ds X3NoYWRlcl9zdGF0ZShWQUxJREFURV9BUkdTKQo+ICAJZXhlYy0+c2hhZGVyX3N0YXRlW2ldLm1h eF9pbmRleCA9IDA7Cj4gIAo+ICAJaWYgKGV4ZWMtPnNoYWRlcl9zdGF0ZVtpXS5hZGRyICYgfjB4 Zikgewo+IC0JCURSTV9FUlJPUigiaGlnaCBiaXRzIHNldCBpbiBHTCBzaGFkZXIgcmVjIHJlZmVy ZW5jZVxuIik7Cj4gKwkJRFJNX0RFQlVHKCJoaWdoIGJpdHMgc2V0IGluIEdMIHNoYWRlciByZWMg cmVmZXJlbmNlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTM1Niw3 ICszNTYsNyBAQCB2YWxpZGF0ZV90aWxlX2Jpbm5pbmdfY29uZmlnKFZBTElEQVRFX0FSR1MpCj4g IAlpbnQgYmluX3Nsb3Q7Cj4gIAo+ICAJaWYgKGV4ZWMtPmZvdW5kX3RpbGVfYmlubmluZ19tb2Rl X2NvbmZpZ19wYWNrZXQpIHsKPiAtCQlEUk1fRVJST1IoIkR1cGxpY2F0ZSBWQzRfUEFDS0VUX1RJ TEVfQklOTklOR19NT0RFX0NPTkZJR1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJEdXBsaWNhdGUgVkM0 X1BBQ0tFVF9USUxFX0JJTk5JTkdfTU9ERV9DT05GSUdcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFM Owo+ICAJfQo+ICAJZXhlYy0+Zm91bmRfdGlsZV9iaW5uaW5nX21vZGVfY29uZmlnX3BhY2tldCA9 IHRydWU7Cj4gQEAgLTM2OCwxNCArMzY4LDE0IEBAIHZhbGlkYXRlX3RpbGVfYmlubmluZ19jb25m aWcoVkFMSURBVEVfQVJHUykKPiAgCj4gIAlpZiAoZXhlYy0+YmluX3RpbGVzX3ggPT0gMCB8fAo+ ICAJICAgIGV4ZWMtPmJpbl90aWxlc195ID09IDApIHsKPiAtCQlEUk1fRVJST1IoIlRpbGUgYmlu bmluZyBjb25maWcgb2YgJWR4JWQgdG9vIHNtYWxsXG4iLAo+ICsJCURSTV9ERUJVRygiVGlsZSBi aW5uaW5nIGNvbmZpZyBvZiAlZHglZCB0b28gc21hbGxcbiIsCj4gIAkJCSAgZXhlYy0+YmluX3Rp bGVzX3gsIGV4ZWMtPmJpbl90aWxlc195KTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gIAlpZiAoZmxhZ3MgJiAoVkM0X0JJTl9DT05GSUdfREJfTk9OX01TIHwKPiAgCQkgICAgIFZD NF9CSU5fQ09ORklHX1RJTEVfQlVGRkVSXzY0QklUKSkgewo+IC0JCURSTV9FUlJPUigidW5zdXBw b3J0ZWQgYmlubmluZyBjb25maWcgZmxhZ3MgMHglMDJ4XG4iLCBmbGFncyk7Cj4gKwkJRFJNX0RF QlVHKCJ1bnN1cHBvcnRlZCBiaW5uaW5nIGNvbmZpZyBmbGFncyAweCUwMnhcbiIsIGZsYWdzKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTQ5MywyMCArNDkzLDIwIEBAIHZj NF92YWxpZGF0ZV9iaW5fY2woc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQljb25zdCBzdHJ1 Y3QgY21kX2luZm8gKmluZm87Cj4gIAo+ICAJCWlmIChjbWQgPj0gQVJSQVlfU0laRShjbWRfaW5m bykpIHsKPiAtCQkJRFJNX0VSUk9SKCIweCUwOHg6IHBhY2tldCAlZCBvdXQgb2YgYm91bmRzXG4i LAo+ICsJCQlEUk1fREVCVUcoIjB4JTA4eDogcGFja2V0ICVkIG91dCBvZiBib3VuZHNcbiIsCj4g IAkJCQkgIHNyY19vZmZzZXQsIGNtZCk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAg Cj4gIAkJaW5mbyA9ICZjbWRfaW5mb1tjbWRdOwo+ICAJCWlmICghaW5mby0+bmFtZSkgewo+IC0J CQlEUk1fRVJST1IoIjB4JTA4eDogcGFja2V0ICVkIGludmFsaWRcbiIsCj4gKwkJCURSTV9ERUJV RygiMHglMDh4OiBwYWNrZXQgJWQgaW52YWxpZFxuIiwKPiAgCQkJCSAgc3JjX29mZnNldCwgY21k KTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiAgCQlpZiAoc3JjX29mZnNldCAr IGluZm8tPmxlbiA+IGxlbikgewo+IC0JCQlEUk1fRVJST1IoIjB4JTA4eDogcGFja2V0ICVkICgl cykgbGVuZ3RoIDB4JTA4eCAiCj4gKwkJCURSTV9ERUJVRygiMHglMDh4OiBwYWNrZXQgJWQgKCVz KSBsZW5ndGggMHglMDh4ICIKPiAgCQkJCSAgImV4Y2VlZHMgYm91bmRzICgweCUwOHgpXG4iLAo+ ICAJCQkJICBzcmNfb2Zmc2V0LCBjbWQsIGluZm8tPm5hbWUsIGluZm8tPmxlbiwKPiAgCQkJCSAg c3JjX29mZnNldCArIGxlbik7Cj4gQEAgLTUxOSw3ICs1MTksNyBAQCB2YzRfdmFsaWRhdGVfYmlu X2NsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKGluZm8tPmZ1bmMgJiYgaW5mby0+ ZnVuYyhleGVjLAo+ICAJCQkJCSAgICAgZHN0X3BrdCArIDEsCj4gIAkJCQkJICAgICBzcmNfcGt0 ICsgMSkpIHsKPiAtCQkJRFJNX0VSUk9SKCIweCUwOHg6IHBhY2tldCAlZCAoJXMpIGZhaWxlZCB0 byB2YWxpZGF0ZVxuIiwKPiArCQkJRFJNX0RFQlVHKCIweCUwOHg6IHBhY2tldCAlZCAoJXMpIGZh aWxlZCB0byB2YWxpZGF0ZVxuIiwKPiAgCQkJCSAgc3JjX29mZnNldCwgY21kLCBpbmZvLT5uYW1l KTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+IEBAIC01MzcsNyArNTM3LDcgQEAgdmM0 X3ZhbGlkYXRlX2Jpbl9jbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJZXhlYy0+Y3QwZWEg PSBleGVjLT5jdDBjYSArIGRzdF9vZmZzZXQ7Cj4gIAo+ICAJaWYgKCFleGVjLT5mb3VuZF9zdGFy dF90aWxlX2Jpbm5pbmdfcGFja2V0KSB7Cj4gLQkJRFJNX0VSUk9SKCJCaW4gQ0wgbWlzc2luZyBW QzRfUEFDS0VUX1NUQVJUX1RJTEVfQklOTklOR1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJCaW4gQ0wg bWlzc2luZyBWQzRfUEFDS0VUX1NUQVJUX1RJTEVfQklOTklOR1xuIik7Cj4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC01NDksNyArNTQ5LDcgQEAgdmM0X3ZhbGlkYXRlX2Jpbl9j bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogc2VtYXBob3JlIGluY3JlbWVudC4KPiAg CSAqLwo+ICAJaWYgKCFleGVjLT5mb3VuZF9pbmNyZW1lbnRfc2VtYXBob3JlX3BhY2tldCB8fCAh ZXhlYy0+Zm91bmRfZmx1c2gpIHsKPiAtCQlEUk1fRVJST1IoIkJpbiBDTCBtaXNzaW5nIFZDNF9Q QUNLRVRfSU5DUkVNRU5UX1NFTUFQSE9SRSArICIKPiArCQlEUk1fREVCVUcoIkJpbiBDTCBtaXNz aW5nIFZDNF9QQUNLRVRfSU5DUkVNRU5UX1NFTUFQSE9SRSArICIKPiAgCQkJICAiVkM0X1BBQ0tF VF9GTFVTSFxuIik7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gQEAgLTU4OCwxMSArNTg4 LDExIEBAIHJlbG9jX3RleChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKPiAgCQl1aW50MzJf dCByZW1haW5pbmdfc2l6ZSA9IHRleC0+YmFzZS5zaXplIC0gcDA7Cj4gIAo+ICAJCWlmIChwMCA+ IHRleC0+YmFzZS5zaXplIC0gNCkgewo+IC0JCQlEUk1fRVJST1IoIlVCTyBvZmZzZXQgZ3JlYXRl ciB0aGFuIFVCTyBzaXplXG4iKTsKPiArCQkJRFJNX0RFQlVHKCJVQk8gb2Zmc2V0IGdyZWF0ZXIg dGhhbiBVQk8gc2l6ZVxuIik7Cj4gIAkJCWdvdG8gZmFpbDsKPiAgCQl9Cj4gIAkJaWYgKHAxID4g cmVtYWluaW5nX3NpemUgLSA0KSB7Cj4gLQkJCURSTV9FUlJPUigiVUJPIGNsYW1wIHdvdWxkIGFs bG93IHJlYWRzICIKPiArCQkJRFJNX0RFQlVHKCJVQk8gY2xhbXAgd291bGQgYWxsb3cgcmVhZHMg Igo+ICAJCQkJICAib3V0c2lkZSBvZiBVQk9cbiIpOwo+ICAJCQlnb3RvIGZhaWw7Cj4gIAkJfQo+ IEBAIC02MTIsMTQgKzYxMiwxNCBAQCByZWxvY190ZXgoc3RydWN0IHZjNF9leGVjX2luZm8gKmV4 ZWMsCj4gIAkJaWYgKFZDNF9HRVRfRklFTEQocDMsIFZDNF9URVhfUDJfUFRZUEUpID09Cj4gIAkJ ICAgIFZDNF9URVhfUDJfUFRZUEVfQ1VCRV9NQVBfU1RSSURFKSB7Cj4gIAkJCWlmIChjdWJlX21h cF9zdHJpZGUpIHsKPiAtCQkJCURSTV9FUlJPUigiQ3ViZSBtYXAgc3RyaWRlIHNldCB0d2ljZVxu Iik7Cj4gKwkJCQlEUk1fREVCVUcoIkN1YmUgbWFwIHN0cmlkZSBzZXQgdHdpY2VcbiIpOwo+ICAJ CQkJZ290byBmYWlsOwo+ICAJCQl9Cj4gIAo+ICAJCQljdWJlX21hcF9zdHJpZGUgPSBwMyAmIFZD NF9URVhfUDJfQ01TVF9NQVNLOwo+ICAJCX0KPiAgCQlpZiAoIWN1YmVfbWFwX3N0cmlkZSkgewo+ IC0JCQlEUk1fRVJST1IoIkN1YmUgbWFwIHN0cmlkZSBub3Qgc2V0XG4iKTsKPiArCQkJRFJNX0RF QlVHKCJDdWJlIG1hcCBzdHJpZGUgbm90IHNldFxuIik7Cj4gIAkJCWdvdG8gZmFpbDsKPiAgCQl9 Cj4gIAl9Cj4gQEAgLTY2MCw3ICs2NjAsNyBAQCByZWxvY190ZXgoc3RydWN0IHZjNF9leGVjX2lu Zm8gKmV4ZWMsCj4gIAljYXNlIFZDNF9URVhUVVJFX1RZUEVfUkdCQTY0Ogo+ICAJY2FzZSBWQzRf VEVYVFVSRV9UWVBFX1lVVjQyMlI6Cj4gIAlkZWZhdWx0Ogo+IC0JCURSTV9FUlJPUigiVGV4dHVy ZSBmb3JtYXQgJWQgdW5zdXBwb3J0ZWRcbiIsIHR5cGUpOwo+ICsJCURSTV9ERUJVRygiVGV4dHVy ZSBmb3JtYXQgJWQgdW5zdXBwb3J0ZWRcbiIsIHR5cGUpOwo+ICAJCWdvdG8gZmFpbDsKPiAgCX0K PiAgCXV0aWxlX3cgPSB1dGlsZV93aWR0aChjcHApOwo+IEBAIC03MTMsNyArNzEzLDcgQEAgcmVs b2NfdGV4KHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAo+ICAJCWxldmVsX3NpemUgPSBhbGln bmVkX3dpZHRoICogY3BwICogYWxpZ25lZF9oZWlnaHQ7Cj4gIAo+ICAJCWlmIChvZmZzZXQgPCBs ZXZlbF9zaXplKSB7Cj4gLQkJCURSTV9FUlJPUigiTGV2ZWwgJWQgKCVkeCVkIC0+ICVkeCVkKSBz aXplICVkYiAiCj4gKwkJCURSTV9ERUJVRygiTGV2ZWwgJWQgKCVkeCVkIC0+ICVkeCVkKSBzaXpl ICVkYiAiCj4gIAkJCQkgICJvdmVyZmxvd2VkIGJ1ZmZlciBib3VuZHMgKG9mZnNldCAlZClcbiIs Cj4gIAkJCQkgIGksIGxldmVsX3dpZHRoLCBsZXZlbF9oZWlnaHQsCj4gIAkJCQkgIGFsaWduZWRf d2lkdGgsIGFsaWduZWRfaGVpZ2h0LAo+IEBAIC03NjQsNyArNzY0LDcgQEAgdmFsaWRhdGVfZ2xf c2hhZGVyX3JlYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCW5yX3JlbG9jcyA9IEFS UkFZX1NJWkUoc2hhZGVyX3JlbG9jX29mZnNldHMpICsgbnJfYXR0cmlidXRlczsKPiAgCWlmIChu cl9yZWxvY3MgKiA0ID4gZXhlYy0+c2hhZGVyX3JlY19zaXplKSB7Cj4gLQkJRFJNX0VSUk9SKCJv dmVyZmxvd2VkIHNoYWRlciByZWNzIHJlYWRpbmcgJWQgaGFuZGxlcyAiCj4gKwkJRFJNX0RFQlVH KCJvdmVyZmxvd2VkIHNoYWRlciByZWNzIHJlYWRpbmcgJWQgaGFuZGxlcyAiCj4gIAkJCSAgImZy b20gJWQgYnl0ZXMgbGVmdFxuIiwKPiAgCQkJICBucl9yZWxvY3MsIGV4ZWMtPnNoYWRlcl9yZWNf c2l6ZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTc3NCw3ICs3NzQsNyBAQCB2YWxpZGF0 ZV9nbF9zaGFkZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlleGVjLT5zaGFkZXJf cmVjX3NpemUgLT0gbnJfcmVsb2NzICogNDsKPiAgCj4gIAlpZiAocGFja2V0X3NpemUgPiBleGVj LT5zaGFkZXJfcmVjX3NpemUpIHsKPiAtCQlEUk1fRVJST1IoIm92ZXJmbG93ZWQgc2hhZGVyIHJl Y3MgY29weWluZyAlZGIgcGFja2V0ICIKPiArCQlEUk1fREVCVUcoIm92ZXJmbG93ZWQgc2hhZGVy IHJlY3MgY29weWluZyAlZGIgcGFja2V0ICIKPiAgCQkJICAiZnJvbSAlZCBieXRlcyBsZWZ0XG4i LAo+ICAJCQkgIHBhY2tldF9zaXplLCBleGVjLT5zaGFkZXJfcmVjX3NpemUpOwo+ICAJCXJldHVy biAtRUlOVkFMOwo+IEBAIC03OTQsNyArNzk0LDcgQEAgdmFsaWRhdGVfZ2xfc2hhZGVyX3JlYyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBzaGFkZXJfcmVs b2NfY291bnQ7IGkrKykgewo+ICAJCWlmIChzcmNfaGFuZGxlc1tpXSA+IGV4ZWMtPmJvX2NvdW50 KSB7Cj4gLQkJCURSTV9FUlJPUigiU2hhZGVyIGhhbmRsZSAlZCB0b28gYmlnXG4iLCBzcmNfaGFu ZGxlc1tpXSk7Cj4gKwkJCURSTV9ERUJVRygiU2hhZGVyIGhhbmRsZSAlZCB0b28gYmlnXG4iLCBz cmNfaGFuZGxlc1tpXSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gQEAgLTgx MCwxMyArODEwLDEzIEBAIHZhbGlkYXRlX2dsX3NoYWRlcl9yZWMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCj4gIAlpZiAoKCgqKHVpbnQxNl90ICopcGt0X3UgJiBWQzRfU0hBREVSX0ZMQUdf RlNfU0lOR0xFX1RIUkVBRCkgPT0gMCkgIT0KPiAgCSAgICB0b192YzRfYm8oJmJvWzBdLT5iYXNl KS0+dmFsaWRhdGVkX3NoYWRlci0+aXNfdGhyZWFkZWQpIHsKPiAtCQlEUk1fRVJST1IoIlRocmVh ZCBtb2RlIG9mIENMIGFuZCBGUyBkbyBub3QgbWF0Y2hcbiIpOwo+ICsJCURSTV9ERUJVRygiVGhy ZWFkIG1vZGUgb2YgQ0wgYW5kIEZTIGRvIG5vdCBtYXRjaFxuIik7Cj4gIAkJcmV0dXJuIC1FSU5W QUw7Cj4gIAl9Cj4gIAo+ICAJaWYgKHRvX3ZjNF9ibygmYm9bMV0tPmJhc2UpLT52YWxpZGF0ZWRf c2hhZGVyLT5pc190aHJlYWRlZCB8fAo+ICAJICAgIHRvX3ZjNF9ibygmYm9bMl0tPmJhc2UpLT52 YWxpZGF0ZWRfc2hhZGVyLT5pc190aHJlYWRlZCkgewo+IC0JCURSTV9FUlJPUigiY3MgYW5kIHZz IGNhbm5vdCBiZSB0aHJlYWRlZFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJjcyBhbmQgdnMgY2Fubm90 IGJlIHRocmVhZGVkXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTgz MSw3ICs4MzEsNyBAQCB2YWxpZGF0ZV9nbF9zaGFkZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAkJKih1aW50MzJfdCAqKShwa3RfdiArIG8pID0gYm9baV0tPnBhZGRyICsgc3JjX29m ZnNldDsKPiAgCj4gIAkJaWYgKHNyY19vZmZzZXQgIT0gMCkgewo+IC0JCQlEUk1fRVJST1IoIlNo YWRlcnMgbXVzdCBiZSBhdCBvZmZzZXQgMCBvZiAiCj4gKwkJCURSTV9ERUJVRygiU2hhZGVycyBt dXN0IGJlIGF0IG9mZnNldCAwIG9mICIKPiAgCQkJCSAgInRoZSBCTy5cbiIpOwo+ICAJCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCQl9Cj4gQEAgLTg0Miw3ICs4NDIsNyBAQCB2YWxpZGF0ZV9nbF9zaGFk ZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJCWlmICh2YWxpZGF0ZWRfc2hh ZGVyLT51bmlmb3Jtc19zcmNfc2l6ZSA+Cj4gIAkJICAgIGV4ZWMtPnVuaWZvcm1zX3NpemUpIHsK PiAtCQkJRFJNX0VSUk9SKCJVbmlmb3JtcyBzcmMgYnVmZmVyIG92ZXJmbG93XG4iKTsKPiArCQkJ RFJNX0RFQlVHKCJVbmlmb3JtcyBzcmMgYnVmZmVyIG92ZXJmbG93XG4iKTsKPiAgCQkJcmV0dXJu IC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiBAQCAtOTAwLDcgKzkwMCw3IEBAIHZhbGlkYXRlX2dsX3No YWRlcl9yZWMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAkJaWYgKHZiby0+YmFzZS5z aXplIDwgb2Zmc2V0IHx8Cj4gIAkJICAgIHZiby0+YmFzZS5zaXplIC0gb2Zmc2V0IDwgYXR0cl9z aXplKSB7Cj4gLQkJCURSTV9FUlJPUigiQk8gb2Zmc2V0IG92ZXJmbG93ICglZCArICVkID4gJXp1 KVxuIiwKPiArCQkJRFJNX0RFQlVHKCJCTyBvZmZzZXQgb3ZlcmZsb3cgKCVkICsgJWQgPiAlenUp XG4iLAo+ICAJCQkJICBvZmZzZXQsIGF0dHJfc2l6ZSwgdmJvLT5iYXNlLnNpemUpOwo+ICAJCQly ZXR1cm4gLUVJTlZBTDsKPiAgCQl9Cj4gQEAgLTkwOSw3ICs5MDksNyBAQCB2YWxpZGF0ZV9nbF9z aGFkZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCW1heF9pbmRleCA9ICgodmJv LT5iYXNlLnNpemUgLSBvZmZzZXQgLSBhdHRyX3NpemUpIC8KPiAgCQkJCSAgICAgc3RyaWRlKTsK PiAgCQkJaWYgKHN0YXRlLT5tYXhfaW5kZXggPiBtYXhfaW5kZXgpIHsKPiAtCQkJCURSTV9FUlJP UigicHJpbWl0aXZlcyB1c2UgaW5kZXggJWQgb3V0IG9mICIKPiArCQkJCURSTV9ERUJVRygicHJp bWl0aXZlcyB1c2UgaW5kZXggJWQgb3V0IG9mICIKPiAgCQkJCQkgICJzdXBwbGllZCAlZFxuIiwK PiAgCQkJCQkgIHN0YXRlLT5tYXhfaW5kZXgsIG1heF9pbmRleCk7Cj4gIAkJCQlyZXR1cm4gLUVJ TlZBTDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRhdGVfc2hh ZGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRhdGVfc2hhZGVycy5jCj4gaW5k ZXggMGIyZGY1YzZlZmI0Li5kM2YxNWJmNjA5MDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfdmFsaWRhdGVfc2hhZGVycy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfdmFsaWRhdGVfc2hhZGVycy5jCj4gQEAgLTIwMCw3ICsyMDAsNyBAQCBjaGVja190bXVf d3JpdGUoc3RydWN0IHZjNF92YWxpZGF0ZWRfc2hhZGVyX2luZm8gKnZhbGlkYXRlZF9zaGFkZXIs Cj4gIAkJdWludDMyX3QgY2xhbXBfcmVnLCBjbGFtcF9vZmZzZXQ7Cj4gIAo+ICAJCWlmIChzaWcg PT0gUVBVX1NJR19TTUFMTF9JTU0pIHsKPiAtCQkJRFJNX0VSUk9SKCJkaXJlY3QgVE1VIHJlYWQg dXNlZCBzbWFsbCBpbW1lZGlhdGVcbiIpOwo+ICsJCQlEUk1fREVCVUcoImRpcmVjdCBUTVUgcmVh ZCB1c2VkIHNtYWxsIGltbWVkaWF0ZVxuIik7Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4g IAo+IEBAIC0yMDksNyArMjA5LDcgQEAgY2hlY2tfdG11X3dyaXRlKHN0cnVjdCB2YzRfdmFsaWRh dGVkX3NoYWRlcl9pbmZvICp2YWxpZGF0ZWRfc2hhZGVyLAo+ICAJCSAqLwo+ICAJCWlmIChpc19t dWwgfHwKPiAgCQkgICAgUVBVX0dFVF9GSUVMRChpbnN0LCBRUFVfT1BfQUREKSAhPSBRUFVfQV9B REQpIHsKPiAtCQkJRFJNX0VSUk9SKCJkaXJlY3QgVE1VIGxvYWQgd2Fzbid0IGFuIGFkZFxuIik7 Cj4gKwkJCURSTV9ERUJVRygiZGlyZWN0IFRNVSBsb2FkIHdhc24ndCBhbiBhZGRcbiIpOwo+ICAJ CQlyZXR1cm4gZmFsc2U7Cj4gIAkJfQo+ICAKPiBAQCAtMjIwLDEzICsyMjAsMTMgQEAgY2hlY2tf dG11X3dyaXRlKHN0cnVjdCB2YzRfdmFsaWRhdGVkX3NoYWRlcl9pbmZvICp2YWxpZGF0ZWRfc2hh ZGVyLAo+ICAJCSAqLwo+ICAJCWNsYW1wX3JlZyA9IHJhZGRyX2FkZF9hX3RvX2xpdmVfcmVnX2lu ZGV4KGluc3QpOwo+ICAJCWlmIChjbGFtcF9yZWcgPT0gfjApIHsKPiAtCQkJRFJNX0VSUk9SKCJk aXJlY3QgVE1VIGxvYWQgd2Fzbid0IGNsYW1wZWRcbiIpOwo+ICsJCQlEUk1fREVCVUcoImRpcmVj dCBUTVUgbG9hZCB3YXNuJ3QgY2xhbXBlZFxuIik7Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9 Cj4gIAo+ICAJCWNsYW1wX29mZnNldCA9IHZhbGlkYXRpb25fc3RhdGUtPmxpdmVfbWluX2NsYW1w X29mZnNldHNbY2xhbXBfcmVnXTsKPiAgCQlpZiAoY2xhbXBfb2Zmc2V0ID09IH4wKSB7Cj4gLQkJ CURSTV9FUlJPUigiZGlyZWN0IFRNVSBsb2FkIHdhc24ndCBjbGFtcGVkXG4iKTsKPiArCQkJRFJN X0RFQlVHKCJkaXJlY3QgVE1VIGxvYWQgd2Fzbid0IGNsYW1wZWRcbiIpOwo+ICAJCQlyZXR1cm4g ZmFsc2U7Cj4gIAkJfQo+ICAKPiBAQCAtMjM4LDcgKzIzOCw3IEBAIGNoZWNrX3RtdV93cml0ZShz dHJ1Y3QgdmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5mbyAqdmFsaWRhdGVkX3NoYWRlciwKPiAgCj4g IAkJaWYgKCEoYWRkX2IgPT0gUVBVX01VWF9BICYmIHJhZGRyX2EgPT0gUVBVX1JfVU5JRikgJiYK PiAgCQkgICAgIShhZGRfYiA9PSBRUFVfTVVYX0IgJiYgcmFkZHJfYiA9PSBRUFVfUl9VTklGKSkg ewo+IC0JCQlEUk1fRVJST1IoImRpcmVjdCBUTVUgbG9hZCBkaWRuJ3QgYWRkIHRvIGEgdW5pZm9y bVxuIik7Cj4gKwkJCURSTV9ERUJVRygiZGlyZWN0IFRNVSBsb2FkIGRpZG4ndCBhZGQgdG8gYSB1 bmlmb3JtXG4iKTsKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCj4gQEAgLTI0NiwxNCAr MjQ2LDE0IEBAIGNoZWNrX3RtdV93cml0ZShzdHJ1Y3QgdmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5m byAqdmFsaWRhdGVkX3NoYWRlciwKPiAgCX0gZWxzZSB7Cj4gIAkJaWYgKHJhZGRyX2EgPT0gUVBV X1JfVU5JRiB8fCAoc2lnICE9IFFQVV9TSUdfU01BTExfSU1NICYmCj4gIAkJCQkJICAgICAgcmFk ZHJfYiA9PSBRUFVfUl9VTklGKSkgewo+IC0JCQlEUk1fRVJST1IoInVuaWZvcm0gcmVhZCBpbiB0 aGUgc2FtZSBpbnN0cnVjdGlvbiBhcyAiCj4gKwkJCURSTV9ERUJVRygidW5pZm9ybSByZWFkIGlu IHRoZSBzYW1lIGluc3RydWN0aW9uIGFzICIKPiAgCQkJCSAgInRleHR1cmUgc2V0dXAuXG4iKTsK PiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCX0KPiAgCj4gIAlpZiAodmFsaWRhdGlvbl9z dGF0ZS0+dG11X3dyaXRlX2NvdW50W3RtdV0gPj0gNCkgewo+IC0JCURSTV9FUlJPUigiVE1VJWQg Z290IHRvbyBtYW55IHBhcmFtZXRlcnMgYmVmb3JlIGRpc3BhdGNoXG4iLAo+ICsJCURSTV9ERUJV RygiVE1VJWQgZ290IHRvbyBtYW55IHBhcmFtZXRlcnMgYmVmb3JlIGRpc3BhdGNoXG4iLAo+ICAJ CQkgIHRtdSk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC0yNjUsNyArMjY1LDcgQEAg Y2hlY2tfdG11X3dyaXRlKHN0cnVjdCB2YzRfdmFsaWRhdGVkX3NoYWRlcl9pbmZvICp2YWxpZGF0 ZWRfc2hhZGVyLAo+ICAJICovCj4gIAlpZiAoIWlzX2RpcmVjdCkgewo+ICAJCWlmICh2YWxpZGF0 aW9uX3N0YXRlLT5uZWVkc191bmlmb3JtX2FkZHJlc3NfdXBkYXRlKSB7Cj4gLQkJCURSTV9FUlJP UigiVGV4dHVyaW5nIHdpdGggdW5kZWZpbmVkIHVuaWZvcm0gYWRkcmVzc1xuIik7Cj4gKwkJCURS TV9ERUJVRygiVGV4dHVyaW5nIHdpdGggdW5kZWZpbmVkIHVuaWZvcm0gYWRkcmVzc1xuIik7Cj4g IAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAo+IEBAIC0zMzYsMzUgKzMzNiwzNSBAQCB2YWxp ZGF0ZV91bmlmb3JtX2FkZHJlc3Nfd3JpdGUoc3RydWN0IHZjNF92YWxpZGF0ZWRfc2hhZGVyX2lu Zm8gKnZhbGlkYXRlZF9zaGFkZQo+ICAJY2FzZSBRUFVfU0lHX0xPQURfVE1VMToKPiAgCQlicmVh azsKPiAgCWRlZmF1bHQ6Cj4gLQkJRFJNX0VSUk9SKCJ1bmlmb3JtcyBhZGRyZXNzIGNoYW5nZSBt dXN0IGJlICIKPiArCQlEUk1fREVCVUcoInVuaWZvcm1zIGFkZHJlc3MgY2hhbmdlIG11c3QgYmUg Igo+ICAJCQkgICJub3JtYWwgbWF0aFxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAK PiAgCWlmIChpc19tdWwgfHwgUVBVX0dFVF9GSUVMRChpbnN0LCBRUFVfT1BfQUREKSAhPSBRUFVf QV9BREQpIHsKPiAtCQlEUk1fRVJST1IoIlVuaWZvcm0gYWRkcmVzcyByZXNldCBtdXN0IGJlIGFu IEFERC5cbiIpOwo+ICsJCURSTV9ERUJVRygiVW5pZm9ybSBhZGRyZXNzIHJlc2V0IG11c3QgYmUg YW4gQURELlxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWlmIChRUFVfR0VU X0ZJRUxEKGluc3QsIFFQVV9DT05EX0FERCkgIT0gUVBVX0NPTkRfQUxXQVlTKSB7Cj4gLQkJRFJN X0VSUk9SKCJVbmlmb3JtIGFkZHJlc3MgcmVzZXQgbXVzdCBiZSB1bmNvbmRpdGlvbmFsLlxuIik7 Cj4gKwkJRFJNX0RFQlVHKCJVbmlmb3JtIGFkZHJlc3MgcmVzZXQgbXVzdCBiZSB1bmNvbmRpdGlv bmFsLlxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWlmIChRUFVfR0VUX0ZJ RUxEKGluc3QsIFFQVV9QQUNLKSAhPSBRUFVfUEFDS19BX05PUCAmJgo+ICAJICAgICEoaW5zdCAm IFFQVV9QTSkpIHsKPiAtCQlEUk1fRVJST1IoIk5vIHBhY2tpbmcgYWxsb3dlZCBvbiB1bmlmb3Jt cyByZXNldFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJObyBwYWNraW5nIGFsbG93ZWQgb24gdW5pZm9y bXMgcmVzZXRcbiIpOwo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gIAlpZiAoYWRkX2xy aSA9PSAtMSkgewo+IC0JCURSTV9FUlJPUigiRmlyc3QgYXJndW1lbnQgb2YgdW5pZm9ybSBhZGRy ZXNzIHdyaXRlIG11c3QgYmUgIgo+ICsJCURSTV9ERUJVRygiRmlyc3QgYXJndW1lbnQgb2YgdW5p Zm9ybSBhZGRyZXNzIHdyaXRlIG11c3QgYmUgIgo+ICAJCQkgICJhbiBpbW1lZGlhdGUgdmFsdWUu XG4iKTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+ICAJaWYgKHZhbGlkYXRpb25fc3Rh dGUtPmxpdmVfaW1tZWRpYXRlc1thZGRfbHJpXSAhPSBleHBlY3RlZF9vZmZzZXQpIHsKPiAtCQlE Uk1fRVJST1IoIlJlc2V0dGluZyB1bmlmb3JtcyB3aXRoIG9mZnNldCAlZGIgaW5zdGVhZCBvZiAl ZGJcbiIsCj4gKwkJRFJNX0RFQlVHKCJSZXNldHRpbmcgdW5pZm9ybXMgd2l0aCBvZmZzZXQgJWRi IGluc3RlYWQgb2YgJWRiXG4iLAo+ICAJCQkgIHZhbGlkYXRpb25fc3RhdGUtPmxpdmVfaW1tZWRp YXRlc1thZGRfbHJpXSwKPiAgCQkJICBleHBlY3RlZF9vZmZzZXQpOwo+ICAJCXJldHVybiBmYWxz ZTsKPiBAQCAtMzcyLDcgKzM3Miw3IEBAIHZhbGlkYXRlX3VuaWZvcm1fYWRkcmVzc193cml0ZShz dHJ1Y3QgdmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5mbyAqdmFsaWRhdGVkX3NoYWRlCj4gIAo+ICAJ aWYgKCEoYWRkX2IgPT0gUVBVX01VWF9BICYmIHJhZGRyX2EgPT0gUVBVX1JfVU5JRikgJiYKPiAg CSAgICAhKGFkZF9iID09IFFQVV9NVVhfQiAmJiByYWRkcl9iID09IFFQVV9SX1VOSUYpKSB7Cj4g LQkJRFJNX0VSUk9SKCJTZWNvbmQgYXJndW1lbnQgb2YgdW5pZm9ybSBhZGRyZXNzIHdyaXRlIG11 c3QgYmUgIgo+ICsJCURSTV9ERUJVRygiU2Vjb25kIGFyZ3VtZW50IG9mIHVuaWZvcm0gYWRkcmVz cyB3cml0ZSBtdXN0IGJlICIKPiAgCQkJICAiYSB1bmlmb3JtLlxuIik7Cj4gIAkJcmV0dXJuIGZh bHNlOwo+ICAJfQo+IEBAIC00MTcsNyArNDE3LDcgQEAgY2hlY2tfcmVnX3dyaXRlKHN0cnVjdCB2 YzRfdmFsaWRhdGVkX3NoYWRlcl9pbmZvICp2YWxpZGF0ZWRfc2hhZGVyLAo+ICAJc3dpdGNoICh3 YWRkcikgewo+ICAJY2FzZSBRUFVfV19VTklGT1JNU19BRERSRVNTOgo+ICAJCWlmIChpc19iKSB7 Cj4gLQkJCURSTV9FUlJPUigicmVsYXRpdmUgdW5pZm9ybXMgYWRkcmVzcyBjaGFuZ2UgIgo+ICsJ CQlEUk1fREVCVUcoInJlbGF0aXZlIHVuaWZvcm1zIGFkZHJlc3MgY2hhbmdlICIKPiAgCQkJCSAg InVuc3VwcG9ydGVkXG4iKTsKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiBAQCAtNDUyLDEx ICs0NTIsMTEgQEAgY2hlY2tfcmVnX3dyaXRlKHN0cnVjdCB2YzRfdmFsaWRhdGVkX3NoYWRlcl9p bmZvICp2YWxpZGF0ZWRfc2hhZGVyLAo+ICAJCS8qIFhYWDogSSBoYXZlbid0IHRob3VnaHQgYWJv dXQgdGhlc2UsIHNvIGRvbid0IHN1cHBvcnQgdGhlbQo+ICAJCSAqIGZvciBub3cuCj4gIAkJICov Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCB3YWRkciAlZFxuIiwgd2FkZHIpOwo+ICsJCURS TV9ERUJVRygiVW5zdXBwb3J0ZWQgd2FkZHIgJWRcbiIsIHdhZGRyKTsKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAo+ICAJY2FzZSBRUFVfV19WUE1fQUREUjoKPiAtCQlEUk1fRVJST1IoIkdlbmVyYWwg VlBNIERNQSB1bnN1cHBvcnRlZFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJHZW5lcmFsIFZQTSBETUEg dW5zdXBwb3J0ZWRcbiIpOwo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAljYXNlIFFQVV9XX1ZQ TToKPiBAQCAtNTU5LDcgKzU1OSw3IEBAIGNoZWNrX2luc3RydWN0aW9uX3dyaXRlcyhzdHJ1Y3Qg dmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5mbyAqdmFsaWRhdGVkX3NoYWRlciwKPiAgCWJvb2wgb2s7 Cj4gIAo+ICAJaWYgKGlzX3RtdV93cml0ZSh3YWRkcl9hZGQpICYmIGlzX3RtdV93cml0ZSh3YWRk cl9tdWwpKSB7Cj4gLQkJRFJNX0VSUk9SKCJBREQgYW5kIE1VTCBib3RoIHNldCB1cCB0ZXh0dXJl c1xuIik7Cj4gKwkJRFJNX0RFQlVHKCJBREQgYW5kIE1VTCBib3RoIHNldCB1cCB0ZXh0dXJlc1xu Iik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiBAQCAtNTg4LDcgKzU4OCw3IEBAIGNo ZWNrX2JyYW5jaCh1aW50NjRfdCBpbnN0LAo+ICAJICogdGhlcmUncyBubyBuZWVkIGZvciBpdC4K PiAgCSAqLwo+ICAJaWYgKHdhZGRyX2FkZCAhPSBRUFVfV19OT1AgfHwgd2FkZHJfbXVsICE9IFFQ VV9XX05PUCkgewo+IC0JCURSTV9FUlJPUigiYnJhbmNoIGluc3RydWN0aW9uIGF0ICVkIHdyb3Rl IGEgcmVnaXN0ZXIuXG4iLAo+ICsJCURSTV9ERUJVRygiYnJhbmNoIGluc3RydWN0aW9uIGF0ICVk IHdyb3RlIGEgcmVnaXN0ZXIuXG4iLAo+ICAJCQkgIHZhbGlkYXRpb25fc3RhdGUtPmlwKTsKPiAg CQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gQEAgLTYxNCw3ICs2MTQsNyBAQCBjaGVja19pbnN0cnVj dGlvbl9yZWFkcyhzdHJ1Y3QgdmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5mbyAqdmFsaWRhdGVkX3No YWRlciwKPiAgCQl2YWxpZGF0ZWRfc2hhZGVyLT51bmlmb3Jtc19zaXplICs9IDQ7Cj4gIAo+ICAJ CWlmICh2YWxpZGF0aW9uX3N0YXRlLT5uZWVkc191bmlmb3JtX2FkZHJlc3NfdXBkYXRlKSB7Cj4g LQkJCURSTV9FUlJPUigiVW5pZm9ybSByZWFkIHdpdGggdW5kZWZpbmVkIHVuaWZvcm0gIgo+ICsJ CQlEUk1fREVCVUcoIlVuaWZvcm0gcmVhZCB3aXRoIHVuZGVmaW5lZCB1bmlmb3JtICIKPiAgCQkJ CSAgImFkZHJlc3NcbiIpOwo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gIAkJfQo+IEBAIC02NjAsMTkg KzY2MCwxOSBAQCB2YzRfdmFsaWRhdGVfYnJhbmNoZXMoc3RydWN0IHZjNF9zaGFkZXJfdmFsaWRh dGlvbl9zdGF0ZSAqdmFsaWRhdGlvbl9zdGF0ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWlm IChpcCAtIGxhc3RfYnJhbmNoIDwgNCkgewo+IC0JCQlEUk1fRVJST1IoIkJyYW5jaCBhdCAlZCBk dXJpbmcgZGVsYXkgc2xvdHNcbiIsIGlwKTsKPiArCQkJRFJNX0RFQlVHKCJCcmFuY2ggYXQgJWQg ZHVyaW5nIGRlbGF5IHNsb3RzXG4iLCBpcCk7Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4g IAkJbGFzdF9icmFuY2ggPSBpcDsKPiAgCj4gIAkJaWYgKGluc3QgJiBRUFVfQlJBTkNIX1JFRykg ewo+IC0JCQlEUk1fRVJST1IoImJyYW5jaGluZyBmcm9tIHJlZ2lzdGVyIHJlbGF0aXZlICIKPiAr CQkJRFJNX0RFQlVHKCJicmFuY2hpbmcgZnJvbSByZWdpc3RlciByZWxhdGl2ZSAiCj4gIAkJCQkg ICJub3Qgc3VwcG9ydGVkXG4iKTsKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCj4gIAkJ aWYgKCEoaW5zdCAmIFFQVV9CUkFOQ0hfUkVMKSkgewo+IC0JCQlEUk1fRVJST1IoInJlbGF0aXZl IGJyYW5jaGluZyByZXF1aXJlZFxuIik7Cj4gKwkJCURSTV9ERUJVRygicmVsYXRpdmUgYnJhbmNo aW5nIHJlcXVpcmVkXG4iKTsKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCj4gQEAgLTY4 MiwxMyArNjgyLDEzIEBAIHZjNF92YWxpZGF0ZV9icmFuY2hlcyhzdHJ1Y3QgdmM0X3NoYWRlcl92 YWxpZGF0aW9uX3N0YXRlICp2YWxpZGF0aW9uX3N0YXRlKQo+ICAJCSAqIGVuZCBvZiB0aGUgc2hh ZGVyIG9iamVjdC4KPiAgCQkgKi8KPiAgCQlpZiAoYnJhbmNoX2ltbSAlIHNpemVvZihpbnN0KSAh PSAwKSB7Cj4gLQkJCURSTV9FUlJPUigiYnJhbmNoIHRhcmdldCBub3QgYWxpZ25lZFxuIik7Cj4g KwkJCURSTV9ERUJVRygiYnJhbmNoIHRhcmdldCBub3QgYWxpZ25lZFxuIik7Cj4gIAkJCXJldHVy biBmYWxzZTsKPiAgCQl9Cj4gIAo+ICAJCWJyYW5jaF90YXJnZXRfaXAgPSBhZnRlcl9kZWxheV9p cCArIChicmFuY2hfaW1tID4+IDMpOwo+ICAJCWlmIChicmFuY2hfdGFyZ2V0X2lwID49IHZhbGlk YXRpb25fc3RhdGUtPm1heF9pcCkgewo+IC0JCQlEUk1fRVJST1IoIkJyYW5jaCBhdCAlZCBvdXRz aWRlIG9mIHNoYWRlciAoaXAgJWQvJWQpXG4iLAo+ICsJCQlEUk1fREVCVUcoIkJyYW5jaCBhdCAl ZCBvdXRzaWRlIG9mIHNoYWRlciAoaXAgJWQvJWQpXG4iLAo+ICAJCQkJICBpcCwgYnJhbmNoX3Rh cmdldF9pcCwKPiAgCQkJCSAgdmFsaWRhdGlvbl9zdGF0ZS0+bWF4X2lwKTsKPiAgCQkJcmV0dXJu IGZhbHNlOwo+IEBAIC02OTksNyArNjk5LDcgQEAgdmM0X3ZhbGlkYXRlX2JyYW5jaGVzKHN0cnVj dCB2YzRfc2hhZGVyX3ZhbGlkYXRpb25fc3RhdGUgKnZhbGlkYXRpb25fc3RhdGUpCj4gIAkJICog dGhlIHNoYWRlci4KPiAgCQkgKi8KPiAgCQlpZiAoYWZ0ZXJfZGVsYXlfaXAgPj0gdmFsaWRhdGlv bl9zdGF0ZS0+bWF4X2lwKSB7Cj4gLQkJCURSTV9FUlJPUigiQnJhbmNoIGF0ICVkIGNvbnRpbnVl cyBwYXN0IHNoYWRlciBlbmQgIgo+ICsJCQlEUk1fREVCVUcoIkJyYW5jaCBhdCAlZCBjb250aW51 ZXMgcGFzdCBzaGFkZXIgZW5kICIKPiAgCQkJCSAgIiglZC8lZClcbiIsCj4gIAkJCQkgIGlwLCBh ZnRlcl9kZWxheV9pcCwgdmFsaWRhdGlvbl9zdGF0ZS0+bWF4X2lwKTsKPiAgCQkJcmV0dXJuIGZh bHNlOwo+IEBAIC03MDksNyArNzA5LDcgQEAgdmM0X3ZhbGlkYXRlX2JyYW5jaGVzKHN0cnVjdCB2 YzRfc2hhZGVyX3ZhbGlkYXRpb25fc3RhdGUgKnZhbGlkYXRpb25fc3RhdGUpCj4gIAl9Cj4gIAo+ ICAJaWYgKG1heF9icmFuY2hfdGFyZ2V0ID4gdmFsaWRhdGlvbl9zdGF0ZS0+bWF4X2lwIC0gMykg ewo+IC0JCURSTV9FUlJPUigiQnJhbmNoIGxhbmRlZCBhZnRlciBRUFVfU0lHX1BST0dfRU5EIik7 Cj4gKwkJRFJNX0RFQlVHKCJCcmFuY2ggbGFuZGVkIGFmdGVyIFFQVV9TSUdfUFJPR19FTkQiKTsK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IEBAIC03NTAsNyArNzUwLDcgQEAgdmM0X2hh bmRsZV9icmFuY2hfdGFyZ2V0KHN0cnVjdCB2YzRfc2hhZGVyX3ZhbGlkYXRpb25fc3RhdGUgKnZh bGlkYXRpb25fc3RhdGUpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJaWYgKHRleHR1cmluZ19p bl9wcm9ncmVzcyh2YWxpZGF0aW9uX3N0YXRlKSkgewo+IC0JCURSTV9FUlJPUigiQnJhbmNoIHRh cmdldCBsYW5kZWQgZHVyaW5nIFRNVSBzZXR1cFxuIik7Cj4gKwkJRFJNX0RFQlVHKCJCcmFuY2gg dGFyZ2V0IGxhbmRlZCBkdXJpbmcgVE1VIHNldHVwXG4iKTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4g IAl9Cj4gIAo+IEBAIC04MzcsNyArODM3LDcgQEAgdmM0X3ZhbGlkYXRlX3NoYWRlcihzdHJ1Y3Qg ZHJtX2dlbV9jbWFfb2JqZWN0ICpzaGFkZXJfb2JqKQo+ICAJCWNhc2UgUVBVX1NJR19MQVNUX1RI UkVBRF9TV0lUQ0g6Cj4gIAkJCWlmICghY2hlY2tfaW5zdHJ1Y3Rpb25fd3JpdGVzKHZhbGlkYXRl ZF9zaGFkZXIsCj4gIAkJCQkJCSAgICAgICZ2YWxpZGF0aW9uX3N0YXRlKSkgewo+IC0JCQkJRFJN X0VSUk9SKCJCYWQgd3JpdGUgYXQgaXAgJWRcbiIsIGlwKTsKPiArCQkJCURSTV9ERUJVRygiQmFk IHdyaXRlIGF0IGlwICVkXG4iLCBpcCk7Cj4gIAkJCQlnb3RvIGZhaWw7Cj4gIAkJCX0KPiAgCj4g QEAgLTg1NSw3ICs4NTUsNyBAQCB2YzRfdmFsaWRhdGVfc2hhZGVyKHN0cnVjdCBkcm1fZ2VtX2Nt YV9vYmplY3QgKnNoYWRlcl9vYmopCj4gIAkJCQl2YWxpZGF0ZWRfc2hhZGVyLT5pc190aHJlYWRl ZCA9IHRydWU7Cj4gIAo+ICAJCQkJaWYgKGlwIDwgbGFzdF90aHJlYWRfc3dpdGNoX2lwICsgMykg ewo+IC0JCQkJCURSTV9FUlJPUigiVGhyZWFkIHN3aXRjaCB0b28gc29vbiBhZnRlciAiCj4gKwkJ CQkJRFJNX0RFQlVHKCJUaHJlYWQgc3dpdGNoIHRvbyBzb29uIGFmdGVyICIKPiAgCQkJCQkJICAi bGFzdCBzd2l0Y2ggYXQgaXAgJWRcbiIsIGlwKTsKPiAgCQkJCQlnb3RvIGZhaWw7Cj4gIAkJCQl9 Cj4gQEAgLTg2Nyw3ICs4NjcsNyBAQCB2YzRfdmFsaWRhdGVfc2hhZGVyKHN0cnVjdCBkcm1fZ2Vt X2NtYV9vYmplY3QgKnNoYWRlcl9vYmopCj4gIAkJY2FzZSBRUFVfU0lHX0xPQURfSU1NOgo+ICAJ CQlpZiAoIWNoZWNrX2luc3RydWN0aW9uX3dyaXRlcyh2YWxpZGF0ZWRfc2hhZGVyLAo+ICAJCQkJ CQkgICAgICAmdmFsaWRhdGlvbl9zdGF0ZSkpIHsKPiAtCQkJCURSTV9FUlJPUigiQmFkIExPQURf SU1NIHdyaXRlIGF0IGlwICVkXG4iLCBpcCk7Cj4gKwkJCQlEUk1fREVCVUcoIkJhZCBMT0FEX0lN TSB3cml0ZSBhdCBpcCAlZFxuIiwgaXApOwo+ICAJCQkJZ290byBmYWlsOwo+ICAJCQl9Cj4gIAkJ CWJyZWFrOwo+IEBAIC04NzgsMTQgKzg3OCwxNCBAQCB2YzRfdmFsaWRhdGVfc2hhZGVyKHN0cnVj dCBkcm1fZ2VtX2NtYV9vYmplY3QgKnNoYWRlcl9vYmopCj4gIAkJCQlnb3RvIGZhaWw7Cj4gIAo+ ICAJCQlpZiAoaXAgPCBsYXN0X3RocmVhZF9zd2l0Y2hfaXAgKyAzKSB7Cj4gLQkJCQlEUk1fRVJS T1IoIkJyYW5jaCBpbiB0aHJlYWQgc3dpdGNoIGF0IGlwICVkIiwKPiArCQkJCURSTV9ERUJVRygi QnJhbmNoIGluIHRocmVhZCBzd2l0Y2ggYXQgaXAgJWQiLAo+ICAJCQkJCSAgaXApOwo+ICAJCQkJ Z290byBmYWlsOwo+ICAJCQl9Cj4gIAo+ICAJCQlicmVhazsKPiAgCQlkZWZhdWx0Ogo+IC0JCQlE Uk1fRVJST1IoIlVuc3VwcG9ydGVkIFFQVSBzaWduYWwgJWQgYXQgIgo+ICsJCQlEUk1fREVCVUco IlVuc3VwcG9ydGVkIFFQVSBzaWduYWwgJWQgYXQgIgo+ICAJCQkJICAiaW5zdHJ1Y3Rpb24gJWRc biIsIHNpZywgaXApOwo+ICAJCQlnb3RvIGZhaWw7Cj4gIAkJfQo+IEBAIC04OTgsNyArODk4LDcg QEAgdmM0X3ZhbGlkYXRlX3NoYWRlcihzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpzaGFkZXJf b2JqKQo+ICAJfQo+ICAKPiAgCWlmIChpcCA9PSB2YWxpZGF0aW9uX3N0YXRlLm1heF9pcCkgewo+ IC0JCURSTV9FUlJPUigic2hhZGVyIGZhaWxlZCB0byB0ZXJtaW5hdGUgYmVmb3JlICIKPiArCQlE Uk1fREVCVUcoInNoYWRlciBmYWlsZWQgdG8gdGVybWluYXRlIGJlZm9yZSAiCj4gIAkJCSAgInNo YWRlciBCTyBlbmQgYXQgJXpkXG4iLAo+ICAJCQkgIHNoYWRlcl9vYmotPmJhc2Uuc2l6ZSk7Cj4g IAkJZ290byBmYWlsOwo+IEBAIC05MDcsNyArOTA3LDcgQEAgdmM0X3ZhbGlkYXRlX3NoYWRlcihz dHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpzaGFkZXJfb2JqKQo+ICAJLyogTWlnaHQgY29ycnVw dCBvdGhlciB0aHJlYWQgKi8KPiAgCWlmICh2YWxpZGF0ZWRfc2hhZGVyLT5pc190aHJlYWRlZCAm Jgo+ICAJICAgIHZhbGlkYXRpb25fc3RhdGUuYWxsX3JlZ2lzdGVyc191c2VkKSB7Cj4gLQkJRFJN X0VSUk9SKCJTaGFkZXIgdXNlcyB0aHJlYWRpbmcsIGJ1dCB1c2VzIHRoZSB1cHBlciAiCj4gKwkJ RFJNX0RFQlVHKCJTaGFkZXIgdXNlcyB0aHJlYWRpbmcsIGJ1dCB1c2VzIHRoZSB1cHBlciAiCj4g IAkJCSAgImhhbGYgb2YgdGhlIHJlZ2lzdGVycywgdG9vXG4iKTsKPiAgCQlnb3RvIGZhaWw7Cj4g IAl9CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK