From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 10/33] drm/i915: Remove GPU reset dependence on struct_mutex Date: Fri, 25 Jan 2019 14:50:50 +0200 Message-ID: <87fttglx3p.fsf@gaia.fi.intel.com> References: <20190125023005.1007-1-chris@chris-wilson.co.uk> <20190125023005.1007-10-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 006166E02C for ; Fri, 25 Jan 2019 12:52:45 +0000 (UTC) In-Reply-To: <20190125023005.1007-10-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gTm93IHRo YXQgdGhlIHN1Ym1pc3Npb24gYmFja2VuZHMgYXJlIGNvbnRyb2xsZWQgdmlhIHRoZWlyIG93biBz cGlubG9ja3MsCj4gd2l0aCBhIHdhdmUgb2YgYSBtYWdpYyB3YW5kIHdlIGNhbiBsaWZ0IHRoZSBz dHJ1Y3RfbXV0ZXggcmVxdWlyZW1lbnQKPiBhcm91bmQgR1BVIHJlc2V0LiBUaGF0IGlzIHdlIGFs bG93IHRoZSBzdWJtaXNzaW9uIGZyb250ZW5kICh1c2Vyc3BhY2UpCj4gdG8ga2VlcCBvbiBzdWJt aXR0aW5nIHdoaWxlIHdlIHByb2Nlc3MgdGhlIEdQVSByZXNldCBhcyB3ZSBjYW4gc3VzcGVuZAo+ IHRoZSBiYWNrZW5kIGluZGVwZW5kZW50bHkuCj4KPiBUaGUgbWFqb3IgY2hhbmdlIGlzIGFyb3Vu ZCB0aGUgYmFja29mZi9oYW5kb2ZmIHN0cmF0ZWd5IGZvciBwZXJmb3JtaW5nCj4gdGhlIHJlc2V0 LiBXaXRoIG5vIG11dGV4IGRlYWRsb2NrLCB3ZSBubyBsb25nZXIgaGF2ZSB0byBjb29yZGluYXRl IHdpdGgKPiBhbnkgd2FpdGVyLCBhbmQganVzdCBwZXJmb3JtIHRoZSByZXNldCBpbW1lZGlhdGVs eS4KPgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX21tYXBfZ3R0L2hhbmcgIyByZWdyZXNzZXMKPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDM4ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgNSAt Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAxOCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaCAgICAgfCAgIDEg LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgICAgfCAgIDEg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAxMDQg KysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaCAgICAgICAgIHwg IDI4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8 ICA0NyAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAgICAgICAgICAg IHwgMzgzICsrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl c2V0LmggICAgICAgICAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYyAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYyAgIHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hhbmdjaGVjay5jICAgICAgICB8ICAyOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyAgICAgICAgICAgICAgfCAgOTEgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfb3ZlcmxheS5jICAgICAgICAgIHwgICAyIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgIDkxICsrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICAxNyArLQo+ICAuLi4vZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyAgfCAgNTcgKy0tCj4gIC4uLi9kcm0vaTkxNS9z ZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyAgICB8ICAgMyAtCj4gIC4uLi9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAgNCArLQo+ICAyMCBmaWxlcyBjaGFu Z2VkLCAzOTUgaW5zZXJ0aW9ucygrKSwgNTM3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBlODA5MDMxMTRjYTguLjNiOTk1ZjlmZGMwNiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEyODUsOCArMTI4NSw2IEBA IHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKPiAgCQlzZXFfcHV0cyhtLCAiV2VkZ2VkXG4iKTsKPiAgCWlmICh0ZXN0X2JpdChJ OTE1X1JFU0VUX0JBQ0tPRkYsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKSkKPiAgCQlzZXFf cHV0cyhtLCAiUmVzZXQgaW4gcHJvZ3Jlc3M6IHN0cnVjdF9tdXRleCBiYWNrb2ZmXG4iKTsKPiAt CWlmICh0ZXN0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZs YWdzKSkKPiAtCQlzZXFfcHV0cyhtLCAiUmVzZXQgaW4gcHJvZ3Jlc3M6IHJlc2V0IGhhbmRvZmYg dG8gd2FpdGVyXG4iKTsKPiAgCWlmICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yLndhaXRfcXVldWUpKQo+ICAJCXNlcV9wdXRzKG0sICJXYWl0ZXIgaG9sZGluZyBzdHJ1Y3Qg bXV0ZXhcbiIpOwo+ICAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmRldl9wcml2LT5ncHVfZXJyb3Iu cmVzZXRfcXVldWUpKQo+IEBAIC0xMzIyLDE1ICsxMzIwLDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9o YW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzdHJ1 Y3QgcmJfbm9kZSAqcmI7Cj4gIAo+ICAJCXNlcV9wcmludGYobSwgIiVzOlxuIiwgZW5naW5lLT5u YW1lKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJcdHNlcW5vID0gJXggW2N1cnJlbnQgJXgsIGxhc3Qg JXhdXG4iLAo+ICsJCXNlcV9wcmludGYobSwgIlx0c2Vxbm8gPSAleCBbY3VycmVudCAleCwgbGFz dCAleF0sICVkbXMgYWdvXG4iLAo+ICAJCQkgICBlbmdpbmUtPmhhbmdjaGVjay5zZXFubywgc2Vx bm9baWRdLAo+IC0JCQkgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSk7Cj4gLQkJ c2VxX3ByaW50ZihtLCAiXHR3YWl0ZXJzPyAlcywgZmFrZSBpcnEgYWN0aXZlPyAlcywgc3RhbGxl ZD8gJXMsIHdlZGdlZD8gJXNcbiIsCj4gKwkJCSAgIGludGVsX2VuZ2luZV9sYXN0X3N1Ym1pdChl bmdpbmUpLAo+ICsJCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLQo+ICsJCQkJCSAgICBl bmdpbmUtPmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wKSk7Cj4gKwkJc2VxX3ByaW50ZihtLCAi XHR3YWl0ZXJzPyAlcywgZmFrZSBpcnEgYWN0aXZlPyAlc1xuIiwKPiAgCQkJICAgeWVzbm8oaW50 ZWxfZW5naW5lX2hhc193YWl0ZXIoZW5naW5lKSksCj4gIAkJCSAgIHllc25vKHRlc3RfYml0KGVu Z2luZS0+aWQsCj4gLQkJCQkJICAmZGV2X3ByaXYtPmdwdV9lcnJvci5taXNzZWRfaXJxX3Jpbmdz KSksCj4gLQkJCSAgIHllc25vKGVuZ2luZS0+aGFuZ2NoZWNrLnN0YWxsZWQpLAo+IC0JCQkgICB5 ZXNubyhlbmdpbmUtPmhhbmdjaGVjay53ZWRnZWQpKTsKPiArCQkJCQkgICZkZXZfcHJpdi0+Z3B1 X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MpKSk7Cj4gIAo+ICAJCXNwaW5fbG9ja19pcnEoJmItPnJi X2xvY2spOwo+ICAJCWZvciAocmIgPSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJi X25leHQocmIpKSB7Cj4gQEAgLTEzNDQsMTEgKzEzNDIsNiBAQCBzdGF0aWMgaW50IGk5MTVfaGFu Z2NoZWNrX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAkJc2VxX3By aW50ZihtLCAiXHRBQ1RIRCA9IDB4JTA4bGx4IFtjdXJyZW50IDB4JTA4bGx4XVxuIiwKPiAgCQkJ ICAgKGxvbmcgbG9uZyllbmdpbmUtPmhhbmdjaGVjay5hY3RoZCwKPiAgCQkJICAgKGxvbmcgbG9u ZylhY3RoZFtpZF0pOwo+IC0JCXNlcV9wcmludGYobSwgIlx0YWN0aW9uID0gJXMoJWQpICVkIG1z IGFnb1xuIiwKPiAtCQkJICAgaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIoZW5naW5lLT5oYW5nY2hl Y2suYWN0aW9uKSwKPiAtCQkJICAgZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uLAo+IC0JCQkgICBq aWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLQo+IC0JCQkJCSAgICBlbmdpbmUtPmhhbmdjaGVjay5h Y3Rpb25fdGltZXN0YW1wKSk7Cj4gIAo+ICAJCWlmIChlbmdpbmUtPmlkID09IFJDUykgewo+ICAJ CQlzZXFfcHV0cyhtLCAiXHRpbnN0ZG9uZSByZWFkID1cbiIpOwo+IEBAIC0zOTEyLDggKzM5MDUs NiBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfd2VkZ2VkX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRhdGE7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQl1bnNpZ25lZCBpbnQgdG1wOwo+ICAKPiAgCS8q Cj4gIAkgKiBUaGVyZSBpcyBubyBzYWZlZ3VhcmQgYWdhaW5zdCB0aGlzIGRlYnVnZnMgZW50cnkg Y29sbGlkaW5nCj4gQEAgLTM5MjYsMTggKzM5MTcsOCBAQCBpOTE1X3dlZGdlZF9zZXQodm9pZCAq ZGF0YSwgdTY0IHZhbCkKPiAgCWlmIChpOTE1X3Jlc2V0X2JhY2tvZmYoJmk5MTUtPmdwdV9lcnJv cikpCj4gIAkJcmV0dXJuIC1FQUdBSU47Cj4gIAo+IC0JZm9yX2VhY2hfZW5naW5lX21hc2tlZChl bmdpbmUsIGk5MTUsIHZhbCwgdG1wKSB7Cj4gLQkJZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8gPSBp bnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSk7Cj4gLQkJZW5naW5lLT5oYW5nY2hlY2suc3Rh bGxlZCA9IHRydWU7Cj4gLQl9Cj4gLQo+ICAJaTkxNV9oYW5kbGVfZXJyb3IoaTkxNSwgdmFsLCBJ OTE1X0VSUk9SX0NBUFRVUkUsCj4gIAkJCSAgIk1hbnVhbGx5IHNldCB3ZWRnZWQgZW5naW5lIG1h c2sgPSAlbGx4IiwgdmFsKTsKPiAtCj4gLQl3YWl0X29uX2JpdCgmaTkxNS0+Z3B1X2Vycm9yLmZs YWdzLAo+IC0JCSAgICBJOTE1X1JFU0VUX0hBTkRPRkYsCj4gLQkJICAgIFRBU0tfVU5JTlRFUlJV UFRJQkxFKTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtNDA5MiwxMyArNDA3Myw4 IEBAIGk5MTVfZHJvcF9jYWNoZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAkJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCX0KPiAgCj4gLQlpZiAodmFsICYg RFJPUF9SRVNFVF9BQ1RJVkUgJiYKPiAtCSAgICBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1 LT5ncHVfZXJyb3IpKSB7Cj4gKwlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYgaTkxNV90 ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiAgCQlpOTE1X2hhbmRsZV9lcnJv cihpOTE1LCBBTExfRU5HSU5FUywgMCwgTlVMTCk7Cj4gLQkJd2FpdF9vbl9iaXQoJmk5MTUtPmdw dV9lcnJvci5mbGFncywKPiAtCQkJICAgIEk5MTVfUkVTRVRfSEFORE9GRiwKPiAtCQkJICAgIFRB U0tfVU5JTlRFUlJVUFRJQkxFKTsKPiAtCX0KPiAgCj4gIAlmc19yZWNsYWltX2FjcXVpcmUoR0ZQ X0tFUk5FTCk7Cj4gIAlpZiAodmFsICYgRFJPUF9CT1VORCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCAzYzExMWFkMDk5MjIuLjAxMzNkMWRhM2QzYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0zMDAxLDExICszMDAxLDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5 MTVfcmVzZXRfYmFja29mZihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ICAJcmV0dXJu IHVubGlrZWx5KHRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmVycm9yLT5mbGFncykpOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9yZXNldF9oYW5kb2ZmKHN0cnVjdCBp OTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gLXsKPiAtCXJldHVybiB1bmxpa2VseSh0ZXN0X2JpdChJ OTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ZmxhZ3MpKTsKPiAtfQo+IC0KPiAgc3RhdGljIGlu bGluZSBib29sIGk5MTVfdGVybWluYWxseV93ZWRnZWQoc3RydWN0IGk5MTVfZ3B1X2Vycm9yICpl cnJvcikKPiAgewo+ICAJcmV0dXJuIHVubGlrZWx5KHRlc3RfYml0KEk5MTVfV0VER0VELCAmZXJy b3ItPmZsYWdzKSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNDRjODJhNmI5OTM0 Li5kY2JlNjQ0ODY5YjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNjU5LDEx ICs2NTksNiBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAJCSAgICAgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwc19jbGllbnQpCj4g IHsKPiAgCW1pZ2h0X3NsZWVwKCk7Cj4gLSNpZiBJU19FTkFCTEVEKENPTkZJR19MT0NLREVQKQo+ IC0JR0VNX0JVR19PTihkZWJ1Z19sb2NrcyAmJgo+IC0JCSAgICEhbG9ja2RlcF9pc19oZWxkKCZv YmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpICE9Cj4gLQkJICAgISEoZmxhZ3MgJiBJOTE1X1dB SVRfTE9DS0VEKSk7Cj4gLSNlbmRpZgo+ICAJR0VNX0JVR19PTih0aW1lb3V0IDwgMCk7Cj4gIAo+ ICAJdGltZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKG9iai0+cmVzdiwK PiBAQCAtNDQ5NSw4ICs0NDkwLDYgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAlHRU1fVFJBQ0UoIlxuIik7Cj4gIAo+IC0JbXV0 ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkx NSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+IEBAIC00NTIyLDYgKzQ1MTUsNyBAQCB2b2lkIGk5MTVf Z2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAlpbnRlbF9ydW50aW1l X3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgCWk5MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7Cj4gIAltdXRleF91 bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICB9Cj4gQEAgLTQ1MzYsNiArNDUzMCw4 IEBAIGludCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJaW50ZWxfc3VzcGVu ZF9ndF9wb3dlcnNhdmUoaTkxNSk7Cj4gIAo+ICsJZmx1c2hfd29ya3F1ZXVlKGk5MTUtPndxKTsK PiArCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4gIAkvKgo+ IEBAIC00NTY1LDExICs0NTYxLDkgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsgLyogZW5z dXJlIHdlIGZsdXNoIGFmdGVyIHdlZGdpbmcgKi8KPiAgCj4gIAltdXRleF91bmxvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaTkxNV9yZXNldF9mbHVzaChpOTE1KTsKPiAgCj4gLQlp bnRlbF91Y19zdXNwZW5kKGk5MTUpOwo+IC0KPiAtCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm aTkxNS0+Z3B1X2Vycm9yLmhhbmdjaGVja193b3JrKTsKPiAtCWNhbmNlbF9kZWxheWVkX3dvcmtf c3luYygmaTkxNS0+Z3QucmV0aXJlX3dvcmspOwo+ICsJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1 LT5ndC5yZXRpcmVfd29yayk7Cj4gIAo+ICAJLyoKPiAgCSAqIEFzIHRoZSBpZGxlX3dvcmsgaXMg cmVhcm1pbmcgaWYgaXQgZGV0ZWN0cyBhIHJhY2UsIHBsYXkgc2FmZSBhbmQKPiBAQCAtNDU3Nyw2 ICs0NTcxLDggQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gIAkgKi8KPiAgCWRyYWluX2RlbGF5ZWRfd29yaygmaTkxNS0+Z3QuaWRsZV93b3Jr KTsKPiAgCj4gKwlpbnRlbF91Y19zdXNwZW5kKGk5MTUpOwo+ICsKPiAgCS8qCj4gIAkgKiBBc3Nl cnQgdGhhdCB3ZSBzdWNjZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCj4gIAkgKiBy ZXNldCB0aGUgR1BVIGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaAo+IGluZGV4IDk5YTMxZGVkNGRmZC4u MDlkY2FmMTQxMjFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2ZlbmNlX3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2Vf cmVnLmgKPiBAQCAtNTAsNCArNTAsMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnIHsKPiAg fTsKPiAgCj4gICNlbmRpZgo+IC0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGlu ZGV4IDkyMjliMDNkNjI5Yi4uYTAwMzllYTk3Y2RjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmgKPiBAQCAtMzksNiArMzksNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvcGFnZXZl Yy5oPgo+ICAKPiAgI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgo+ICsjaW5jbHVkZSAiaTkxNV9y ZXNldC5oIgo+ICAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgo+ICAjaW5jbHVkZSAiaTkxNV90 aW1lbGluZS5oIgo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRl eCAxZjhlODBlMzFiNDkuLjRlZWYwNDYyNDg5YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwo+IEBAIC01MzMsMTAgKzUzMyw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3By aW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJZXJyX3By aW50ZihtLCAiICB3YWl0aW5nOiAlc1xuIiwgeWVzbm8oZWUtPndhaXRpbmcpKTsKPiAgCWVycl9w cmludGYobSwgIiAgcmluZy0+aGVhZDogMHglMDh4XG4iLCBlZS0+Y3B1X3JpbmdfaGVhZCk7Cj4g IAllcnJfcHJpbnRmKG0sICIgIHJpbmctPnRhaWw6IDB4JTA4eFxuIiwgZWUtPmNwdV9yaW5nX3Rh aWwpOwo+IC0JZXJyX3ByaW50ZihtLCAiICBoYW5nY2hlY2sgc3RhbGw6ICVzXG4iLCB5ZXNubyhl ZS0+aGFuZ2NoZWNrX3N0YWxsZWQpKTsKPiAtCWVycl9wcmludGYobSwgIiAgaGFuZ2NoZWNrIGFj dGlvbjogJXNcbiIsCj4gLQkJICAgaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIoZWUtPmhhbmdjaGVj a19hY3Rpb24pKTsKPiAtCWVycl9wcmludGYobSwgIiAgaGFuZ2NoZWNrIGFjdGlvbiB0aW1lc3Rh bXA6ICVkbXMgKCVsdSVzKVxuIiwKPiArCWVycl9wcmludGYobSwgIiAgaGFuZ2NoZWNrIHRpbWVz dGFtcDogJWRtcyAoJWx1JXMpXG4iLAo+ICAJCSAgIGppZmZpZXNfdG9fbXNlY3MoZWUtPmhhbmdj aGVja190aW1lc3RhbXAgLSBlcG9jaCksCj4gIAkJICAgZWUtPmhhbmdjaGVja190aW1lc3RhbXAs Cj4gIAkJICAgZWUtPmhhbmdjaGVja190aW1lc3RhbXAgPT0gZXBvY2ggPyAiOyBlcG9jaCIgOiAi Iik7Cj4gQEAgLTY4NCwxNSArNjgxLDE1IEBAIHN0YXRpYyB2b2lkIF9fZXJyX3ByaW50X3RvX3Nn bChzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJCSAgIGppZmZpZXNfdG9f bXNlY3MoZXJyb3ItPmNhcHR1cmUgLSBlcnJvci0+ZXBvY2gpKTsKPiAgCj4gIAlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKSB7Cj4gLQkJaWYgKGVycm9yLT5l bmdpbmVbaV0uaGFuZ2NoZWNrX3N0YWxsZWQgJiYKPiAtCQkgICAgZXJyb3ItPmVuZ2luZVtpXS5j b250ZXh0LnBpZCkgewo+IC0JCQllcnJfcHJpbnRmKG0sICJBY3RpdmUgcHJvY2VzcyAob24gcmlu ZyAlcyk6ICVzIFslZF0sIHNjb3JlICVkJXNcbiIsCj4gLQkJCQkgICBlbmdpbmVfbmFtZShtLT5p OTE1LCBpKSwKPiAtCQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5jb21tLAo+IC0JCQkJ ICAgZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBpZCwKPiAtCQkJCSAgIGVycm9yLT5lbmdpbmVb aV0uY29udGV4dC5iYW5fc2NvcmUsCj4gLQkJCQkgICBiYW5uYWJsZSgmZXJyb3ItPmVuZ2luZVtp XS5jb250ZXh0KSk7Cj4gLQkJfQo+ICsJCWlmICghZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBp ZCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVycl9wcmludGYobSwgIkFjdGl2ZSBwcm9jZXNz IChvbiByaW5nICVzKTogJXMgWyVkXSwgc2NvcmUgJWQlc1xuIiwKPiArCQkJICAgZW5naW5lX25h bWUobS0+aTkxNSwgaSksCj4gKwkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5jb21tLAo+ ICsJCQkgICBlcnJvci0+ZW5naW5lW2ldLmNvbnRleHQucGlkLAo+ICsJCQkgICBlcnJvci0+ZW5n aW5lW2ldLmNvbnRleHQuYmFuX3Njb3JlLAo+ICsJCQkgICBiYW5uYWJsZSgmZXJyb3ItPmVuZ2lu ZVtpXS5jb250ZXh0KSk7Cj4gIAl9Cj4gIAllcnJfcHJpbnRmKG0sICJSZXNldCBjb3VudDogJXVc biIsIGVycm9yLT5yZXNldF9jb3VudCk7Cj4gIAllcnJfcHJpbnRmKG0sICJTdXNwZW5kIGNvdW50 OiAldVxuIiwgZXJyb3ItPnN1c3BlbmRfY291bnQpOwo+IEBAIC0xMTQ0LDcgKzExNDEsOCBAQCBz dGF0aWMgdTMyIGNhcHR1cmVfZXJyb3JfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAq ZXJyLAo+ICAJcmV0dXJuIGk7Cj4gIH0KPiAgCj4gLS8qIEdlbmVyYXRlIGEgc2VtaS11bmlxdWUg ZXJyb3IgY29kZS4gVGhlIGNvZGUgaXMgbm90IG1lYW50IHRvIGhhdmUgbWVhbmluZywgVGhlCj4g Ky8qCj4gKyAqIEdlbmVyYXRlIGEgc2VtaS11bmlxdWUgZXJyb3IgY29kZS4gVGhlIGNvZGUgaXMg bm90IG1lYW50IHRvIGhhdmUgbWVhbmluZywgVGhlCj4gICAqIGNvZGUncyBvbmx5IHB1cnBvc2Ug aXMgdG8gdHJ5IHRvIHByZXZlbnQgZmFsc2UgZHVwbGljYXRlZCBidWcgcmVwb3J0cyBieQo+ICAg KiBncm9zc2x5IGVzdGltYXRpbmcgYSBHUFUgZXJyb3Igc3RhdGUuCj4gICAqCj4gQEAgLTExNTMs MjkgKzExNTEsMjMgQEAgc3RhdGljIHUzMiBjYXB0dXJlX2Vycm9yX2JvKHN0cnVjdCBkcm1faTkx NV9lcnJvcl9idWZmZXIgKmVyciwKPiAgICoKPiAgICogSXQncyBvbmx5IGEgc21hbGwgc3RlcCBi ZXR0ZXIgdGhhbiBhIHJhbmRvbSBudW1iZXIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KPiAgICovCj4g LXN0YXRpYyB1MzIgaTkxNV9lcnJvcl9nZW5lcmF0ZV9jb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAtCQkJCSAgICBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ IC0JCQkJICAgIGludCAqZW5naW5lX2lkKQo+ICtzdGF0aWMgdTMyIGk5MTVfZXJyb3JfZ2VuZXJh dGVfY29kZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ICsJCQkJICAgIHVuc2lnbmVk IGxvbmcgZW5naW5lX21hc2spCj4gIHsKPiAtCXUzMiBlcnJvcl9jb2RlID0gMDsKPiAtCWludCBp Owo+IC0KPiAtCS8qIElQRUhSIHdvdWxkIGJlIGFuIGlkZWFsIHdheSB0byBkZXRlY3QgZXJyb3Jz LCBhcyBpdCdzIHRoZSBncm9zcwo+ICsJLyoKPiArCSAqIElQRUhSIHdvdWxkIGJlIGFuIGlkZWFs IHdheSB0byBkZXRlY3QgZXJyb3JzLCBhcyBpdCdzIHRoZSBncm9zcwo+ICAJICogbWVhc3VyZSBv ZiAidGhlIGNvbW1hbmQgdGhhdCBodW5nLiIgSG93ZXZlciwgaGFzIHNvbWUgdmVyeSBjb21tb24K PiAgCSAqIHN5bmNocm9uaXphdGlvbiBjb21tYW5kcyB3aGljaCBhbG1vc3QgYWx3YXlzIGFwcGVh ciBpbiB0aGUgY2FzZQo+ICAJICogc3RyaWN0bHkgYSBjbGllbnQgYnVnLiBVc2UgaW5zdGRvbmUg dG8gZGlmZmVyZW50aWF0ZSB0aG9zZSBzb21lLgo+ICAJICovCj4gLQlmb3IgKGkgPSAwOyBpIDwg STkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7Cj4gLQkJaWYgKGVycm9yLT5lbmdpbmVbaV0uaGFuZ2No ZWNrX3N0YWxsZWQpIHsKPiAtCQkJaWYgKGVuZ2luZV9pZCkKPiAtCQkJCSplbmdpbmVfaWQgPSBp Owo+ICsJaWYgKGVuZ2luZV9tYXNrKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2lu ZSAqZWUgPQo+ICsJCQkmZXJyb3ItPmVuZ2luZVtmZnMoZW5naW5lX21hc2spXTsKPiAgCj4gLQkJ CXJldHVybiBlcnJvci0+ZW5naW5lW2ldLmlwZWhyIF4KPiAtCQkJICAgICAgIGVycm9yLT5lbmdp bmVbaV0uaW5zdGRvbmUuaW5zdGRvbmU7Cj4gLQkJfQo+ICsJCXJldHVybiBlZS0+aXBlaHIgXiBl ZS0+aW5zdGRvbmUuaW5zdGRvbmU7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJuIGVycm9yX2NvZGU7Cj4g KwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZ2VtX3JlY29yZF9mZW5jZXMoc3Ry dWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKPiBAQCAtMTMzOCw5ICsxMzMwLDggQEAgc3RhdGlj IHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2luZV9yZWdpc3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRl ICplcnJvciwKPiAgCX0KPiAgCj4gIAllZS0+aWRsZSA9IGludGVsX2VuZ2luZV9pc19pZGxlKGVu Z2luZSk7Cj4gLQllZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcCA9IGVuZ2luZS0+aGFuZ2NoZWNrLmFj dGlvbl90aW1lc3RhbXA7Cj4gLQllZS0+aGFuZ2NoZWNrX2FjdGlvbiA9IGVuZ2luZS0+aGFuZ2No ZWNrLmFjdGlvbjsKPiAtCWVlLT5oYW5nY2hlY2tfc3RhbGxlZCA9IGVuZ2luZS0+aGFuZ2NoZWNr LnN0YWxsZWQ7Cj4gKwlpZiAoIWVlLT5pZGxlKQo+ICsJCWVlLT5oYW5nY2hlY2tfdGltZXN0YW1w ID0gZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uX3RpbWVzdGFtcDsKPiAgCWVlLT5yZXNldF9jb3Vu dCA9IGk5MTVfcmVzZXRfZW5naW5lX2NvdW50KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLAo+ICAJCQkJ CQkgIGVuZ2luZSk7Cj4gIAo+IEBAIC0xNzgzLDMxICsxNzc0LDM1IEBAIHN0YXRpYyB2b2lkIGNh cHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIAllcnJvci0+ cGd0YmxfZXIgPSBJOTE1X1JFQUQoUEdUQkxfRVIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBp OTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAtCQkJCSAgIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCj4gLQkJCQkgICB1MzIgZW5n aW5lX21hc2ssCj4gLQkJCQkgICBjb25zdCBjaGFyICplcnJvcl9tc2cpCj4gK3N0YXRpYyBjb25z dCBjaGFyICoKPiArZXJyb3JfbXNnKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsIHVuc2ln bmVkIGxvbmcgZW5naW5lcywgY29uc3QgY2hhciAqbXNnKQo+ICB7Cj4gLQl1MzIgZWNvZGU7Cj4g LQlpbnQgZW5naW5lX2lkID0gLTEsIGxlbjsKPiArCWludCBsZW47Cj4gKwlpbnQgaTsKPiAgCj4g LQllY29kZSA9IGk5MTVfZXJyb3JfZ2VuZXJhdGVfY29kZShkZXZfcHJpdiwgZXJyb3IsICZlbmdp bmVfaWQpOwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7IGkr KykKPiArCQlpZiAoIWVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5waWQpCj4gKwkJCWVuZ2luZXMg Jj0gfkJJVChpKTsKPiAgCj4gIAlsZW4gPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZywgc2l6 ZW9mKGVycm9yLT5lcnJvcl9tc2cpLAo+IC0JCQkiR1BVIEhBTkc6IGVjb2RlICVkOiVkOjB4JTA4 eCIsCj4gLQkJCUlOVEVMX0dFTihkZXZfcHJpdiksIGVuZ2luZV9pZCwgZWNvZGUpOwo+IC0KPiAt CWlmIChlbmdpbmVfaWQgIT0gLTEgJiYgZXJyb3ItPmVuZ2luZVtlbmdpbmVfaWRdLmNvbnRleHQu cGlkKQo+ICsJCQkiR1BVIEhBTkc6IGVjb2RlICVkOiVseDoweCUwOHgiLAo+ICsJCQlJTlRFTF9H RU4oZXJyb3ItPmk5MTUpLCBlbmdpbmVzLAo+ICsJCQlpOTE1X2Vycm9yX2dlbmVyYXRlX2NvZGUo ZXJyb3IsIGVuZ2luZXMpKTsKPiArCWlmIChlbmdpbmVzKSB7Cj4gKwkJLyogSnVzdCBzaG93IHRo ZSBmaXJzdCBleGVjdXRpbmcgcHJvY2VzcywgbW9yZSBpcyBjb25mdXNpbmcgKi8KPiArCQlpID0g ZmZzKGVuZ2luZXMpOwo+ICAJCWxlbiArPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZyArIGxl biwKPiAgCQkJCSBzaXplb2YoZXJyb3ItPmVycm9yX21zZykgLSBsZW4sCj4gIAkJCQkgIiwgaW4g JXMgWyVkXSIsCj4gLQkJCQkgZXJyb3ItPmVuZ2luZVtlbmdpbmVfaWRdLmNvbnRleHQuY29tbSwK PiAtCQkJCSBlcnJvci0+ZW5naW5lW2VuZ2luZV9pZF0uY29udGV4dC5waWQpOwo+ICsJCQkJIGVy cm9yLT5lbmdpbmVbaV0uY29udGV4dC5jb21tLAo+ICsJCQkJIGVycm9yLT5lbmdpbmVbaV0uY29u dGV4dC5waWQpOwo+ICsJfQo+ICsJaWYgKG1zZykKPiArCQlsZW4gKz0gc2NucHJpbnRmKGVycm9y LT5lcnJvcl9tc2cgKyBsZW4sCj4gKwkJCQkgc2l6ZW9mKGVycm9yLT5lcnJvcl9tc2cpIC0gbGVu LAo+ICsJCQkJICIsICVzIiwgbXNnKTsKPiAgCj4gLQlzY25wcmludGYoZXJyb3ItPmVycm9yX21z ZyArIGxlbiwgc2l6ZW9mKGVycm9yLT5lcnJvcl9tc2cpIC0gbGVuLAo+IC0JCSAgIiwgcmVhc29u OiAlcywgYWN0aW9uOiAlcyIsCj4gLQkJICBlcnJvcl9tc2csCj4gLQkJICBlbmdpbmVfbWFzayA/ ICJyZXNldCIgOiAiY29udGludWUiKTsKPiArCXJldHVybiBlcnJvci0+ZXJyb3JfbXNnOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZCBjYXB0dXJlX2dlbl9zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3Rh dGUgKmVycm9yKQo+IEBAIC0xODQ3LDcgKzE4NDIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBj YXB0dXJlX2ZpbmRfZXBvY2goY29uc3Qgc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKPiAg CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5lbmdpbmUpOyBpKyspIHsKPiAgCQlj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSA9ICZlcnJvci0+ZW5naW5lW2ld Owo+ICAKPiAtCQlpZiAoZWUtPmhhbmdjaGVja19zdGFsbGVkICYmCj4gKwkJaWYgKGVlLT5oYW5n Y2hlY2tfdGltZXN0YW1wICYmCj4gIAkJICAgIHRpbWVfYmVmb3JlKGVlLT5oYW5nY2hlY2tfdGlt ZXN0YW1wLCBlcG9jaCkpCj4gIAkJCWVwb2NoID0gZWUtPmhhbmdjaGVja190aW1lc3RhbXA7Cj4g IAl9Cj4gQEAgLTE5MjEsNyArMTkxNiw3IEBAIGk5MTVfY2FwdHVyZV9ncHVfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAqIGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZSAt IGNhcHR1cmUgYW4gZXJyb3IgcmVjb3JkIGZvciBsYXRlciBhbmFseXNpcwo+ICAgKiBAaTkxNTog aTkxNSBkZXZpY2UKPiAgICogQGVuZ2luZV9tYXNrOiB0aGUgbWFzayBvZiBlbmdpbmVzIHRyaWdn ZXJpbmcgdGhlIGhhbmcKPiAtICogQGVycm9yX21zZzogYSBtZXNzYWdlIHRvIGluc2VydCBpbnRv IHRoZSBlcnJvciBjYXB0dXJlIGhlYWRlcgo+ICsgKiBAbXNnOiBhIG1lc3NhZ2UgdG8gaW5zZXJ0 IGludG8gdGhlIGVycm9yIGNhcHR1cmUgaGVhZGVyCj4gICAqCj4gICAqIFNob3VsZCBiZSBjYWxs ZWQgd2hlbiBhbiBlcnJvciBpcyBkZXRlY3RlZCAoZWl0aGVyIGEgaGFuZyBvciBhbiBlcnJvcgo+ ICAgKiBpbnRlcnJ1cHQpIHRvIGNhcHR1cmUgZXJyb3Igc3RhdGUgZnJvbSB0aGUgdGltZSBvZiB0 aGUgZXJyb3IuICBGaWxscwo+IEBAIC0xOTI5LDggKzE5MjQsOCBAQCBpOTE1X2NhcHR1cmVfZ3B1 X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgKiB0byBwaWNrIHVwLgo+ ICAgKi8KPiAgdm9pZCBpOTE1X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gLQkJCSAgICAgIHUzMiBlbmdpbmVfbWFzaywKPiAtCQkJICAgICAgY29u c3QgY2hhciAqZXJyb3JfbXNnKQo+ICsJCQkgICAgICB1bnNpZ25lZCBsb25nIGVuZ2luZV9tYXNr LAo+ICsJCQkgICAgICBjb25zdCBjaGFyICptc2cpCj4gIHsKPiAgCXN0YXRpYyBib29sIHdhcm5l ZDsKPiAgCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3I7Cj4gQEAgLTE5NDYsOCArMTk0MSw3 IEBAIHZvaWQgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAJaWYgKElTX0VSUihlcnJvcikpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWk5MTVf ZXJyb3JfY2FwdHVyZV9tc2coaTkxNSwgZXJyb3IsIGVuZ2luZV9tYXNrLCBlcnJvcl9tc2cpOwo+ IC0JRFJNX0lORk8oIiVzXG4iLCBlcnJvci0+ZXJyb3JfbXNnKTsKPiArCWRldl9pbmZvKGk5MTUt PmRybS5kZXYsICIlc1xuIiwgZXJyb3JfbXNnKGVycm9yLCBlbmdpbmVfbWFzaywgbXNnKSk7Cj4g IAo+ICAJaWYgKCFlcnJvci0+c2ltdWxhdGVkKSB7Cj4gIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmk5 MTUtPmdwdV9lcnJvci5sb2NrLCBmbGFncyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5oCj4gaW5kZXggNjA0MjkxZjc3NjJkLi4yMzExNzM3ODZlYWUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiBAQCAtODUsOCArODUsNiBAQCBzdHJ1Y3QgaTkx NV9ncHVfc3RhdGUgewo+ICAJCWJvb2wgd2FpdGluZzsKPiAgCQlpbnQgbnVtX3dhaXRlcnM7Cj4g IAkJdW5zaWduZWQgbG9uZyBoYW5nY2hlY2tfdGltZXN0YW1wOwo+IC0JCWJvb2wgaGFuZ2NoZWNr X3N0YWxsZWQ7Cj4gLQkJZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBoYW5nY2hl Y2tfYWN0aW9uOwo+ICAJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAJCWludCBu dW1fcmVxdWVzdHM7Cj4gIAkJdTMyIHJlc2V0X2NvdW50Owo+IEBAIC0xOTcsNiArMTk1LDggQEAg c3RydWN0IGk5MTVfZ3B1X3N0YXRlIHsKPiAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqZml0 Owo+ICB9Owo+ICAKPiArc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQ7Cj4gKwo+ICBzdHJ1Y3QgaTkx NV9ncHVfZXJyb3Igewo+ICAJLyogRm9yIGhhbmdjaGVjayB0aW1lciAqLwo+ICAjZGVmaW5lIERS TV9JOTE1X0hBTkdDSEVDS19QRVJJT0QgMTUwMCAvKiBpbiBtcyAqLwo+IEBAIC0yNDcsMTUgKzI0 Nyw2IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gIAkgKiBpOTE1X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgpPykuIEk5MTVfUkVTRVRfQkFDS09GRiBzZXJ2ZXMgYQo+ICAJICogc2Vjb25k YXJ5IHJvbGUgaW4gcHJldmVudGluZyB0d28gY29uY3VycmVudCBnbG9iYWwgcmVzZXQgYXR0ZW1w dHMuCj4gIAkgKgo+IC0JICogI0k5MTVfUkVTRVRfSEFORE9GRiAtIFRvIHBlcmZvcm0gdGhlIGFj dHVhbCBHUFUgcmVzZXQsIHdlIG5lZWQgdGhlCj4gLQkgKiBzdHJ1Y3RfbXV0ZXguIFdlIHRyeSB0 byBhY3F1aXJlIHRoZSBzdHJ1Y3RfbXV0ZXggaW4gdGhlIHJlc2V0IHdvcmtlciwKPiAtCSAqIGJ1 dCBpdCBtYXkgYmUgaGVsZCBieSBzb21lIGxvbmcgcnVubmluZyB3YWl0ZXIgKHRoYXQgd2UgY2Fu bm90Cj4gLQkgKiBpbnRlcnJ1cHQgd2l0aG91dCBjYXVzaW5nIHRyb3VibGUpLiBPbmNlIHdlIGFy ZSByZWFkeSB0byBkbyB0aGUgR1BVCj4gLQkgKiByZXNldCwgd2Ugc2V0IHRoZSBJOTE1X1JFU0VU X0hBTkRPRkYgYml0IGFuZCB3YWtldXAgYW55IHdhaXRlcnMuIElmCj4gLQkgKiB0aGV5IGFscmVh ZHkgaG9sZCB0aGUgc3RydWN0X211dGV4IGFuZCB3YW50IHRvIHBhcnRpY2lwYXRlIHRoZXkgY2Fu Cj4gLQkgKiBpbnNwZWN0IHRoZSBiaXQgYW5kIGRvIHRoZSByZXNldCBkaXJlY3RseSwgb3RoZXJ3 aXNlIHRoZSB3b3JrZXIKPiAtCSAqIHdhaXRzIGZvciB0aGUgc3RydWN0X211dGV4Lgo+IC0JICoK PiAgCSAqICNJOTE1X1JFU0VUX0VOR0lORVtudW1fZW5naW5lc10gLSBTaW5jZSB0aGUgZHJpdmVy IGRvZXNuJ3QgbmVlZCB0bwo+ICAJICogYWNxdWlyZSB0aGUgc3RydWN0X211dGV4IHRvIHJlc2V0 IGFuIGVuZ2luZSwgd2UgbmVlZCBhbiBleHBsaWNpdAo+ICAJICogZmxhZyB0byBwcmV2ZW50IHR3 byBjb25jdXJyZW50IHJlc2V0IGF0dGVtcHRzIGluIHRoZSBzYW1lIGVuZ2luZS4KPiBAQCAtMjY5 LDIwICsyNjAsMTMgQEAgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIHsKPiAgCSAqLwo+ICAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKPiAgI2RlZmluZSBJOTE1X1JFU0VUX0JBQ0tPRkYJMAo+IC0jZGVmaW5l IEk5MTVfUkVTRVRfSEFORE9GRgkxCj4gLSNkZWZpbmUgSTkxNV9SRVNFVF9NT0RFU0VUCTIKPiAt I2RlZmluZSBJOTE1X1JFU0VUX0VOR0lORQkzCj4gKyNkZWZpbmUgSTkxNV9SRVNFVF9NT0RFU0VU CTEKPiArI2RlZmluZSBJOTE1X1JFU0VUX0VOR0lORQkyCj4gICNkZWZpbmUgSTkxNV9XRURHRUQJ CShCSVRTX1BFUl9MT05HIC0gMSkKPiAgCj4gIAkvKiogTnVtYmVyIG9mIHRpbWVzIGFuIGVuZ2lu ZSBoYXMgYmVlbiByZXNldCAqLwo+ICAJdTMyIHJlc2V0X2VuZ2luZV9jb3VudFtJOTE1X05VTV9F TkdJTkVTXTsKPiAgCj4gLQkvKiogU2V0IG9mIHN0YWxsZWQgZW5naW5lcyB3aXRoIGd1aWx0eSBy ZXF1ZXN0cywgaW4gdGhlIGN1cnJlbnQgcmVzZXQgKi8KPiAtCXUzMiBzdGFsbGVkX21hc2s7Cj4g LQo+IC0JLyoqIFJlYXNvbiBmb3IgdGhlIGN1cnJlbnQgKmdsb2JhbCogcmVzZXQgKi8KPiAtCWNv bnN0IGNoYXIgKnJlYXNvbjsKPiAtCj4gIAlzdHJ1Y3QgbXV0ZXggd2VkZ2VfbXV0ZXg7IC8qIHNl cmlhbGlzZXMgd2VkZ2luZy91bndlZGdpbmcgKi8KPiAgCj4gIAkvKioKPiBAQCAtMjk5LDYgKzI4 Myw4IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gIAo+ICAJLyogRm9yIG1pc3NlZCBpcnEv c2Vxbm8gc2ltdWxhdGlvbi4gKi8KPiAgCXVuc2lnbmVkIGxvbmcgdGVzdF9pcnFfcmluZ3M7Cj4g Kwo+ICsJc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgKnJlc3RhcnQ7Cj4gIH07Cj4gIAo+ICBzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmIHsKPiBAQCAtMzIwLDcgKzMwNiw3IEBAIHZvaWQg aTkxNV9lcnJvcl9wcmludGYoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZSwgY29u c3QgY2hhciAqZiwgLi4uKTsKPiAgCj4gIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqaTkxNV9jYXB0 dXJlX2dwdV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gIHZvaWQgaTkx NV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAtCQkJICAgICAgdTMyIGVuZ2luZV9tYXNrLAo+ICsJCQkgICAgICB1bnNpZ25lZCBsb25nIGVu Z2luZV9tYXNrLAo+ICAJCQkgICAgICBjb25zdCBjaGFyICplcnJvcl9tc2cpOwo+ICAKPiAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5jCj4gaW5kZXggZGRjMzVlOWRjMGMwLi5mNDI0MWExN2UyYWQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0xMDgzLDE4ICsxMDgzLDYgQEAgc3RhdGlj IGJvb2wgX19pOTE1X3NwaW5fcmVxdWVzdChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwK PiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wgX19pOTE1X3dhaXRfcmVx dWVzdF9jaGVja19hbmRfcmVzZXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAtewo+ IC0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZyZXF1ZXN0LT5pOTE1LT5ncHVfZXJy b3I7Cj4gLQo+IC0JaWYgKGxpa2VseSghaTkxNV9yZXNldF9oYW5kb2ZmKGVycm9yKSkpCj4gLQkJ cmV0dXJuIGZhbHNlOwo+IC0KPiAtCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsK PiAtCWk5MTVfcmVzZXQocmVxdWVzdC0+aTkxNSwgZXJyb3ItPnN0YWxsZWRfbWFzaywgZXJyb3It PnJlYXNvbik7Cj4gLQlyZXR1cm4gdHJ1ZTsKPiAtfQo+IC0KPiAgLyoqCj4gICAqIGk5MTVfcmVx dWVzdF93YWl0IC0gd2FpdCB1bnRpbCBleGVjdXRpb24gb2YgcmVxdWVzdCBoYXMgZmluaXNoZWQK PiAgICogQHJxOiB0aGUgcmVxdWVzdCB0byB3YWl0IHVwb24KPiBAQCAtMTEyMCwxNyArMTEwOCwx MCBAQCBsb25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICB7 Cj4gIAljb25zdCBpbnQgc3RhdGUgPSBmbGFncyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFID8K PiAgCQlUQVNLX0lOVEVSUlVQVElCTEUgOiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKPiAtCXdhaXRf cXVldWVfaGVhZF90ICplcnJxID0gJnJxLT5pOTE1LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZTsKPiAt CURFRklORV9XQUlUX0ZVTkMocmVzZXQsIGRlZmF1bHRfd2FrZV9mdW5jdGlvbik7Cj4gIAlERUZJ TkVfV0FJVF9GVU5DKGV4ZWMsIGRlZmF1bHRfd2FrZV9mdW5jdGlvbik7Cj4gIAlzdHJ1Y3QgaW50 ZWxfd2FpdCB3YWl0Owo+ICAKPiAgCW1pZ2h0X3NsZWVwKCk7Cj4gLSNpZiBJU19FTkFCTEVEKENP TkZJR19MT0NLREVQKQo+IC0JR0VNX0JVR19PTihkZWJ1Z19sb2NrcyAmJgo+IC0JCSAgICEhbG9j a2RlcF9pc19oZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCkgIT0KPiAtCQkgICAhIShm bGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpKTsKPiAtI2VuZGlmCj4gIAlHRU1fQlVHX09OKHRpbWVv dXQgPCAwKTsKPiAgCj4gIAlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4gQEAgLTEx NDAsMTEgKzExMjEsNyBAQCBsb25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLAo+ICAJCXJldHVybiAtRVRJTUU7Cj4gIAo+ICAJdHJhY2VfaTkxNV9yZXF1ZXN0X3dh aXRfYmVnaW4ocnEsIGZsYWdzKTsKPiAtCj4gIAlhZGRfd2FpdF9xdWV1ZSgmcnEtPmV4ZWN1dGUs ICZleGVjKTsKPiAtCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQpCj4gLQkJYWRkX3dhaXRf cXVldWUoZXJycSwgJnJlc2V0KTsKPiAtCj4gIAlpbnRlbF93YWl0X2luaXQoJndhaXQpOwo+ICAJ aWYgKGZsYWdzICYgSTkxNV9XQUlUX1BSSU9SSVRZKQo+ICAJCWk5MTVfc2NoZWR1bGVfYnVtcF9w cmlvcml0eShycSwgSTkxNV9QUklPUklUWV9XQUlUKTsKPiBAQCAtMTE1NSwxMCArMTEzMiw2IEBA IGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gIAkJaWYg KGludGVsX3dhaXRfdXBkYXRlX3JlcXVlc3QoJndhaXQsIHJxKSkKPiAgCQkJYnJlYWs7Cj4gIAo+ IC0JCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgJiYKPiAtCQkgICAgX19pOTE1X3dhaXRf cmVxdWVzdF9jaGVja19hbmRfcmVzZXQocnEpKQo+IC0JCQljb250aW51ZTsKPiAtCj4gIAkJaWYg KHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBjdXJyZW50KSkgewo+ICAJCQl0aW1lb3V0ID0g LUVSRVNUQVJUU1lTOwo+ICAJCQlnb3RvIGNvbXBsZXRlOwo+IEBAIC0xMTg4LDkgKzExNjEsNiBA QCBsb25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAJCSAq Lwo+ICAJCWdvdG8gd2FrZXVwOwo+ICAKPiAtCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQp Cj4gLQkJX19pOTE1X3dhaXRfcmVxdWVzdF9jaGVja19hbmRfcmVzZXQocnEpOwo+IC0KPiAgCWZv ciAoOzspIHsKPiAgCQlpZiAoc2lnbmFsX3BlbmRpbmdfc3RhdGUoc3RhdGUsIGN1cnJlbnQpKSB7 Cj4gIAkJCXRpbWVvdXQgPSAtRVJFU1RBUlRTWVM7Cj4gQEAgLTEyMTQsMjEgKzExODQsNiBAQCBs b25nIGk5MTVfcmVxdWVzdF93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAJCWlmIChp OTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKPiAgCQkJYnJlYWs7Cj4gIAo+IC0JCS8qCj4gLQkJ ICogSWYgdGhlIEdQVSBpcyBodW5nLCBhbmQgd2UgaG9sZCB0aGUgbG9jaywgcmVzZXQgdGhlIEdQ VQo+IC0JCSAqIGFuZCB0aGVuIGNoZWNrIGZvciBjb21wbGV0aW9uLiBPbiBhIGZ1bGwgcmVzZXQs IHRoZSBlbmdpbmUncwo+IC0JCSAqIEhXIHNlcW5vIHdpbGwgYmUgYWR2YW5jZWQgcGFzc2VkIHVz IGFuZCB3ZSBhcmUgY29tcGxldGUuCj4gLQkJICogSWYgd2UgZG8gYSBwYXJ0aWFsIHJlc2V0LCB3 ZSBoYXZlIHRvIHdhaXQgZm9yIHRoZSBHUFUgdG8KPiAtCQkgKiByZXN1bWUgYW5kIHVwZGF0ZSB0 aGUgYnJlYWRjcnVtYi4KPiAtCQkgKgo+IC0JCSAqIElmIHdlIGRvbid0IGhvbGQgdGhlIG11dGV4 LCB3ZSBjYW4ganVzdCB3YWl0IGZvciB0aGUgd29ya2VyCj4gLQkJICogdG8gY29tZSBhbG9uZyBh bmQgdXBkYXRlIHRoZSBicmVhZGNydW1iIChlaXRoZXIgZGlyZWN0bHkKPiAtCQkgKiBpdHNlbGYs IG9yIGluZGlyZWN0bHkgYnkgcmVjb3ZlcmluZyB0aGUgR1BVKS4KPiAtCQkgKi8KPiAtCQlpZiAo ZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEICYmCj4gLQkJICAgIF9faTkxNV93YWl0X3JlcXVlc3Rf Y2hlY2tfYW5kX3Jlc2V0KHJxKSkKPiAtCQkJY29udGludWU7Cj4gLQo+ICAJCS8qIE9ubHkgc3Bp biBpZiB3ZSBrbm93IHRoZSBHUFUgaXMgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QgKi8KPiAgCQlp ZiAoX19pOTE1X3NwaW5fcmVxdWVzdChycSwgd2FpdC5zZXFubywgc3RhdGUsIDIpKQo+ICAJCQli cmVhazsKPiBAQCAtMTI0Miw4ICsxMTk3LDYgQEAgbG9uZyBpOTE1X3JlcXVlc3Rfd2FpdChzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgCWludGVsX2VuZ2luZV9yZW1vdmVfd2FpdChycS0+ZW5n aW5lLCAmd2FpdCk7Cj4gIGNvbXBsZXRlOgo+ICAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JV Tk5JTkcpOwo+IC0JaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkKPiAtCQlyZW1vdmVfd2Fp dF9xdWV1ZShlcnJxLCAmcmVzZXQpOwo+ICAJcmVtb3ZlX3dhaXRfcXVldWUoJnJxLT5leGVjdXRl LCAmZXhlYyk7Cj4gIAl0cmFjZV9pOTE1X3JlcXVlc3Rfd2FpdF9lbmQocnEpOwo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gaW5kZXggMzM0MDhjNGU2MzU4Li5jMDFhY2M4MzI1MTgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gQEAgLTUsNiArNSw3IEBACj4gICAq Lwo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkL21tLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9z dG9wX21hY2hpbmUuaD4KPiAgCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAi aTkxNV9ncHVfZXJyb3IuaCIKPiBAQCAtMTQsMjcgKzE1LDMxIEBACj4gIAo+ICAjZGVmaW5lIFJF U0VUX01BWF9SRVRSSUVTIDMKPiAgCj4gKy8qIFhYWCBIb3cgdG8gaGFuZGxlIGNvbmN1cnJlbnQg R0dUVCB1cGRhdGVzIHVzaW5nIHRpbGluZyByZWdpc3RlcnM/ICovCj4gKyNkZWZpbmUgUkVTRVRf VU5ERVJfU1RPUF9NQUNISU5FIDAKCldlIGRpc2N1c3NlZCBpbiBpcmMga2luZCBvZiBzdG9wX21h Y2hpbmVfcGlkcyhwaWRfdCAqLCBmbikKdHlwZSBvZiB3YXkgdG8gZXhjbHVkZSBvbmx5IHRoZSBj dXJyZW50bHkgdGlsZWQgY2xpZW50cwpvdXQgb2YgdGhlIHdheS4gCgpGb3IgdGhpcyBwYXRjaCwg Y2FuJ3QgZmluZCBhbnl0aGluZyBvYnZpb3VzIGNvZGV3aXNlLgpGb3IgdGhlIG51YW5jZXMgb2Yg aG93IHRoZSBodyB3aWxsIGludGVyYWN0IHdpdGggdGhlCmNoYW5nZXMsIG9ubHkgdGhlIHRlc3Rz IGFuZCB0aW1lIHdpbGwgdGVsbC4gCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5r dW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICsKPiAgc3RhdGljIHZvaWQgZW5naW5lX3NraXBf Y29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgewo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpodW5nX2N0eCA9IHJxLT5nZW1fY29udGV4dDsKPiAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZSA9IHJxLT50aW1lbGluZTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+ICsJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgCUdFTV9CVUdf T04odGltZWxpbmUgPT0gJmVuZ2luZS0+dGltZWxpbmUpOwo+ICAKPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgCXNwaW5fbG9jaygmdGltZWxp bmUtPmxvY2spOwo+ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocnEsICZlbmdp bmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKQo+IC0JCWlmIChycS0+Z2VtX2NvbnRleHQgPT0g aHVuZ19jdHgpCj4gLQkJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCAtRUlPKTsKPiArCWlmIChycS0+ Z2xvYmFsX3NlcW5vKSB7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShycSwKPiAr CQkJCQkgICAgICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKQo+ICsJCQlpZiAocnEt PmdlbV9jb250ZXh0ID09IGh1bmdfY3R4KQo+ICsJCQkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1F SU8pOwo+ICsJfQo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZ0aW1lbGluZS0+cmVx dWVzdHMsIGxpbmspCj4gIAkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1FSU8pOwo+ICAKPiAgCXNw aW5fdW5sb2NrKCZ0aW1lbGluZS0+bG9jayk7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZl bmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgY2xp ZW50X21hcmtfZ3VpbHR5KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwK PiBAQCAtNjEsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCBjbGllbnRfbWFya19ndWlsdHkoc3RydWN0 IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBjb250ZXh0X21hcmtfZ3VpbHR5KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gK3N0YXRpYyBib29sIGNvbnRleHRfbWFya19ndWlsdHkoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKPiAgewo+ICAJdW5zaWduZWQgaW50IHNjb3JlOwo+ICAJYm9vbCBiYW5uZWQsIGJh bm5hYmxlOwo+IEBAIC03NCw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfbWFya19ndWls dHkoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgCj4gIAkvKiBDb29sIGNvbnRleHRz IGRvbid0IGFjY3VtdWxhdGUgY2xpZW50IGJhbiBzY29yZSAqLwo+ICAJaWYgKCFiYW5uYWJsZSkK PiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlmIChiYW5uZWQpIHsKPiAg CQlEUk1fREVCVUdfRFJJVkVSKCJjb250ZXh0ICVzOiBndWlsdHkgJWQsIHNjb3JlICV1LCBiYW5u ZWRcbiIsCj4gQEAgLTg1LDYgKzkwLDggQEAgc3RhdGljIHZvaWQgY29udGV4dF9tYXJrX2d1aWx0 eShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAKPiAgCWlmICghSVNfRVJSX09SX05V TEwoY3R4LT5maWxlX3ByaXYpKQo+ICAJCWNsaWVudF9tYXJrX2d1aWx0eShjdHgtPmZpbGVfcHJp diwgY3R4KTsKPiArCj4gKwlyZXR1cm4gYmFubmVkOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBj b250ZXh0X21hcmtfaW5ub2NlbnQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiBAQCAt OTIsNiArOTksMjEgQEAgc3RhdGljIHZvaWQgY29udGV4dF9tYXJrX2lubm9jZW50KHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAlhdG9taWNfaW5jKCZjdHgtPmFjdGl2ZV9jb3VudCk7 Cj4gIH0KPiAgCj4gK3ZvaWQgaTkxNV9yZXNldF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLCBib29sIGd1aWx0eSkKPiArewo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcnEtPmVuZ2lu ZS0+dGltZWxpbmUubG9jayk7Cj4gKwlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo cnEpKTsKPiArCj4gKwlpZiAoZ3VpbHR5KSB7Cj4gKwkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1F SU8pOwo+ICsJCWlmIChjb250ZXh0X21hcmtfZ3VpbHR5KHJxLT5nZW1fY29udGV4dCkpCj4gKwkJ CWVuZ2luZV9za2lwX2NvbnRleHQocnEpOwo+ICsJfSBlbHNlIHsKPiArCQlkbWFfZmVuY2Vfc2V0 X2Vycm9yKCZycS0+ZmVuY2UsIC1FQUdBSU4pOwo+ICsJCWNvbnRleHRfbWFya19pbm5vY2VudChy cS0+Z2VtX2NvbnRleHQpOwo+ICsJfQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBnZW4zX3N0b3Bf ZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IEBAIC02MDQsMTEgKzYy Niw4IEBAIGludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gICAqIEVuc3VyZSBpcnEgaGFuZGxlciBmaW5pc2hlcywgYW5kIG5vdCBydW4gYWdhaW4uCj4g ICAqIEFsc28gcmV0dXJuIHRoZSBhY3RpdmUgcmVxdWVzdCBzbyB0aGF0IHdlIG9ubHkgc2VhcmNo IGZvciBpdCBvbmNlLgo+ICAgKi8KPiAtc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+IC1y ZXNldF9wcmVwYXJlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0 YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQo+ICAJLyoKPiAgCSAq IER1cmluZyB0aGUgcmVzZXQgc2VxdWVuY2UsIHdlIG11c3QgcHJldmVudCB0aGUgZW5naW5lIGZy b20KPiAgCSAqIGVudGVyaW5nIFJDNi4gQXMgdGhlIGNvbnRleHQgc3RhdGUgaXMgdW5kZWZpbmVk IHVudGlsIHdlIHJlc3RhcnQKPiBAQCAtNjE3LDE2MiArNjM2LDg1IEBAIHJlc2V0X3ByZXBhcmVf ZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCSAqIEdQVSBzdGF0ZSB1 cG9uIHJlc3VtZSwgaS5lLiBmYWlsIHRvIHJlc3RhcnQgYWZ0ZXIgYSByZXNldC4KPiAgCSAqLwo+ ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZW5naW5lLT5pOTE1LCBGT1JDRVdBS0VfQUxM KTsKPiAtCj4gLQlycSA9IGVuZ2luZS0+cmVzZXQucHJlcGFyZShlbmdpbmUpOwo+IC0JaWYgKHJx ICYmIHJxLT5mZW5jZS5lcnJvciA9PSAtRUlPKQo+IC0JCXJxID0gRVJSX1BUUigtRUlPKTsgLyog UHJldmlvdXMgcmVzZXQgZmFpbGVkISAqLwo+IC0KPiAtCXJldHVybiBycTsKPiArCWVuZ2luZS0+ cmVzZXQucHJlcGFyZShlbmdpbmUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHJlc2V0X3ByZXBh cmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyB2b2lkIHJlc2V0X3By ZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAJZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQlpbnQgZXJyID0gMDsKPiAgCj4gLQlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCXJxID0gcmVzZXRfcHJlcGFyZV9lbmdpbmUo ZW5naW5lKTsKPiAtCQlpZiAoSVNfRVJSKHJxKSkgewo+IC0JCQllcnIgPSBQVFJfRVJSKHJxKTsK PiAtCQkJY29udGludWU7Cj4gLQkJfQo+IC0KPiAtCQllbmdpbmUtPmhhbmdjaGVjay5hY3RpdmVf cmVxdWVzdCA9IHJxOwo+IC0JfQo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp Cj4gKwkJcmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTsKPiAgCj4gLQlpOTE1X2dlbV9yZXZv a2VfZmVuY2VzKGk5MTUpOwo+ICAJaW50ZWxfdWNfc2FuaXRpemUoaTkxNSk7Cj4gLQo+IC0JcmV0 dXJuIGVycjsKPiAgfQo+ICAKPiAtLyogUmV0dXJucyB0aGUgcmVxdWVzdCBpZiBpdCB3YXMgZ3Vp bHR5IG9mIHRoZSBoYW5nICovCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAtcmVz ZXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkgICAgICBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAtCSAgICAgIGJvb2wgc3RhbGxlZCkKPiArc3RhdGljIGlu dCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IHN0 YWxsZWRfbWFzaykKPiAgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnQgZXJyOwo+ICsKPiAgCS8qCj4gLQkgKiBU aGUgZ3VpbHR5IHJlcXVlc3Qgd2lsbCBnZXQgc2tpcHBlZCBvbiBhIGh1bmcgZW5naW5lLgo+IC0J ICoKPiAtCSAqIFVzZXJzIG9mIGNsaWVudCBkZWZhdWx0IGNvbnRleHRzIGRvIG5vdCByZWx5IG9u IGxvZ2ljYWwKPiAtCSAqIHN0YXRlIHByZXNlcnZlZCBiZXR3ZWVuIGJhdGNoZXMgc28gaXQgaXMg c2FmZSB0byBleGVjdXRlCj4gLQkgKiBxdWV1ZWQgcmVxdWVzdHMgZm9sbG93aW5nIHRoZSBoYW5n LiBOb24gZGVmYXVsdCBjb250ZXh0cwo+IC0JICogcmVseSBvbiBwcmVzZXJ2ZWQgc3RhdGUsIHNv IHNraXBwaW5nIGEgYmF0Y2ggbG9zZXMgdGhlCj4gLQkgKiBldm9sdXRpb24gb2YgdGhlIHN0YXRl IGFuZCBpdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGNvcnJ1cHRlZC4KPiAtCSAqIEV4ZWN1dGlu ZyBtb3JlIHF1ZXVlZCBiYXRjaGVzIG9uIHRvcCBvZiBjb3JydXB0ZWQgc3RhdGUgaXMKPiAtCSAq IHJpc2t5LiBCdXQgd2UgdGFrZSB0aGUgcmlzayBieSB0cnlpbmcgdG8gYWR2YW5jZSB0aHJvdWdo Cj4gLQkgKiB0aGUgcXVldWVkIHJlcXVlc3RzIGluIG9yZGVyIHRvIG1ha2UgdGhlIGNsaWVudCBi ZWhhdmlvdXIKPiAtCSAqIG1vcmUgcHJlZGljdGFibGUgYXJvdW5kIHJlc2V0cywgYnkgbm90IHRo cm93aW5nIGF3YXkgcmFuZG9tCj4gLQkgKiBhbW91bnQgb2YgYmF0Y2hlcyBpdCBoYXMgcHJlcGFy ZWQgZm9yIGV4ZWN1dGlvbi4gU29waGlzdGljYXRlZAo+IC0JICogY2xpZW50cyBjYW4gdXNlIGdl bV9yZXNldF9zdGF0c19pb2N0bCBhbmQgZG1hIGZlbmNlIHN0YXR1cwo+IC0JICogKGV4cG9ydGVk IHZpYSBzeW5jX2ZpbGUgaW5mbyBpb2N0bCBvbiBleHBsaWNpdCBmZW5jZXMpIHRvIG9ic2VydmUK PiAtCSAqIHdoZW4gaXQgbG9zZXMgdGhlIGNvbnRleHQgc3RhdGUgYW5kIHNob3VsZCByZWJ1aWxk IGFjY29yZGluZ2x5Lgo+IC0JICoKPiAtCSAqIFRoZSBjb250ZXh0IGJhbiwgYW5kIHVsdGltYXRl bHkgdGhlIGNsaWVudCBiYW4sIG1lY2hhbmlzbSBhcmUgc2FmZXR5Cj4gLQkgKiB2YWx2ZXMgaWYg Y2xpZW50IHN1Ym1pc3Npb24gZW5kcyB1cCByZXN1bHRpbmcgaW4gbm90aGluZyBtb3JlIHRoYW4K PiAtCSAqIHN1YnNlcXVlbnQgaGFuZ3MuCj4gKwkgKiBFdmVyeXRoaW5nIGRlcGVuZHMgb24gaGF2 aW5nIHRoZSBHVFQgcnVubmluZywgc28gd2UgbmVlZCB0byBzdGFydAo+ICsJICogdGhlcmUuCj4g IAkgKi8KPiArCWVyciA9IGk5MTVfZ2d0dF9lbmFibGVfaHcoaTkxNSk7Cj4gKwlpZiAoZXJyKQo+ ICsJCXJldHVybiBlcnI7Cj4gIAo+IC0JaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7 Cj4gLQkJR0VNX1RSQUNFKCIlcyBwYXJkb25lZCBnbG9iYWw9JWQgKGZlbmNlICVsbHg6JWxsZCks IGN1cnJlbnQgJWRcbiIsCj4gLQkJCSAgZW5naW5lLT5uYW1lLCBycS0+Z2xvYmFsX3NlcW5vLAo+ IC0JCQkgIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8sCj4gLQkJCSAgaW50ZWxf ZW5naW5lX2dldF9zZXFubyhlbmdpbmUpKTsKPiAtCQlzdGFsbGVkID0gZmFsc2U7Cj4gLQl9Cj4g LQo+IC0JaWYgKHN0YWxsZWQpIHsKPiAtCQljb250ZXh0X21hcmtfZ3VpbHR5KHJxLT5nZW1fY29u dGV4dCk7Cj4gLQkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIC1FSU8pOwo+ICsJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpCj4gKwkJaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgc3Rh bGxlZF9tYXNrICYgRU5HSU5FX01BU0soaWQpKTsKPiAgCj4gLQkJLyogSWYgdGhpcyBjb250ZXh0 IGlzIG5vdyBiYW5uZWQsIHNraXAgYWxsIHBlbmRpbmcgcmVxdWVzdHMuICovCj4gLQkJaWYgKGk5 MTVfZ2VtX2NvbnRleHRfaXNfYmFubmVkKHJxLT5nZW1fY29udGV4dCkpCj4gLQkJCWVuZ2luZV9z a2lwX2NvbnRleHQocnEpOwo+IC0JfSBlbHNlIHsKPiAtCQkvKgo+IC0JCSAqIFNpbmNlIHRoaXMg aXMgbm90IHRoZSBodW5nIGVuZ2luZSwgaXQgbWF5IGhhdmUgYWR2YW5jZWQKPiAtCQkgKiBzaW5j ZSB0aGUgaGFuZyBkZWNsYXJhdGlvbi4gRG91YmxlIGNoZWNrIGJ5IHJlZmluZGluZwo+IC0JCSAq IHRoZSBhY3RpdmUgcmVxdWVzdCBhdCB0aGUgdGltZSBvZiB0aGUgcmVzZXQuCj4gLQkJICovCj4g LQkJcnEgPSBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7Cj4gLQkJaWYgKHJx KSB7Cj4gLQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQo+IC0JCQljb250ZXh0X21hcmtfaW5u b2NlbnQocnEtPmdlbV9jb250ZXh0KTsKPiAtCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmcnEtPmZl bmNlLCAtRUFHQUlOKTsKPiAtCj4gLQkJCS8qIFJld2luZCB0aGUgZW5naW5lIHRvIHJlcGxheSB0 aGUgaW5jb21wbGV0ZSBycSAqLwo+IC0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1l bGluZS5sb2NrLCBmbGFncyk7Cj4gLQkJCXJxID0gbGlzdF9wcmV2X2VudHJ5KHJxLCBsaW5rKTsK PiAtCQkJaWYgKCZycS0+bGluayA9PSAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cykKPiAtCQkJ CXJxID0gTlVMTDsKPiAtCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGlu ZS5sb2NrLCBmbGFncyk7Cj4gLQkJfQo+IC0JfQo+ICsJaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMo aTkxNSk7Cj4gIAo+IC0JcmV0dXJuIHJxOwo+ICsJcmV0dXJuIGVycjsKPiAgfQo+ICAKPiAtc3Rh dGljIHZvaWQgcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAt CQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+IC0JCQkgYm9vbCBzdGFsbGVkKQo+ICtzdGF0 aWMgdm9pZCByZXNldF9maW5pc2hfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgewo+IC0JaWYgKHJxKQo+IC0JCXJxID0gcmVzZXRfcmVxdWVzdChlbmdpbmUsIHJxLCBz dGFsbGVkKTsKPiAtCj4gLQkvKiBTZXR1cCB0aGUgQ1MgdG8gcmVzdW1lIGZyb20gdGhlIGJyZWFk Y3J1bWIgb2YgdGhlIGh1bmcgcmVxdWVzdCAqLwo+IC0JZW5naW5lLT5yZXNldC5yZXNldChlbmdp bmUsIHJxKTsKPiArCWVuZ2luZS0+cmVzZXQuZmluaXNoKGVuZ2luZSk7Cj4gKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3B1dChlbmdpbmUtPmk5MTUsIEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5z aWduZWQgaW50IHN0YWxsZWRfbWFzaykKPiArc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgewo+ICsJ c3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NTsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIHJlc3RhcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gIHsKPiArCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICphcmcgPSBjb250YWlu ZXJfb2Yod29yaywgdHlwZW9mKCphcmcpLCB3b3JrKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnLT5pOTE1Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l Owo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gLQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldChpOTE1KTsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICsJV1JJVEVfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCwgTlVMTCk7Cj4gIAo+ ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7Cj4gLQo+IC0JCXJlc2V0X2VuZ2luZShlbmdpbmUsCj4gLQkJCSAgICAgZW5n aW5lLT5oYW5nY2hlY2suYWN0aXZlX3JlcXVlc3QsCj4gLQkJCSAgICAgc3RhbGxlZF9tYXNrICYg RU5HSU5FX01BU0soaWQpKTsKPiAtCQljZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3Rf cmV0aXJlZF9jb250ZXh0KTsKPiAtCQlpZiAoY2UpCj4gLQkJCWludGVsX2NvbnRleHRfdW5waW4o Y2UpOwo+ICsJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAKPiAgCQkvKgo+ICAJCSAqIE9z dGVuc2liaWx5LCB3ZSBhbHdheXMgd2FudCBhIGNvbnRleHQgbG9hZGVkIGZvciBwb3dlcnNhdmlu ZywKPiAgCQkgKiBzbyBpZiB0aGUgZW5naW5lIGlzIGlkbGUgYWZ0ZXIgdGhlIHJlc2V0LCBzZW5k IGEgcmVxdWVzdAo+ICAJCSAqIHRvIGxvYWQgb3VyIHNjcmF0Y2gga2VybmVsX2NvbnRleHQuCj4g LQkJICoKPiAtCQkgKiBNb3JlIG15c3RlcmlvdXNseSwgaWYgd2UgbGVhdmUgdGhlIGVuZ2luZSBp ZGxlIGFmdGVyIGEgcmVzZXQsCj4gLQkJICogdGhlIG5leHQgdXNlcnNwYWNlIGJhdGNoIG1heSBo YW5nLCB3aXRoIHdoYXQgYXBwZWFycyB0byBiZQo+IC0JCSAqIGFuIGluY29oZXJlbnQgcmVhZCBi eSB0aGUgQ1MgKHByZXN1bWFibHkgc3RhbGUgVExCKS4gQW4KPiAtCQkgKiBlbXB0eSByZXF1ZXN0 IGFwcGVhcnMgc3VmZmljaWVudCB0byBwYXBlciBvdmVyIHRoZSBnbGl0Y2guCj4gIAkJICovCj4g LQkJaWYgKGludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSkpIHsKPiAtCQkJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7Cj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpKQo+ICsJ CQljb250aW51ZTsKPiAgCj4gLQkJCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkx NS0+a2VybmVsX2NvbnRleHQpOwo+IC0JCQlpZiAoIUlTX0VSUihycSkpCj4gLQkJCQlpOTE1X3Jl cXVlc3RfYWRkKHJxKTsKPiAtCQl9Cj4gKwkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5l LCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gKwkJaWYgKCFJU19FUlIocnEpKQo+ICsJCQlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKPiAgCX0KPiAgCj4gLQlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhp OTE1KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoX2VuZ2luZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCWVuZ2luZS0+cmVzZXQuZmluaXNoKGVu Z2luZSk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoZW5naW5lLT5pOTE1LCBGT1JDRVdBS0VfQUxMKTsKPiArCWtmcmVlKGFyZyk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiBAQCAtNzgwLDExICs3MjIsMzAgQEAgc3RhdGljIHZvaWQgcmVzZXRfZmlu aXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+IC0JbG9ja2Rl cF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAtCQllbmdpbmUtPmhhbmdjaGVjay5hY3RpdmVf cmVxdWVzdCA9IE5VTEw7Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiAg CQlyZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJl c2V0X3Jlc3RhcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXN0cnVj dCBpOTE1X2dwdV9yZXN0YXJ0ICphcmc7Cj4gKwo+ICsJLyoKPiArCSAqIEZvbGxvd2luZyB0aGUg cmVzZXQsIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyByZWxvYWQgY29udGV4dCBmb3IKPiArCSAqIHBv d2Vyc2F2aW5nLCBhbmQgdG8gY29ycmVjdCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0LiBT aW5jZQo+ICsJICogdGhpcyByZXF1aXJlcyB1cyB0byBzdWJtaXQgYSByZXF1ZXN0LCBxdWV1ZSBh IHdvcmtlciB0byBkbyB0aGF0Cj4gKwkgKiB0YXNrIGZvciB1cyB0byBldmFkZSBhbnkgbG9ja2lu ZyBoZXJlLgo+ICsJICovCj4gKwlpZiAoUkVBRF9PTkNFKGk5MTUtPmdwdV9lcnJvci5yZXN0YXJ0 KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJYXJnID0ga21hbGxvYyhzaXplb2YoKmFyZyksIEdGUF9L RVJORUwpOwo+ICsJaWYgKGFyZykgewo+ICsJCWFyZy0+aTkxNSA9IGk5MTU7Cj4gKwkJSU5JVF9X T1JLKCZhcmctPndvcmssIHJlc3RhcnRfd29yayk7Cj4gKwo+ICsJCVdSSVRFX09OQ0UoaTkxNS0+ Z3B1X2Vycm9yLnJlc3RhcnQsIGFyZyk7Cj4gKwkJcXVldWVfd29yayhpOTE1LT53cSwgJmFyZy0+ d29yayk7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTg3Myw4ICs4MzQsNiBAQCBib29sIGk5MTVfZ2Vt X3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCXN0cnVjdCBp OTE1X3RpbWVsaW5lICp0bDsKPiAgCWJvb2wgcmV0ID0gZmFsc2U7Cj4gIAo+IC0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAJaWYgKCF0ZXN0X2Jp dChJOTE1X1dFREdFRCwgJmVycm9yLT5mbGFncykpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IEBA IC04OTcsOSArODU2LDkgQEAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkgKi8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkodGwsICZp OTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKPiAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsK PiArCQlsb25nIHRpbWVvdXQ7Cj4gIAo+IC0JCXJxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRs LT5sYXN0X3JlcXVlc3QsCj4gLQkJCQkJICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkJ cnEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X3VubG9ja2VkKCZ0bC0+bGFzdF9yZXF1ZXN0KTsKPiAg CQlpZiAoIXJxKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTkxNCwxMiArODczLDEyIEBAIGJv b2wgaTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAJCSAqIGFuZCB3aGVuIHRoZSBzZXFubyBwYXNzZXMgdGhlIGZlbmNlLCB0aGUgc2lnbmFsZXIK PiAgCQkgKiB0aGVuIHNpZ25hbHMgdGhlIGZlbmNlIHdha2luZyB1cyB1cCkuCj4gIAkJICovCj4g LQkJaWYgKGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQoJnJxLT5mZW5jZSwgdHJ1ZSwKPiAtCQkJCQkg ICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKQo+ICsJCXRpbWVvdXQgPSBkbWFfZmVuY2VfZGVm YXVsdF93YWl0KCZycS0+ZmVuY2UsIHRydWUsCj4gKwkJCQkJCSBNQVhfU0NIRURVTEVfVElNRU9V VCk7Cj4gKwkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gKwkJaWYgKHRpbWVvdXQgPCAwKQo+ICAJ CQlnb3RvIHVubG9jazsKPiAgCX0KPiAtCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+IC0J R0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ICAKPiAgCWludGVsX2VuZ2lu ZXNfc2FuaXRpemUoaTkxNSwgZmFsc2UpOwo+ICAKPiBAQCAtOTMzLDcgKzg5Miw2IEBAIGJvb2wg aTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJ ICogY29udGV4dCBhbmQgZG8gbm90IHJlcXVpcmUgc3RvcF9tYWNoaW5lKCkuCj4gIAkgKi8KPiAg CWludGVsX2VuZ2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKGk5MTUpOwo+IC0JaTkxNV9n ZW1fY29udGV4dHNfbG9zdChpOTE1KTsKPiAgCj4gIAlHRU1fVFJBQ0UoImVuZFxuIik7Cj4gIAo+ IEBAIC05NDYsNiArOTA0LDQzIEBAIGJvb2wgaTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiArc3RydWN0 IF9faTkxNV9yZXNldCB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiArCXVu c2lnbmVkIGludCBzdGFsbGVkX21hc2s7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9faTkxNV9y ZXNldF9fQktMKHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBfX2k5MTVfcmVzZXQgKmFyZyA9 IGRhdGE7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWVyciA9IGludGVsX2dwdV9yZXNldChhcmctPmk5 MTUsIEFMTF9FTkdJTkVTKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwly ZXR1cm4gZ3RfcmVzZXQoYXJnLT5pOTE1LCBhcmctPnN0YWxsZWRfbWFzayk7Cj4gK30KPiArCj4g KyNpZiBSRVNFVF9VTkRFUl9TVE9QX01BQ0hJTkUKPiArI2RlZmluZSBfX2RvX3Jlc2V0KGZuLCBh cmcpIHN0b3BfbWFjaGluZShmbiwgYXJnLCBOVUxMKQo+ICsjZWxzZQo+ICsjZGVmaW5lIF9fZG9f cmVzZXQoZm4sIGFyZykgZm4oYXJnKQo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBpbnQgZG9fcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBzdGFsbGVkX21h c2spCj4gK3sKPiArCXN0cnVjdCBfX2k5MTVfcmVzZXQgYXJnID0geyBpOTE1LCBzdGFsbGVkX21h c2sgfTsKPiArCWludCBlcnIsIGk7Cj4gKwo+ICsJZXJyID0gX19kb19yZXNldChfX2k5MTVfcmVz ZXRfX0JLTCwgJmFyZyk7Cj4gKwlmb3IgKGkgPSAwOyBlcnIgJiYgaSA8IFJFU0VUX01BWF9SRVRS SUVTOyBpKyspIHsKPiArCQltc2xlZXAoMTAwKTsKPiArCQllcnIgPSBfX2RvX3Jlc2V0KF9faTkx NV9yZXNldF9fQktMLCAmYXJnKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ ICAvKioKPiAgICogaTkxNV9yZXNldCAtIHJlc2V0IGNoaXAgYWZ0ZXIgYSBoYW5nCj4gICAqIEBp OTE1OiAjZHJtX2k5MTVfcHJpdmF0ZSB0byByZXNldAo+IEBAIC05NzEsMzEgKzk2NiwyMiBAQCB2 b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIHsKPiAgCXN0 cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IgPSAmaTkxNS0+Z3B1X2Vycm9yOwo+ICAJaW50IHJl dDsKPiAtCWludCBpOwo+ICAKPiAgCUdFTV9UUkFDRSgiZmxhZ3M9JWx4XG4iLCBlcnJvci0+Zmxh Z3MpOwo+ICAKPiAgCW1pZ2h0X3NsZWVwKCk7Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChpOTE1KTsK PiAgCUdFTV9CVUdfT04oIXRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmVycm9yLT5mbGFn cykpOwo+ICAKPiAtCWlmICghdGVzdF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3ItPmZs YWdzKSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJLyogQ2xlYXIgYW55IHByZXZpb3VzIGZhaWxlZCBh dHRlbXB0cyBhdCByZWNvdmVyeS4gVGltZSB0byB0cnkgYWdhaW4uICovCj4gIAlpZiAoIWk5MTVf Z2VtX3Vuc2V0X3dlZGdlZChpOTE1KSkKPiAtCQlnb3RvIHdha2V1cDsKPiArCQlyZXR1cm47Cj4g IAo+ICAJaWYgKHJlYXNvbikKPiAgCQlkZXZfbm90aWNlKGk5MTUtPmRybS5kZXYsICJSZXNldHRp bmcgY2hpcCBmb3IgJXNcbiIsIHJlYXNvbik7Cj4gIAllcnJvci0+cmVzZXRfY291bnQrKzsKPiAg Cj4gLQlyZXQgPSByZXNldF9wcmVwYXJlKGk5MTUpOwo+IC0JaWYgKHJldCkgewo+IC0JCWRldl9l cnIoaTkxNS0+ZHJtLmRldiwgIkdQVSByZWNvdmVyeSBmYWlsZWRcbiIpOwo+IC0JCWdvdG8gdGFp bnQ7Cj4gLQl9Cj4gKwlyZXNldF9wcmVwYXJlKGk5MTUpOwo+ICAKPiAgCWlmICghaW50ZWxfaGFz X2dwdV9yZXNldChpOTE1KSkgewo+ICAJCWlmIChpOTE1X21vZHBhcmFtcy5yZXNldCkKPiBAQCAt MTAwNSwzMiArOTkxLDExIEBAIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgCQlnb3RvIGVycm9yOwo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBS RVNFVF9NQVhfUkVUUklFUzsgaSsrKSB7Cj4gLQkJcmV0ID0gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUs IEFMTF9FTkdJTkVTKTsKPiAtCQlpZiAocmV0ID09IDApCj4gLQkJCWJyZWFrOwo+IC0KPiAtCQlt c2xlZXAoMTAwKTsKPiAtCX0KPiAtCWlmIChyZXQpIHsKPiArCWlmIChkb19yZXNldChpOTE1LCBz dGFsbGVkX21hc2spKSB7Cj4gIAkJZGV2X2VycihpOTE1LT5kcm0uZGV2LCAiRmFpbGVkIHRvIHJl c2V0IGNoaXBcbiIpOwo+ICAJCWdvdG8gdGFpbnQ7Cj4gIAl9Cj4gIAo+IC0JLyogT2ssIG5vdyBn ZXQgdGhpbmdzIGdvaW5nIGFnYWluLi4uICovCj4gLQo+IC0JLyoKPiAtCSAqIEV2ZXJ5dGhpbmcg ZGVwZW5kcyBvbiBoYXZpbmcgdGhlIEdUVCBydW5uaW5nLCBzbyB3ZSBuZWVkIHRvIHN0YXJ0Cj4g LQkgKiB0aGVyZS4KPiAtCSAqLwo+IC0JcmV0ID0gaTkxNV9nZ3R0X2VuYWJsZV9odyhpOTE1KTsK PiAtCWlmIChyZXQpIHsKPiAtCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZS1lbmFibGUgR0dUVCBm b2xsb3dpbmcgcmVzZXQgKCVkKVxuIiwKPiAtCQkJICByZXQpOwo+IC0JCWdvdG8gZXJyb3I7Cj4g LQl9Cj4gLQo+IC0JZ3RfcmVzZXQoaTkxNSwgc3RhbGxlZF9tYXNrKTsKPiAgCWludGVsX292ZXJs YXlfcmVzZXQoaTkxNSk7Cj4gIAo+ICAJLyoKPiBAQCAtMTA1Miw5ICsxMDE3LDggQEAgdm9pZCBp OTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAKPiAgZmluaXNoOgo+ ICAJcmVzZXRfZmluaXNoKGk5MTUpOwo+IC13YWtldXA6Cj4gLQljbGVhcl9iaXQoSTkxNV9SRVNF VF9IQU5ET0ZGLCAmZXJyb3ItPmZsYWdzKTsKPiAtCXdha2VfdXBfYml0KCZlcnJvci0+ZmxhZ3Ms IEk5MTVfUkVTRVRfSEFORE9GRik7Cj4gKwlpZiAoIWk5MTVfdGVybWluYWxseV93ZWRnZWQoZXJy b3IpKQo+ICsJCXJlc2V0X3Jlc3RhcnQoaTkxNSk7Cj4gIAlyZXR1cm47Cj4gIAo+ICB0YWludDoK PiBAQCAtMTA3Myw3ICsxMDM3LDYgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAJYWRkX3RhaW50KFRBSU5UX1dBUk4sIExPQ0tERVBfU1RJTExfT0sp Owo+ICBlcnJvcjoKPiAgCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Cj4gLQlpOTE1X3JldGly ZV9yZXF1ZXN0cyhpOTE1KTsKPiAgCWdvdG8gZmluaXNoOwo+ICB9Cj4gIAo+IEBAIC0xMDk5LDE4 ICsxMDYyLDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2d0X3Jlc2V0X2VuZ2luZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKQo+ICB7Cj4gIAlzdHJ1 Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yOwo+IC0J c3RydWN0IGk5MTVfcmVxdWVzdCAqYWN0aXZlX3JlcXVlc3Q7Cj4gIAlpbnQgcmV0Owo+ICAKPiAg CUdFTV9UUkFDRSgiJXMgZmxhZ3M9JWx4XG4iLCBlbmdpbmUtPm5hbWUsIGVycm9yLT5mbGFncyk7 Cj4gIAlHRU1fQlVHX09OKCF0ZXN0X2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGVuZ2luZS0+aWQs ICZlcnJvci0+ZmxhZ3MpKTsKPiAgCj4gLQlhY3RpdmVfcmVxdWVzdCA9IHJlc2V0X3ByZXBhcmVf ZW5naW5lKGVuZ2luZSk7Cj4gLQlpZiAoSVNfRVJSX09SX05VTEwoYWN0aXZlX3JlcXVlc3QpKSB7 Cj4gLQkJLyogRWl0aGVyIHRoZSBwcmV2aW91cyByZXNldCBmYWlsZWQsIG9yIHdlIHBhcmRvbiB0 aGUgcmVzZXQuICovCj4gLQkJcmV0ID0gUFRSX0VSUihhY3RpdmVfcmVxdWVzdCk7Cj4gLQkJZ290 byBvdXQ7Cj4gLQl9Cj4gKwlpZiAoaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9z ZXFubyhlbmdpbmUpLAo+ICsJCQkgICAgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5l KSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTsK PiAgCj4gIAlpZiAobXNnKQo+ICAJCWRldl9ub3RpY2UoZW5naW5lLT5pOTE1LT5kcm0uZGV2LAo+ IEBAIC0xMTM0LDcgKzEwOTUsNyBAQCBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBjaGFyICptc2cpCj4gIAkgKiBhY3RpdmUgcmVxdWVz dCBhbmQgY2FuIGRyb3AgaXQsIGFkanVzdCBoZWFkIHRvIHNraXAgdGhlIG9mZmVuZGluZwo+ICAJ ICogcmVxdWVzdCB0byByZXN1bWUgZXhlY3V0aW5nIHJlbWFpbmluZyByZXF1ZXN0cyBpbiB0aGUg cXVldWUuCj4gIAkgKi8KPiAtCXJlc2V0X2VuZ2luZShlbmdpbmUsIGFjdGl2ZV9yZXF1ZXN0LCB0 cnVlKTsKPiArCWludGVsX2VuZ2luZV9yZXNldChlbmdpbmUsIHRydWUpOwo+ICAKPiAgCS8qCj4g IAkgKiBUaGUgZW5naW5lIGFuZCBpdHMgcmVnaXN0ZXJzIChhbmQgd29ya2Fyb3VuZHMgaW4gY2Fz ZSBvZiByZW5kZXIpCj4gQEAgLTExNzEsMzAgKzExMzIsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jl c2V0X2RldmljZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWk5MTVfd2VkZ2Vf b25fdGltZW91dCgmdywgaTkxNSwgNSAqIEhaKSB7Cj4gIAkJaW50ZWxfcHJlcGFyZV9yZXNldChp OTE1KTsKPiAgCj4gLQkJZXJyb3ItPnJlYXNvbiA9IHJlYXNvbjsKPiAtCQllcnJvci0+c3RhbGxl ZF9tYXNrID0gZW5naW5lX21hc2s7Cj4gLQo+IC0JCS8qIFNpZ25hbCB0aGF0IGxvY2tlZCB3YWl0 ZXJzIHNob3VsZCByZXNldCB0aGUgR1BVICovCj4gLQkJc21wX21iX19iZWZvcmVfYXRvbWljKCk7 Cj4gLQkJc2V0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ZmxhZ3MpOwo+IC0JCXdh a2VfdXBfYWxsKCZlcnJvci0+d2FpdF9xdWV1ZSk7Cj4gLQo+IC0JCS8qCj4gLQkJICogV2FpdCBm b3IgYW55b25lIGhvbGRpbmcgdGhlIGxvY2sgdG8gd2FrZXVwLCB3aXRob3V0Cj4gLQkJICogYmxv Y2tpbmcgaW5kZWZpbml0ZWx5IG9uIHN0cnVjdF9tdXRleC4KPiAtCQkgKi8KPiAtCQlkbyB7Cj4g LQkJCWlmIChtdXRleF90cnlsb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KSkgewo+IC0JCQkJ aTkxNV9yZXNldChpOTE1LCBlbmdpbmVfbWFzaywgcmVhc29uKTsKPiAtCQkJCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQkJCX0KPiAtCQl9IHdoaWxlICh3YWl0X29u X2JpdF90aW1lb3V0KCZlcnJvci0+ZmxhZ3MsCj4gLQkJCQkJICAgICBJOTE1X1JFU0VUX0hBTkRP RkYsCj4gLQkJCQkJICAgICBUQVNLX1VOSU5URVJSVVBUSUJMRSwKPiAtCQkJCQkgICAgIDEpKTsK PiAtCj4gLQkJZXJyb3ItPnN0YWxsZWRfbWFzayA9IDA7Cj4gLQkJZXJyb3ItPnJlYXNvbiA9IE5V TEw7Cj4gKwkJaTkxNV9yZXNldChpOTE1LCBlbmdpbmVfbWFzaywgcmVhc29uKTsKPiAgCj4gIAkJ aW50ZWxfZmluaXNoX3Jlc2V0KGk5MTUpOwo+ICAJfQo+IEBAIC0xMzUwLDYgKzEyODgsMjUgQEAg dm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAg CWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICB9Cj4gIAo+ICtib29sIGk5 MTVfcmVzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWlu dCBlcnI7Cj4gKwo+ICsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ncHVfZXJyb3Iu aGFuZ2NoZWNrX3dvcmspOwo+ICsKPiArCWZsdXNoX3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4gKwlH RU1fQlVHX09OKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpOwo+ICsKPiArCW11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJZXJyID0gaTkxNV9nZW1fd2Fp dF9mb3JfaWRsZShpOTE1LAo+ICsJCQkJICAgICBJOTE1X1dBSVRfTE9DS0VEIHwKPiArCQkJCSAg ICAgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NULAo+ICsJCQkJICAgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiAr CXJldHVybiAhZXJyOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpOTE1X3dlZGdlX21lKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiAgewo+ICAJc3RydWN0IGk5MTVfd2VkZ2VfbWUgKncgPSBj b250YWluZXJfb2Yod29yaywgdHlwZW9mKCp3KSwgd29yay53b3JrKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXNldC5oCj4gaW5kZXggYjZhNTE5YmRlNjdkLi5mMmQzNDdmMzE5ZGYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oCj4gQEAgLTI5LDYgKzI5LDkgQEAgdm9pZCBpOTE1X3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICBpbnQgaTkxNV9yZXNldF9lbmdp bmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCSAgICAgIGNvbnN0IGNoYXIg KnJlYXNvbik7Cj4gIAo+ICt2b2lkIGk5MTVfcmVzZXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwgYm9vbCBndWlsdHkpOwo+ICtib29sIGk5MTVfcmVzZXRfZmx1c2goc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiAgYm9vbCBpbnRlbF9oYXNfZ3B1X3Jlc2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgYm9vbCBpbnRlbF9oYXNfcmVzZXRfZW5n aW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCAyMzVhMmQ3MGQ2NzEuLjgxNWEwNWZlMGUxZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTExMTksMTAg KzExMTksOCBAQCB2b2lkIGludGVsX2VuZ2luZXNfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIGJvb2wgZm9yY2UpCj4gIAlpZiAoIXJlc2V0X2VuZ2luZXMoaTkxNSkgJiYg IWZvcmNlKQo+ICAJCXJldHVybjsKPiAgCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1 LCBpZCkgewo+IC0JCWlmIChlbmdpbmUtPnJlc2V0LnJlc2V0KQo+IC0JCQllbmdpbmUtPnJlc2V0 LnJlc2V0KGVuZ2luZSwgTlVMTCk7Cj4gLQl9Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBp OTE1LCBpZCkKPiArCQlpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBmYWxzZSk7Cj4gIH0KPiAg Cj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3Vi bWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ IGluZGV4IDM0OWFlNTg0NGYyNC4uNDVlMmRiNjgzZmU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gQEAgLTgzNCw4ICs4MzQsNyBAQCBzdGF0 aWMgdm9pZCBndWNfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAgCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gLWd1Y19yZXNldF9wcmVwYXJl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZvaWQgZ3VjX3Jlc2V0 X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNs aXN0czsKPiAgCj4gQEAgLTg2MSw4ICs4NjAsNiBAQCBndWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKi8KPiAgCWlmIChlbmdpbmUtPmk5MTUtPmd1 Yy5wcmVlbXB0X3dxKQo+ICAJCWZsdXNoX3dvcmtxdWV1ZShlbmdpbmUtPmk5MTUtPmd1Yy5wcmVl bXB0X3dxKTsKPiAtCj4gLQlyZXR1cm4gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdp bmUpOwo+ICB9Cj4gIAo+ICAvKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5j Cj4gaW5kZXggNzQxNDQxZGFhZTMyLi41NjYyZDZmZWQ1MjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+IEBAIC0yNSw2ICsyNSwxNyBAQAo+ICAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUgImk5MTVfcmVzZXQuaCIKPiAgCj4gK3N0cnVjdCBoYW5n Y2hlY2sgewo+ICsJdTY0IGFjdGhkOwo+ICsJdTMyIHNlcW5vOwo+ICsJZW51bSBpbnRlbF9lbmdp bmVfaGFuZ2NoZWNrX2FjdGlvbiBhY3Rpb247Cj4gKwl1bnNpZ25lZCBsb25nIGFjdGlvbl90aW1l c3RhbXA7Cj4gKwlpbnQgZGVhZGxvY2s7Cj4gKwlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgaW5zdGRv bmU7Cj4gKwlib29sIHdlZGdlZDoxOwo+ICsJYm9vbCBzdGFsbGVkOjE7Cj4gK307Cj4gKwo+ICBz dGF0aWMgYm9vbCBpbnN0ZG9uZV91bmNoYW5nZWQodTMyIGN1cnJlbnRfaW5zdGRvbmUsIHUzMiAq b2xkX2luc3Rkb25lKQo+ICB7Cj4gIAl1MzIgdG1wID0gY3VycmVudF9pbnN0ZG9uZSB8ICpvbGRf aW5zdGRvbmU7Cj4gQEAgLTExOSwyNSArMTMwLDIyIEBAIGVuZ2luZV9zdHVjayhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHU2NCBhY3RoZCkKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg aGFuZ2NoZWNrX2xvYWRfc2FtcGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAt CQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sgKmhjKQo+ICsJCQkJICBzdHJ1Y3Qg aGFuZ2NoZWNrICpoYykKPiAgewo+ICAJaGMtPmFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3Rp dmVfaGVhZChlbmdpbmUpOwo+ICAJaGMtPnNlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhl bmdpbmUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoYW5nY2hlY2tfc3RvcmVfc2FtcGxlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfaGFuZ2NoZWNrICpoYykKPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBoYW5nY2hlY2sg KmhjKQo+ICB7Cj4gIAllbmdpbmUtPmhhbmdjaGVjay5hY3RoZCA9IGhjLT5hY3RoZDsKPiAgCWVu Z2luZS0+aGFuZ2NoZWNrLnNlcW5vID0gaGMtPnNlcW5vOwo+IC0JZW5naW5lLT5oYW5nY2hlY2su YWN0aW9uID0gaGMtPmFjdGlvbjsKPiAtCWVuZ2luZS0+aGFuZ2NoZWNrLnN0YWxsZWQgPSBoYy0+ c3RhbGxlZDsKPiAtCWVuZ2luZS0+aGFuZ2NoZWNrLndlZGdlZCA9IGhjLT53ZWRnZWQ7Cj4gIH0K PiAgCj4gIHN0YXRpYyBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uCj4gIGhhbmdj aGVja19nZXRfYWN0aW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrICpoYykKPiArCQkgICAgIGNvbnN0 IHN0cnVjdCBoYW5nY2hlY2sgKmhjKQo+ICB7Cj4gIAlpZiAoZW5naW5lLT5oYW5nY2hlY2suc2Vx bm8gIT0gaGMtPnNlcW5vKQo+ICAJCXJldHVybiBFTkdJTkVfQUNUSVZFX1NFUU5POwo+IEBAIC0x NDksNyArMTU3LDcgQEAgaGFuZ2NoZWNrX2dldF9hY3Rpb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoYW5nY2hlY2tfYWNjdW11bGF0ZV9z YW1wbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCQkJCXN0cnVjdCBpbnRl bF9lbmdpbmVfaGFuZ2NoZWNrICpoYykKPiArCQkJCQlzdHJ1Y3QgaGFuZ2NoZWNrICpoYykKPiAg ewo+ICAJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gSTkxNV9FTkdJTkVfREVBRF9USU1FT1VUOwo+ ICAKPiBAQCAtMjY1LDE5ICsyNzMsMTkgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxh cHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAlpbnRlbF91bmNvcmVfYXJtX3VuY2xh aW1lZF9tbWlvX2RldGVjdGlvbihkZXZfcHJpdik7Cj4gIAo+ICAJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gLQkJc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sg aGM7Cj4gKwkJc3RydWN0IGhhbmdjaGVjayBoYzsKPiAgCj4gIAkJaGFuZ2NoZWNrX2xvYWRfc2Ft cGxlKGVuZ2luZSwgJmhjKTsKPiAgCQloYW5nY2hlY2tfYWNjdW11bGF0ZV9zYW1wbGUoZW5naW5l LCAmaGMpOwo+ICAJCWhhbmdjaGVja19zdG9yZV9zYW1wbGUoZW5naW5lLCAmaGMpOwo+ICAKPiAt CQlpZiAoZW5naW5lLT5oYW5nY2hlY2suc3RhbGxlZCkgewo+ICsJCWlmIChoYy5zdGFsbGVkKSB7 Cj4gIAkJCWh1bmcgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAgCQkJaWYgKGhjLmFj dGlvbiAhPSBFTkdJTkVfREVBRCkKPiAgCQkJCXN0dWNrIHw9IGludGVsX2VuZ2luZV9mbGFnKGVu Z2luZSk7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoZW5naW5lLT5oYW5nY2hlY2sud2VkZ2VkKQo+ICsJ CWlmIChoYy53ZWRnZWQpCj4gIAkJCXdlZGdlZCB8PSBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUp Owo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDZjZWY0NThmNmI0 My4uMTAzNTRiZGY4MjM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTM2 LDYgKzEzNiw3IEBACj4gICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAgI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKPiArI2luY2x1 ZGUgImk5MTVfcmVzZXQuaCIKPiAgI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ICAjaW5jbHVkZSAi aW50ZWxfbHJjX3JlZy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfbW9jcy5oIgo+IEBAIC0zNzEsNyAr MzcyLDggQEAgc3RhdGljIHZvaWQgdW53aW5kX3dhX3RhaWwoc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCj4gIAlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJxLT5yaW5nLCBycS0+dGFpbCk7Cj4gIH0K PiAgCj4gLXN0YXRpYyB2b2lkIF9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4g K19fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuLCAqYWN0aXZlID0gTlVM TDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgKnVuaW5pdGlhbGl6ZWRfdmFyKHBsKTsKPiBAQCAtNDEz LDYgKzQxNSw4IEBAIHN0YXRpYyB2b2lkIF9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCWxpc3RfbW92ZV90YWlsKCZhY3RpdmUt PnNjaGVkLmxpbmssCj4gIAkJCSAgICAgICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdp bmUsIHByaW8pKTsKPiAgCX0KPiArCj4gKwlyZXR1cm4gYWN0aXZlOwo+ICB9Cj4gIAo+ICB2b2lk Cj4gQEAgLTE4NDAsMTEgKzE4NDQsOSBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmlu ZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAK PiAtc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+IC1leGVjbGlzdHNfcmVzZXRfcHJlcGFy ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lkIGV4ZWNsaXN0 c19yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJ c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5l LT5leGVjbGlzdHM7Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCAqYWN0aXZlOwo+ ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgCj4gIAlHRU1fVFJBQ0UoIiVzOiBkZXB0aDwtJWRc biIsIGVuZ2luZS0+bmFtZSwKPiBAQCAtMTg2MCw1OSArMTg2MiwyMSBAQCBleGVjbGlzdHNfcmVz ZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKiBwcmV2ZW50 cyB0aGUgcmFjZS4KPiAgCSAqLwo+ICAJX190YXNrbGV0X2Rpc2FibGVfc3luY19vbmNlKCZleGVj bGlzdHMtPnRhc2tsZXQpOwo+ICsJR0VNX0JVR19PTighcmVzZXRfaW5fcHJvZ3Jlc3MoZXhlY2xp c3RzKSk7Cj4gIAo+ICsJLyogQW5kIGZsdXNoIGFueSBjdXJyZW50IGRpcmVjdCBzdWJtaXNzaW9u LiAqLwo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3Mp Owo+IC0KPiAtCS8qCj4gLQkgKiBXZSB3YW50IHRvIGZsdXNoIHRoZSBwZW5kaW5nIGNvbnRleHQg c3dpdGNoZXMsIGhhdmluZyBkaXNhYmxlZAo+IC0JICogdGhlIHRhc2tsZXQgYWJvdmUsIHdlIGNh biBhc3N1bWUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgZXhlY2xpc3RzLgo+IC0JICogRm9yIHRo aXMgYWxsb3dzIHVzIHRvIGNhdGNoIHVwIHdpdGggYW4gaW5mbGlnaHQgcHJlZW1wdGlvbiBldmVu dCwKPiAtCSAqIGFuZCBhdm9pZCBibGFtaW5nIGFuIGlubm9jZW50IHJlcXVlc3QgaWYgdGhlIHN0 YWxsIHdhcyBkdWUgdG8gdGhlCj4gLQkgKiBwcmVlbXB0aW9uIGl0c2VsZi4KPiAtCSAqLwo+IC0J cHJvY2Vzc19jc2IoZW5naW5lKTsKPiAtCj4gLQkvKgo+IC0JICogVGhlIGxhc3QgYWN0aXZlIHJl cXVlc3QgY2FuIHRoZW4gYmUgbm8gbGF0ZXIgdGhhbiB0aGUgbGFzdCByZXF1ZXN0Cj4gLQkgKiBu b3cgaW4gRUxTUFswXS4gU28gc2VhcmNoIGJhY2t3YXJkcyBmcm9tIHRoZXJlLCBzbyB0aGF0IGlm IHRoZSBHUFUKPiAtCSAqIGhhcyBhZHZhbmNlZCBiZXlvbmQgdGhlIGxhc3QgQ1NCIHVwZGF0ZSwg aXQgd2lsbCBiZSBwYXJkb25lZC4KPiAtCSAqLwo+IC0JYWN0aXZlID0gTlVMTDsKPiAtCXJlcXVl c3QgPSBwb3J0X3JlcXVlc3QoZXhlY2xpc3RzLT5wb3J0KTsKPiAtCWlmIChyZXF1ZXN0KSB7Cj4g LQkJLyoKPiAtCQkgKiBQcmV2ZW50IHRoZSBicmVhZGNydW1iIGZyb20gYWR2YW5jaW5nIGJlZm9y ZSB3ZSBkZWNpZGUKPiAtCQkgKiB3aGljaCByZXF1ZXN0IGlzIGN1cnJlbnRseSBhY3RpdmUuCj4g LQkJICovCj4gLQkJaW50ZWxfZW5naW5lX3N0b3BfY3MoZW5naW5lKTsKPiAtCj4gLQkJbGlzdF9m b3JfZWFjaF9lbnRyeV9mcm9tX3JldmVyc2UocmVxdWVzdCwKPiAtCQkJCQkJICZlbmdpbmUtPnRp bWVsaW5lLnJlcXVlc3RzLAo+IC0JCQkJCQkgbGluaykgewo+IC0JCQlpZiAoX19pOTE1X3JlcXVl c3RfY29tcGxldGVkKHJlcXVlc3QsCj4gLQkJCQkJCSAgICAgcmVxdWVzdC0+Z2xvYmFsX3NlcW5v KSkKPiAtCQkJCWJyZWFrOwo+IC0KPiAtCQkJYWN0aXZlID0gcmVxdWVzdDsKPiAtCQl9Cj4gLQl9 Cj4gLQo+ICsJcHJvY2Vzc19jc2IoZW5naW5lKTsgLyogZHJhaW4gcHJlZW1wdGlvbiBldmVudHMg Ki8KPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxh Z3MpOwo+IC0KPiAtCXJldHVybiBhY3RpdmU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGV4ZWNs aXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCSAgICBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICtzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ ZXhlY2xpc3RzOwo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gIAl1bnNpZ25lZCBsb25n IGZsYWdzOwo+ICAJdTMyICpyZWdzOwo+ICAKPiAtCUdFTV9UUkFDRSgiJXMgcmVxdWVzdCBnbG9i YWw9JWQsIGN1cnJlbnQ9JWRcbiIsCj4gLQkJICBlbmdpbmUtPm5hbWUsIHJlcXVlc3QgPyByZXF1 ZXN0LT5nbG9iYWxfc2Vxbm8gOiAwLAo+IC0JCSAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdp bmUpKTsKPiAtCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBm bGFncyk7Cj4gIAo+ICAJLyoKPiBAQCAtMTkyNywxMiArMTg5MSwxOCBAQCBzdGF0aWMgdm9pZCBl eGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJZXhlY2xp c3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7Cj4gIAo+ICAJLyogUHVzaCBiYWNr IGFueSBpbmNvbXBsZXRlIHJlcXVlc3RzIGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwo+ IC0JX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhlbmdpbmUpOwo+ICsJcnEgPSBfX3Vud2lu ZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7Cj4gIAo+ICAJLyogRm9sbG93aW5nIHRoZSBy ZXNldCwgd2UgbmVlZCB0byByZWxvYWQgdGhlIENTQiByZWFkL3dyaXRlIHBvaW50ZXJzICovCj4g IAlyZXNldF9jc2JfcG9pbnRlcnMoJmVuZ2luZS0+ZXhlY2xpc3RzKTsKPiAgCj4gLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiArCUdFTV9U UkFDRSgiJXMgc2Vxbm89JWQsIGN1cnJlbnQ9JWQsIHN0YWxsZWQ/ICVzXG4iLAo+ICsJCSAgZW5n aW5lLT5uYW1lLAo+ICsJCSAgcnEgPyBycS0+Z2xvYmFsX3NlcW5vIDogMCwKPiArCQkgIGludGVs X2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKPiArCQkgIHllc25vKHN0YWxsZWQpKTsKPiArCWlm ICghcnEpCj4gKwkJZ290byBvdXRfdW5sb2NrOwo+ICAKPiAgCS8qCj4gIAkgKiBJZiB0aGUgcmVx dWVzdCB3YXMgaW5ub2NlbnQsIHdlIGxlYXZlIHRoZSByZXF1ZXN0IGluIHRoZSBFTFNQCj4gQEAg LTE5NDUsOCArMTkxNSw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkgKiBhbmQgaGF2ZSB0byBhdCBsZWFzdCByZXN0b3Jl IHRoZSBSSU5HIHJlZ2lzdGVyIGluIHRoZSBjb250ZXh0Cj4gIAkgKiBpbWFnZSBiYWNrIHRvIHRo ZSBleHBlY3RlZCB2YWx1ZXMgdG8gc2tpcCBvdmVyIHRoZSBndWlsdHkgcmVxdWVzdC4KPiAgCSAq Lwo+IC0JaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QtPmZlbmNlLmVycm9yICE9IC1FSU8pCj4gLQkJ cmV0dXJuOwo+ICsJaTkxNV9yZXNldF9yZXF1ZXN0KHJxLCBzdGFsbGVkKTsKPiArCWlmICghc3Rh bGxlZCkKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gIAo+ICAJLyoKPiAgCSAqIFdlIHdhbnQgYSBz aW1wbGUgY29udGV4dCArIHJpbmcgdG8gZXhlY3V0ZSB0aGUgYnJlYWRjcnVtYiB1cGRhdGUuCj4g QEAgLTE5NTYsNyArMTkyNyw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkgKiBmdXR1cmUgcmVxdWVzdCB3aWxsIGJlIGFm dGVyIHVzZXJzcGFjZSBoYXMgaGFkIHRoZSBvcHBvcnR1bml0eQo+ICAJICogdG8gcmVjcmVhdGUg aXRzIG93biBzdGF0ZS4KPiAgCSAqLwo+IC0JcmVncyA9IHJlcXVlc3QtPmh3X2NvbnRleHQtPmxy Y19yZWdfc3RhdGU7Cj4gKwlyZWdzID0gcnEtPmh3X2NvbnRleHQtPmxyY19yZWdfc3RhdGU7Cj4g IAlpZiAoZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSkgewo+ICAJCW1lbWNweShyZWdzLCAv KiBza2lwIHJlc3RvcmluZyB0aGUgdmFuaWxsYSBQUEhXU1AgKi8KPiAgCQkgICAgICAgZW5naW5l LT5waW5uZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19TVEFURV9QTiAqIFBBR0VfU0laRSwKPiBAQCAt MTk2NCwxNyArMTkzNSwxNCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJfQo+ICAKPiAgCS8qIE1vdmUgdGhlIFJJTkdfSEVB RCBvbnRvIHRoZSBicmVhZGNydW1iLCBwYXN0IHRoZSBoYW5naW5nIGJhdGNoICovCj4gLQlyZXF1 ZXN0LT5yaW5nLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKHJlcXVlc3QtPnJpbmcsIHJlcXVlc3Qt PnBvc3RmaXgpOwo+ICsJcnEtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dyYXAocnEtPnJpbmcs IHJxLT5wb3N0Zml4KTsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJxLT5yaW5nKTsKPiAg Cj4gLQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywgcmVxdWVzdC0+Z2VtX2NvbnRleHQs IGVuZ2luZSwKPiAtCQkJCSByZXF1ZXN0LT5yaW5nKTsKPiArCWV4ZWNsaXN0c19pbml0X3JlZ19z dGF0ZShyZWdzLCBycS0+Z2VtX2NvbnRleHQsIGVuZ2luZSwgcnEtPnJpbmcpOwo+ICsJX19leGVj bGlzdHNfdXBkYXRlX3JlZ19zdGF0ZShlbmdpbmUsIHJxLT5od19jb250ZXh0KTsKPiAgCj4gLQlf X2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0YXRlKGVuZ2luZSwgcmVxdWVzdC0+aHdfY29udGV4dCk7 Cj4gLQo+IC0JaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmVxdWVzdC0+cmluZyk7Cj4gLQo+IC0J LyogUmVzZXQgV2FJZGxlTGl0ZVJlc3RvcmU6YmR3LHNrbCBhcyB3ZWxsICovCj4gLQl1bndpbmRf d2FfdGFpbChyZXF1ZXN0KTsKPiArb3V0X3VubG9jazoKPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBleGVjbGlzdHNfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiBAQCAtMTk4Nyw2ICsxOTU1LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X2Zpbmlz aChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKiB0byBzbGVlcCBiZWZvcmUg d2UgcmVzdGFydCBhbmQgcmVsb2FkIGEgY29udGV4dC4KPiAgCSAqCj4gIAkgKi8KPiArCUdFTV9C VUdfT04oIXJlc2V0X2luX3Byb2dyZXNzKGV4ZWNsaXN0cykpOwo+ICAJaWYgKCFSQl9FTVBUWV9S T09UKCZleGVjbGlzdHMtPnF1ZXVlLnJiX3Jvb3QpKQo+ICAJCWV4ZWNsaXN0cy0+dGFza2xldC5m dW5jKGV4ZWNsaXN0cy0+dGFza2xldC5kYXRhKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X292ZXJsYXkuYwo+IGluZGV4IGMzMDBlNTc4N2IzYy4uYTkyMzhmZDA3ZTMwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC00ODAsOCArNDgwLDYgQEAgdm9pZCBp bnRlbF9vdmVybGF5X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CWlmICghb3ZlcmxheSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaW50ZWxfb3ZlcmxheV9yZWxlYXNl X29sZF92aWQob3ZlcmxheSk7Cj4gLQo+ICAJb3ZlcmxheS0+b2xkX3hzY2FsZSA9IDA7Cj4gIAlv dmVybGF5LT5vbGRfeXNjYWxlID0gMDsKPiAgCW92ZXJsYXktPmNydGMgPSBOVUxMOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCAwOWM5MDQ3NTE2OGEuLmE5 ZWZjOGM3MTI1NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtMzMsNiArMzMsNyBAQAo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICNpbmNs dWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKPiArI2luY2x1ZGUgImk5MTVfcmVzZXQuaCIK PiAgI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKPiAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICAj aW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIKPiBAQCAtNzExLDUyICs3MTIsODAgQEAgc3Rh dGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy ZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZv aWQgcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAg CWludGVsX2VuZ2luZV9zdG9wX2NzKGVuZ2luZSk7Cj4gLQlyZXR1cm4gaTkxNV9nZW1fZmluZF9h Y3RpdmVfcmVxdWVzdChlbmdpbmUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBza2lwX3JlcXVl c3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3N0YXRpYyB2b2lkIHJlc2V0X3Jpbmcoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCj4gIHsKPiAtCXZvaWQg KnZhZGRyID0gcnEtPnJpbmctPnZhZGRyOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0g JmVuZ2luZS0+dGltZWxpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwb3MsICpycTsKPiAr CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAl1MzIgaGVhZDsKPiAgCj4gLQloZWFkID0gcnEtPmlu Zml4Owo+IC0JaWYgKHJxLT5wb3N0Zml4IDwgaGVhZCkgewo+IC0JCW1lbXNldDMyKHZhZGRyICsg aGVhZCwgTUlfTk9PUCwKPiAtCQkJIChycS0+cmluZy0+c2l6ZSAtIGhlYWQpIC8gc2l6ZW9mKHUz MikpOwo+IC0JCWhlYWQgPSAwOwo+ICsJcnEgPSBOVUxMOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUo JnRsLT5sb2NrLCBmbGFncyk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJnRsLT5yZXF1 ZXN0cywgbGluaykgewo+ICsJCWlmICghX19pOTE1X3JlcXVlc3RfY29tcGxldGVkKHBvcywgcG9z LT5nbG9iYWxfc2Vxbm8pKSB7Cj4gKwkJCXJxID0gcG9zOwo+ICsJCQlicmVhazsKPiArCQl9Cj4g IAl9Cj4gLQltZW1zZXQzMih2YWRkciArIGhlYWQsIE1JX05PT1AsIChycS0+cG9zdGZpeCAtIGhl YWQpIC8gc2l6ZW9mKHUzMikpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCByZXNldF9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g LXsKPiAtCUdFTV9UUkFDRSgiJXMgcmVxdWVzdCBnbG9iYWw9JWQsIGN1cnJlbnQ9JWRcbiIsCj4g LQkJICBlbmdpbmUtPm5hbWUsIHJxID8gcnEtPmdsb2JhbF9zZXFubyA6IDAsCj4gLQkJICBpbnRl bF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSkpOwo+ICAKPiArCUdFTV9UUkFDRSgiJXMgc2Vxbm89 JWQsIGN1cnJlbnQ9JWQsIHN0YWxsZWQ/ICVzXG4iLAo+ICsJCSAgZW5naW5lLT5uYW1lLAo+ICsJ CSAgcnEgPyBycS0+Z2xvYmFsX3NlcW5vIDogMCwKPiArCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vx bm8oZW5naW5lKSwKPiArCQkgIHllc25vKHN0YWxsZWQpKTsKPiAgCS8qCj4gLQkgKiBUcnkgdG8g cmVzdG9yZSB0aGUgbG9naWNhbCBHUFUgc3RhdGUgdG8gbWF0Y2ggdGhlIGNvbnRpbnVhdGlvbgo+ IC0JICogb2YgdGhlIHJlcXVlc3QgcXVldWUuIElmIHdlIHNraXAgdGhlIGNvbnRleHQvUEQgcmVz dG9yZSwgdGhlbgo+IC0JICogdGhlIG5leHQgcmVxdWVzdCBtYXkgdHJ5IHRvIGV4ZWN1dGUgYXNz dW1pbmcgdGhhdCBpdHMgY29udGV4dAo+IC0JICogaXMgdmFsaWQgYW5kIGxvYWRlZCBvbiB0aGUg R1BVIGFuZCBzbyBtYXkgdHJ5IHRvIGFjY2VzcyBpbnZhbGlkCj4gLQkgKiBtZW1vcnksIHByb21w dGluZyByZXBlYXRlZCBHUFUgaGFuZ3MuCj4gKwkgKiBUaGUgZ3VpbHR5IHJlcXVlc3Qgd2lsbCBn ZXQgc2tpcHBlZCBvbiBhIGh1bmcgZW5naW5lLgo+ICAJICoKPiAtCSAqIElmIHRoZSByZXF1ZXN0 IHdhcyBndWlsdHksIHdlIHN0aWxsIHJlc3RvcmUgdGhlIGxvZ2ljYWwgc3RhdGUKPiAtCSAqIGlu IGNhc2UgdGhlIG5leHQgcmVxdWVzdCByZXF1aXJlcyBpdCAoZS5nLiB0aGUgYWxpYXNpbmcgcHBn dHQpLAo+IC0JICogYnV0IHNraXAgb3ZlciB0aGUgaHVuZyBiYXRjaC4KPiArCSAqIFVzZXJzIG9m IGNsaWVudCBkZWZhdWx0IGNvbnRleHRzIGRvIG5vdCByZWx5IG9uIGxvZ2ljYWwKPiArCSAqIHN0 YXRlIHByZXNlcnZlZCBiZXR3ZWVuIGJhdGNoZXMgc28gaXQgaXMgc2FmZSB0byBleGVjdXRlCj4g KwkgKiBxdWV1ZWQgcmVxdWVzdHMgZm9sbG93aW5nIHRoZSBoYW5nLiBOb24gZGVmYXVsdCBjb250 ZXh0cwo+ICsJICogcmVseSBvbiBwcmVzZXJ2ZWQgc3RhdGUsIHNvIHNraXBwaW5nIGEgYmF0Y2gg bG9zZXMgdGhlCj4gKwkgKiBldm9sdXRpb24gb2YgdGhlIHN0YXRlIGFuZCBpdCBuZWVkcyB0byBi ZSBjb25zaWRlcmVkIGNvcnJ1cHRlZC4KPiArCSAqIEV4ZWN1dGluZyBtb3JlIHF1ZXVlZCBiYXRj aGVzIG9uIHRvcCBvZiBjb3JydXB0ZWQgc3RhdGUgaXMKPiArCSAqIHJpc2t5LiBCdXQgd2UgdGFr ZSB0aGUgcmlzayBieSB0cnlpbmcgdG8gYWR2YW5jZSB0aHJvdWdoCj4gKwkgKiB0aGUgcXVldWVk IHJlcXVlc3RzIGluIG9yZGVyIHRvIG1ha2UgdGhlIGNsaWVudCBiZWhhdmlvdXIKPiArCSAqIG1v cmUgcHJlZGljdGFibGUgYXJvdW5kIHJlc2V0cywgYnkgbm90IHRocm93aW5nIGF3YXkgcmFuZG9t Cj4gKwkgKiBhbW91bnQgb2YgYmF0Y2hlcyBpdCBoYXMgcHJlcGFyZWQgZm9yIGV4ZWN1dGlvbi4g U29waGlzdGljYXRlZAo+ICsJICogY2xpZW50cyBjYW4gdXNlIGdlbV9yZXNldF9zdGF0c19pb2N0 bCBhbmQgZG1hIGZlbmNlIHN0YXR1cwo+ICsJICogKGV4cG9ydGVkIHZpYSBzeW5jX2ZpbGUgaW5m byBpb2N0bCBvbiBleHBsaWNpdCBmZW5jZXMpIHRvIG9ic2VydmUKPiArCSAqIHdoZW4gaXQgbG9z ZXMgdGhlIGNvbnRleHQgc3RhdGUgYW5kIHNob3VsZCByZWJ1aWxkIGFjY29yZGluZ2x5Lgo+ICAJ ICoKPiAtCSAqIElmIHRoZSByZXF1ZXN0IHdhcyBpbm5vY2VudCwgd2UgdHJ5IHRvIHJlcGxheSB0 aGUgcmVxdWVzdCB3aXRoCj4gLQkgKiB0aGUgcmVzdG9yZWQgY29udGV4dC4KPiArCSAqIFRoZSBj b250ZXh0IGJhbiwgYW5kIHVsdGltYXRlbHkgdGhlIGNsaWVudCBiYW4sIG1lY2hhbmlzbSBhcmUg c2FmZXR5Cj4gKwkgKiB2YWx2ZXMgaWYgY2xpZW50IHN1Ym1pc3Npb24gZW5kcyB1cCByZXN1bHRp bmcgaW4gbm90aGluZyBtb3JlIHRoYW4KPiArCSAqIHN1YnNlcXVlbnQgaGFuZ3MuCj4gIAkgKi8K PiArCj4gIAlpZiAocnEpIHsKPiAtCQkvKiBJZiB0aGUgcnEgaHVuZywganVtcCB0byBpdHMgYnJl YWRjcnVtYiBhbmQgc2tpcCB0aGUgYmF0Y2ggKi8KPiAtCQlycS0+cmluZy0+aGVhZCA9IGludGVs X3Jpbmdfd3JhcChycS0+cmluZywgcnEtPmhlYWQpOwo+IC0JCWlmIChycS0+ZmVuY2UuZXJyb3Ig PT0gLUVJTykKPiAtCQkJc2tpcF9yZXF1ZXN0KHJxKTsKPiArCQkvKgo+ICsJCSAqIFRyeSB0byBy ZXN0b3JlIHRoZSBsb2dpY2FsIEdQVSBzdGF0ZSB0byBtYXRjaCB0aGUKPiArCQkgKiBjb250aW51 YXRpb24gb2YgdGhlIHJlcXVlc3QgcXVldWUuIElmIHdlIHNraXAgdGhlCj4gKwkJICogY29udGV4 dC9QRCByZXN0b3JlLCB0aGVuIHRoZSBuZXh0IHJlcXVlc3QgbWF5IHRyeSB0byBleGVjdXRlCj4g KwkJICogYXNzdW1pbmcgdGhhdCBpdHMgY29udGV4dCBpcyB2YWxpZCBhbmQgbG9hZGVkIG9uIHRo ZSBHUFUgYW5kCj4gKwkJICogc28gbWF5IHRyeSB0byBhY2Nlc3MgaW52YWxpZCBtZW1vcnksIHBy b21wdGluZyByZXBlYXRlZCBHUFUKPiArCQkgKiBoYW5ncy4KPiArCQkgKgo+ICsJCSAqIElmIHRo ZSByZXF1ZXN0IHdhcyBndWlsdHksIHdlIHN0aWxsIHJlc3RvcmUgdGhlIGxvZ2ljYWwKPiArCQkg KiBzdGF0ZSBpbiBjYXNlIHRoZSBuZXh0IHJlcXVlc3QgcmVxdWlyZXMgaXQgKGUuZy4gdGhlCj4g KwkJICogYWxpYXNpbmcgcHBndHQpLCBidXQgc2tpcCBvdmVyIHRoZSBodW5nIGJhdGNoLgo+ICsJ CSAqCj4gKwkJICogSWYgdGhlIHJlcXVlc3Qgd2FzIGlubm9jZW50LCB3ZSB0cnkgdG8gcmVwbGF5 IHRoZSByZXF1ZXN0Cj4gKwkJICogd2l0aCB0aGUgcmVzdG9yZWQgY29udGV4dC4KPiArCQkgKi8K PiArCQlpOTE1X3Jlc2V0X3JlcXVlc3QocnEsIHN0YWxsZWQpOwo+ICsKPiArCQlHRU1fQlVHX09O KHJxLT5yaW5nICE9IGVuZ2luZS0+YnVmZmVyKTsKPiArCQloZWFkID0gcnEtPmhlYWQ7Cj4gKwl9 IGVsc2Ugewo+ICsJCWhlYWQgPSBlbmdpbmUtPmJ1ZmZlci0+dGFpbDsKPiAgCX0KPiArCWVuZ2lu ZS0+YnVmZmVyLT5oZWFkID0gaW50ZWxfcmluZ193cmFwKGVuZ2luZS0+YnVmZmVyLCBoZWFkKTsK PiArCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0bC0+bG9jaywgZmxhZ3MpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZCByZXNldF9maW5pc2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA1YWQ0 NmMyZmJjMGYuLmYyZWZmZDAwMTU0MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiBAQCAtMTIwLDEzICsxMjAsOCBAQCBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUg ewo+ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayB7Cj4gIAl1NjQgYWN0aGQ7Cj4gIAl1 MzIgc2Vxbm87Cj4gLQllbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGFjdGlvbjsK PiAgCXVuc2lnbmVkIGxvbmcgYWN0aW9uX3RpbWVzdGFtcDsKPiAtCWludCBkZWFkbG9jazsKPiAg CXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KmFjdGl2ZV9yZXF1ZXN0Owo+IC0JYm9vbCBzdGFsbGVkOjE7Cj4gLQlib29sIHdlZGdlZDoxOwo+ ICB9Owo+ICAKPiAgc3RydWN0IGludGVsX3Jpbmcgewo+IEBAIC00NDQsOSArNDM5LDggQEAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAlpbnQJCSgqaW5pdF9odykoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiAgCj4gIAlzdHJ1Y3Qgewo+IC0JCXN0cnVjdCBpOTE1X3JlcXVl c3QgKigqcHJlcGFyZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAtCQl2b2lk ICgqcmVzZXQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJICAgICAgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+ICsJCXZvaWQgKCpwcmVwYXJlKShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwo+ICsJCXZvaWQgKCpyZXNldCkoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpOwo+ICAJCXZvaWQgKCpmaW5pc2gpKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIAl9IHJlc2V0Owo+ICAKPiBAQCAtMTAxOCw2ICsx MDEyLDEzIEBAIGdlbjhfZW1pdF9nZ3R0X3dyaXRlKHUzMiAqY3MsIHUzMiB2YWx1ZSwgdTMyIGd0 dF9vZmZzZXQpCj4gIAlyZXR1cm4gY3M7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp bnRlbF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICsJCQkJ ICAgICAgYm9vbCBzdGFsbGVkKQo+ICt7Cj4gKwlpZiAoZW5naW5lLT5yZXNldC5yZXNldCkKPiAr CQllbmdpbmUtPnJlc2V0LnJlc2V0KGVuZ2luZSwgc3RhbGxlZCk7Cj4gK30KPiArCj4gIHZvaWQg aW50ZWxfZW5naW5lc19zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9v bCBmb3JjZSk7Cj4gIAo+ICBib29sIGludGVsX2VuZ2luZV9pc19pZGxlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9oYW5nY2hlY2suYwo+IGluZGV4IDEyNTUwYjU1YzQyZi4uNjc0MzEzNTVjZDZlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hl Y2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hl Y2suYwo+IEBAIC0zNjMsOSArMzYzLDcgQEAgc3RhdGljIGludCBpZ3RfZ2xvYmFsX3Jlc2V0KHZv aWQgKmFyZykKPiAgCS8qIENoZWNrIHRoYXQgd2UgY2FuIGlzc3VlIGEgZ2xvYmFsIEdQVSByZXNl dCAqLwo+ICAKPiAgCWlndF9nbG9iYWxfcmVzZXRfbG9jayhpOTE1KTsKPiAtCXNldF9iaXQoSTkx NV9SRVNFVF9IQU5ET0ZGLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgCj4gLQltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJlc2V0X2NvdW50ID0gaTkxNV9yZXNl dF9jb3VudCgmaTkxNS0+Z3B1X2Vycm9yKTsKPiAgCj4gIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9F TkdJTkVTLCBOVUxMKTsKPiBAQCAtMzc0LDkgKzM3Miw3IEBAIHN0YXRpYyBpbnQgaWd0X2dsb2Jh bF9yZXNldCh2b2lkICphcmcpCj4gIAkJcHJfZXJyKCJObyBHUFUgcmVzZXQgcmVjb3JkZWQhXG4i KTsKPiAgCQllcnIgPSAtRUlOVkFMOwo+ICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgCj4gLQlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfUkVTRVRfSEFO RE9GRiwgJmk5MTUtPmdwdV9lcnJvci5mbGFncykpOwo+ICAJaWd0X2dsb2JhbF9yZXNldF91bmxv Y2soaTkxNSk7Cj4gIAo+ICAJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9l cnJvcikpCj4gQEAgLTM5OSw5ICszOTUsNyBAQCBzdGF0aWMgaW50IGlndF93ZWRnZWRfcmVzZXQo dm9pZCAqYXJnKQo+ICAJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKPiAgCUdFTV9CVUdfT04o IWk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpOwo+ICAKPiAtCXNldF9i aXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgCWk5MTVf cmVzZXQoaTkxNSwgQUxMX0VOR0lORVMsIE5VTEwpOwo+IC0JR0VNX0JVR19PTih0ZXN0X2JpdChJ OTE1X1JFU0VUX0hBTkRPRkYsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpKTsKPiAgCj4gIAlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gQEAgLTUxMSw3ICs1MDUsNyBAQCBzdGF0aWMgaW50IF9faWd0 X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCBhY3RpdmUp Cj4gIAkJCQlicmVhazsKPiAgCQkJfQo+ICAKPiAtCQkJaWYgKCF3YWl0X2Zvcl9pZGxlKGVuZ2lu ZSkpIHsKPiArCQkJaWYgKCFpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpKSB7Cj4gIAkJCQlzdHJ1Y3Qg ZHJtX3ByaW50ZXIgcCA9Cj4gIAkJCQkJZHJtX2luZm9fcHJpbnRlcihpOTE1LT5kcm0uZGV2KTsK PiAgCj4gQEAgLTkwMywyMCArODk3LDEzIEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X2VuZ2luZXMo dm9pZCAqYXJnKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1MzIgZmFrZV9oYW5n Y2hlY2soc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtYXNrKQo+ICtzdGF0aWMgdTMyIGZh a2VfaGFuZ2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWFzaykKPiAg ewo+IC0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZycS0+aTkxNS0+Z3B1X2Vycm9y Owo+IC0JdTMyIHJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3VudChlcnJvcik7Cj4gLQo+IC0J ZXJyb3ItPnN0YWxsZWRfbWFzayA9IG1hc2s7Cj4gLQo+IC0JLyogc2V0X2JpdCgpIG11c3QgYmUg YWZ0ZXIgd2UgaGF2ZSBzZXR1cCB0aGUgYmFja2NoYW5uZWwgKG1hc2spICovCj4gLQlzbXBfbWJf X2JlZm9yZV9hdG9taWMoKTsKPiAtCXNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZXJyb3It PmZsYWdzKTsKPiArCXUzMiBjb3VudCA9IGk5MTVfcmVzZXRfY291bnQoJmk5MTUtPmdwdV9lcnJv cik7Cj4gIAo+IC0Jd2FrZV91cF9hbGwoJmVycm9yLT53YWl0X3F1ZXVlKTsKPiArCWk5MTVfcmVz ZXQoaTkxNSwgbWFzaywgTlVMTCk7Cj4gIAo+IC0JcmV0dXJuIHJlc2V0X2NvdW50Owo+ICsJcmV0 dXJuIGNvdW50Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFy ZykKPiBAQCAtOTYyLDcgKzk0OSw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3dhaXQodm9pZCAq YXJnKQo+ICAJCWdvdG8gb3V0X3JxOwo+ICAJfQo+ICAKPiAtCXJlc2V0X2NvdW50ID0gZmFrZV9o YW5nY2hlY2socnEsIEFMTF9FTkdJTkVTKTsKPiArCXJlc2V0X2NvdW50ID0gZmFrZV9oYW5nY2hl Y2soaTkxNSwgQUxMX0VOR0lORVMpOwo+ICAKPiAgCXRpbWVvdXQgPSBpOTE1X3JlcXVlc3Rfd2Fp dChycSwgSTkxNV9XQUlUX0xPQ0tFRCwgMTApOwo+ICAJaWYgKHRpbWVvdXQgPCAwKSB7Cj4gQEAg LTk3Miw3ICs5NTksNiBAQCBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFyZykKPiAg CQlnb3RvIG91dF9ycTsKPiAgCX0KPiAgCj4gLQlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfUkVT RVRfSEFORE9GRiwgJmk5MTUtPmdwdV9lcnJvci5mbGFncykpOwo+ICAJaWYgKGk5MTVfcmVzZXRf Y291bnQoJmk5MTUtPmdwdV9lcnJvcikgPT0gcmVzZXRfY291bnQpIHsKPiAgCQlwcl9lcnIoIk5v IEdQVSByZXNldCByZWNvcmRlZCFcbiIpOwo+ICAJCWVyciA9IC1FSU5WQUw7Cj4gQEAgLTExNjIs NyArMTE0OCw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAJfQo+ICAKPiAgb3V0X3Jlc2V0Ogo+IC0JZmFrZV9oYW5n Y2hlY2socnEsIGludGVsX2VuZ2luZV9mbGFnKHJxLT5lbmdpbmUpKTsKPiArCWZha2VfaGFuZ2No ZWNrKHJxLT5pOTE1LCBpbnRlbF9lbmdpbmVfZmxhZyhycS0+ZW5naW5lKSk7Cj4gIAo+ICAJaWYg KHRzaykgewo+ICAJCXN0cnVjdCBpZ3Rfd2VkZ2VfbWUgdzsKPiBAQCAtMTM0MSwxMiArMTMyNyw3 IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQgKmFyZykKPiAgCQkJCWdvdG8gZmlu aTsKPiAgCQkJfQo+ICAKPiAtCQkJcmVzZXRfY291bnQgPSBmYWtlX2hhbmdjaGVjayhwcmV2LCBF TkdJTkVfTUFTSyhpZCkpOwo+IC0KPiAtCQkJaTkxNV9yZXNldChpOTE1LCBFTkdJTkVfTUFTSyhp ZCksIE5VTEwpOwo+IC0KPiAtCQkJR0VNX0JVR19PTih0ZXN0X2JpdChJOTE1X1JFU0VUX0hBTkRP RkYsCj4gLQkJCQkJICAgICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpKTsKPiArCQkJcmVzZXRfY291 bnQgPSBmYWtlX2hhbmdjaGVjayhpOTE1LCBFTkdJTkVfTUFTSyhpZCkpOwo+ICAKPiAgCQkJaWYg KHByZXYtPmZlbmNlLmVycm9yICE9IC1FSU8pIHsKPiAgCQkJCXByX2VycigiR1BVIHJlc2V0IG5v dCByZWNvcmRlZCBvbiBoYW5naW5nIHJlcXVlc3QgW2ZlbmNlLmVycm9yPSVkXSFcbiIsCj4gQEAg LTE1NjUsNiArMTU0Niw3IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCXByX2VycigiJXMoJXMpOiBGYWlsZWQg dG8gc3RhcnQgcmVxdWVzdCAlbGx4LCBhdCAleFxuIiwKPiAgCQkgICAgICAgX19mdW5jX18sIGVu Z2luZS0+bmFtZSwKPiAgCQkgICAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3Nfc2Vxbm8oJmgsIHJx KSk7Cj4gKwkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKPiAgCQllcnIgPSAtRUlPOwo+ICAJ fQo+ICAKPiBAQCAtMTU4OCw3ICsxNTcwLDYgQEAgc3RhdGljIGludCBpZ3RfYXRvbWljX3Jlc2V0 X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIHN0YXRpYyB2b2lkIGZv cmNlX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlpOTE1X2dl bV9zZXRfd2VkZ2VkKGk5MTUpOwo+IC0Jc2V0X2JpdChJOTE1X1JFU0VUX0hBTkRPRkYsICZpOTE1 LT5ncHVfZXJyb3IuZmxhZ3MpOwo+ICAJaTkxNV9yZXNldChpOTE1LCAwLCBOVUxMKTsKPiAgfQo+ ICAKPiBAQCAtMTYxOCw2ICsxNTk5LDI2IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldCh2 b2lkICphcmcpCj4gIAlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9y KSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gKwlpZiAoaW50ZWxfaGFzX2dwdV9yZXNldChpOTE1 KSkgewo+ICsJCWNvbnN0IHR5cGVvZigqcGhhc2VzKSAqcDsKPiArCj4gKwkJZm9yIChwID0gcGhh c2VzOyBwLT5uYW1lOyBwKyspIHsKPiArCQkJR0VNX1RSQUNFKCJpbnRlbF9ncHVfcmVzZXQgdW5k ZXIgJXNcbiIsIHAtPm5hbWUpOwo+ICsKPiArCQkJcC0+Y3JpdGljYWxfc2VjdGlvbl9iZWdpbigp Owo+ICsJCQllcnIgPSBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgQUxMX0VOR0lORVMpOwo+ICsJCQlw LT5jcml0aWNhbF9zZWN0aW9uX2VuZCgpOwo+ICsKPiArCQkJaWYgKGVycikgewo+ICsJCQkJcHJf ZXJyKCJpbnRlbF9ncHVfcmVzZXQgZmFpbGVkIHVuZGVyICVzXG4iLAo+ICsJCQkJICAgICAgIHAt Pm5hbWUpOwo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWZvcmNlX3Jl c2V0KGk5MTUpOwo+ICsJfQo+ICsKPiAgCWlmIChpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGk5MTUp KSB7Cj4gIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF93b3JrYXJvdW5kcy5jCj4gaW5kZXggYThjYWM1NmJlODM1Li5iMTVjNGYyNmM1OTMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91 bmRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fy b3VuZHMuYwo+IEBAIC0yMTQsNyArMjE0LDYgQEAgc3RhdGljIGludCBjaGVja193aGl0ZWxpc3Qo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgCj4gIHN0YXRpYyBpbnQgZG9fZGV2aWNl X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0Jc2V0X2JpdChJ OTE1X1JFU0VUX0hBTkRPRkYsICZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvci5mbGFncyk7Cj4gIAlp OTE1X3Jlc2V0KGVuZ2luZS0+aTkxNSwgRU5HSU5FX01BU0soZW5naW5lLT5pZCksICJsaXZlX3dv cmthcm91bmRzIik7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0zOTQsNyArMzkzLDYgQEAgc3Rh dGljIGludAo+ICBsaXZlX2dwdV9yZXNldF9ndF9lbmdpbmVfd29ya2Fyb3VuZHModm9pZCAqYXJn KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAtCXN0cnVj dCBpOTE1X2dwdV9lcnJvciAqZXJyb3IgPSAmaTkxNS0+Z3B1X2Vycm9yOwo+ICAJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Cj4gIAlzdHJ1Y3Qgd2FfbGlzdHMgbGlzdHM7Cj4gIAlib29sIG9rOwo+ IEBAIC00MTMsNyArNDExLDYgQEAgbGl2ZV9ncHVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91bmRz KHZvaWQgKmFyZykKPiAgCWlmICghb2spCj4gIAkJZ290byBvdXQ7Cj4gIAo+IC0Jc2V0X2JpdChJ OTE1X1JFU0VUX0hBTkRPRkYsICZlcnJvci0+ZmxhZ3MpOwo+ICAJaTkxNV9yZXNldChpOTE1LCBB TExfRU5HSU5FUywgImxpdmVfd29ya2Fyb3VuZHMiKTsKPiAgCj4gIAlvayA9IHZlcmlmeV9ndF9l bmdpbmVfd2EoaTkxNSwgJmxpc3RzLCAiYWZ0ZXIgcmVzZXQiKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggNTQ3N2FkNGE3 ZTdkLi44YWI1YTI2ODhhMGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gQEAgLTU4LDggKzU4LDggQEAgc3RhdGljIHZvaWQg bW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaTkxNV9nZW1f Y29udGV4dHNfbG9zdChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gIAo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5yZXRpcmVf d29yayk7Cj4gLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUtPmd0LmlkbGVfd29yayk7 Cj4gKwlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmd0LnJldGlyZV93b3JrKTsKPiArCWRyYWlu X2RlbGF5ZWRfd29yaygmaTkxNS0+Z3QuaWRsZV93b3JrKTsKPiAgCWk5MTVfZ2VtX2RyYWluX3dv cmtxdWV1ZShpOTE1KTsKPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtLSAKPiAyLjIwLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK