From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/19] drm/atomic: Fix atomic helpers to use the new iterator macros. Date: Thu, 3 Nov 2016 18:22:05 +0200 Message-ID: <20161103162205.GB4617@intel.com> References: <1476707838-25253-1-git-send-email-maarten.lankhorst@linux.intel.com> <1476707838-25253-8-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1476707838-25253-8-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMTcsIDIwMTYgYXQgMDI6Mzc6MDZQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWNfaGVscGVyLmMgfCAzMDIgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4g IDEgZmlsZSBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMTQ1IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gaW5kZXggZmNiNmU1YjU1MjE3Li5jOGFi YTQ5M2ZjMTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC0xMDMs NyArMTAzLDcgQEAgc3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJICogcGFydCBvZiB0aGUgc3RhdGUuIElmIHRo ZSBzYW1lIGVuY29kZXIgaXMgYXNzaWduZWQgdG8gbXVsdGlwbGUKPiAgCSAqIGNvbm5lY3RvcnMg YmFpbCBvdXQuCj4gIAkgKi8KPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwg Y29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2lu X3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5fc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgKmZ1bmNzID0gY29ubmVjdG9yLT5oZWxwZXJf cHJpdmF0ZTsKPiAgCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKm5ld19lbmNvZGVyOwo+ICAKPiBAQCAt MjM4LDIyICsyMzgsMjIgQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUsCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9s ZF9jb25uZWN0b3Jfc3RhdGUsICpuZXdfY29ubmVjdG9yX3N0YXRlOwo+ICAJaW50IGk7Cj4gIAo+ IC0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rv cl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0 ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBp KSB7Cj4gIAkJc3RydWN0IGRybV9jcnRjICplbmNvZGVyX2NydGM7Cj4gIAo+IC0JCWlmIChjb25u ZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyKQo+ICsJCWlmIChuZXdfY29ubmVj dG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgIT0gZW5jb2RlcikKPiAgCQkJY29udGludWU7Cj4gIAo+ IC0JCWVuY29kZXJfY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gKwkJZW5jb2Rlcl9j cnRjID0gb2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0YzsKPiAgCj4gIAkJRFJNX0RFQlVHX0FUT01J QygiW0VOQ09ERVI6JWQ6JXNdIGluIHVzZSBvbiBbQ1JUQzolZDolc10sIHN0ZWFsaW5nIGl0XG4i LAo+ICAJCQkJIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUsCj4gIAkJCQkgZW5jb2Rl cl9jcnRjLT5iYXNlLmlkLCBlbmNvZGVyX2NydGMtPm5hbWUpOwo+ICAKPiAtCQlzZXRfYmVzdF9l bmNvZGVyKHN0YXRlLCBjb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwo+ICsJCXNldF9iZXN0X2VuY29k ZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwo+ICAKPiAgCQljcnRjX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgZW5jb2Rlcl9jcnRj KTsKPiAgCQljcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+IEBAIC0yNjUs NyArMjY1LDggQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIHN0YXRpYyBpbnQKPiAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gLQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlKQo+ICsJ CQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsCj4gKwkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5lY3Rvcl9zdGF0ZSkKPiAgewo+ ICAJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAgCXN0 cnVjdCBkcm1fZW5jb2RlciAqbmV3X2VuY29kZXI7Cj4gQEAgLTI3NSwyNCArMjc2LDI0IEBAIHVw ZGF0ZV9jb25uZWN0b3Jfcm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g IAkJCSBjb25uZWN0b3ItPmJhc2UuaWQsCj4gIAkJCSBjb25uZWN0b3ItPm5hbWUpOwo+ICAKPiAt CWlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykgewo+ IC0JCWlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjKSB7Cj4gLQkJCWNydGNfc3RhdGUgPSBkcm1f YXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjb25uZWN0b3ItPnN0YXRlLT5j cnRjKTsKPiArCWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9IG5ld19jb25uZWN0b3Jf c3RhdGUtPmNydGMpIHsKPiArCQlpZiAob2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykgewo+ICsJ CQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwg b2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7Cj4gIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNf Y2hhbmdlZCA9IHRydWU7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRj KSB7Cj4gLQkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRl KHN0YXRlLCBjb25uZWN0b3Jfc3RhdGUtPmNydGMpOwo+ICsJCWlmIChuZXdfY29ubmVjdG9yX3N0 YXRlLT5jcnRjKSB7Cj4gKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19j cnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKPiAgCQkJY3J0Y19z dGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYg KCFjb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKPiArCWlmICghbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+ Y3J0Yykgewo+ICAJCURSTV9ERUJVR19BVE9NSUMoIkRpc2FibGluZyBbQ09OTkVDVE9SOiVkOiVz XVxuIiwKPiAgCQkJCWNvbm5lY3Rvci0+YmFzZS5pZCwKPiAgCQkJCWNvbm5lY3Rvci0+bmFtZSk7 Cj4gIAo+IC0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7 Cj4gKwkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7 Cj4gIAo+ICAJCXJldHVybiAwOwo+ICAJfQo+IEBAIC0zMDEsNyArMzAyLDcgQEAgdXBkYXRlX2Nv bm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIAlp ZiAoZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIpCj4gIAkJbmV3X2VuY29kZXIgPSBmdW5jcy0+ YXRvbWljX2Jlc3RfZW5jb2Rlcihjb25uZWN0b3IsCj4gLQkJCQkJCQkgY29ubmVjdG9yX3N0YXRl KTsKPiArCQkJCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlKTsKPiAgCWVsc2UgaWYgKGZ1bmNzLT5i ZXN0X2VuY29kZXIpCj4gIAkJbmV3X2VuY29kZXIgPSBmdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5l Y3Rvcik7Cj4gIAllbHNlCj4gQEAgLTMxNCwzMyArMzE1LDMzIEBAIHVwZGF0ZV9jb25uZWN0b3Jf cm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJcmV0dXJuIC1FSU5W QUw7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFkcm1fZW5jb2Rlcl9jcnRjX29rKG5ld19lbmNvZGVyLCBj b25uZWN0b3Jfc3RhdGUtPmNydGMpKSB7Cj4gKwlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2sobmV3 X2VuY29kZXIsIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpKSB7Cj4gIAkJRFJNX0RFQlVHX0FU T01JQygiW0VOQ09ERVI6JWQ6JXNdIGluY29tcGF0aWJsZSB3aXRoIFtDUlRDOiVkXVxuIiwKPiAg CQkJCSBuZXdfZW5jb2Rlci0+YmFzZS5pZCwKPiAgCQkJCSBuZXdfZW5jb2Rlci0+bmFtZSwKPiAt CQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQpOwo+ICsJCQkJIG5ld19jb25uZWN0 b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAK PiAtCWlmIChuZXdfZW5jb2RlciA9PSBjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2Rlcikgewo+ IC0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIp Owo+ICsJaWYgKG5ld19lbmNvZGVyID09IG5ld19jb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2Rl cikgewo+ICsJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIG5l d19lbmNvZGVyKTsKPiAgCj4gIAkJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10g a2VlcHMgW0VOQ09ERVI6JWQ6JXNdLCBub3cgb24gW0NSVEM6JWQ6JXNdXG4iLAo+ICAJCQkJIGNv bm5lY3Rvci0+YmFzZS5pZCwKPiAgCQkJCSBjb25uZWN0b3ItPm5hbWUsCj4gIAkJCQkgbmV3X2Vu Y29kZXItPmJhc2UuaWQsCj4gIAkJCQkgbmV3X2VuY29kZXItPm5hbWUsCj4gLQkJCQkgY29ubmVj dG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAo+IC0JCQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+ bmFtZSk7Cj4gKwkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKPiArCQkJ CSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKPiAgCj4gIAkJcmV0dXJuIDA7Cj4g IAl9Cj4gIAo+ICAJc3RlYWxfZW5jb2RlcihzdGF0ZSwgbmV3X2VuY29kZXIpOwo+ICAKPiAtCXNl dF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOwo+ICsJ c2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIp Owo+ICAKPiAtCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRl KHN0YXRlLCBjb25uZWN0b3Jfc3RhdGUtPmNydGMpOwo+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9t aWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNy dGMpOwo+ICAJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiAgCj4gIAlE Uk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSB1c2luZyBbRU5DT0RFUjolZDolc10g b24gW0NSVEM6JWQ6JXNdXG4iLAo+IEBAIC0zNDgsOCArMzQ5LDggQEAgdXBkYXRlX2Nvbm5lY3Rv cl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJIGNvbm5lY3Rv ci0+bmFtZSwKPiAgCQkJIG5ld19lbmNvZGVyLT5iYXNlLmlkLAo+ICAJCQkgbmV3X2VuY29kZXIt Pm5hbWUsCj4gLQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQsCj4gLQkJCSBjb25u ZWN0b3Jfc3RhdGUtPmNydGMtPm5hbWUpOwo+ICsJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0 Yy0+YmFzZS5pZCwKPiArCQkJIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMtPm5hbWUpOwo+ICAK PiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTM2NCw3ICszNjUsNyBAQCBtb2RlX2ZpeHVwKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWludCBpOwo+ICAJYm9vbCByZXQ7Cj4gIAo+ IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkp IHsKPiAgCQlpZiAoIWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCAmJgo+ICAJCSAgICAhY3J0Y19z dGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkKQo+ICAJCQljb250aW51ZTsKPiBAQCAtMzcyLDcgKzM3 Myw3IEBAIG1vZGVfZml4dXAoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCWRy bV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUsICZjcnRjX3N0YXRlLT5tb2Rl KTsKPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5l Y3RvciwgY29ubl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0 ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyOwo+ICAKPiBAQCAtNDE3LDcgKzQxOCw3IEBAIG1vZGVfZml4dXAoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCX0KPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVj dCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAKPiAgCQlpZiAoIWNydGNfc3RhdGUt PmVuYWJsZSkKPiBAQCAtNDc2LDE5ICs0NzcsMTkgQEAgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tf bW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0 ZTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubmVjdG9yX3N0YXRlLCAq bmV3X2Nvbm5lY3Rvcl9zdGF0ZTsKPiAgCWludCBpLCByZXQ7Cj4gIAo+IC0JZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmICghZHJtX21v ZGVfZXF1YWwoJmNydGMtPnN0YXRlLT5tb2RlLCAmY3J0Y19zdGF0ZS0+bW9kZSkpIHsKPiArCWZv cl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwg bmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlpZiAoIWRybV9tb2RlX2VxdWFsKCZvbGRfY3J0Y19z dGF0ZS0+bW9kZSwgJm5ld19jcnRjX3N0YXRlLT5tb2RlKSkgewo+ICAJCQlEUk1fREVCVUdfQVRP TUlDKCJbQ1JUQzolZDolc10gbW9kZSBjaGFuZ2VkXG4iLAo+ICAJCQkJCSBjcnRjLT5iYXNlLmlk LCBjcnRjLT5uYW1lKTsKPiAtCQkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAr CQkJbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gIAkJfQo+ICAKPiAtCQlp ZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSAhPSBjcnRjX3N0YXRlLT5lbmFibGUpIHsKPiArCQlpZiAo b2xkX2NydGNfc3RhdGUtPmVuYWJsZSAhPSBuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4gIAkJ CURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBlbmFibGUgY2hhbmdlZFxuIiwKPiAgCQkJ CQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gIAo+IEBAIC01MDAsOCArNTAxLDggQEAg ZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJCQkgKiBUaGUgb3RoZXIgd2F5IGFyb3VuZCBpcyB0cnVlIGFzIHdlbGwuIGVuYWJsZSAhPSAw Cj4gIAkJCSAqIGlmZiBjb25uZWN0b3JzIGFyZSBhdHRhY2hlZCBhbmQgYSBtb2RlIGlzIHNldC4K PiAgCQkJICovCj4gLQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gLQkJCWNy dGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7Cj4gKwkJCW5ld19jcnRjX3N0YXRl LT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICsJCQluZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19j aGFuZ2VkID0gdHJ1ZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC01MDksMTQgKzUxMCwxNSBAQCBk cm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JZm9yX2VhY2hfY29ubmVjdG9yX2lu X3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICsJZm9yX2Vh Y2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVj dG9yX3N0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBpKSB7Cj4gIAkJLyoKPiAgCQkgKiBUaGlz IG9ubHkgc2V0cyBjcnRjLT5jb25uZWN0b3JzX2NoYW5nZWQgZm9yIHJvdXRpbmcgY2hhbmdlcywK PiAgCQkgKiBkcml2ZXJzIG11c3Qgc2V0IGNydGMtPmNvbm5lY3RvcnNfY2hhbmdlZCB0aGVtc2Vs dmVzIHdoZW4KPiAgCQkgKiBjb25uZWN0b3IgcHJvcGVydGllcyBuZWVkIHRvIGJlIHVwZGF0ZWQu Cj4gIAkJICovCj4gIAkJcmV0ID0gdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0YXRlLCBjb25u ZWN0b3IsCj4gLQkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7Cj4gKwkJCQkJICAgICAgIG9s ZF9jb25uZWN0b3Jfc3RhdGUsCj4gKwkJCQkJICAgICAgIG5ld19jb25uZWN0b3Jfc3RhdGUpOwo+ ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gQEAgLTUyNywyOCArNTI5LDI4 IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCSAqIGNvbmZpZ3VyYXRpb24uIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBjYWxsaW5n IG1vZGVfZml4dXAgaW4gY2FzZSBhCj4gIAkgKiBjcnRjIG9ubHkgY2hhbmdlZCBpdHMgbW9kZSBi dXQgaGFzIHRoZSBzYW1lIHNldCBvZiBjb25uZWN0b3JzLgo+ICAJICovCj4gLQlmb3JfZWFjaF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9v bGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLCBpKSB7Cj4gIAkJYm9vbCBoYXNfY29ubmVjdG9ycyA9Cj4gLQkJCSEhY3J0Y19zdGF0 ZS0+Y29ubmVjdG9yX21hc2s7Cj4gKwkJCSEhbmV3X2NydGNfc3RhdGUtPmNvbm5lY3Rvcl9tYXNr Owo+ICAKPiAgCQkvKgo+ICAJCSAqIFdlIG11c3Qgc2V0IC0+YWN0aXZlX2NoYW5nZWQgYWZ0ZXIg d2Fsa2luZyBjb25uZWN0b3JzIGZvcgo+ICAJCSAqIG90aGVyd2lzZSBhbiB1cGRhdGUgdGhhdCBv bmx5IGNoYW5nZXMgYWN0aXZlIHdvdWxkIHJlc3VsdCBpbgo+ICAJCSAqIGEgZnVsbCBtb2Rlc2V0 IGJlY2F1c2UgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nIGZvcmNlIHRoYXQuCj4gIAkJICovCj4g LQkJaWYgKGNydGMtPnN0YXRlLT5hY3RpdmUgIT0gY3J0Y19zdGF0ZS0+YWN0aXZlKSB7Cj4gKwkJ aWYgKG9sZF9jcnRjX3N0YXRlLT5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkgewo+ ICAJCQlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gYWN0aXZlIGNoYW5nZWRcbiIsCj4g IAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+IC0JCQljcnRjX3N0YXRlLT5hY3Rp dmVfY2hhbmdlZCA9IHRydWU7Cj4gKwkJCW5ld19jcnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCA9 IHRydWU7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0 KGNydGNfc3RhdGUpKQo+ICsJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3 X2NydGNfc3RhdGUpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJRFJNX0RFQlVHX0FUT01JQygi W0NSVEM6JWQ6JXNdIG5lZWRzIGFsbCBjb25uZWN0b3JzLCBlbmFibGU6ICVjLCBhY3RpdmU6ICVj XG4iLAo+ICAJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUsCj4gLQkJCQkgY3J0Y19zdGF0 ZS0+ZW5hYmxlID8gJ3knIDogJ24nLAo+IC0JCQkJIGNydGNfc3RhdGUtPmFjdGl2ZSA/ICd5JyA6 ICduJyk7Cj4gKwkJCQkgbmV3X2NydGNfc3RhdGUtPmVuYWJsZSA/ICd5JyA6ICduJywKPiArCQkJ CSBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlID8gJ3knIDogJ24nKTsKPiAgCj4gIAkJcmV0ID0gZHJt X2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0Yyk7Cj4gIAkJaWYgKHJl dCAhPSAwKQo+IEBAIC01NTgsNyArNTYwLDcgQEAgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9k ZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmIChyZXQgIT0gMCkKPiAgCQkJcmV0 dXJuIHJldDsKPiAgCj4gLQkJaWYgKGNydGNfc3RhdGUtPmVuYWJsZSAhPSBoYXNfY29ubmVjdG9y cykgewo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7 Cj4gIAkJCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBlbmFibGVkL2Nvbm5lY3RvcnMg bWlzbWF0Y2hcbiIsCj4gIAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+ICAKPiBA QCAtNTk5LDcgKzYwMSw3IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWZv cl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiAr CWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBp KSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAK PiAgCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKPiBAQCAtNjE3LDcgKzYxOSw3IEBA IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJCX0KPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBj cnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3MgKmZ1bmNzOwo+ICAKPiAgCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwoKVXAgdG8g aGVyZSBldmVyeXRoaW5nIHJ1bnMgaW4gdGhlIGNoZWNrIHBoYXNlLCBzbyB0aGUgc3RyYWlnaHRm b3J3YXJlZApzL3N0YXRlL25ld19zdGF0ZS8gYW5kIHMvZm9vLT5zdGF0ZS9vbGRfc3RhdGUvIGxv b2tzIGNvcnJlY3QuCgo+IEBAIC02NzgsMTIgKzY4MCwxMiBAQCBzdGF0aWMgdm9pZAo+ICBkaXNh YmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsK PiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSwgKm5ld19jb25uX3N0YXRlOwo+ ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpu ZXdfY3J0Y19zdGF0ZTsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKPiArCWZvcl9l YWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9j b25uX3N0YXRlLCBuZXdfY29ubl9zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKPiAgCj4gQEAgLTcyMCw3ICs3MjIsNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgCj4gIAkJ LyogUmlnaHQgZnVuY3Rpb24gZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KPiAgCQlpZiAo ZnVuY3MpIHsKPiAtCQkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBh cmUpCj4gKwkJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YyAmJiBmdW5jcy0+cHJlcGFyZSkKPiAg CQkJCWZ1bmNzLT5wcmVwYXJlKGVuY29kZXIpOwo+ICAJCQllbHNlIGlmIChmdW5jcy0+ZGlzYWJs ZSkKPiAgCQkJCWZ1bmNzLT5kaXNhYmxlKGVuY29kZXIpOwo+IEBAIC03MzEsMTEgKzczMywxMSBA QCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgCQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVy LT5icmlkZ2UpOwo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5f c3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkp IHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAgCj4g IAkJLyogU2h1dCBkb3duIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyBhIGZ1bGwgbW9kZXNldC4gKi8K PiAtCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKPiAr CQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKPiAg CQkJY29udGludWU7Cj4gIAo+ICAJCWlmICghb2xkX2NydGNfc3RhdGUtPmFjdGl2ZSkKPiBAQCAt NzQ4LDcgKzc1MCw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICAKPiAgCj4gIAkJLyogUmlnaHQg ZnVuY3Rpb24gZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KPiAtCQlpZiAoY3J0Yy0+c3Rh dGUtPmVuYWJsZSAmJiBmdW5jcy0+cHJlcGFyZSkKPiArCQlpZiAobmV3X2NydGNfc3RhdGUtPmVu YWJsZSAmJiBmdW5jcy0+cHJlcGFyZSkKPiAgCQkJZnVuY3MtPnByZXBhcmUoY3J0Yyk7Cj4gIAkJ ZWxzZSBpZiAoZnVuY3MtPmF0b21pY19kaXNhYmxlKQo+ICAJCQlmdW5jcy0+YXRvbWljX2Rpc2Fi bGUoY3J0Yywgb2xkX2NydGNfc3RhdGUpOwoKQW5kIHRoaXMgc3Vja2VyIGlzIGV4ZWN1dGVkIGFm dGVyIHdlJ3ZlIHN3YXBwZWQgdGhlIHN0YXRlLCBzbyB3ZSBuZWVkIHRvCmRvIHRoZSBzL2Zvby0+ c3RhdGUvbmV3X3N0YXRlLyByZXBsYWNlbWVudC4gTG9va3MgY29ycmVjdCB0byBtZS4KCk5vdCBz dXJlIGhvdyB3b3JyaWVkIEkgc2hvdWxkIGJlIHRoYXQgd2UgbWlnaHQgZm9yZ2V0IHNvbWUgZm9v LT5zdGF0ZQpkZXJlZmVyZW5jZSBzb21ld2hlcmUuIFNob3VsZCB3ZSB0cnkgcmVuYW1lIHRoYXQg cG9pbnRlciB0byBzb21ldGhpbmcgZWxzZQp0byBtYWtlIHN1cmUgd2UndmUgY2F1Z2h0IGV2ZXJ5 dGhpbmc/Cgo+IEBAIC03NzcsMTMgKzc3OSwxMyBAQCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVf bGVnYWN5X21vZGVzZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCQkgICAg ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9s ZF9jb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0 YXRlLCAqbmV3X2Nvbm5fc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwo+ICAJaW50IGk7Cj4gIAo+ICAJLyogY2xlYXIgb3V0IGV4aXN0aW5n IGxpbmtzIGFuZCB1cGRhdGUgZHBtcyAqLwo+IC0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hf b2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5f c3RhdGUsIG5ld19jb25uX3N0YXRlLCBpKSB7Cj4gIAkJaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcikg ewo+ICAJCQlXQVJOX09OKCFjb25uZWN0b3ItPmVuY29kZXItPmNydGMpOwo+ICAKPiBAQCAtNzkx LDcgKzc5Myw3IEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQljb25uZWN0b3ItPmVuY29kZXIgPSBOVUxM Owo+ICAJCX0KPiAgCj4gLQkJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gKwkJY3J0 YyA9IG5ld19jb25uX3N0YXRlLT5jcnRjOwo+ICAJCWlmICgoIWNydGMgJiYgb2xkX2Nvbm5fc3Rh dGUtPmNydGMpIHx8Cj4gIAkJICAgIChjcnRjICYmIGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rl c2V0KGNydGMtPnN0YXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl4KTGlrZSB0aGlzIGd1eSBoZXJlLiBU aGF0IHNob3VsZCBiZSBuZXdfY3J0Y19zdGF0ZSwgbm8/Cgo+ICAJCQlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpkcG1zX3Byb3AgPQo+IEBAIC04MDgsMjMgKzgxMCwyMyBAQCBkcm1fYXRvbWljX2hlbHBl cl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CX0KPiAgCj4gIAkvKiBzZXQgbmV3IGxpbmtzICovCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5f c3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gLQkJaWYg KCFjb25uZWN0b3ItPnN0YXRlLT5jcnRjKQo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKPiArCQlpZiAo IW5ld19jb25uX3N0YXRlLT5jcnRjKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKFdBUk5f T04oIWNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcikpCj4gKwkJaWYgKFdBUk5fT04oIW5l d19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJY29u bmVjdG9yLT5lbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+IC0JCWNv bm5lY3Rvci0+ZW5jb2Rlci0+Y3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gKwkJY29u bmVjdG9yLT5lbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKPiArCQljb25u ZWN0b3ItPmVuY29kZXItPmNydGMgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0YzsKPiAgCX0KPiAgCj4g IAkvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRoZSBjcnRjIHN0cnVjdHVyZSAqLwo+IC0JZm9yX2Vh Y2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4g Kwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUs IGkpIHsKPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKPiAg Cj4gLQkJY3J0Yy0+bW9kZSA9IGNydGMtPnN0YXRlLT5tb2RlOwo+IC0JCWNydGMtPmVuYWJsZWQg PSBjcnRjLT5zdGF0ZS0+ZW5hYmxlOwo+ICsJCWNydGMtPm1vZGUgPSBjcnRjX3N0YXRlLT5tb2Rl Owo+ICsJCWNydGMtPmVuYWJsZWQgPSBjcnRjX3N0YXRlLT5lbmFibGU7Cj4gIAo+ICAJCWlmIChk cm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHByaW1hcnkpICYm Cj4gIAkJICAgIHByaW1hcnktPnN0YXRlLT5jcnRjID09IGNydGMpIHsKICAgICAgICAgICAgICAg ICAgICBeXl5eXl5eXl5eXl5eXgpuZXdfcGxhbmVfc3RhdGUgb3Igc29tZXRoaW5nPwoKPiBAQCAt ODMyLDkgKzgzNCw5IEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQljcnRjLT55ID0gcHJpbWFyeS0+c3Rh dGUtPnNyY195ID4+IDE2Owo+ICAJCX0KPiAgCj4gLQkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUp Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmVuYWJsZSkKPiAgCQkJZHJtX2NhbGNfdGltZXN0YW1waW5n X2NvbnN0YW50cyhjcnRjLAo+IC0JCQkJCQkJJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKTsK PiArCQkJCQkJCSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPiAgCX0KPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZSk7 Cj4gQEAgLTg0MywyMCArODQ1LDIwIEBAIHN0YXRpYyB2b2lkCj4gIGNydGNfc2V0X21vZGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkK PiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZTsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUo b2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2Ny dGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qg c3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gIAo+IC0JCWlmICghY3J0Yy0+ c3RhdGUtPm1vZGVfY2hhbmdlZCkKPiArCQlpZiAoIWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCkK PiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4g IAo+IC0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5tb2RlX3NldF9ub2ZiKSB7 Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmVuYWJsZSAmJiBmdW5jcy0+bW9kZV9zZXRfbm9mYikgewo+ ICAJCQlEUk1fREVCVUdfQVRPTUlDKCJtb2Rlc2V0IG9uIFtDUlRDOiVkOiVzXVxuIiwKPiAgCQkJ CQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gIAo+IEBAIC04NjQsMTggKzg2NiwxOCBA QCBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpvbGRfc3RhdGUpCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rv cl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKPiAr CWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIGNv bm5fc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNz ICpmdW5jczsKPiAgCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJ CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwgKmFkanVzdGVkX21vZGU7Cj4gIAo+IC0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+ YmVzdF9lbmNvZGVyKQo+ICsJCWlmICghY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQo+ICAJCQlj b250aW51ZTsKPiAgCj4gLQkJZW5jb2RlciA9IGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2Rl cjsKPiArCQllbmNvZGVyID0gY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICAJCWZ1bmNzID0g ZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7Cj4gLQkJbmV3X2NydGNfc3RhdGUgPSBjb25uZWN0b3It PnN0YXRlLT5jcnRjLT5zdGF0ZTsKPiArCQluZXdfY3J0Y19zdGF0ZSA9IGNvbm5fc3RhdGUtPmNy dGMtPnN0YXRlOwo+ICAJCW1vZGUgPSAmbmV3X2NydGNfc3RhdGUtPm1vZGU7Cj4gIAkJYWRqdXN0 ZWRfbW9kZSA9ICZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiAgCj4gQEAgLTg5MSw3 ICs4OTMsNyBAQCBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIAkJICovCj4gIAkJaWYgKGZ1bmNzICYmIGZ1 bmNzLT5hdG9taWNfbW9kZV9zZXQpIHsKPiAgCQkJZnVuY3MtPmF0b21pY19tb2RlX3NldChlbmNv ZGVyLCBuZXdfY3J0Y19zdGF0ZSwKPiAtCQkJCQkgICAgICAgY29ubmVjdG9yLT5zdGF0ZSk7Cj4g KwkJCQkJICAgICAgIGNvbm5fc3RhdGUpOwo+ICAJCX0gZWxzZSBpZiAoZnVuY3MgJiYgZnVuY3Mt Pm1vZGVfc2V0KSB7Cj4gIAkJCWZ1bmNzLT5tb2RlX3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3Rl ZF9tb2RlKTsKPiAgCQl9Cj4gQEAgLTk0MywyNCArOTQ1LDI0IEBAIHZvaWQgZHJtX2F0b21pY19o ZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJ CQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg Km9sZF9jb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGU7Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRl KG9sZF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAKPiAgCQkvKiBOZWVkIHRvIGZpbHRlciBvdXQg Q1JUQ3Mgd2hlcmUgb25seSBwbGFuZXMgY2hhbmdlLiAqLwo+IC0JCWlmICghZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+ICsJCWlmICghZHJtX2F0b21pY19jcnRj X25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAo IWNydGMtPnN0YXRlLT5hY3RpdmUpCj4gKwkJaWYgKCFjcnRjX3N0YXRlLT5hY3RpdmUpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiAgCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ICAKPiAt CQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewo+ICsJCWlmIChjcnRjX3N0YXRlLT5lbmFibGUp IHsKPiAgCQkJRFJNX0RFQlVHX0FUT01JQygiZW5hYmxpbmcgW0NSVEM6JWQ6JXNdXG4iLAo+ICAJ CQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiAgCj4gQEAgLTk3MSwxOCArOTczLDE4 IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJCX0KPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9jb25uZWN0b3Jf aW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlm b3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBjb25u X3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAq ZnVuY3M7Cj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCQlpZiAoIWNv bm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcikKPiArCQlpZiAoIWNvbm5fc3RhdGUtPmJlc3Rf ZW5jb2RlcikKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+ Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fAo+IC0JCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21v ZGVzZXQoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUpKQo+ICsJCWlmICghY29ubl9zdGF0 ZS0+Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fAo+ICsJCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRz X21vZGVzZXQoY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUpKQoKTW9yZSBmb28tPnN0YXRlIHN0dWZm IHJlbWFpbmluZwoKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWVuY29kZXIgPSBjb25uZWN0b3It PnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4gKwkJZW5jb2RlciA9IGNvbm5fc3RhdGUtPmJlc3RfZW5j b2RlcjsKPiAgCQlmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwo+ICAKPiAgCQlEUk1f REVCVUdfQVRPTUlDKCJlbmFibGluZyBbRU5DT0RFUjolZDolc11cbiIsCj4gQEAgLTEwMjcsMTAg KzEwMjksNyBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZmVuY2VzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsK PiAgCWludCBpLCByZXQ7Cj4gIAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBs YW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+IC0JCWlmICghcHJlX3N3YXApCj4gLQkJCXBsYW5lX3N0 YXRlID0gcGxhbmUtPnN0YXRlOwo+IC0KPiArCWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShz dGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7CgpOaWNlLiBDYW4gd2Uga2lsbCB0aGUgcHJl X3N3YXAgZmxhZyBub3c/IEhtbSwgbm8sIHdlIHBhc3MgaXQgdG8KZG1hX2ZlbmNlX3dhaXQoKSB0 byBpbmRpY2F0ZSBpbnRlcnJ1cHRpYmxlIHZzLiBub3QuIE1heWJlIHdlIGNhbiByZW5hbWUKaXQg dG8gY29udmV5IGl0cyBvbmx5IHJlbWFpbmluZyBmdW5jdGlvbiBiZXR0ZXI/Cgo+ICAJCWlmICgh cGxhbmVfc3RhdGUtPmZlbmNlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTEwNzIsMTUgKzEw NzEsMTUgQEAgYm9vbCBkcm1fYXRvbWljX2hlbHBlcl9mcmFtZWJ1ZmZlcl9jaGFuZ2VkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Km9sZF9wbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9z dGF0ZSwgKm5ld19wbGFuZV9zdGF0ZTsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX3BsYW5l X2luX3N0YXRlKG9sZF9zdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgaSkgewo+IC0JCWlm IChwbGFuZS0+c3RhdGUtPmNydGMgIT0gY3J0YyAmJgo+ICsJZm9yX2VhY2hfb2xkbmV3X3BsYW5l X2luX3N0YXRlKG9sZF9zdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0 YXRlLCBpKSB7Cj4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+Y3J0YyAhPSBjcnRjICYmCj4gIAkJ ICAgIG9sZF9wbGFuZV9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICAJCQljb250aW51ZTsKPiAgCj4g LQkJaWYgKHBsYW5lLT5zdGF0ZS0+ZmIgIT0gb2xkX3BsYW5lX3N0YXRlLT5mYikKPiArCQlpZiAo bmV3X3BsYW5lX3N0YXRlLT5mYiAhPSBvbGRfcGxhbmVfc3RhdGUtPmZiKQo+ICAJCQlyZXR1cm4g dHJ1ZTsKPiAgCX0KClRoaXMgdGhpbmcgd2FzIHRvdGFsbHkgYnJva2VuLCBidXQgSSBndWVzcyBu b3cgaXQgYWN0dWFsbHkgc2hvdWxkCndvcmsgcmVnYXJkbGVzcyBvZiB3aGVuIHdlIGNhbGwgaXQu IENvb2wuCgpJIHdhcyBhY3R1YWxseSB3b25kZXIgaWYgd2UgbWFuYWdlIHRvIHBsdW1iIHRoZSBv bGQrbmV3IHN0YXRlIGV2ZXJ5d2hlcmUKbWF5YmUgd2UgY291bGQga2lsbCBvZmYgc29tZSBvZiB0 aGUgbmVlZF93aGF0ZXZlciBmbGFncz8gTm90IHF1aXRlIHN1cmUuCgo+ICAKPiBAQCAtMTEwNCwy MSArMTEwMywyMSBAQCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkK PiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUsICpuZXdfY3J0Y19zdGF0ZTsKPiAgCWludCBpLCByZXQ7Cj4gIAo+IC0JZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gKwkvKiBM ZWdhY3kgY3Vyc29yIGlvY3RscyBhcmUgY29tcGxldGVseSB1bnN5bmNlZCwgYW5kIHVzZXJzcGFj ZQo+ICsJICogcmVsaWVzIG9uIHRoYXQgKGJ5IGRvaW5nIHRvbnMgb2YgY3Vyc29yIHVwZGF0ZXMp LiAqLwo+ICsJaWYgKG9sZF9zdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUpCj4gKwkJcmV0dXJu Owo+ICsKCldlIHNlZW0gdG8gaGF2ZSBhIGNoYW5nZSBvZiBiZWhhdmlvdXIgaGVyZS4gU2hvdWxk IGJlIGluIGEgc2VwYXJhdGUKcGF0Y2ggaWYgd2UgYWN0dWFsbHkgd2FudCBpdC4KCj4gKwlmb3Jf ZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCS8qIE5vIG9uZSBjYXJlcyBhYm91dCB0aGUgb2xk IHN0YXRlLCBzbyBhYnVzZSBpdCBmb3IgdHJhY2tpbmcKPiAgCQkgKiBhbmQgc3RvcmUgd2hldGhl ciB3ZSBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSAoYW5kIHNob3VsZCBkbyBhCj4gIAkJICogdmJs YW5rIHdhaXQpIGluIHRoZSAtPmVuYWJsZSBib29sZWFuLiAqLwo+ICAJCW9sZF9jcnRjX3N0YXRl LT5lbmFibGUgPSBmYWxzZTsKPiAgCj4gLQkJaWYgKCFjcnRjLT5zdGF0ZS0+ZW5hYmxlKQo+IC0J CQljb250aW51ZTsKPiAtCj4gLQkJLyogTGVnYWN5IGN1cnNvciBpb2N0bHMgYXJlIGNvbXBsZXRl bHkgdW5zeW5jZWQsIGFuZCB1c2Vyc3BhY2UKPiAtCQkgKiByZWxpZXMgb24gdGhhdCAoYnkgZG9p bmcgdG9ucyBvZiBjdXJzb3IgdXBkYXRlcykuICovCj4gLQkJaWYgKG9sZF9zdGF0ZS0+bGVnYWN5 X2N1cnNvcl91cGRhdGUpCj4gKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ICAJCQlj b250aW51ZTsKPiAgCj4gIAkJaWYgKCFkcm1fYXRvbWljX2hlbHBlcl9mcmFtZWJ1ZmZlcl9jaGFu Z2VkKGRldiwKPiBAQCAtMTEzMyw3ICsxMTMyLDcgQEAgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9m b3JfdmJsYW5rcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCW9sZF9jcnRjX3N0YXRlLT5s YXN0X3ZibGFua19jb3VudCA9IGRybV9jcnRjX3ZibGFua19jb3VudChjcnRjKTsKPiAgCX0KPiAg Cj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsIGkpIHsKPiAgCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5lbmFibGUpCj4g IAkJCWNvbnRpbnVlOwo+ICAKCkkgdGhpbmsgcHJldHR5IG11Y2ggZXZldGhpbmcgdXAgdG8gdGhp cyBwb2ludCAoZnJvbSB0aGUgbGFzdCBjaGVja3BvaW50KQppcyBleGVjdXRlZCBhZnRlciBzd2Fw cGluZyB0aGUgc3RhdGUsIHdpdGgKZHJtX2F0b21pY19oZWxwZXJfZnJhbWVidWZmZXJfY2hhbmdl ZCgpIGJlaW5nIHRoZSBvZGRiYWxsIHRoYXQgbWlnaHQgYmUKY2FsbGVkIGZyb20gYW55d2hlcmUu Cgo+IEBAIC0xNDMyLDExICsxNDMxLDExIEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9j b21taXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCQkJICAgYm9vbCBub25i bG9jaykKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSwgKmNydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7Cj4g IAlpbnQgaSwgcmV0Owo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNydGNfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbW1pdCA9IGt6 YWxsb2Moc2l6ZW9mKCpjb21taXQpLCBHRlBfS0VSTkVMKTsKPiAgCQlpZiAoIWNvbW1pdCkKPiAg CQkJcmV0dXJuIC1FTk9NRU07Cj4gQEAgLTE0NTcsNyArMTQ1Niw3IEBAIGludCBkcm1fYXRvbWlj X2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJ CS8qIERyaXZlcnMgb25seSBzZW5kIG91dCBldmVudHMgd2hlbiBhdCBsZWFzdCBlaXRoZXIgY3Vy cmVudCBvcgo+ICAJCSAqIG5ldyBDUlRDIHN0YXRlIGlzIGFjdGl2ZS4gQ29tcGxldGUgcmlnaHQg YXdheSBpZiBldmVyeXRoaW5nCj4gIAkJICogc3RheXMgb2ZmLiAqLwo+IC0JCWlmICghY3J0Yy0+ c3RhdGUtPmFjdGl2ZSAmJiAhY3J0Y19zdGF0ZS0+YWN0aXZlKSB7Cj4gKwkJaWYgKCFvbGRfY3J0 Y19zdGF0ZS0+YWN0aXZlICYmICFjcnRjX3N0YXRlLT5hY3RpdmUpIHsKPiAgCQkJY29tcGxldGVf YWxsKCZjb21taXQtPmZsaXBfZG9uZSk7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KClRoaXMgZ3V5 IGlzIHByZSBzdGF0ZSBzd2FwLiBMb29rcyBjb3JyZWN0LgoKPiBAQCAtMTUyMSw3ICsxNTIwLDcg QEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJaW50IGk7Cj4gIAlsb25nIHJldDsKPiAgCj4gLQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlm b3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewoK VGhpcyBpcyBwb3N0IHN0YXRlIHN3YXAsIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSB1c2UgdGhlIG5l dyBvciB0aGUgb2xkCnN0YXRlIGhlcmUsIHNvIHRoaXMgbG9va3MgZmluZS4KCj4gIAkJc3Bpbl9s b2NrKCZjcnRjLT5jb21taXRfbG9jayk7Cj4gIAkJY29tbWl0ID0gcHJlY2VlZGluZ19jb21taXQo Y3J0Yyk7Cj4gIAkJaWYgKGNvbW1pdCkKPiBAQCAtMTU3MiwxMyArMTU3MSwxMyBAQCB2b2lkIGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCXN0cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiAgCWludCBpOwo+ICAK PiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsK PiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBp KSB7Cj4gIAkJY29tbWl0ID0gc3RhdGUtPmNydGNzW2ldLmNvbW1pdDsKPiAgCQlpZiAoIWNvbW1p dCkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCS8qIGJhY2tlbmQgbXVzdCBoYXZlIGNvbnN1bWVk IGFueSBldmVudCBieSBub3cgKi8KPiAtCQlXQVJOX09OKGNydGMtPnN0YXRlLT5ldmVudCk7Cj4g KwkJV0FSTl9PTihjcnRjX3N0YXRlLT5ldmVudCk7CgpQb3N0IHN3YXAuIExvb2tzIGNvcnJlY3Qu Cgo+ICAJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICAJCWNvbXBsZXRlX2FsbCgm Y29tbWl0LT5od19kb25lKTsKPiAgCQlzcGluX3VubG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ IEBAIC0xNjA1LDcgKzE2MDQsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVh bnVwX2RvbmUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJaW50IGk7Cj4gIAls b25nIHJldDsKPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgewoKUG9zdCBzd2FwLiBTdGF0ZSBub3QgdXNlZCwgc28gZmluZS4KCj4g IAkJY29tbWl0ID0gc3RhdGUtPmNydGNzW2ldLmNvbW1pdDsKPiAgCQlpZiAoV0FSTl9PTighY29t bWl0KSkKPiAgCQkJY29udGludWU7Cj4gQEAgLTE2NTgsNyArMTY1Nyw3IEBAIGludCBkcm1fYXRv bWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gIAlpbnQgcmV0LCBpLCBqOwo+ICAK PiAtCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkp IHsKPiArCWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0 YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNz Owo+ICAKPiAgCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKPiBAQCAtMTY3Niw3ICsx Njc1LDcgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGZhaWw6Cj4gLQlmb3JfZWFjaF9wbGFu ZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBqKSB7Cj4gKwlmb3JfZWFjaF9u ZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaikgewoKUHJlIHN3 YXAgc3R1ZmYuIEZpbmUuCgo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNz ICpmdW5jczsKPiAgCj4gIAkJaWYgKGogPj0gaSkKPiBAQCAtMTc0NiwxNCArMTc0NSwxNCBAQCB2 b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKwlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gIAlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9w bGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwg Km5ld19wbGFuZV9zdGF0ZTsKPiAgCWludCBpOwo+ICAJYm9vbCBhY3RpdmVfb25seSA9IGZsYWdz ICYgRFJNX1BMQU5FX0NPTU1JVF9BQ1RJVkVfT05MWTsKPiAgCWJvb2wgbm9fZGlzYWJsZSA9IGZs YWdzICYgRFJNX1BMQU5FX0NPTU1JVF9OT19ESVNBQkxFX0FGVEVSX01PREVTRVQ7Cj4gIAo+IC0J Zm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBp KSB7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9s ZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAKPiAgCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9w cml2YXRlOwo+IEBAIC0xNzYxLDEzICsxNzYwLDEzIEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmICghZnVuY3MgfHwg IWZ1bmNzLT5hdG9taWNfYmVnaW4pCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoYWN0aXZl X29ubHkgJiYgIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4gKwkJaWYgKGFjdGl2ZV9vbmx5ICYmICFu ZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZnVuY3MtPmF0 b21pY19iZWdpbihjcnRjLCBvbGRfY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4gIAo+IC0JZm9yX2VhY2hf cGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBpKSB7Cj4g Kwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgb2xkX3Bs YW5lX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX3Bs YW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gIAkJYm9vbCBkaXNhYmxpbmc7Cj4gIAo+IEBAIC0x Nzg2LDcgKzE3ODUsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJICogQ1JUQyB0byBhdm9pZCBza2lwcGluZyBwbGFu ZXMgYmVpbmcgZGlzYWJsZWQgb24gYW4KPiAgCQkJICogYWN0aXZlIENSVEMuCj4gIAkJCSAqLwo+ IC0JCQlpZiAoIWRpc2FibGluZyAmJiAhcGxhbmVfY3J0Y19hY3RpdmUocGxhbmUtPnN0YXRlKSkK PiArCQkJaWYgKCFkaXNhYmxpbmcgJiYgIXBsYW5lX2NydGNfYWN0aXZlKG5ld19wbGFuZV9zdGF0 ZSkpCj4gIAkJCQljb250aW51ZTsKPiAgCQkJaWYgKGRpc2FibGluZyAmJiAhcGxhbmVfY3J0Y19h Y3RpdmUob2xkX3BsYW5lX3N0YXRlKSkKPiAgCQkJCWNvbnRpbnVlOwo+IEBAIC0xODA1LDEyICsx ODA0LDEyIEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCQkJY29udGludWU7Cj4gIAo+ICAJCQlmdW5jcy0+YXRvbWljX2Rp c2FibGUocGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSk7Cj4gLQkJfSBlbHNlIGlmIChwbGFuZS0+c3Rh dGUtPmNydGMgfHwgZGlzYWJsaW5nKSB7Cj4gKwkJfSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUt PmNydGMgfHwgZGlzYWJsaW5nKSB7Cj4gIAkJCWZ1bmNzLT5hdG9taWNfdXBkYXRlKHBsYW5lLCBv bGRfcGxhbmVfc3RhdGUpOwo+ICAJCX0KPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29s ZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19j cnRjX3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAq ZnVuY3M7Cj4gIAo+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gQEAgLTE4MTgs NyArMTgxNyw3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmICghZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNfZmx1c2gp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoYWN0aXZlX29ubHkgJiYgIWNydGMtPnN0YXRl LT5hY3RpdmUpCj4gKwkJaWYgKGFjdGl2ZV9vbmx5ICYmICFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZl KQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZnVuY3MtPmF0b21pY19mbHVzaChjcnRjLCBvbGRf Y3J0Y19zdGF0ZSk7Cj4gQEAgLTE5NDUsMTIgKzE5NDQsMTkgQEAgdm9pZCBkcm1fYXRvbWljX2hl bHBlcl9jbGVhbnVwX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICAgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwo+ ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFu ZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShv bGRfc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gIAkJ Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAKPiArCQkvKgo+ ICsJCSAqIFRoaXMgbWlnaHQgYmUgY2FsbGVkIGJlZm9yZSBzd2FwcGluZyB3aGVuIGNvbW1pdCBp cyBhYm9ydGVkLAo+ICsJCSAqIGluIHdoaWNoIGNhc2Ugd2UgaGF2ZSB0byBmcmVlIHRoZSBuZXcg c3RhdGUuCj4gKwkJICovCj4gKwkJaWYgKHBsYW5lX3N0YXRlID09IHBsYW5lLT5zdGF0ZSkKPiAr CQkJcGxhbmVfc3RhdGUgPSBuZXdfcGxhbmVfc3RhdGU7CgpPaCBkZWFyLiBDYW4gd2UgbWFrZSB0 aGlzIG5pY2VyIHNvbWVob3c/IEkgY2FuJ3QgYWN0dWFsbHkgc2VlIGFueSB1c2UKbGlrZSB0aGF0 IGN1cnJlbnRseS4gQW0gSSBibGluZD8KCkkgd2FzIHdvbmRlcmluZyBpZiB3ZSBzaG91bGQgYWRk IHNvbWUga2luZCBvZiBhc3NlcnRzIHRvIGEgYnVuY2ggb2YKdGhlc2UgZnVuY3Rpb25zIHRvIG1h a2Ugc3VyZSB0aGV5IGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBjb3JyZWN0IHBoYXNlCm9mIHRoZSBv cGVyYXRpb24uIFdlIGNvdWxkIHRyYWNrIHRoZSBwcm9ncmVzcyBpbiB0aGUgdG9wIGxldmVsIHN0 YXRlIEkKZ3Vlc3MuCgo+ICsKPiAgCQlpZiAoIWRybV9hdG9taWNfaGVscGVyX2ZyYW1lYnVmZmVy X2NoYW5nZWQoZGV2LCBvbGRfc3RhdGUsIHBsYW5lX3N0YXRlLT5jcnRjKSkKPiAgCQkJY29udGlu dWU7Cj4gIAo+IEBAIC0xOTk4LDE1ICsyMDA0LDE1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJf c3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlpbnQgaTsKPiAg CWxvbmcgcmV0Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlLCAqbmV3X2Nvbm5fc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4g IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAq bmV3X3BsYW5lX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ICAK PiAgCWlmIChzdGFsbCkgewo+IC0JCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNydGNfc3RhdGUsIGkpIHsKPiArCQlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAgCQkJc3Bpbl9sb2NrKCZjcnRjLT5jb21taXRf bG9jayk7Cj4gIAkJCWNvbW1pdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmY3J0Yy0+Y29t bWl0X2xpc3QsCj4gIAkJCQkJc3RydWN0IGRybV9jcnRjX2NvbW1pdCwgY29tbWl0X2VudHJ5KTsK PiBAQCAtMjAyNiwxNiArMjAzMiwyMCBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3Rh dGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCX0KPiAgCX0KPiAgCj4gLQlm b3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwg aSkgewo+IC0JCWNvbm5lY3Rvci0+c3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gLQkJc3dhcChzdGF0 ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSwgY29ubmVjdG9yLT5zdGF0ZSk7Cj4gLQkJY29ubmVjdG9y LT5zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ICsJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUsIGkp IHsKPiArCQlvbGRfY29ubl9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiArCQluZXdfY29ubl9zdGF0 ZS0+c3RhdGUgPSBOVUxMOwo+ICsKPiArCQlzdGF0ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSA9IG9s ZF9jb25uX3N0YXRlOwo+ICsJCWNvbm5lY3Rvci0+c3RhdGUgPSBuZXdfY29ubl9zdGF0ZTsKPiAg CX0KPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRl LCBpKSB7Cj4gLQkJY3J0Yy0+c3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gLQkJc3dhcChzdGF0ZS0+ Y3J0Y3NbaV0uc3RhdGUsIGNydGMtPnN0YXRlKTsKPiAtCQljcnRjLT5zdGF0ZS0+c3RhdGUgPSBO VUxMOwo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCW9sZF9jcnRjX3N0YXRlLT5zdGF0 ZSA9IHN0YXRlOwo+ICsJCW5ld19jcnRjX3N0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4gKwo+ICsJCXN0 YXRlLT5jcnRjc1tpXS5zdGF0ZSA9IG9sZF9jcnRjX3N0YXRlOwo+ICsJCWNydGMtPnN0YXRlID0g bmV3X2NydGNfc3RhdGU7Cj4gIAo+ICAJCWlmIChzdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0KSB7Cj4g IAkJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+IEBAIC0yMDQ3LDEwICsyMDU3LDEy IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRl KHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiAtCQlwbGFuZS0+c3RhdGUtPnN0YXRl ID0gc3RhdGU7Cj4gLQkJc3dhcChzdGF0ZS0+cGxhbmVzW2ldLnN0YXRlLCBwbGFuZS0+c3RhdGUp Owo+IC0JCXBsYW5lLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ICsJZm9yX2VhY2hfb2xkbmV3X3Bs YW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBuZXdfcGxhbmVfc3Rh dGUsIGkpIHsKPiArCQlvbGRfcGxhbmVfc3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gKwkJbmV3X3Bs YW5lX3N0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4gKwo+ICsJCXN0YXRlLT5wbGFuZXNbaV0uc3RhdGUg PSBvbGRfcGxhbmVfc3RhdGU7Cj4gKwkJcGxhbmUtPnN0YXRlID0gbmV3X3BsYW5lX3N0YXRlOwo+ ICAJfQo+ICB9CgpsZ3RtCgo+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3N3YXBf c3RhdGUpOwo+IEBAIC0yMjQ4LDcgKzIyNjAsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9vdXRwdXRf c3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29u bmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0 YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5fc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29ubl9zdGF0 ZS0+Y3J0YyA9PSBzZXQtPmNydGMpIHsKPiAgCQkJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19m b3JfY29ubmVjdG9yKGNvbm5fc3RhdGUsCj4gIAkJCQkJCQkJTlVMTCk7Cj4gQEAgLTIyNzAsNyAr MjI4Miw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hf bmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiAgCQkvKiBE b24ndCB1cGRhdGUgLT5lbmFibGUgZm9yIHRoZSBDUlRDIGluIHRoZSBzZXRfY29uZmlnIHJlcXVl c3QsCj4gIAkJICogc2luY2UgYSBtaXNtYXRjaCB3b3VsZCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0aGUg dXBwZXIgbGF5ZXJzLgo+ICAJCSAqIFRoZSBhY3R1YWwgbW9kZXNldCBjb2RlIGxhdGVyIG9uIHdp bGwgY2F0Y2ggYW55CgpCdWlsZGluZyB1cCB0aGUgbmV3IHN0YXRlLiBMb29rcyBjb3JyZWN0LgoK ClBoZXchIEFwYXJ0IGZyb20gc29tZSBvZiB0aGUgbGluZ2VyaW5nIGZvby0+c3RhdGUgZGVyZWZl cmVuY2VzIGFuZCB0aGUKY2hhbmdlIGluIGJlaGF2aW91ciBmb3IgbGVnYWN5IGN1cnNvcnMsIGFu ZCB0aGUgc2xpZ2h0IG9kZGJhbGxuZXNzIGluCnRoZSBwbGFuZV9jbGVhbnVwKCkgSSBkaWRuJ3Qg c3BvdCBhbnl0aGluZyB3cm9uZy4KClRoaXMgdGhpbmcgY291bGQgdXNlIGEgY29tbWl0IG1lc3Nh Z2UgSSB0aGluay4gQ291bGQgYXQgbGVhc3QgbGF5IG91dAp0aGUgYmFzaWMgcnVsZXMgb24gdGhl IGZvby0+c3RhdGUvZm9vX3N0YXRlIHZzLiBvbGRfc3RhdGUvbmV3X3N0YXRlCnJlcGxhY2VtZW50 cy4gTWlnaHQgaGVscCBzb21lb25lIHVuZGVyc3RhbmQgaXQgd2hvIGRvZXNuJ3Qga25vdyBzbyBt dWNoCmFib3V0IHRoZSBjdXJyZW50IHN0YXRlIHN3YXBwaW5nIG1lY2hhbmlzbS4KCi0tIApWaWxs ZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=