From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v4.1 1/5] drm/atomic: Fix atomic helpers to use the new iterator macros, v3. Date: Wed, 01 Mar 2017 12:06:13 +0200 Message-ID: <5214774.8laWGkfifG@avalon> References: <1487256430-7625-1-git-send-email-maarten.lankhorst@linux.intel.com> <2300823.Tk3Sl1JXBV@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: dri-devel@lists.freedesktop.org SGkgTWFhcnRlbiwKClRoYW5rIHlvdSBmb3IgdGhlIHJlc2VuZC4KCkZvciB0aGUgd2hvbGUgc2Vy aWVzLAoKVGVzdGVkLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFz b25ib2FyZC5jb20+CgpPbiBXZWRuZXNkYXkgMDEgTWFyIDIwMTcgMTA6MjE6MjYgTWFhcnRlbiBM YW5raG9yc3Qgd3JvdGU6Cj4gVGhlcmUgYXJlIG5ldyBpdGVyYXRvciBtYWNyb3MgdGhhdCBhbm5v dGF0ZSB3aGV0aGVyIHRoZSBuZXcgb3Igb2xkCj4gc3RhdGUgc2hvdWxkIGJlIHVzZWQuIFRoaXMg aXMgYmV0dGVyIHRoYW4gdXNpbmcgYSBzdGF0ZSB0aGF0IGRlcGVuZHMgb24KPiB3aGV0aGVyIGl0 J3MgY2FsbGVkIGJlZm9yZSBvciBhZnRlciBzd2FwLiBGb3IgY2xhcml0eSwgYWxzbyByZW5hbWUg dGhlCj4gdmFyaWFibGVzIGZyb20gJG9ial9zdGF0ZSB0byAob2xkLG5ldylfJG9ial9zdGF0ZSBh cyB3ZWxsLgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBVc2Ugb2xkL25ld18qX3N0YXRlIGZv ciB2YXJpYWJsZSBuYW1lcyBhcyBtdWNoIGFzIHBvc3NpYmxlLiAocGluY2hhcnRsKQo+IC0gRXhw YW5kIGNvbW1pdCBtZXNzYWdlLgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gLSBSZWJhc2Ugb24gdG9w IG9mIGxpbmsgdHJhaW5pbmcgcGF0Y2hlcy4KPiAtIGZyZWUgLT4gY2xlYW51cCAocGluY2hhcnRs KQo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJl bnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMgfCA0NDYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t Cj4gIDEgZmlsZSBjaGFuZ2VkLCAyMzAgaW5zZXJ0aW9ucygrKSwgMjE2IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgaW5kZXggNmIxMjM5NmY3MThiLi5h YTFlNzYwOWIwMjQKPiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAg LTYzLDE0ICs2MywxNSBAQAo+ICAgKi8KPiAgc3RhdGljIHZvaWQKPiAgZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCQlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsCj4gIAkJCQlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gCj4gLQlpZiAo cGxhbmUtPnN0YXRlLT5jcnRjKSB7Cj4gKwlpZiAob2xkX3BsYW5lX3N0YXRlLT5jcnRjKSB7Cj4g IAkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUs Cj4gLQkJCQkJCQkJcGxhbmUtPnN0YXRlLQo+Y3J0Yyk7Cj4gKwkJCQkJCQkJCm9sZF9wbGFuZV9z dGF0ZS0+Y3J0Yyk7Cj4gCj4gIAkJaWYgKFdBUk5fT04oIWNydGNfc3RhdGUpKQo+ICAJCQlyZXR1 cm47Cj4gQEAgLTkyLDcgKzkzLDcgQEAgZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfY2hhbmdlZChz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ICpzdGF0ZSwgc3RhdGljIGludCBoYW5kbGVfY29uZmxp Y3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUsIGJvb2wgZGlz YWJsZV9jb25mbGljdGluZ19lbmNvZGVycykKPiAgewo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nv bm5fc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJc3RydWN0 IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKPiAgCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsKPiBAQCAtMTA0LDE1ICsxMDUsMTUgQEAgc3RhdGljIGludCBoYW5kbGVfY29u ZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsICogcGFy dCBvZiB0aGUgc3RhdGUuIElmIHRoZSBzYW1lIGVuY29kZXIgaXMKPiBhc3NpZ25lZCB0byBtdWx0 aXBsZSAqIGNvbm5lY3RvcnMgYmFpbCBvdXQuCj4gIAkgKi8KPiAtCWZvcl9lYWNoX2Nvbm5lY3Rv cl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFj aF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRl LCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5j cyA9Cj4gY29ubmVjdG9yLT5oZWxwZXJfcHJpdmF0ZTsgc3RydWN0IGRybV9lbmNvZGVyICpuZXdf ZW5jb2RlcjsKPiAKPiAtCQlpZiAoIWNvbm5fc3RhdGUtPmNydGMpCj4gKwkJaWYgKCFuZXdfY29u bl9zdGF0ZS0+Y3J0YykKPiAgCQkJY29udGludWU7Cj4gCj4gIAkJaWYgKGZ1bmNzLT5hdG9taWNf YmVzdF9lbmNvZGVyKQo+IC0JCQluZXdfZW5jb2RlciA9IGZ1bmNzLT5hdG9taWNfYmVzdF9lbmNv ZGVyKGNvbm5lY3RvciwgCmNvbm5fc3RhdGUpOwo+ICsJCQluZXdfZW5jb2RlciA9IGZ1bmNzLT5h dG9taWNfYmVzdF9lbmNvZGVyKGNvbm5lY3RvciwgCm5ld19jb25uX3N0YXRlKTsKPiAgCQllbHNl IGlmIChmdW5jcy0+YmVzdF9lbmNvZGVyKQo+ICAJCQluZXdfZW5jb2RlciA9IGZ1bmNzLT5iZXN0 X2VuY29kZXIoY29ubmVjdG9yKTsKPiAgCQllbHNlCj4gQEAgLTE2NiwyMCArMTY3LDIwIEBAIHN0 YXRpYyBpbnQgaGFuZGxlX2NvbmZsaWN0aW5nX2VuY29kZXJzKHN0cnVjdAo+IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLCBnb3RvIG91dDsKPiAgCQl9Cj4gCj4gLQkJY29ubl9zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPiAtCQlpZiAoSVNf RVJSKGNvbm5fc3RhdGUpKSB7Cj4gLQkJCXJldCA9IFBUUl9FUlIoY29ubl9zdGF0ZSk7Cj4gKwkJ bmV3X2Nvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIApj b25uZWN0b3IpOwo+ICsJCWlmIChJU19FUlIobmV3X2Nvbm5fc3RhdGUpKSB7Cj4gKwkJCXJldCA9 IFBUUl9FUlIobmV3X2Nvbm5fc3RhdGUpOwo+ICAJCQlnb3RvIG91dDsKPiAgCQl9Cj4gCj4gIAkJ RFJNX0RFQlVHX0FUT01JQygiW0VOQ09ERVI6JWQ6JXNdIGluIHVzZSBvbiBbQ1JUQzolZDolc10s IApkaXNhYmxpbmcKPiBbQ09OTkVDVE9SOiVkOiVzXVxuIiwgZW5jb2Rlci0+YmFzZS5pZCwgZW5j b2Rlci0+bmFtZSwKPiAtCQkJCSBjb25uX3N0YXRlLT5jcnRjLT5iYXNlLmlkLCBjb25uX3N0YXRl LT5jcnRjLQo+bmFtZSwKPiArCQkJCSBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwgCm5l d19jb25uX3N0YXRlLT5jcnRjLT5uYW1lLAo+ICAJCQkJIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29u bmVjdG9yLT5uYW1lKTsKPiAKPiAtCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3Rp bmdfY3J0Y19zdGF0ZShzdGF0ZSwgCmNvbm5fc3RhdGUtPmNydGMpOwo+ICsJCWNydGNfc3RhdGUg PSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLAo+IG5ld19jb25uX3N0 YXRlLT5jcnRjKTsKPiAKPiAtCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0 b3IoY29ubl9zdGF0ZSwgTlVMTCk7Cj4gKwkJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3Jf Y29ubmVjdG9yKG5ld19jb25uX3N0YXRlLCBOVUxMKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlnb3Rv IG91dDsKPiAKPiBAQCAtMjQ1LDIyICsyNDYsMjIgQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gLQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsICpuZXdfY29ubmVjdG9yX3N0YXRlOwo+ ICAJaW50IGk7Cj4gCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5l Y3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9y X2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIApvbGRfY29ubmVjdG9yX3N0YXRlLAo+IG5ld19j b25uZWN0b3Jfc3RhdGUsIGkpIHsgc3RydWN0IGRybV9jcnRjICplbmNvZGVyX2NydGM7Cj4gCj4g LQkJaWYgKGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIpCj4gKwkJaWYg KG5ld19jb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyKQo+ICAJCQljb250 aW51ZTsKPiAKPiAtCQllbmNvZGVyX2NydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOwo+ICsJ CWVuY29kZXJfY3J0YyA9IG9sZF9jb25uZWN0b3Jfc3RhdGUtPmNydGM7Cj4gCj4gIAkJRFJNX0RF QlVHX0FUT01JQygiW0VOQ09ERVI6JWQ6JXNdIGluIHVzZSBvbiBbQ1JUQzolZDolc10sIApzdGVh bGluZyBpdFxuIiwKPiBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lLAo+ICAJCQkJIGVu Y29kZXJfY3J0Yy0+YmFzZS5pZCwgZW5jb2Rlcl9jcnRjLT5uYW1lKTsKPiAKPiAtCQlzZXRfYmVz dF9lbmNvZGVyKHN0YXRlLCBjb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwo+ICsJCXNldF9iZXN0X2Vu Y29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwo+IAo+ICAJCWNydGNfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCAKZW5jb2Rlcl9j cnRjKTsKPiAgCQljcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+IEBAIC0y NzIsNyArMjczLDggQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gIHN0YXRpYyBpbnQKPiAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gLQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlKQo+ ICsJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsCj4g KwkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5lY3Rvcl9zdGF0ZSkKPiAg ewo+ICAJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAg CXN0cnVjdCBkcm1fZW5jb2RlciAqbmV3X2VuY29kZXI7Cj4gQEAgLTI4MiwyNCArMjg0LDI0IEBA IHVwZGF0ZV9jb25uZWN0b3Jfcm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ICpzdGF0 ZSwgY29ubmVjdG9yLT5iYXNlLmlkLAo+ICAJCQkgY29ubmVjdG9yLT5uYW1lKTsKPiAKPiAtCWlm IChjb25uZWN0b3ItPnN0YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykgewo+IC0J CWlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjKSB7Cj4gLQkJCWNydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLAo+IGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMpOyArCWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9Cj4gbmV3X2Nvbm5lY3Rvcl9z dGF0ZS0+Y3J0Yykgewo+ICsJCWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Cj4gKwkJ CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLAo+ IG9sZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpOyBjcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5n ZWQgPSB0cnVlOwo+ICAJCX0KPiAKPiAtCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Cj4g LQkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LAo+IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7ICsJCWlmIChuZXdfY29ubmVjdG9yX3N0YXRlLT5j cnRjKSB7Cj4gKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0 YXRlKHN0YXRlLAo+IG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpOyBjcnRjX3N0YXRlLT5jb25u ZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+ICAJCX0KPiAgCX0KPiAKPiAtCWlmICghY29ubmVjdG9y X3N0YXRlLT5jcnRjKSB7Cj4gKwlpZiAoIW5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKPiAg CQlEUk1fREVCVUdfQVRPTUlDKCJEaXNhYmxpbmcgW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gIAkJ CQljb25uZWN0b3ItPmJhc2UuaWQsCj4gIAkJCQljb25uZWN0b3ItPm5hbWUpOwo+IAo+IC0JCXNl dF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7Cj4gKwkJc2V0X2Jl c3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7Cj4gCj4gIAkJcmV0 dXJuIDA7Cj4gIAl9Cj4gQEAgLTMwOCw3ICszMTAsNyBAQCB1cGRhdGVfY29ubmVjdG9yX3JvdXRp bmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+IAo+ICAJaWYgKGZ1bmNzLT5hdG9t aWNfYmVzdF9lbmNvZGVyKQo+ICAJCW5ld19lbmNvZGVyID0gZnVuY3MtPmF0b21pY19iZXN0X2Vu Y29kZXIoY29ubmVjdG9yLAo+IC0JCQkJCQkJIGNvbm5lY3Rvcl9zdGF0ZSk7Cj4gKwkJCQkJCQkg bmV3X2Nvbm5lY3Rvcl9zdGF0ZSk7Cj4gIAllbHNlIGlmIChmdW5jcy0+YmVzdF9lbmNvZGVyKQo+ ICAJCW5ld19lbmNvZGVyID0gZnVuY3MtPmJlc3RfZW5jb2Rlcihjb25uZWN0b3IpOwo+ICAJZWxz ZQo+IEBAIC0zMjEsMzQgKzMyMywzNCBAQCB1cGRhdGVfY29ubmVjdG9yX3JvdXRpbmcoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUsIHJldHVybiAtRUlOVkFMOwo+ICAJfQo+IAo+IC0J aWYgKCFkcm1fZW5jb2Rlcl9jcnRjX29rKG5ld19lbmNvZGVyLCBjb25uZWN0b3Jfc3RhdGUtPmNy dGMpKSB7Cj4gKwlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2sobmV3X2VuY29kZXIsIG5ld19jb25u ZWN0b3Jfc3RhdGUtPmNydGMpKSB7Cj4gIAkJRFJNX0RFQlVHX0FUT01JQygiW0VOQ09ERVI6JWQ6 JXNdIGluY29tcGF0aWJsZSB3aXRoIFtDUlRDOiVkOgolc11cbiIsCj4gIAkJCQkgbmV3X2VuY29k ZXItPmJhc2UuaWQsCj4gIAkJCQkgbmV3X2VuY29kZXItPm5hbWUsCj4gLQkJCQkgY29ubmVjdG9y X3N0YXRlLT5jcnRjLT5iYXNlLmlkLAo+IC0JCQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+bmFt ZSk7Cj4gKwkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKPiArCQkJCSBu ZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg CX0KPiAKPiAtCWlmIChuZXdfZW5jb2RlciA9PSBjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2Rl cikgewo+IC0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgbmV3X2Vu Y29kZXIpOwo+ICsJaWYgKG5ld19lbmNvZGVyID09IG5ld19jb25uZWN0b3Jfc3RhdGUtPmJlc3Rf ZW5jb2Rlcikgewo+ICsJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3Rh dGUsIG5ld19lbmNvZGVyKTsKPiAKPiAgCQlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVk OiVzXSBrZWVwcyBbRU5DT0RFUjolZDolc10sIG5vdyAKb24KPiBbQ1JUQzolZDolc11cbiIsIGNv bm5lY3Rvci0+YmFzZS5pZCwKPiAgCQkJCSBjb25uZWN0b3ItPm5hbWUsCj4gIAkJCQkgbmV3X2Vu Y29kZXItPmJhc2UuaWQsCj4gIAkJCQkgbmV3X2VuY29kZXItPm5hbWUsCj4gLQkJCQkgY29ubmVj dG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAo+IC0JCQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+ bmFtZSk7Cj4gKwkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKPiArCQkJ CSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKPiAKPiAgCQlyZXR1cm4gMDsKPiAg CX0KPiAKPiAgCXN0ZWFsX2VuY29kZXIoc3RhdGUsIG5ld19lbmNvZGVyKTsKPiAKPiAtCXNldF9i ZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOwo+ICsJc2V0 X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOwo+ IAo+IC0JY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3Rh dGUsCj4gY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsgKwljcnRjX3N0YXRlID0KPiBkcm1fYXRvbWlj X2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRj KTsKPiBjcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+IAo+ICAJRFJNX0RF QlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gdXNpbmcgW0VOQ09ERVI6JWQ6JXNdIG9uCj4g W0NSVEM6JWQ6JXNdXG4iLCBAQCAtMzU2LDggKzM1OCw4IEBAIHVwZGF0ZV9jb25uZWN0b3Jfcm91 dGluZyhzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgY29ubmVjdG9yLT5uYW1lLAo+ ICAJCQkgbmV3X2VuY29kZXItPmJhc2UuaWQsCj4gIAkJCSBuZXdfZW5jb2Rlci0+bmFtZSwKPiAt CQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKPiAtCQkJIGNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0Yy0+bmFtZSk7Cj4gKwkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlk LAo+ICsJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+bmFtZSk7Cj4gCj4gIAlyZXR1cm4g MDsKPiAgfQo+IEBAIC0zNjYsNTcgKzM2OCw1NyBAQCBzdGF0aWMgaW50Cj4gIG1vZGVfZml4dXAo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwo+ICAJaW50IGk7 Cj4gIAlpbnQgcmV0Owo+IAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmICghY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCj4g LQkJICAgICFjcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQpCj4gKwlmb3JfZWFjaF9uZXdf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlpZiAo IW5ld19jcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgJiYKPiArCQkgICAgIW5ld19jcnRjX3N0YXRl LT5jb25uZWN0b3JzX2NoYW5nZWQpCj4gIAkJCWNvbnRpbnVlOwo+IAo+IC0JCWRybV9tb2RlX2Nv cHkoJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUsICZjcnRjX3N0YXRlLT5tb2RlKTsKPiArCQlk cm1fbW9kZV9jb3B5KCZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSwgJm5ld19jcnRjX3N0 YXRlLQo+bW9kZSk7Cj4gIAl9Cj4gCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rv cl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBuZXdfY29ubl9zdGF0ZSwgaSkgewo+ICAJCWNv bnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAJCXN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcjsKPiAKPiAtCQlXQVJOX09OKCEhY29ubl9zdGF0ZS0+YmVzdF9l bmNvZGVyICE9ICEhY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gKwkJV0FSTl9PTighIW5ld19jb25uX3N0 YXRlLT5iZXN0X2VuY29kZXIgIT0gISFuZXdfY29ubl9zdGF0ZS0KPmNydGMpOwo+IAo+IC0JCWlm ICghY29ubl9zdGF0ZS0+Y3J0YyB8fCAhY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQo+ICsJCWlm ICghbmV3X2Nvbm5fc3RhdGUtPmNydGMgfHwgIW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIp Cj4gIAkJCWNvbnRpbnVlOwo+IAo+IC0JCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlz dGluZ19jcnRjX3N0YXRlKHN0YXRlLAo+IC0JCQkJCQkJCWNvbm5fc3RhdGUtCj5jcnRjKTsKPiAr CQluZXdfY3J0Y19zdGF0ZSA9Cj4gKwkJCWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3Rh dGUoc3RhdGUsIApuZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gCj4gIAkJLyoKPiAgCQkgKiBFYWNo IGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIApzdGVh bAo+ICAJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIC0+bW9kZV9maXh1cCB0d2ljZS4K PiAgCQkgKi8KPiAtCQllbmNvZGVyID0gY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICsJCWVu Y29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICAJCWZ1bmNzID0gZW5jb2Rl ci0+aGVscGVyX3ByaXZhdGU7Cj4gCj4gLQkJcmV0ID0gZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKGVu Y29kZXItPmJyaWRnZSwgJmNydGNfc3RhdGUtCj5tb2RlLAo+IC0JCQkJJmNydGNfc3RhdGUtPmFk anVzdGVkX21vZGUpOwo+ICsJCXJldCA9IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5i cmlkZ2UsICZuZXdfY3J0Y19zdGF0ZS0KPm1vZGUsCj4gKwkJCQkmbmV3X2NydGNfc3RhdGUtPmFk anVzdGVkX21vZGUpOwo+ICAJCWlmICghcmV0KSB7Cj4gIAkJCURSTV9ERUJVR19BVE9NSUMoIkJy aWRnZSBmaXh1cCBmYWlsZWRcbiIpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCQl9Cj4gCj4g IAkJaWYgKGZ1bmNzICYmIGZ1bmNzLT5hdG9taWNfY2hlY2spIHsKPiAtCQkJcmV0ID0gZnVuY3Mt PmF0b21pY19jaGVjayhlbmNvZGVyLCBjcnRjX3N0YXRlLAo+IC0JCQkJCQkgIGNvbm5fc3RhdGUp Owo+ICsJCQlyZXQgPSBmdW5jcy0+YXRvbWljX2NoZWNrKGVuY29kZXIsIG5ld19jcnRjX3N0YXRl LAo+ICsJCQkJCQkgIG5ld19jb25uX3N0YXRlKTsKPiAgCQkJaWYgKHJldCkgewo+ICAJCQkJRFJN X0RFQlVHX0FUT01JQygiW0VOQ09ERVI6JWQ6JXNdIGNoZWNrIApmYWlsZWRcbiIsCj4gIAkJCQkJ CSBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLQo+bmFtZSk7Cj4gIAkJCQlyZXR1cm4gcmV0Owo+ ICAJCQl9Cj4gIAkJfSBlbHNlIGlmIChmdW5jcyAmJiBmdW5jcy0+bW9kZV9maXh1cCkgewo+IC0J CQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChlbmNvZGVyLCAmY3J0Y19zdGF0ZS0+bW9kZSwKPiAt CQkJCQkJJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwo+ICsJCQlyZXQgPSBmdW5jcy0+bW9k ZV9maXh1cChlbmNvZGVyLCAmbmV3X2NydGNfc3RhdGUtCj5tb2RlLAo+ICsJCQkJCQkmbmV3X2Ny dGNfc3RhdGUtCj5hZGp1c3RlZF9tb2RlKTsKPiAgCQkJaWYgKCFyZXQpIHsKPiAgCQkJCURSTV9E RUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBmaXh1cCAKZmFpbGVkXG4iLAo+ICAJCQkJCQkg ZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0KPm5hbWUpOwo+IEBAIC00MjUsMjIgKzQyNywyMiBA QCBtb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQl9Cj4gIAl9 Cj4gCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBp KSB7Cj4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNf c3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5j czsKPiAKPiAtCQlpZiAoIWNydGNfc3RhdGUtPmVuYWJsZSkKPiArCQlpZiAoIW5ld19jcnRjX3N0 YXRlLT5lbmFibGUpCj4gIAkJCWNvbnRpbnVlOwo+IAo+IC0JCWlmICghY3J0Y19zdGF0ZS0+bW9k ZV9jaGFuZ2VkICYmCj4gLQkJICAgICFjcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQpCj4g KwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCj4gKwkJICAgICFuZXdfY3J0 Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkKQo+ICAJCQljb250aW51ZTsKPiAKPiAgCQlmdW5j cyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ICAJCWlmICghZnVuY3MtPm1vZGVfZml4dXApCj4g IAkJCWNvbnRpbnVlOwo+IAo+IC0JCXJldCA9IGZ1bmNzLT5tb2RlX2ZpeHVwKGNydGMsICZjcnRj X3N0YXRlLT5tb2RlLAo+IC0JCQkJCSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPiArCQly ZXQgPSBmdW5jcy0+bW9kZV9maXh1cChjcnRjLCAmbmV3X2NydGNfc3RhdGUtPm1vZGUsCj4gKwkJ CQkJJm5ld19jcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPiAgCQlpZiAoIXJldCkgewo+ICAJ CQlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gZml4dXAgZmFpbGVkXG4iLAo+ICAJCQkJ CSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiBAQCAtNDg3LDE5ICs0ODksMTkgQEAgZHJt X2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpj cnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uZWN0b3Jfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nv bm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25uZWN0b3Jfc3RhdGU7Cj4gIAlpbnQgaSwgcmV0Owo+IAo+ IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ IC0JCWlmICghZHJtX21vZGVfZXF1YWwoJmNydGMtPnN0YXRlLT5tb2RlLCAmY3J0Y19zdGF0ZS0+ bW9kZSkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgCm5ld19jcnRjX3N0YXRlLAo+IGkpIHsgKwkJaWYgKCFkcm1fbW9kZV9l cXVhbCgmb2xkX2NydGNfc3RhdGUtPm1vZGUsIAombmV3X2NydGNfc3RhdGUtPm1vZGUpKQo+IHsg RFJNX0RFQlVHX0FUT01JQygiW0NSVEM6JWQ6JXNdIG1vZGUgY2hhbmdlZFxuIiwKPiAgCQkJCQkg Y3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gLQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdl ZCA9IHRydWU7Cj4gKwkJCW5ld19jcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICAJ CX0KPiAKPiAtCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSAhPSBjcnRjX3N0YXRlLT5lbmFibGUp IHsKPiArCQlpZiAob2xkX2NydGNfc3RhdGUtPmVuYWJsZSAhPSBuZXdfY3J0Y19zdGF0ZS0+ZW5h YmxlKSB7Cj4gIAkJCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBlbmFibGUgY2hhbmdl ZFxuIiwKPiAgCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gCj4gQEAgLTUxMSw4 ICs1MTMsOCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJCSAqIFRoZSBvdGhlciB3YXkgYXJvdW5kIGlzIHRydWUgYXMgd2VsbC4g ZW5hYmxlICE9IDAKPiAgCQkJICogaWZmIGNvbm5lY3RvcnMgYXJlIGF0dGFjaGVkIGFuZCBhIG1v ZGUgaXMgc2V0Lgo+ICAJCQkgKi8KPiAtCQkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1 ZTsKPiAtCQkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiArCQkJbmV3 X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKwkJCW5ld19jcnRjX3N0YXRlLT5j b25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwo+ICAJCX0KPiAgCX0KPiAKPiBAQCAtNTIwLDIyICs1 MjIsMjMgQEAgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2Rldmlj ZQo+ICpkZXYsIGlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAKPiAtCWZvcl9lYWNoX2Nvbm5l Y3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAr CWZvcl9lYWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgCm9s ZF9jb25uZWN0b3Jfc3RhdGUsCj4gbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgaSkgeyAvKgo+ICAJCSAq IFRoaXMgb25seSBzZXRzIGNydGMtPmNvbm5lY3RvcnNfY2hhbmdlZCBmb3Igcm91dGluZyAKY2hh bmdlcywKPiAgCQkgKiBkcml2ZXJzIG11c3Qgc2V0IGNydGMtPmNvbm5lY3RvcnNfY2hhbmdlZCB0 aGVtc2VsdmVzIHdoZW4KPiAgCQkgKiBjb25uZWN0b3IgcHJvcGVydGllcyBuZWVkIHRvIGJlIHVw ZGF0ZWQuCj4gIAkJICovCj4gIAkJcmV0ID0gdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0YXRl LCBjb25uZWN0b3IsCj4gLQkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7Cj4gKwkJCQkJICAg ICAgIG9sZF9jb25uZWN0b3Jfc3RhdGUsCj4gKwkJCQkJICAgICAgIG5ld19jb25uZWN0b3Jfc3Rh dGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gLQkJaWYgKGNvbm5lY3Rvci0+ c3RhdGUtPmNydGMpIHsKPiAtCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5n X2NydGNfc3RhdGUoc3RhdGUsCj4gLQkJCQkJCQkJCQpjb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsK PiAtCQkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmxpbmtfc3RhdHVzICE9Cj4gLQkJCSAgICBjb25u ZWN0b3Jfc3RhdGUtPmxpbmtfc3RhdHVzKQo+IC0JCQkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19j aGFuZ2VkID0gdHJ1ZTsKPiArCQlpZiAob2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykgewo+ICsJ CQluZXdfY3J0Y19zdGF0ZSA9IApkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0 YXRlLAo+ICsJCQkJCQkJCQkgICAgCm9sZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpOwo+ICsJCQlp ZiAob2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+bGlua19zdGF0dXMgIT0KPiArCQkJICAgIG5ld19jb25u ZWN0b3Jfc3RhdGUtPmxpbmtfc3RhdHVzKQo+ICsJCQkJbmV3X2NydGNfc3RhdGUtPmNvbm5lY3Rv cnNfY2hhbmdlZCA9IHRydWU7Cj4gIAkJfQo+ICAJfQo+IAo+IEBAIC01NDUsMjggKzU0OCwyOCBA QCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRl diwgKiBjb25maWd1cmF0aW9uLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyBtb2Rl X2ZpeHVwIGluIGNhc2UKPiBhICogY3J0YyBvbmx5IGNoYW5nZWQgaXRzIG1vZGUgYnV0IGhhcyB0 aGUgc2FtZSBzZXQgb2YgY29ubmVjdG9ycy4gKi8KPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUo c3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgCm5ld19jcnRjX3N0YXRlLAo+IGkp IHsgYm9vbCBoYXNfY29ubmVjdG9ycyA9Cj4gLQkJCSEhY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX21h c2s7Cj4gKwkJCSEhbmV3X2NydGNfc3RhdGUtPmNvbm5lY3Rvcl9tYXNrOwo+IAo+ICAJCS8qCj4g IAkJICogV2UgbXVzdCBzZXQgLT5hY3RpdmVfY2hhbmdlZCBhZnRlciB3YWxraW5nIGNvbm5lY3Rv cnMgZm9yCj4gIAkJICogb3RoZXJ3aXNlIGFuIHVwZGF0ZSB0aGF0IG9ubHkgY2hhbmdlcyBhY3Rp dmUgd291bGQgcmVzdWx0IAppbgo+ICAJCSAqIGEgZnVsbCBtb2Rlc2V0IGJlY2F1c2UgdXBkYXRl X2Nvbm5lY3Rvcl9yb3V0aW5nIGZvcmNlIHRoYXQuCj4gIAkJICovCj4gLQkJaWYgKGNydGMtPnN0 YXRlLT5hY3RpdmUgIT0gY3J0Y19zdGF0ZS0+YWN0aXZlKSB7Cj4gKwkJaWYgKG9sZF9jcnRjX3N0 YXRlLT5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkgewo+ICAJCQlEUk1fREVCVUdf QVRPTUlDKCJbQ1JUQzolZDolc10gYWN0aXZlIGNoYW5nZWRcbiIsCj4gIAkJCQkJIGNydGMtPmJh c2UuaWQsIGNydGMtPm5hbWUpOwo+IC0JCQljcnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCA9IHRy dWU7Cj4gKwkJCW5ld19jcnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCA9IHRydWU7Cj4gIAkJfQo+ IAo+IC0JCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4g KwkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpCj4g IAkJCWNvbnRpbnVlOwo+IAo+ICAJCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBuZWVk cyBhbGwgY29ubmVjdG9ycywgZW5hYmxlOiAKJWMsIGFjdGl2ZToKPiAlY1xuIiwgY3J0Yy0+YmFz ZS5pZCwgY3J0Yy0+bmFtZSwKPiAtCQkJCSBjcnRjX3N0YXRlLT5lbmFibGUgPyAneScgOiAnbics Cj4gLQkJCQkgY3J0Y19zdGF0ZS0+YWN0aXZlID8gJ3knIDogJ24nKTsKPiArCQkJCSBuZXdfY3J0 Y19zdGF0ZS0+ZW5hYmxlID8gJ3knIDogJ24nLAo+ICsJCQkJIG5ld19jcnRjX3N0YXRlLT5hY3Rp dmUgPyAneScgOiAnbicpOwo+IAo+ICAJCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nv bm5lY3RvcnMoc3RhdGUsIGNydGMpOwo+ICAJCWlmIChyZXQgIT0gMCkKPiBAQCAtNTc2LDcgKzU3 OSw3IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCQlpZiAocmV0ICE9IDApCj4gIAkJCXJldHVybiByZXQ7Cj4gCj4gLQkJaWYgKGNy dGNfc3RhdGUtPmVuYWJsZSAhPSBoYXNfY29ubmVjdG9ycykgewo+ICsJCWlmIChuZXdfY3J0Y19z dGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7Cj4gIAkJCURSTV9ERUJVR19BVE9NSUMo IltDUlRDOiVkOiVzXSBlbmFibGVkL2Nvbm5lY3RvcnMgCm1pc21hdGNoXG4iLAo+ICAJCQkJCSBj cnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiAKPiBAQCAtNjA5LDIyICs2MTIsMjIgQEAgZHJt X2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSwgKm9sZF9wbGFuZV9zdGF0ZTsKPiAgCWludCBp LCByZXQgPSAwOwo+IAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBw bGFuZV9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRl LCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLAo+IG5ld19wbGFuZV9zdGF0ZSwgaSkgeyBjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gCj4gIAkJZnVuY3MgPSBwbGFu ZS0+aGVscGVyX3ByaXZhdGU7Cj4gCj4gLQkJZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfY2hhbmdl ZChzdGF0ZSwgcGxhbmVfc3RhdGUsIHBsYW5lKTsKPiArCQlkcm1fYXRvbWljX2hlbHBlcl9wbGFu ZV9jaGFuZ2VkKHN0YXRlLCBvbGRfcGxhbmVfc3RhdGUsIApuZXdfcGxhbmVfc3RhdGUsCj4gcGxh bmUpOwo+IAo+ICAJCWlmICghZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNfY2hlY2spCj4gIAkJCWNv bnRpbnVlOwo+IAo+IC0JCXJldCA9IGZ1bmNzLT5hdG9taWNfY2hlY2socGxhbmUsIHBsYW5lX3N0 YXRlKTsKPiArCQlyZXQgPSBmdW5jcy0+YXRvbWljX2NoZWNrKHBsYW5lLCBuZXdfcGxhbmVfc3Rh dGUpOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJRFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOiVz XSBhdG9taWMgZHJpdmVyIGNoZWNrIApmYWlsZWRcbiIsCj4gIAkJCQkJIHBsYW5lLT5iYXNlLmlk LCBwbGFuZS0+bmFtZSk7Cj4gQEAgLTYzMiw3ICs2MzUsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl9j aGVja19wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl9Cj4gIAl9Cj4gCj4gLQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlm b3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkp IHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAKPiAg CQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+IEBAIC02NDAsNyArNjQzLDcgQEAgZHJt X2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ aWYgKCFmdW5jcyB8fCAhZnVuY3MtPmF0b21pY19jaGVjaykKPiAgCQkJY29udGludWU7Cj4gCj4g LQkJcmV0ID0gZnVuY3MtPmF0b21pY19jaGVjayhjcnRjLCBjcnRjX3N0YXRlKTsKPiArCQlyZXQg PSBmdW5jcy0+YXRvbWljX2NoZWNrKGNydGMsIG5ld19jcnRjX3N0YXRlKTsKPiAgCQlpZiAocmV0 KSB7Cj4gIAkJCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBhdG9taWMgZHJpdmVyIGNo ZWNrIApmYWlsZWRcbiIsCj4gIAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+IEBA IC02OTQsMTIgKzY5NywxMiBAQCBzdGF0aWMgdm9pZAo+ICBkaXNhYmxlX291dHB1dHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiB7 Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IC0Jc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9jb25uX3N0YXRlLCAqbmV3X2Nvbm5fc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ICsJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+ICAJ aW50IGk7Cj4gCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25u ZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9y X2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCAKb2xkX2Nvbm5fc3RhdGUsCj4gbmV3X2Nv bm5fc3RhdGUsIGkpIHsgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVu Y3M7Cj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+IAo+IEBAIC03MzYsNyArNzM5 LDcgQEAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAKPiAgCQkvKiBSaWdodCBmdW5jdGlvbiBkZXBl bmRzIHVwb24gdGFyZ2V0IHN0YXRlLiAqLwo+ICAJCWlmIChmdW5jcykgewo+IC0JCQlpZiAoY29u bmVjdG9yLT5zdGF0ZS0+Y3J0YyAmJiBmdW5jcy0+cHJlcGFyZSkKPiArCQkJaWYgKG5ld19jb25u X3N0YXRlLT5jcnRjICYmIGZ1bmNzLT5wcmVwYXJlKQo+ICAJCQkJZnVuY3MtPnByZXBhcmUoZW5j b2Rlcik7Cj4gIAkJCWVsc2UgaWYgKGZ1bmNzLT5kaXNhYmxlKQo+ICAJCQkJZnVuY3MtPmRpc2Fi bGUoZW5jb2Rlcik7Cj4gQEAgLTc0NywxMSArNzUwLDExIEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp IGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gIAl9Cj4gCj4gLQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkp IHsKPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gbmV3X2NydGNfc3RhdGUsIGkpIHsgY29uc3Qgc3RydWN0IGRybV9jcnRj X2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gCj4gIAkJLyogU2h1dCBkb3duIGV2ZXJ5dGhpbmcgdGhh dCBuZWVkcyBhIGZ1bGwgbW9kZXNldC4gKi8KPiAtCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVk c19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKPiArCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19t b2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gCj4gIAkJaWYgKCFvbGRf Y3J0Y19zdGF0ZS0+YWN0aXZlKQo+IEBAIC03NjQsNyArNzY3LDcgQEAgZGlzYWJsZV9vdXRwdXRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKPiAKPiAKPiAgCQkvKiBSaWdodCBmdW5jdGlvbiBkZXBlbmRzIHVwb24gdGFyZ2V0IHN0 YXRlLiAqLwo+IC0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5wcmVwYXJlKQo+ ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5wcmVwYXJlKQo+ICAJCQlm dW5jcy0+cHJlcGFyZShjcnRjKTsKPiAgCQllbHNlIGlmIChmdW5jcy0+YXRvbWljX2Rpc2FibGUp Cj4gIAkJCWZ1bmNzLT5hdG9taWNfZGlzYWJsZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSk7Cj4gQEAg LTc5MywxMyArNzk2LDEzIEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNl dF9zdGF0ZShzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g LQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUsICpuZXdfY29ubl9zdGF0ZTsKPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJ aW50IGk7Cj4gCj4gIAkvKiBjbGVhciBvdXQgZXhpc3RpbmcgbGlua3MgYW5kIHVwZGF0ZSBkcG1z ICovCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3Is IG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0 YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCAKb2xkX2Nvbm5fc3RhdGUsCj4gbmV3X2Nvbm5fc3Rh dGUsIGkpIHsgaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcikgewo+ICAJCQlXQVJOX09OKCFjb25uZWN0 b3ItPmVuY29kZXItPmNydGMpOwo+IAo+IEBAIC04MDcsNyArODEwLDcgQEAgZHJtX2F0b21pY19o ZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRl diwgY29ubmVjdG9yLT5lbmNvZGVyID0gTlVMTDsKPiAgCQl9Cj4gCj4gLQkJY3J0YyA9IGNvbm5l Y3Rvci0+c3RhdGUtPmNydGM7Cj4gKwkJY3J0YyA9IG5ld19jb25uX3N0YXRlLT5jcnRjOwo+ICAJ CWlmICgoIWNydGMgJiYgb2xkX2Nvbm5fc3RhdGUtPmNydGMpIHx8Cj4gIAkJICAgIChjcnRjICYm IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkpIHsKPiAgCQkJc3Ry dWN0IGRybV9wcm9wZXJ0eSAqZHBtc19wcm9wID0KPiBAQCAtODI0LDIzICs4MjcsMjMgQEAgZHJt X2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdAo+IGRybV9k ZXZpY2UgKmRldiwgfQo+IAo+ICAJLyogc2V0IG5ldyBsaW5rcyAqLwo+IC0JZm9yX2VhY2hfY29u bmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgaSkg ewo+IC0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YykKPiArCWZvcl9lYWNoX25ld19jb25u ZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCAKaSkg ewo+ICsJCWlmICghbmV3X2Nvbm5fc3RhdGUtPmNydGMpCj4gIAkJCWNvbnRpbnVlOwo+IAo+IC0J CWlmIChXQVJOX09OKCFjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIpKQo+ICsJCWlmIChX QVJOX09OKCFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKSkKPiAgCQkJY29udGludWU7Cj4g Cj4gLQkJY29ubmVjdG9yLT5lbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVy Owo+IC0JCWNvbm5lY3Rvci0+ZW5jb2Rlci0+Y3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7 Cj4gKwkJY29ubmVjdG9yLT5lbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsK PiArCQljb25uZWN0b3ItPmVuY29kZXItPmNydGMgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0YzsKPiAg CX0KPiAKPiAgCS8qIHNldCBsZWdhY3kgc3RhdGUgaW4gdGhlIGNydGMgc3RydWN0dXJlICovCj4g LQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUs IGkpIHsKPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgbmV3 X2NydGNfc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+ cHJpbWFyeTsKPiAKPiAtCQljcnRjLT5tb2RlID0gY3J0Yy0+c3RhdGUtPm1vZGU7Cj4gLQkJY3J0 Yy0+ZW5hYmxlZCA9IGNydGMtPnN0YXRlLT5lbmFibGU7Cj4gKwkJY3J0Yy0+bW9kZSA9IG5ld19j cnRjX3N0YXRlLT5tb2RlOwo+ICsJCWNydGMtPmVuYWJsZWQgPSBuZXdfY3J0Y19zdGF0ZS0+ZW5h YmxlOwo+IAo+ICAJCWlmIChkcm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShvbGRf c3RhdGUsIHByaW1hcnkpICYmCj4gIAkJICAgIHByaW1hcnktPnN0YXRlLT5jcnRjID09IGNydGMp IHsKPiBAQCAtODQ4LDkgKzg1MSw5IEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lf bW9kZXNldF9zdGF0ZShzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsIGNydGMtPnkgPSBwcmltYXJ5 LT5zdGF0ZS0+c3JjX3kgPj4gMTY7Cj4gIAkJfQo+IAo+IC0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5h YmxlKQo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ICAJCQlkcm1fY2FsY190aW1l c3RhbXBpbmdfY29uc3RhbnRzKGNydGMsCj4gLQkJCQkJCQkmY3J0Yy0+c3RhdGUtCj5hZGp1c3Rl ZF9tb2RlKTsKPiArCQkJCQkJCSZuZXdfY3J0Y19zdGF0ZS0KPmFkanVzdGVkX21vZGUpOwo+ICAJ fQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9t b2Rlc2V0X3N0YXRlKTsKPiBAQCAtODU5LDIwICs4NjIsMjAgQEAgc3RhdGljIHZvaWQKPiAgY3J0 Y19zZXRfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g LQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7Cj4gIAlpbnQgaTsKPiAKPiAtCWZv cl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkg ewo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBuZXdfY3J0 Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1 bmNzOwo+IAo+IC0JCWlmICghY3J0Yy0+c3RhdGUtPm1vZGVfY2hhbmdlZCkKPiArCQlpZiAoIW5l d19jcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpCj4gIAkJCWNvbnRpbnVlOwo+IAo+ICAJCWZ1bmNz ID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gCj4gLQkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUg JiYgZnVuY3MtPm1vZGVfc2V0X25vZmIpIHsKPiArCQlpZiAobmV3X2NydGNfc3RhdGUtPmVuYWJs ZSAmJiBmdW5jcy0+bW9kZV9zZXRfbm9mYikgewo+ICAJCQlEUk1fREVCVUdfQVRPTUlDKCJtb2Rl c2V0IG9uIFtDUlRDOiVkOiVzXVxuIiwKPiAgCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFt ZSk7Cj4gCj4gQEAgLTg4MCwxOCArODgzLDE3IEBAIGNydGNfc2V0X21vZGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKSB9Cj4gIAl9 Cj4gCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3Is IG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBuZXdfY29ubl9zdGF0ZSwgCmkpIHsKPiBjb25zdCBzdHJ1 Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAtCQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsK PiAgCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgKmFkanVzdGVkX21vZGU7Cj4gCj4g LQkJaWYgKCFjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIpCj4gKwkJaWYgKCFuZXdfY29u bl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQo+ICAJCQljb250aW51ZTsKPiAKPiAtCQllbmNvZGVyID0g Y29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICsJCWVuY29kZXIgPSBuZXdfY29ubl9z dGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICAJCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7 Cj4gLQkJbmV3X2NydGNfc3RhdGUgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5zdGF0ZTsKPiAr CQluZXdfY3J0Y19zdGF0ZSA9IG5ld19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZTsKPiAgCQltb2Rl ID0gJm5ld19jcnRjX3N0YXRlLT5tb2RlOwo+ICAJCWFkanVzdGVkX21vZGUgPSAmbmV3X2NydGNf c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gCj4gQEAgLTkwNyw3ICs5MDksNyBAQCBjcnRjX3NldF9t b2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKm9s ZF9zdGF0ZSkgKi8KPiAgCQlpZiAoZnVuY3MgJiYgZnVuY3MtPmF0b21pY19tb2RlX3NldCkgewo+ ICAJCQlmdW5jcy0+YXRvbWljX21vZGVfc2V0KGVuY29kZXIsIG5ld19jcnRjX3N0YXRlLAo+IC0J CQkJCSAgICAgICBjb25uZWN0b3ItPnN0YXRlKTsKPiArCQkJCQkgICAgICAgbmV3X2Nvbm5fc3Rh dGUpOwo+ICAJCX0gZWxzZSBpZiAoZnVuY3MgJiYgZnVuY3MtPm1vZGVfc2V0KSB7Cj4gIAkJCWZ1 bmNzLT5tb2RlX3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiAgCQl9Cj4gQEAg LTk1OSwyNCArOTYxLDI0IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRf ZW5hYmxlcyhzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAt CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKPiAgCWludCBpOwo+IAo+IC0JZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7 Cj4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRj X3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVu Y3M7Cj4gCj4gIAkJLyogTmVlZCB0byBmaWx0ZXIgb3V0IENSVENzIHdoZXJlIG9ubHkgcGxhbmVz IGNoYW5nZS4gKi8KPiAtCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGMt PnN0YXRlKSkKPiArCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KG5ld19jcnRj X3N0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gCj4gLQkJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZl KQo+ICsJCWlmICghbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkKPiAgCQkJY29udGludWU7Cj4gCj4g IAkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsKPiAKPiAtCQlpZiAoY3J0Yy0+c3RhdGUt PmVuYWJsZSkgewo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4gIAkJCURSTV9E RUJVR19BVE9NSUMoImVuYWJsaW5nIFtDUlRDOiVkOiVzXVxuIiwKPiAgCQkJCQkgY3J0Yy0+YmFz ZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gCj4gQEAgLTk4NywxOCArOTg5LDE4IEBAIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QKPiBkcm1fZGV2aWNlICpk ZXYsIH0KPiAgCX0KPiAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUs IGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX25ld19jb25uZWN0 b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCAKaSkgewo+ IGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICAJCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAKPiAtCQlpZiAoIWNvbm5lY3Rvci0+c3RhdGUtPmJl c3RfZW5jb2RlcikKPiArCQlpZiAoIW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpCj4gIAkJ CWNvbnRpbnVlOwo+IAo+IC0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFj dGl2ZSB8fAo+IC0JCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY29ubmVjdG9y LT5zdGF0ZS0+Y3J0Yy0KPnN0YXRlKSkKPiArCQlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRjLT5z dGF0ZS0+YWN0aXZlIHx8Cj4gKwkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChu ZXdfY29ubl9zdGF0ZS0+Y3J0Yy0KPnN0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gCj4gLQkJZW5j b2RlciA9IGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcjsKPiArCQllbmNvZGVyID0gbmV3 X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKPiAgCQlmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9w cml2YXRlOwo+IAo+ICAJCURSTV9ERUJVR19BVE9NSUMoImVuYWJsaW5nIFtFTkNPREVSOiVkOiVz XVxuIiwKPiBAQCAtMTA0OCwyOSArMTA1MCwyNiBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfd2Fp dF9mb3JfZmVuY2VzKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwgYm9vbCBwcmVfc3dhcCkKPiAg ewo+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0 ZTsKPiAgCWludCBpLCByZXQ7Cj4gCj4gLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwg cGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFwcmVfc3dhcCkKPiAtCQkJcGxhbmVf c3RhdGUgPSBwbGFuZS0+c3RhdGU7Cj4gLQo+IC0JCWlmICghcGxhbmVfc3RhdGUtPmZlbmNlKQo+ ICsJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0 YXRlLCBpKSB7Cj4gKwkJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmZlbmNlKQo+ICAJCQljb250aW51 ZTsKPiAKPiAtCQlXQVJOX09OKCFwbGFuZV9zdGF0ZS0+ZmIpOwo+ICsJCVdBUk5fT04oIW5ld19w bGFuZV9zdGF0ZS0+ZmIpOwo+IAo+ICAJCS8qCj4gIAkJICogSWYgd2FpdGluZyBmb3IgZmVuY2Vz IHByZS1zd2FwIChpZTogbm9uYmxvY2spLCB1c2Vyc3BhY2UgCmNhbgo+ICAJCSAqIHN0aWxsIGlu dGVycnVwdCB0aGUgb3BlcmF0aW9uLiBJbnN0ZWFkIG9mIGJsb2NraW5nIHVudGlsIAp0aGUKPiAg CQkgKiB0aW1lciBleHBpcmVzLCBtYWtlIHRoZSB3YWl0IGludGVycnVwdGlibGUuCj4gIAkJICov Cj4gLQkJcmV0ID0gZG1hX2ZlbmNlX3dhaXQocGxhbmVfc3RhdGUtPmZlbmNlLCBwcmVfc3dhcCk7 Cj4gKwkJcmV0ID0gZG1hX2ZlbmNlX3dhaXQobmV3X3BsYW5lX3N0YXRlLT5mZW5jZSwgcHJlX3N3 YXApOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gCj4gLQkJZG1hX2ZlbmNlX3B1 dChwbGFuZV9zdGF0ZS0+ZmVuY2UpOwo+IC0JCXBsYW5lX3N0YXRlLT5mZW5jZSA9IE5VTEw7Cj4g KwkJZG1hX2ZlbmNlX3B1dChuZXdfcGxhbmVfc3RhdGUtPmZlbmNlKTsKPiArCQluZXdfcGxhbmVf c3RhdGUtPmZlbmNlID0gTlVMTDsKPiAgCX0KPiAKPiAgCXJldHVybiAwOwo+IEBAIC0xMDkzLDcg KzEwOTIsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKHN0cnVjdCBkcm1f ZGV2aWNlCj4gKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpu ZXdfY3J0Y19zdGF0ZTsKPiAgCWludCBpLCByZXQ7Cj4gIAl1bnNpZ25lZCBjcnRjX21hc2sgPSAw Owo+IAo+IEBAIC0xMTA0LDkgKzExMDMsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92 YmxhbmtzKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgaWYgKG9sZF9zdGF0ZS0+bGVnYWN5X2N1 cnNvcl91cGRhdGUpCj4gIAkJcmV0dXJuOwo+IAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShv bGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJc3RydWN0IGRybV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IGNydGMtPnN0YXRlOwo+IC0KPiArCWZvcl9lYWNoX29s ZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCj4gbmV3 X2NydGNfc3RhdGUsIGkpIHsgaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlIHx8Cj4gIW5ld19j cnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdlZCkgY29udGludWU7Cj4gCj4gQEAgLTExMTgsNyArMTEx NSw3IEBAIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3Moc3RydWN0IGRybV9kZXZp Y2UKPiAqZGV2LCBvbGRfc3RhdGUtPmNydGNzW2ldLmxhc3RfdmJsYW5rX2NvdW50ID0gZHJtX2Ny dGNfdmJsYW5rX2NvdW50KGNydGMpOwo+IH0KPiAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUo b2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkX2Ny dGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWlm ICghKGNydGNfbWFzayAmIGRybV9jcnRjX21hc2soY3J0YykpKQo+ICAJCQljb250aW51ZTsKPiAK PiBAQCAtMTQyNywxMSArMTQyNCwxMSBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfc2V0dXBfY29t bWl0KHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sIG5vbmJsb2NrKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3 X2NydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7Cj4gIAlpbnQg aSwgcmV0Owo+IAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19z dGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLCAKbmV3X2NydGNfc3RhdGUsCj4gaSkgeyBjb21taXQgPSBremFsbG9j KHNpemVvZigqY29tbWl0KSwgR0ZQX0tFUk5FTCk7Cj4gIAkJaWYgKCFjb21taXQpCj4gIAkJCXJl dHVybiAtRU5PTUVNOwo+IEBAIC0xNDUyLDcgKzE0NDksNyBAQCBpbnQgZHJtX2F0b21pY19oZWxw ZXJfc2V0dXBfY29tbWl0KHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCAvKiBEcml2 ZXJzIG9ubHkgc2VuZCBvdXQgZXZlbnRzIHdoZW4gYXQgbGVhc3QKPiBlaXRoZXIgY3VycmVudCBv ciAqIG5ldyBDUlRDIHN0YXRlIGlzIGFjdGl2ZS4gQ29tcGxldGUgcmlnaHQgYXdheSBpZgo+IGV2 ZXJ5dGhpbmcKPiAgCQkgKiBzdGF5cyBvZmYuICovCj4gLQkJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0 aXZlICYmICFjcnRjX3N0YXRlLT5hY3RpdmUpIHsKPiArCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5h Y3RpdmUgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpIHsKPiAgCQkJY29tcGxldGVfYWxsKCZj b21taXQtPmZsaXBfZG9uZSk7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiBAQCAtMTQ2MywxNyAr MTQ2MCwxNyBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfc2V0dXBfY29tbWl0KHN0cnVjdAo+IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlLCBjb250aW51ZTsKPiAgCQl9Cj4gCj4gLQkJaWYgKCFjcnRj X3N0YXRlLT5ldmVudCkgewo+ICsJCWlmICghbmV3X2NydGNfc3RhdGUtPmV2ZW50KSB7Cj4gIAkJ CWNvbW1pdC0+ZXZlbnQgPSBremFsbG9jKHNpemVvZigqY29tbWl0LT5ldmVudCksCj4gIAkJCQkJ CUdGUF9LRVJORUwpOwo+ICAJCQlpZiAoIWNvbW1pdC0+ZXZlbnQpCj4gIAkJCQlyZXR1cm4gLUVO T01FTTsKPiAKPiAtCQkJY3J0Y19zdGF0ZS0+ZXZlbnQgPSBjb21taXQtPmV2ZW50Owo+ICsJCQlu ZXdfY3J0Y19zdGF0ZS0+ZXZlbnQgPSBjb21taXQtPmV2ZW50Owo+ICAJCX0KPiAKPiAtCQljcnRj X3N0YXRlLT5ldmVudC0+YmFzZS5jb21wbGV0aW9uID0gJmNvbW1pdC0+ZmxpcF9kb25lOwo+IC0J CWNydGNfc3RhdGUtPmV2ZW50LT5iYXNlLmNvbXBsZXRpb25fcmVsZWFzZSA9IApyZWxlYXNlX2Ny dGNfY29tbWl0Owo+ICsJCW5ld19jcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5jb21wbGV0aW9uID0g JmNvbW1pdC0+ZmxpcF9kb25lOwo+ICsJCW5ld19jcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5jb21w bGV0aW9uX3JlbGVhc2UgPSAKcmVsZWFzZV9jcnRjX2NvbW1pdDsKPiAgCQlkcm1fY3J0Y19jb21t aXRfZ2V0KGNvbW1pdCk7Cj4gIAl9Cj4gCj4gQEAgLTE1MTIsMTIgKzE1MDksMTIgQEAgc3RhdGlj IHN0cnVjdCBkcm1fY3J0Y19jb21taXQKPiAqcHJlY2VlZGluZ19jb21taXQoc3RydWN0IGRybV9j cnRjICpjcnRjKSB2b2lkCj4gZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVz KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gewo+ICAJc3RydWN0IGRybV9j cnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0Y19j b21taXQgKmNvbW1pdDsKPiAgCWludCBpOwo+ICAJbG9uZyByZXQ7Cj4gCj4gLQlmb3JfZWFjaF9j cnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2Vh Y2hfbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ewo+ICAJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICAJCWNvbW1pdCA9IHByZWNl ZWRpbmdfY29tbWl0KGNydGMpOwo+ICAJCWlmIChjb21taXQpCj4gQEAgLTE1NjQsMTcgKzE1NjEs MTcgQEAKPiBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVu Y2llcyk7IHZvaWQKPiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKSB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0 Owo+ICAJaW50IGk7Cj4gCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0 YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0 YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbW1pdCA9IG9sZF9zdGF0ZS0+ Y3J0Y3NbaV0uY29tbWl0Owo+ICAJCWlmICghY29tbWl0KQo+ICAJCQljb250aW51ZTsKPiAKPiAg CQkvKiBiYWNrZW5kIG11c3QgaGF2ZSBjb25zdW1lZCBhbnkgZXZlbnQgYnkgbm93ICovCj4gLQkJ V0FSTl9PTihjcnRjLT5zdGF0ZS0+ZXZlbnQpOwo+ICsJCVdBUk5fT04obmV3X2NydGNfc3RhdGUt PmV2ZW50KTsKPiAgCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiAgCQljb21wbGV0 ZV9hbGwoJmNvbW1pdC0+aHdfZG9uZSk7Cj4gIAkJc3Bpbl91bmxvY2soJmNydGMtPmNvbW1pdF9s b2NrKTsKPiBAQCAtMTU5NiwxMiArMTU5MywxMiBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9od19kb25lKTsKPiAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf Y2xlYW51cF9kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCj4gKm9sZF9zdGF0ZSkgewo+ICAJ c3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVj dCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiAgCWludCBpOwo+ICAJbG9uZyByZXQ7Cj4gCj4g LQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkg ewo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBuZXdfY3J0 Y19zdGF0ZSwgaSkgewo+ICAJCWNvbW1pdCA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0Owo+ ICAJCWlmIChXQVJOX09OKCFjb21taXQpKQo+ICAJCQljb250aW51ZTsKPiBAQCAtMTY1MiwxNiAr MTY0OSwxNiBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoc3RydWN0Cj4g ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGU7Cj4g IAlpbnQgcmV0LCBpLCBqOwo+IAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBs YW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0 YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9w bGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+IAo+ICAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9w cml2YXRlOwo+IAo+ICAJCWlmIChmdW5jcy0+cHJlcGFyZV9mYikgewo+IC0JCQlyZXQgPSBmdW5j cy0+cHJlcGFyZV9mYihwbGFuZSwgcGxhbmVfc3RhdGUpOwo+ICsJCQlyZXQgPSBmdW5jcy0+cHJl cGFyZV9mYihwbGFuZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiAgCQkJaWYgKHJldCkKPiAgCQkJCWdv dG8gZmFpbDsKPiAgCQl9Cj4gQEAgLTE2NzAsNyArMTY2Nyw3IEBAIGludCBkcm1fYXRvbWljX2hl bHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsIHJldHVybiAwOwo+ IAo+ICBmYWlsOgo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFu ZV9zdGF0ZSwgaikgewo+ICsJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFu ZSwgbmV3X3BsYW5lX3N0YXRlLCBqKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxw ZXJfZnVuY3MgKmZ1bmNzOwo+IAo+ICAJCWlmIChqID49IGkpCj4gQEAgLTE2NzksNyArMTY3Niw3 IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2Rldmlj ZQo+ICpkZXYsIGZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwo+IAo+ICAJCWlmIChmdW5j cy0+Y2xlYW51cF9mYikKPiAtCQkJZnVuY3MtPmNsZWFudXBfZmIocGxhbmUsIHBsYW5lX3N0YXRl KTsKPiArCQkJZnVuY3MtPmNsZWFudXBfZmIocGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAl9 Cj4gCj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0xNzM3LDE0ICsxNzM0LDE0IEBAIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsIHVpbnQz Ml90IGZsYWdzKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxh bmU7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGU7Cj4gKwlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7Cj4g IAlpbnQgaTsKPiAgCWJvb2wgYWN0aXZlX29ubHkgPSBmbGFncyAmIERSTV9QTEFORV9DT01NSVRf QUNUSVZFX09OTFk7Cj4gIAlib29sIG5vX2Rpc2FibGUgPSBmbGFncyAmIERSTV9QTEFORV9DT01N SVRfTk9fRElTQUJMRV9BRlRFUl9NT0RFU0VUOwo+IAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0 ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRu ZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+IG5ld19j cnRjX3N0YXRlLCBpKSB7IGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNz Owo+IAo+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gQEAgLTE3NTIsMTMgKzE3 NDksMTMgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKHN0cnVjdAo+IGRy bV9kZXZpY2UgKmRldiwgaWYgKCFmdW5jcyB8fCAhZnVuY3MtPmF0b21pY19iZWdpbikKPiAgCQkJ Y29udGludWU7Cj4gCj4gLQkJaWYgKGFjdGl2ZV9vbmx5ICYmICFjcnRjLT5zdGF0ZS0+YWN0aXZl KQo+ICsJCWlmIChhY3RpdmVfb25seSAmJiAhbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkKPiAgCQkJ Y29udGludWU7Cj4gCj4gIAkJZnVuY3MtPmF0b21pY19iZWdpbihjcnRjLCBvbGRfY3J0Y19zdGF0 ZSk7Cj4gIAl9Cj4gCj4gLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShvbGRfc3RhdGUsIHBsYW5l LCBvbGRfcGxhbmVfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0 ZShvbGRfc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsCj4gbmV3X3BsYW5lX3N0YXRlLCBp KSB7IGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAgCQlib29s IGRpc2FibGluZzsKPiAKPiBAQCAtMTc3Nyw3ICsxNzc0LDcgQEAgdm9pZCBkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgKiBDUlRDIHRvIGF2 b2lkIHNraXBwaW5nIHBsYW5lcyBiZWluZyBkaXNhYmxlZCBvbiBhbgo+ICAJCQkgKiBhY3RpdmUg Q1JUQy4KPiAgCQkJICovCj4gLQkJCWlmICghZGlzYWJsaW5nICYmICFwbGFuZV9jcnRjX2FjdGl2 ZShwbGFuZS0+c3RhdGUpKQo+ICsJCQlpZiAoIWRpc2FibGluZyAmJiAhcGxhbmVfY3J0Y19hY3Rp dmUobmV3X3BsYW5lX3N0YXRlKSkKPiAgCQkJCWNvbnRpbnVlOwo+ICAJCQlpZiAoZGlzYWJsaW5n ICYmICFwbGFuZV9jcnRjX2FjdGl2ZShvbGRfcGxhbmVfc3RhdGUpKQo+ICAJCQkJY29udGludWU7 Cj4gQEAgLTE3OTYsMTIgKzE3OTMsMTIgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf cGxhbmVzKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwgY29udGludWU7Cj4gCj4gIAkJCWZ1bmNz LT5hdG9taWNfZGlzYWJsZShwbGFuZSwgb2xkX3BsYW5lX3N0YXRlKTsKPiAtCQl9IGVsc2UgaWYg KHBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCBkaXNhYmxpbmcpIHsKPiArCQl9IGVsc2UgaWYgKG5ld19w bGFuZV9zdGF0ZS0+Y3J0YyB8fCBkaXNhYmxpbmcpIHsKPiAgCQkJZnVuY3MtPmF0b21pY191cGRh dGUocGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSk7Cj4gIAkJfQo+ICAJfQo+IAo+IC0JZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gKwlm b3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0 YXRlLAo+IG5ld19jcnRjX3N0YXRlLCBpKSB7IGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJf ZnVuY3MgKmZ1bmNzOwo+IAo+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gQEAg LTE4MDksNyArMTgwNiw3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhz dHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsIGlmICghZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNfZmx1 c2gpCj4gIAkJCWNvbnRpbnVlOwo+IAo+IC0JCWlmIChhY3RpdmVfb25seSAmJiAhY3J0Yy0+c3Rh dGUtPmFjdGl2ZSkKPiArCQlpZiAoYWN0aXZlX29ubHkgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3Rp dmUpCj4gIAkJCWNvbnRpbnVlOwo+IAo+ICAJCWZ1bmNzLT5hdG9taWNfZmx1c2goY3J0Yywgb2xk X2NydGNfc3RhdGUpOwo+IEBAIC0xOTM2LDExICsxOTMzLDIxIEBAIHZvaWQgZHJtX2F0b21pY19o ZWxwZXJfY2xlYW51cF9wbGFuZXMoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwo+ICAJaW50 IGk7Cj4gCj4gLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShvbGRfc3RhdGUsIHBsYW5lLCBwbGFu ZV9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKG9sZF9zdGF0 ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwKPiBuZXdfcGxhbmVfc3RhdGUsIGkpIHsgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICsJCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICsKPiArCQkvKgo+ICsJCSAqIFRoaXMgbWlnaHQgYmUg Y2FsbGVkIGJlZm9yZSBzd2FwcGluZyB3aGVuIGNvbW1pdCBpcyAKYWJvcnRlZCwKPiArCQkgKiBp biB3aGljaCBjYXNlIHdlIGhhdmUgdG8gY2xlYW51cCB0aGUgbmV3IHN0YXRlLgo+ICsJCSAqLwo+ ICsJCWlmIChvbGRfcGxhbmVfc3RhdGUgPT0gcGxhbmUtPnN0YXRlKQo+ICsJCQlwbGFuZV9zdGF0 ZSA9IG5ld19wbGFuZV9zdGF0ZTsKPiArCQllbHNlCj4gKwkJCXBsYW5lX3N0YXRlID0gb2xkX3Bs YW5lX3N0YXRlOwo+IAo+ICAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwo+IAo+IEBA IC0xOTg2LDE1ICsxOTkzLDE1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShz dHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgaW50IGk7Cj4gIAlsb25nIHJldDsKPiAg CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSwgKm9sZF9jb25uX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlLCAqbmV3X2Nvbm5fc3RhdGU7Cj4gIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsICpv bGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUs ICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+IC0Jc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsICpvbGRfcGxhbmVfc3RhdGU7Cj4gKwlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7Cj4g IAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7Cj4gCj4gIAlpZiAoc3RhbGwpIHsKPiAt CQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4g KwkJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRl LCBpKSB7Cj4gIAkJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICAJCQljb21taXQg PSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmNydGMtPmNvbW1pdF9saXN0LAo+ICAJCQkJCXN0 cnVjdCBkcm1fY3J0Y19jb21taXQsIGNvbW1pdF9lbnRyeSk7Cj4gQEAgLTIwMTQsMjAgKzIwMjEs MjQgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0cnVjdAo+IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLCB9Cj4gIAl9Cj4gCj4gLQlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9y X2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLAo+IGNvbm5fc3RhdGUs IGkpIHsgKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0 b3IsCj4gb2xkX2Nvbm5fc3RhdGUsIG5ld19jb25uX3N0YXRlLCBpKSB7IFdBUk5fT04oY29ubmVj dG9yLT5zdGF0ZSAhPQo+IG9sZF9jb25uX3N0YXRlKTsKPiAKPiAtCQljb25uZWN0b3ItPnN0YXRl LT5zdGF0ZSA9IHN0YXRlOwo+IC0JCXN3YXAoc3RhdGUtPmNvbm5lY3RvcnNbaV0uc3RhdGUsIGNv bm5lY3Rvci0+c3RhdGUpOwo+IC0JCWNvbm5lY3Rvci0+c3RhdGUtPnN0YXRlID0gTlVMTDsKPiAr CQlvbGRfY29ubl9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiArCQluZXdfY29ubl9zdGF0ZS0+c3Rh dGUgPSBOVUxMOwo+ICsKPiArCQlzdGF0ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSA9IG9sZF9jb25u X3N0YXRlOwo+ICsJCWNvbm5lY3Rvci0+c3RhdGUgPSBuZXdfY29ubl9zdGF0ZTsKPiAgCX0KPiAK PiAtCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19z dGF0ZSwgY3J0Y19zdGF0ZSwgCmkpCj4geyArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiBuZXdfY3J0Y19zdGF0ZSwgaSkgeyBXQVJO X09OKGNydGMtPnN0YXRlICE9IG9sZF9jcnRjX3N0YXRlKTsKPiAKPiAtCQljcnRjLT5zdGF0ZS0+ c3RhdGUgPSBzdGF0ZTsKPiAtCQlzd2FwKHN0YXRlLT5jcnRjc1tpXS5zdGF0ZSwgY3J0Yy0+c3Rh dGUpOwo+IC0JCWNydGMtPnN0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4gKwkJb2xkX2NydGNfc3RhdGUt PnN0YXRlID0gc3RhdGU7Cj4gKwkJbmV3X2NydGNfc3RhdGUtPnN0YXRlID0gTlVMTDsKPiArCj4g KwkJc3RhdGUtPmNydGNzW2ldLnN0YXRlID0gb2xkX2NydGNfc3RhdGU7Cj4gKwkJY3J0Yy0+c3Rh dGUgPSBuZXdfY3J0Y19zdGF0ZTsKPiAKPiAgCQlpZiAoc3RhdGUtPmNydGNzW2ldLmNvbW1pdCkg ewo+ICAJCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiBAQCAtMjAzOSwxMiArMjA1 MCwxNCBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0Cj4gZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsIH0KPiAgCX0KPiAKPiAtCWZvcl9lYWNoX29sZG5ld19wbGFuZV9p bl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgCnBsYW5lX3N0YXRlLAo+IGkp IHsgKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxh bmVfc3RhdGUsCj4gbmV3X3BsYW5lX3N0YXRlLCBpKSB7IFdBUk5fT04ocGxhbmUtPnN0YXRlICE9 IG9sZF9wbGFuZV9zdGF0ZSk7Cj4gCj4gLQkJcGxhbmUtPnN0YXRlLT5zdGF0ZSA9IHN0YXRlOwo+ IC0JCXN3YXAoc3RhdGUtPnBsYW5lc1tpXS5zdGF0ZSwgcGxhbmUtPnN0YXRlKTsKPiAtCQlwbGFu ZS0+c3RhdGUtPnN0YXRlID0gTlVMTDsKPiArCQlvbGRfcGxhbmVfc3RhdGUtPnN0YXRlID0gc3Rh dGU7Cj4gKwkJbmV3X3BsYW5lX3N0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4gKwo+ICsJCXN0YXRlLT5w bGFuZXNbaV0uc3RhdGUgPSBvbGRfcGxhbmVfc3RhdGU7Cj4gKwkJcGxhbmUtPnN0YXRlID0gbmV3 X3BsYW5lX3N0YXRlOwo+ICAJfQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxw ZXJfc3dhcF9zdGF0ZSk7Cj4gQEAgLTIyMjcsOSArMjI0MCw5IEBAIHN0YXRpYyBpbnQgdXBkYXRl X291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ICpzdGF0ZSwgewo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHNldC0+Y3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsK PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKPiAgCWludCBy ZXQsIGk7Cj4gCj4gIAlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rpb25fbXV0ZXgsCj4gQEAgLTIyNDIsMzEgKzIyNTUsMzIgQEAgc3RhdGljIGludCB1cGRh dGVfb3V0cHV0X3N0YXRlKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgewo+IC0JCWlmIChjb25uX3N0YXRlLT5jcnRj ID09IHNldC0+Y3J0Yykgewo+IC0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25u ZWN0b3IoY29ubl9zdGF0ZSwKPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKPiArCQlpZiAobmV3X2Nvbm5fc3Rh dGUtPmNydGMgPT0gc2V0LT5jcnRjKSB7Cj4gKwkJCXJldCA9IApkcm1fYXRvbWljX3NldF9jcnRj X2Zvcl9jb25uZWN0b3IobmV3X2Nvbm5fc3RhdGUsCj4gIAkJCQkJCQkJTlVMTCk7Cj4gIAkJCWlm IChyZXQpCj4gIAkJCQlyZXR1cm4gcmV0Owo+ICsKPiAgCQkJLyogTWFrZSBzdXJlIGxlZ2FjeSBz ZXRDcnRjIGFsd2F5cyByZS10cmFpbnMgKi8KPiAtCQkJY29ubl9zdGF0ZS0+bGlua19zdGF0dXMg PSBEUk1fTElOS19TVEFUVVNfR09PRDsKPiArCQkJbmV3X2Nvbm5fc3RhdGUtPmxpbmtfc3RhdHVz ID0gRFJNX0xJTktfU1RBVFVTX0dPT0Q7Cj4gIAkJfQo+ICAJfQo+IAo+ICAJLyogVGhlbiBzZXQg YWxsIGNvbm5lY3RvcnMgZnJvbSBzZXQtPmNvbm5lY3RvcnMgb24gdGhlIHRhcmdldCBjcnRjICov Cj4gIAlmb3IgKGkgPSAwOyBpIDwgc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7Cj4gLQkJY29u bl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwKPiArCQluZXdf Y29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwKPiAgCQkJ CQkJCSAgICBzZXQtCj5jb25uZWN0b3JzW2ldKTsKPiAtCQlpZiAoSVNfRVJSKGNvbm5fc3RhdGUp KQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjb25uX3N0YXRlKTsKPiArCQlpZiAoSVNfRVJSKG5ld19j b25uX3N0YXRlKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIobmV3X2Nvbm5fc3RhdGUpOwo+IAo+IC0J CXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRlLAo+ICsJ CXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3RvcihuZXdfY29ubl9zdGF0ZSwK PiAgCQkJCQkJCXNldC0+Y3J0Yyk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAg CX0KPiAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUs IGkpIHsKPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0 Y19zdGF0ZSwgaSkgewo+ICAJCS8qIERvbid0IHVwZGF0ZSAtPmVuYWJsZSBmb3IgdGhlIENSVEMg aW4gdGhlIHNldF9jb25maWcgCnJlcXVlc3QsCj4gIAkJICogc2luY2UgYSBtaXNtYXRjaCB3b3Vs ZCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0aGUgdXBwZXIgbGF5ZXJzLgo+ICAJCSAqIFRoZSBhY3R1YWwg bW9kZXNldCBjb2RlIGxhdGVyIG9uIHdpbGwgY2F0Y2ggYW55Cj4gQEAgLTIyNzQsMTMgKzIyODgs MTMgQEAgc3RhdGljIGludCB1cGRhdGVfb3V0cHV0X3N0YXRlKHN0cnVjdAo+IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLCBpZiAoY3J0YyA9PSBzZXQtPmNydGMpCj4gIAkJCWNvbnRpbnVlOwo+IAo+ IC0JCWlmICghY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX21hc2spIHsKPiAtCQkJcmV0ID0gZHJtX2F0 b21pY19zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjKGNydGNfc3RhdGUsCj4gKwkJaWYgKCFuZXdfY3J0 Y19zdGF0ZS0+Y29ubmVjdG9yX21hc2spIHsKPiArCQkJcmV0ID0gCmRybV9hdG9taWNfc2V0X21v ZGVfcHJvcF9mb3JfY3J0YyhuZXdfY3J0Y19zdGF0ZSwKPiAgCQkJCQkJCQlOVUxMKTsKPiAgCQkJ aWYgKHJldCA8IDApCj4gIAkJCQlyZXR1cm4gcmV0Owo+IAo+IC0JCQljcnRjX3N0YXRlLT5hY3Rp dmUgPSBmYWxzZTsKPiArCQkJbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+ICAJCX0K PiAgCX0KPiAKPiBAQCAtMjU4MywyMSArMjU5NywyMSBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X2R1cGxpY2F0ZWRfc3RhdGUoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs IHsKPiAgCWludCBpOwo+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5l d19wbGFuZV9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gLQlz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK PiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gCj4gIAlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7 Cj4gCj4gLQlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9z dGF0ZSwgaSkKPiArCWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG5l d19wbGFuZV9zdGF0ZSwgaSkKPiAgCQlzdGF0ZS0+cGxhbmVzW2ldLm9sZF9zdGF0ZSA9IHBsYW5l LT5zdGF0ZTsKPiAKPiAtCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBj cnRjX3N0YXRlLCBpKQo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKQo+ICAJCXN0YXRlLT5jcnRjc1tpXS5vbGRfc3RhdGUgPSBjcnRj LT5zdGF0ZTsKPiAKPiAtCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNv bm5lY3RvciwgY29ubl9zdGF0ZSwgaSkKPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3Rh dGUoc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpCj4gIAkJc3RhdGUtPmNvbm5l Y3RvcnNbaV0ub2xkX3N0YXRlID0gY29ubmVjdG9yLT5zdGF0ZTsKPiAKPiAgCXJldHVybiBkcm1f YXRvbWljX2NvbW1pdChzdGF0ZSk7CgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=