From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 05/10] drm/i915: Propagating correct error codes to the userspace Date: Tue, 22 Dec 2015 11:20:07 +0000 Message-ID: <567931E7.9010001@linux.intel.com> References: <1450765253-32104-1-git-send-email-ankitprasad.r.sharma@intel.com> <1450765253-32104-6-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id CE1C26E079 for ; Tue, 22 Dec 2015 03:20:09 -0800 (PST) In-Reply-To: <1450765253-32104-6-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzEyLzE1IDA2OjIwLCBhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20gd3JvdGU6 Cj4gRnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5j b20+Cj4KPiBQcm9wYWdhdGluZyBjb3JyZWN0IGVycm9yIGNvZGVzIHRvIHVzZXJzcGFjZSBieSB1 c2luZyBFUlJfUFRSIGFuZAo+IFBUUl9FUlIgbWFjcm9zIGZvciBzdG9sZW4gbWVtb3J5IGJhc2Vk IG9iamVjdCBhbGxvY2F0aW9uLiBXZSBnZW5lcmFsbHkKPiByZXR1cm4gLUVOT01FTSB0byB0aGUg dXNlciB3aGVuZXZlciB0aGVyZSBpcyBhIGZhaWx1cmUgaW4gb2JqZWN0Cj4gYWxsb2NhdGlvbi4g VGhpcyBwYXRjaCBoZWxwcyB1c2VyIHRvIGlkZW50aWZ5IHRoZSBjb3JyZWN0IHJlYXNvbiBmb3Ig dGhlCj4gZmFpbHVyZSBhbmQgbm90IGp1c3QgLUVOT01FTSBlYWNoIHRpbWUuCj4KPiB2MjogTW92 ZWQgdGhlIHBhdGNoIHVwIGluIHRoZSBzZXJpZXMsIGFkZGVkIGVycm9yIHByb3BhZ2F0aW9uIGZv cgo+IGk5MTVfZ2VtX2FsbG9jX29iamVjdCB0b28gKENocmlzKQo+Cj4gdjM6IFJlbW92ZWQgc3Rv cmluZyBvZiBlcnJvciBwb2ludGVyIGluc2lkZSBzdHJ1Y3RzLCBDb3JyZWN0ZWQgZXJyb3IKPiBw cm9wYWdhdGlvbiBpbiBjYWxsZXIgZnVuY3Rpb25zIChDaHJpcykKPgo+IHY0OiBSZW1vdmUgYXNz aWdubWVudHMgaW5zaWRlIHRoZSBwcmVkaWNhdGUgKENocmlzKQo+Cj4gdjU6IFJlbW92ZWQgdW5u ZWNlc3NhcnkgaW5pdGlhbGl6YXRpb25zLCB1cGRhdGVkIGtlcm5lbGRvYyBmb3IKPiBpOTE1X2d1 Y19jbGllbnQsIGNvcnJlY3RlZCBtaXNzZWQgZXJyb3IgcG9pbnRlciBoYW5kbGluZyAoVHZydGtv KQo+Cj4gdjY6IFVzZSBFUlJfQ0FTVC90ZW1wb3JhcnkgdmFyaWFibGUgdG8gYXZvaWQgc3Rvcmlu ZyBpbnZhbGlkIHBvaW50ZXIKPiBpbiBhIGNvbW1vbiBmaWVsZCAoQ2hyaXMpCj4KPiBTaWduZWQt b2ZmLWJ5OiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNv bT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAg IHwgMTYgKysrKystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9w b29sLmMgICB8ICA0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jICAgICAgfCAgNCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRl cl9zdGF0ZS5jIHwgIDcgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3Rv bGVuLmMgICAgICAgfCA1MyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgICB8IDUyICsrKysrKysrKysrKysr KysrLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAg ICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgICAg ICAgICAgfCAgNiArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgICAgICB8IDEwICsrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jICAgICAgICAgfCAgNCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg ICAgICAgICAgICAgIHwgIDcgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jICAgICAgfCAyMSArKysrKy0tLS0tLQo+ICAgMTIgZmlsZXMgY2hhbmdlZCwgMTA2 IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggY2Q3ZjBhZS4uMzFkNjZlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC00MTAsOSArNDEwLDkgQEAgaTkxNV9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmls ZSwKPiAgIAlpZiAoZmxhZ3MgJiBJOTE1X0NSRUFURV9QTEFDRU1FTlRfU1RPTEVOKSB7Cj4gICAJ CW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAkJb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBzaXplKTsKPiAtCQlpZiAoIW9iaikgewo+ICsJCWlmIChJ U19FUlIob2JqKSkgewo+ICAgCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQkJCXJldHVybiAtRU5PTUVNOwo+ICsJCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICAgCQl9Cj4K PiAgIAkJLyogQWx3YXlzIGNsZWFyIGZyZXNoIGJ1ZmZlcnMgYmVmb3JlIGhhbmRpbmcgdG8gdXNl cnNwYWNlICovCj4gQEAgLTQyOCw4ICs0MjgsOCBAQCBpOTE1X2dlbV9jcmVhdGUoc3RydWN0IGRy bV9maWxlICpmaWxlLAo+ICAgCQlvYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBzaXpl KTsKPiAgIAl9Cj4KPiAtCWlmIChvYmogPT0gTlVMTCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAr CWlmIChJU19FUlIob2JqKSkKPiArCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+Cj4gICAJcmV0ID0g ZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsICZvYmotPmJhc2UsICZoYW5kbGUpOwo+ICAgCS8q IGRyb3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCj4g QEAgLTQ0NTksMTQgKzQ0NTksMTYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVf Z2VtX2FsbG9jX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7 Cj4gICAJZ2ZwX3QgbWFzazsKPiArCWludCByZXQ7Cj4KPiAgIAlvYmogPSBpOTE1X2dlbV9vYmpl Y3RfYWxsb2MoZGV2KTsKPiAgIAlpZiAob2JqID09IE5VTEwpCj4gLQkJcmV0dXJuIE5VTEw7Cj4g KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAtCWlmIChkcm1fZ2VtX29iamVjdF9pbml0 KGRldiwgJm9iai0+YmFzZSwgc2l6ZSkgIT0gMCkgewo+ICsJcmV0ID0gZHJtX2dlbV9vYmplY3Rf aW5pdChkZXYsICZvYmotPmJhc2UsIHNpemUpOwo+ICsJaWYgKHJldCkgewo+ICAgCQlpOTE1X2dl bV9vYmplY3RfZnJlZShvYmopOwo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gICAJfQo+Cj4gICAJbWFzayA9IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1B QkxFOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9w b29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPiBpbmRl eCA3YmYyZjNmLi5kNzljYWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2JhdGNoX3Bvb2wuYwo+IEBAIC0xMzUsOCArMTM1LDggQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9n ZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gICAJCWludCByZXQ7Cj4KPiAg IAkJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHBvb2wtPmRldiwgc2l6ZSk7Cj4gLQkJaWYg KG9iaiA9PSBOVUxMKQo+IC0JCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCQlpZiAoSVNf RVJSKG9iaikpCj4gKwkJCXJldHVybiBvYmo7Cj4KPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlcyhvYmopOwo+ICAgCQlpZiAocmV0KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKPiBpbmRleCA0Mzc2MWM1Li45NzU0ODk0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xNzksOCArMTc5LDggQEAgaTkxNV9n ZW1fYWxsb2NfY29udGV4dF9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUp Cj4gICAJaW50IHJldDsKPgo+ICAgCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIHNp emUpOwo+IC0JaWYgKG9iaiA9PSBOVUxMKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ ICsJaWYgKElTX0VSUihvYmopKQo+ICsJCXJldHVybiBvYmo7Cj4KPiAgIAkvKgo+ICAgCSAqIFRy eSB0byBtYWtlIHRoZSBjb250ZXh0IHV0aWxpemUgTDMgYXMgd2VsbCBhcyBMTEMuCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiBpbmRleCA1MDI2YTYy Li4yYmZkZDQ5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMKPiBAQCAtNTgsOCArNTgsMTEgQEAgc3RhdGljIGludCByZW5kZXJfc3RhdGVfaW5p dChzdHJ1Y3QgcmVuZGVyX3N0YXRlICpzbywgc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJ cmV0dXJuIC1FSU5WQUw7Cj4KPiAgIAlzby0+b2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRl diwgNDA5Nik7Cj4gLQlpZiAoc28tPm9iaiA9PSBOVUxMKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ ICsJaWYgKElTX0VSUihzby0+b2JqKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoc28tPm9iaik7Cj4g KwkJc28tPm9iaiA9IE5VTEw7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPgo+ICAgCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3Bpbihzby0+b2JqLCA0MDk2LCAwKTsKPiAgIAlpZiAocmV0KQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggMTdkNjc5ZS4uODY5YmEy NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTQ5Miw2 ICs0OTIsNyBAQCBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAgIAlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICAgCXN0cnVjdCBzY2F0dGVybGlz dCAqc2c7Cj4gKwlpbnQgcmV0Owo+Cj4gICAJRFJNX0RFQlVHX0RSSVZFUigib2Zmc2V0PTB4JXgs IHNpemU9JWRcbiIsIG9mZnNldCwgc2l6ZSk7Cj4gICAJQlVHX09OKG9mZnNldCA+IGRldl9wcml2 LT5ndHQuc3RvbGVuX3NpemUgLSBzaXplKTsKPiBAQCAtNTAzLDExICs1MDQsMTIgQEAgaTkxNV9w YWdlc19jcmVhdGVfZm9yX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICAJc3Qg PSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoc3QgPT0gTlVMTCkK PiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPgo+IC0JaWYg KHNnX2FsbG9jX3RhYmxlKHN0LCAxLCBHRlBfS0VSTkVMKSkgewo+ICsJcmV0ID0gc2dfYWxsb2Nf dGFibGUoc3QsIDEsIEdGUF9LRVJORUwpOwo+ICsJaWYgKHJldCkgewo+ICAgCQlrZnJlZShzdCk7 Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgIAl9Cj4KPiAg IAlzZyA9IHN0LT5zZ2w7Cj4gQEAgLTU1NiwxOCArNTU4LDIzIEBAIF9pOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJICAgICAgIHN0cnVj dCBkcm1fbW1fbm9kZSAqc3RvbGVuKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+Cj4gICAJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2FsbG9jKGRldik7Cj4gICAJaWYgKG9iaiA9PSBOVUxMKQo+IC0JCXJldHVybiBO VUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Cj4gICAJZHJtX2dlbV9wcml2YXRl X29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKPiAgIAlpOTE1X2dl bV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7Cj4KPiAtCW9i ai0+cGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKGRldiwKPiAtCQkJCQkJICBz dG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUpOwo+IC0JaWYgKG9iai0+cGFnZXMgPT0gTlVMTCkK PiAtCQlnb3RvIGNsZWFudXA7Cj4gKwlwYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9s ZW4oZGV2LAo+ICsJCQkJCSAgICAgc3RvbGVuLT5zdGFydCwgc3RvbGVuLT5zaXplKTsKPiArCWlm IChJU19FUlIocGFnZXMpKSB7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKPiArCQly ZXR1cm4gRVJSX0NBU1QocGFnZXMpOwo+ICsJfQo+ICsKPiArCW9iai0+cGFnZXMgPSBwYWdlczsK Pgo+ICAgCW9iai0+Z2V0X3BhZ2Uuc2cgPSBvYmotPnBhZ2VzLT5zZ2w7Cj4gICAJb2JqLT5nZXRf cGFnZS5sYXN0ID0gMDsKPiBAQCAtNTc5LDEwICs1ODYsNiBAQCBfaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlvYmotPmNhY2hlX2xldmVs ID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1X0NBQ0hFX05PTkU7Cj4KPiAg IAlyZXR1cm4gb2JqOwo+IC0KPiAtY2xlYW51cDoKPiAtCWk5MTVfZ2VtX29iamVjdF9mcmVlKG9i aik7Cj4gLQlyZXR1cm4gTlVMTDsKPiAgIH0KPgo+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKgo+IEBAIC01OTQsMjkgKzU5NywyOSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKPiAgIAlpbnQgcmV0Owo+Cj4gICAJ aWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQo+IC0JCXJldHVy biBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+Cj4gICAJRFJNX0RFQlVHX0tN UygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKPiAgIAlpZiAo c2l6ZSA9PSAwKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp Owo+Cj4gICAJc3RvbGVuID0ga3phbGxvYyhzaXplb2YoKnN0b2xlbiksIEdGUF9LRVJORUwpOwo+ ICAgCWlmICghc3RvbGVuKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+Cj4gICAJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2 LCBzdG9sZW4sIHNpemUsIDQwOTYpOwo+ICAgCWlmIChyZXQpIHsKPiAgIAkJa2ZyZWUoc3RvbGVu KTsKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCX0KPgo+ ICAgCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7Cj4g LQlpZiAob2JqKQo+ICsJaWYgKCFJU19FUlIob2JqKSkKPiAgIAkJcmV0dXJuIG9iajsKPgo+ICAg CWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKPiAgIAlrZnJl ZShzdG9sZW4pOwo+IC0JcmV0dXJuIE5VTEw7Cj4gKwlyZXR1cm4gb2JqOwo+ICAgfQo+Cj4gICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gQEAgLTYzMyw3ICs2MzYsNyBAQCBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gICAJaW50IHJldDsKPgo+ICAgCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZf cHJpdi0+bW0uc3RvbGVuKSkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BUUigt RU5PREVWKTsKPgo+ICAgCURSTV9ERUJVR19LTVMoImNyZWF0aW5nIHByZWFsbG9jYXRlZCBzdG9s ZW4gb2JqZWN0OiBzdG9sZW5fb2Zmc2V0PSV4LCBndHRfb2Zmc2V0PSV4LCBzaXplPSV4XG4iLAo+ ICAgCQkJc3RvbGVuX29mZnNldCwgZ3R0X29mZnNldCwgc2l6ZSk7Cj4gQEAgLTY0MSwxMSArNjQ0 LDExIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkvKiBLSVNTIGFuZCBleHBlY3QgZXZlcnl0aGluZyB0 byBiZSBwYWdlLWFsaWduZWQgKi8KPiAgIAlpZiAoV0FSTl9PTihzaXplID09IDApIHx8IFdBUk5f T04oc2l6ZSAmIDQwOTUpIHx8Cj4gICAJICAgIFdBUk5fT04oc3RvbGVuX29mZnNldCAmIDQwOTUp KQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+Cj4gICAJ c3RvbGVuID0ga3phbGxvYyhzaXplb2YoKnN0b2xlbiksIEdGUF9LRVJORUwpOwo+ICAgCWlmICgh c3RvbGVuKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ Cj4gICAJc3RvbGVuLT5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7Cj4gICAJc3RvbGVuLT5zaXplID0g c2l6ZTsKPiBAQCAtNjU1LDE1ICs2NTgsMTUgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWlmIChyZXQp IHsKPiAgIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBzcGFjZVxu Iik7Cj4gICAJCWtmcmVlKHN0b2xlbik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKPiAgIAl9Cj4KPiAgIAlvYmogPSBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oZGV2LCBzdG9sZW4pOwo+IC0JaWYgKG9iaiA9PSBOVUxMKSB7Cj4gKwlpZiAoSVNfRVJS KG9iaikpIHsKPiAgIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBv YmplY3RcbiIpOwo+ICAgCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0 b2xlbik7Cj4gICAJCWtmcmVlKHN0b2xlbik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJu IG9iajsKPiAgIAl9Cj4KPiAgIAkvKiBTb21lIG9iamVjdHMganVzdCBuZWVkIHBoeXNpY2FsIG1l bSBmcm9tIHN0b2xlbiBzcGFjZSAqLwo+IEBAIC03MDEsNSArNzA0LDUgQEAgaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+Cj4gICBlcnI6Cj4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7 Cj4gLQlyZXR1cm4gTlVMTDsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gICB9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDBkMjM3ODViLi5h YzA0MmM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u Ywo+IEBAIC02MjksMjcgKzYyOSwzMCBAQCBpbnQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBpOTE1 X2d1Y19jbGllbnQgKmNsaWVudCwKPiAgICAqIG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQgbGlm ZXRpbWUuIEFsc28gd2UgbXVzdCBwaW4gaXQgdG8gZ3R0IHNwYWNlIG90aGVyCj4gICAgKiB0aGFu IFswLCBHVUNfV09QQ01fVE9QKSBiZWNhdXNlIHRoaXMgcmFuZ2UgaXMgcmVzZXJ2ZWQgaW5zaWRl IEd1Qy4KPiAgICAqCj4gLSAqIFJldHVybjoJQSBkcm1faTkxNV9nZW1fb2JqZWN0IGlmIHN1Y2Nl c3NmdWwsIG90aGVyd2lzZSBOVUxMLgo+ICsgKiBSZXR1cm46CUEgZHJtX2k5MTVfZ2VtX29iamVj dCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgZXJyb3IgcG9pbnRlci4KPiAgICAqLwo+ICAgc3Rh dGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpnZW1fYWxsb2NhdGVfZ3VjX29iaihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCQkJCXUzMiBzaXplKQo+ICAgewo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCWludCByZXQ7Cj4KPiAgIAlvYmogPSBp OTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBzaXplKTsKPiAtCWlmICghb2JqKQo+IC0JCXJldHVy biBOVUxMOwo+ICsJaWYgKElTX0VSUihvYmopKQo+ICsJCXJldHVybiBvYmo7Cj4KPiAtCWlmIChp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaikpIHsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXMob2JqKTsKPiArCWlmIChyZXQpIHsKPiAgIAkJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiAgIAl9Cj4KPiAtCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCBQQUdF X1NJWkUsCj4gLQkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApKSB7Cj4gKwlyZXQg PSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCBQQUdFX1NJWkUsCj4gKwkJCQkgICAgUElOX09G RlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7Cj4gKwlpZiAocmV0KSB7Cj4gICAJCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJl dHVybiBFUlJfUFRSKHJldCk7Cj4gICAJfQo+Cj4gICAJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRv IGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAqLwo+IEBAIC03MTcsNyAr NzIwLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gICAgKiBAY3R4Ogl0aGUgY29udGV4dCB0aGF0IG93bnMgdGhlIGNsaWVudCAod2UgdXNl IHRoZSBkZWZhdWx0IHJlbmRlcgo+ICAgICogCQljb250ZXh0KQo+ICAgICoKPiAtICogUmV0dXJu OglBbiBpOTE1X2d1Y19jbGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MuCj4gKyAqIFJldHVybjoJQW4g aTkxNV9ndWNfY2xpZW50IG9iamVjdCBpZiBzdWNjZXNzLCBlcnJvciBwb2ludGVyIG9uIGZhaWx1 cmUuCj4gICAgKi8KPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNfY2xpZW50 X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJCQl1aW50MzJfdCBwcmlvcml0 eSwKPiBAQCAtNzI3LDEwICs3MzAsMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQg Kmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBp bnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7Cj4gKwlpbnQgcmV0Owo+Cj4gICAJY2xpZW50ID0ga3phbGxvYyhzaXplb2Yo KmNsaWVudCksIEdGUF9LRVJORUwpOwo+ICAgCWlmICghY2xpZW50KQo+IC0JCXJldHVybiBOVUxM Owo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Cj4gICAJY2xpZW50LT5kb29yYmVsbF9p ZCA9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEOwo+ICAgCWNsaWVudC0+cHJpb3JpdHkgPSBwcmlv cml0eTsKPiBAQCAtNzQxLDEzICs3NDUsMTYgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGll bnQgKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCUdVQ19N QVhfR1BVX0NPTlRFWFRTLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoY2xpZW50LT5jdHhfaW5kZXgg Pj0gR1VDX01BWF9HUFVfQ09OVEVYVFMpIHsKPiAgIAkJY2xpZW50LT5jdHhfaW5kZXggPSBHVUNf SU5WQUxJRF9DVFhfSUQ7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiAgIAkJZ290byBlcnI7Cj4gICAJ fQo+Cj4gICAJLyogVGhlIGZpcnN0IHBhZ2UgaXMgZG9vcmJlbGwvcHJvY19kZXNjLiBUd28gZm9s bG93ZWQgcGFnZXMgYXJlIHdxLiAqLwo+ICAgCW9iaiA9IGdlbV9hbGxvY2F0ZV9ndWNfb2JqKGRl diwgR1VDX0RCX1NJWkUgKyBHVUNfV1FfU0laRSk7Cj4gLQlpZiAoIW9iaikKPiArCWlmIChJU19F UlIob2JqKSkgewo+ICsJCXJldCA9IFBUUl9FUlIob2JqKTsKPiAgIAkJZ290byBlcnI7Cj4gKwl9 Cj4KPiAgIAljbGllbnQtPmNsaWVudF9vYmogPSBvYmo7Cj4gICAJY2xpZW50LT53cV9vZmZzZXQg PSBHVUNfREJfU0laRTsKPiBAQCAtNzY2LDkgKzc3MywxMSBAQCBzdGF0aWMgc3RydWN0IGk5MTVf Z3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAg CQljbGllbnQtPnByb2NfZGVzY19vZmZzZXQgPSAoR1VDX0RCX1NJWkUgLyAyKTsKPgo+ICAgCWNs aWVudC0+ZG9vcmJlbGxfaWQgPSBhc3NpZ25fZG9vcmJlbGwoZ3VjLCBjbGllbnQtPnByaW9yaXR5 KTsKPiAtCWlmIChjbGllbnQtPmRvb3JiZWxsX2lkID09IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lE KQo+ICsJaWYgKGNsaWVudC0+ZG9vcmJlbGxfaWQgPT0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQp IHsKPiAgIAkJLyogWFhYOiBldmljdCBhIGRvb3JiZWxsIGluc3RlYWQgKi8KPiArCQlyZXQgPSAt RUlOVkFMOwo+ICAgCQlnb3RvIGVycjsKPiArCX0KPgo+ICAgCWd1Y19pbml0X3Byb2NfZGVzYyhn dWMsIGNsaWVudCk7Cj4gICAJZ3VjX2luaXRfY3R4X2Rlc2MoZ3VjLCBjbGllbnQpOwo+IEBAIC03 NzYsNyArNzg1LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRf YWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPgo+ICAgCS8qIFhYWDogQW55IGNhY2hlIGZs dXNoZXMgbmVlZGVkPyBHZW5lcmFsIGRvbWFpbiBtZ210IGNhbGxzPyAqLwo+Cj4gLQlpZiAoaG9z dDJndWNfYWxsb2NhdGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpKQo+ICsJcmV0ID0gaG9zdDJndWNf YWxsb2NhdGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOwo+ICsJaWYgKHJldCkKPiAgIAkJZ290byBl cnI7Cj4KPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJuZXcgcHJpb3JpdHkgJXUgY2xpZW50ICVwOiBj dHhfaW5kZXggJXUgZGJfaWQgJXVcbiIsCj4gQEAgLTc4OCw3ICs3OTgsNyBAQCBlcnI6Cj4gICAJ RFJNX0VSUk9SKCJGQUlMRUQgdG8gY3JlYXRlIHByaW9yaXR5ICV1IEd1QyBjbGllbnQhXG4iLCBw cmlvcml0eSk7Cj4KPiAgIAlndWNfY2xpZW50X2ZyZWUoZGV2LCBjbGllbnQpOwo+IC0JcmV0dXJu IE5VTEw7Cj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZCBn dWNfY3JlYXRlX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gQEAgLTgxMyw3ICs4MjMsNyBA QCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJ b2JqID0gZ3VjLT5sb2dfb2JqOwo+ICAgCWlmICghb2JqKSB7Cj4gICAJCW9iaiA9IGdlbV9hbGxv Y2F0ZV9ndWNfb2JqKGRldl9wcml2LT5kZXYsIHNpemUpOwo+IC0JCWlmICghb2JqKSB7Cj4gKwkJ aWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQkvKiBsb2dnaW5nIHdpbGwgYmUgb2ZmICovCj4gICAJ CQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiAgIAkJCXJldHVybjsKPiBAQCAtODQzLDYgKzg1 Myw3IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAljb25zdCBzaXplX3QgcG9vbHNpemUgPSBHVUNfTUFYX0dQVV9DT05URVhUUyAqIGN0 eHNpemU7Cj4gICAJY29uc3Qgc2l6ZV90IGdlbXNpemUgPSByb3VuZF91cChwb29sc2l6ZSwgUEFH RV9TSVpFKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKPiAr CWludCByZXQ7Cj4KPiAgIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ICAgCQly ZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCj4gQEAgLTg1MSw4ICs4NjIsMTEgQEAgaW50IGk5 MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQlyZXR1 cm4gMDsgLyogYWxyZWFkeSBhbGxvY2F0ZWQgKi8KPgo+ICAgCWd1Yy0+Y3R4X3Bvb2xfb2JqID0g Z2VtX2FsbG9jYXRlX2d1Y19vYmooZGV2X3ByaXYtPmRldiwgZ2Vtc2l6ZSk7Cj4gLQlpZiAoIWd1 Yy0+Y3R4X3Bvb2xfb2JqKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKElTX0VSUihndWMt PmN0eF9wb29sX29iaikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGd1Yy0+Y3R4X3Bvb2xfb2JqKTsK PiArCQlndWMtPmN0eF9wb29sX29iaiA9IE5VTEw7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPgo+ ICAgCWlkYV9pbml0KCZndWMtPmN0eF9pZHMpOwo+Cj4gQEAgLTg3MCw5ICs4ODQsOSBAQCBpbnQg aTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAg CS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJtaXNzaW9uICovCj4gICAJY2xpZW50ID0gZ3VjX2Ns aWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfS01EX05PUk1BTCwgY3R4KTsKPiAtCWlm ICghY2xpZW50KSB7Cj4gKwlpZiAoSVNfRVJSKGNsaWVudCkpIHsKPiAgIAkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gY3JlYXRlIGV4ZWNidWYgZ3VjX2NsaWVudFxuIik7Cj4gLQkJcmV0dXJuIC1FTk9N RU07Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY2xpZW50KTsKPiAgIAl9Cj4KPiAgIAlndWMtPmV4ZWNi dWZfY2xpZW50ID0gY2xpZW50Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBp bmRleCBkZDBlOTY2Li4wMDZkNDNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IEBAIC0yNTQzLDcgKzI1NDMsNyBAQCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29i aihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgIAkJCQkJCQkgICAgIGJhc2VfYWxpZ25lZCwK PiAgIAkJCQkJCQkgICAgIGJhc2VfYWxpZ25lZCwKPiAgIAkJCQkJCQkgICAgIHNpemVfYWxpZ25l ZCk7Cj4gLQlpZiAoIW9iaikKPiArCWlmIChJU19FUlIob2JqKSkKPiAgIAkJcmV0dXJuIGZhbHNl Owo+Cj4gICAJb2JqLT50aWxpbmdfbW9kZSA9IHBsYW5lX2NvbmZpZy0+dGlsaW5nOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IDdjY2RlNTguLmIyZjEzNGEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiBAQCAtMTQ4LDExICsxNDgsMTEgQEAgc3RhdGlj IGludCBpbnRlbGZiX2FsbG9jKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4gICAJICog ZmVhdHVyZXMuICovCj4gICAJaWYgKHNpemUgKiAyIDwgZGV2X3ByaXYtPmd0dC5zdG9sZW5fdXNh YmxlX3NpemUpCj4gICAJCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwg c2l6ZSk7Cj4gLQlpZiAob2JqID09IE5VTEwpCj4gKwlpZiAoSVNfRVJSX09SX05VTEwob2JqKSkK PiAgIAkJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc2l6ZSk7Cj4gLQlpZiAoIW9i aikgewo+ICsJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFs bG9jYXRlIGZyYW1lYnVmZmVyXG4iKTsKPiAtCQlyZXQgPSAtRU5PTUVNOwo+ICsJCXJldCA9IFBU Ul9FUlIob2JqKTsKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBpbmRleCA0ZWJhZmFiLi41Y2E0YzA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBAQCAtMTM3MSw5ICsxMzcxLDExIEBAIHN0YXRpYyBpbnQgbHJjX3NldHVwX3dhX2N0 eF9vYmooc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNpemUpCj4gICAJaW50IHJl dDsKPgo+ICAgCXJpbmctPndhX2N0eC5vYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QocmluZy0+ ZGV2LCBQQUdFX0FMSUdOKHNpemUpKTsKPiAtCWlmICghcmluZy0+d2FfY3R4Lm9iaikgewo+ICsJ aWYgKElTX0VSUihyaW5nLT53YV9jdHgub2JqKSkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJh bGxvYyBMUkMgV0EgY3R4IGJhY2tpbmcgb2JqIGZhaWxlZC5cbiIpOwo+IC0JCXJldHVybiAtRU5P TUVNOwo+ICsJCXJldCA9IFBUUl9FUlIocmluZy0+d2FfY3R4Lm9iaik7Cj4gKwkJcmluZy0+d2Ff Y3R4Lm9iaiA9IE5VTEw7Cj4gKwkJcmV0dXJuIHJldDsKPiAgIAl9Cj4KPiAgIAlyZXQgPSBpOTE1 X2dlbV9vYmpfZ2d0dF9waW4ocmluZy0+d2FfY3R4Lm9iaiwgUEFHRV9TSVpFLCAwKTsKPiBAQCAt MjQ1Niw5ICsyNDU4LDkgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICog TFJDX1BQSFdTUF9QTjsKPgo+ICAgCWN0eF9vYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2 LCBjb250ZXh0X3NpemUpOwo+IC0JaWYgKCFjdHhfb2JqKSB7Cj4gKwlpZiAoSVNfRVJSKGN0eF9v YmopKSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWls ZWQuXG4iKTsKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gUFRSX0VSUihjdHhfb2Jq KTsKPiAgIAl9Cj4KPiAgIAlyaW5nYnVmID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nYnVmZmVy KHJpbmcsIDQgKiBQQUdFX1NJWkUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMK PiBpbmRleCA3NmYxOTgwLi4zYTY1ODU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYwo+IEBAIC0xMzkyLDkgKzEzOTIsOSBAQCB2b2lkIGludGVsX3NldHVwX292ZXJsYXko c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlyZWdfYm8gPSBOVUxMOwo+ICAgCWlmICghT1ZF UkxBWV9ORUVEU19QSFlTSUNBTChkZXYpKQo+ICAgCQlyZWdfYm8gPSBpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3N0b2xlbihkZXYsIFBBR0VfU0laRSk7Cj4gLQlpZiAocmVnX2JvID09IE5VTEwpCj4g KwlpZiAoSVNfRVJSX09SX05VTEwocmVnX2JvKSkKPiAgIAkJcmVnX2JvID0gaTkxNV9nZW1fYWxs b2Nfb2JqZWN0KGRldiwgUEFHRV9TSVpFKTsKPiAtCWlmIChyZWdfYm8gPT0gTlVMTCkKPiArCWlm IChJU19FUlIocmVnX2JvKSkKPiAgIAkJZ290byBvdXRfZnJlZTsKPiAgIAlvdmVybGF5LT5yZWdf Ym8gPSByZWdfYm87Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA5OTY4YzY2Li4w YWZiODE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTUxNzQsMTAgKzUxNzQs MTEgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAJCQkJCQkJCSAgICAgIHBjYnJfb2Zmc2V0LAo+ICAgCQkJCQkJCQkgICAgICBJ OTE1X0dUVF9PRkZTRVRfTk9ORSwKPiAgIAkJCQkJCQkJICAgICAgcGN0eF9zaXplKTsKPiAtCQln b3RvIG91dDsKPiArCQlpZiAoIUlTX0VSUihwY3R4KSkKPiArCQkJZ290byBvdXQ7CgpUaGlzIGlz IGEgY2hhbmdlIGluIGJlaGF2aW91ciwgaXMgaXQgT0sgaW4gdGhpcyBwYXRjaCBvciBuZWVkcyB0 byBiZSAKc3BsaXQgb3V0PwoKUHJldmlvdXNseSBpZiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbl9mb3JfcHJlYWxsb2NhdGVkIGZhaWxlZCBpdCAKd291bGQgbGVhdmUgaXQgYXQgdGhhdC4g Tm93IGl0IHRyaWVzIGEgZmFsbGJhY2sgcGF0aC4KCj4gICAJfQo+Cj4gLQlEUk1fREVCVUdfRFJJ VkVSKCJCSU9TIGRpZG4ndCBzZXQgdXAgUENCUiwgZml4aW5nIHVwXG4iKTsKPiArCURSTV9ERUJV R19EUklWRVIoIkJJT1MgZGlkbid0IHNldCB1cCBQQ0JSIG9yIHByZWFsbG9jIGZhaWxlZCwgZml4 aW5nIHVwXG4iKTsKPgo+ICAgCS8qCj4gICAJICogRnJvbSB0aGUgR3VuaXQgcmVnaXN0ZXIgSEFT Ogo+IEBAIC01MTg4LDcgKzUxODksNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3Bj dHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkgKiBtZW1vcnksIG9yIGFueSBvdGhlciBy ZWxldmFudCByYW5nZXMuCj4gICAJICovCj4gICAJcGN0eCA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGVfc3RvbGVuKGRldiwgcGN0eF9zaXplKTsKPiAtCWlmICghcGN0eCkgewo+ICsJaWYgKElTX0VS UihwY3R4KSkgewo+ICAgCQlEUk1fREVCVUcoIm5vdCBlbm91Z2ggc3RvbGVuIHNwYWNlIGZvciBQ Q1RYLCBkaXNhYmxpbmdcbiIpOwo+ICAgCQlyZXR1cm47Cj4gICAJfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBlNTM1OWViLi41NmQ4Mzc1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC02NzksOSArNjc5LDEw IEBAIGludGVsX2luaXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Cj4gICAJV0FSTl9PTihyaW5nLT5zY3JhdGNoLm9iaik7Cj4KPiAgIAlyaW5nLT5zY3JhdGNoLm9i aiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChyaW5nLT5kZXYsIDQwOTYpOwo+IC0JaWYgKHJpbmct PnNjcmF0Y2gub2JqID09IE5VTEwpIHsKPiArCWlmIChJU19FUlIocmluZy0+c2NyYXRjaC5vYmop KSB7Cj4gICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNlcW5vIHBhZ2VcbiIpOwo+ IC0JCXJldCA9IC1FTk9NRU07Cj4gKwkJcmV0ID0gUFRSX0VSUihyaW5nLT5zY3JhdGNoLm9iaik7 Cj4gKwkJcmluZy0+c2NyYXRjaC5vYmogPSBOVUxMOwo+ICAgCQlnb3RvIGVycjsKPiAgIAl9Cj4K PiBAQCAtMTkzOSw5ICsxOTQwLDkgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJCWludCByZXQ7Cj4KPiAgIAkJb2JqID0gaTkx NV9nZW1fYWxsb2Nfb2JqZWN0KHJpbmctPmRldiwgNDA5Nik7Cj4gLQkJaWYgKG9iaiA9PSBOVUxM KSB7Cj4gKwkJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBh bGxvY2F0ZSBzdGF0dXMgcGFnZVxuIik7Cj4gLQkJCXJldHVybiAtRU5PTUVNOwo+ICsJCQlyZXR1 cm4gUFRSX0VSUihvYmopOwo+ICAgCQl9Cj4KPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF9jYWNoZV9sZXZlbChvYmosIEk5MTVfQ0FDSEVfTExDKTsKPiBAQCAtMjA4OCwxMCArMjA4OSwx MCBAQCBzdGF0aWMgaW50IGludGVsX2FsbG9jX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gICAJb2JqID0gTlVMTDsKPiAgIAlpZiAoIUhBU19MTEMoZGV2KSkKPiAgIAkJ b2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCByaW5nYnVmLT5zaXplKTsK PiAtCWlmIChvYmogPT0gTlVMTCkKPiArCWlmIChJU19FUlJfT1JfTlVMTChvYmopKQo+ICAgCQlv YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCByaW5nYnVmLT5zaXplKTsKPiAtCWlmIChv YmogPT0gTlVMTCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCWlmIChJU19FUlIob2JqKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihvYmopOwo+Cj4gICAJLyogbWFyayByaW5nIGJ1ZmZlcnMgYXMgcmVh ZC1vbmx5IGZyb20gR1BVIHNpZGUgYnkgZGVmYXVsdCAqLwo+ICAgCW9iai0+Z3Rfcm8gPSAxOwo+ IEBAIC0yNjgyLDcgKzI2ODMsNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OCkgewo+ICAgCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXYpKSB7Cj4gICAJCQlv YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCA0MDk2KTsKPiAtCQkJaWYgKG9iaiA9PSBO VUxMKSB7Cj4gKwkJCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQkJCURSTV9FUlJPUigiRmFpbGVk IHRvIGFsbG9jYXRlIHNlbWFwaG9yZSBiby4gRGlzYWJsaW5nIHNlbWFwaG9yZXNcbiIpOwo+ICAg CQkJCWk5MTUuc2VtYXBob3JlcyA9IDA7Cj4gICAJCQl9IGVsc2Ugewo+IEBAIC0yNzg5LDkgKzI3 OTAsOSBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAkvKiBXb3JrYXJvdW5kIGJhdGNoYnVmZmVyIHRvIGNvbWJhdCBDUyB0bGIg YnVnLiAqLwo+ICAgCWlmIChIQVNfQlJPS0VOX0NTX1RMQihkZXYpKSB7Cj4gICAJCW9iaiA9IGk5 MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIEk4MzBfV0FfU0laRSk7Cj4gLQkJaWYgKG9iaiA9PSBO VUxMKSB7Cj4gKwkJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBhbGxvY2F0ZSBiYXRjaCBib1xuIik7Cj4gLQkJCXJldHVybiAtRU5PTUVNOwo+ICsJCQlyZXR1 cm4gUFRSX0VSUihvYmopOwo+ICAgCQl9Cj4KPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKG9iaiwgMCwgMCk7Cj4KClJlZ2FyZHMsCgpUdnJ0a28KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==