From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 26/27] drm/i915/selftests: Drop vestigal struct_mutex guards Date: Wed, 25 Sep 2019 13:55:08 +0100 Message-ID: <9ceaee09-6915-6140-3350-26265943ef88@linux.intel.com> References: <20190925100137.17956-1-chris@chris-wilson.co.uk> <20190925100137.17956-27-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 59FF86EBAA for ; Wed, 25 Sep 2019 12:55:17 +0000 (UTC) In-Reply-To: <20190925100137.17956-27-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDI1LzA5LzIwMTkgMTE6MDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBubyBsb25nZXIg bmVlZCBzdHJ1Y3RfbXV0ZXggdG8gc2VyaWFsaXNlIHJlcXVlc3QgZW1pc3Npb24sIHNvIHJlbW92 ZQo+IGl0IGZyb20gdGhlIGd0IHNlbGZ0ZXN0cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIC4uLi9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgICB8ICAxNSArLQo+ICAgLi4uL2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAgIHwgICAyIC0KPiAgIC4uLi9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYyAgICB8ICAgMiAtCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAgICAgfCAxNDggKysrLS0tLS0tLS0tLS0t LS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgICAgfCAg MTEgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL3NlbGZ0ZXN0X2d1Yy5jICAgICB8 ICAgNCAtCj4gICA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE1NSBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2Vf cGFnZXMuYwo+IGluZGV4IGUyMDRlNjUzYjQ1OS4uNzVlNzE3ZjdiYjVhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBAQCAtMTYz Myw3ICsxNjMzLDYgQEAgaW50IGk5MTVfZ2VtX2h1Z2VfcGFnZV9tb2NrX3NlbGZ0ZXN0cyh2b2lk KQo+ICAgCW1rd3JpdGVfZGV2aWNlX2luZm8oZGV2X3ByaXYpLT5wcGd0dF90eXBlID0gSU5URUxf UFBHVFRfRlVMTDsKPiAgIAlta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KS0+cHBndHRfc2l6 ZSA9IDQ4Owo+ICAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gICAJcHBndHQgPSBpOTE1X3BwZ3R0X2NyZWF0ZShkZXZfcHJpdik7Cj4gICAJaWYgKElTX0VS UihwcGd0dCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihwcGd0dCk7Cj4gQEAgLTE2NTksOSArMTY1 OCw3IEBAIGludCBpOTE1X2dlbV9odWdlX3BhZ2VfbW9ja19zZWxmdGVzdHModm9pZCkKPiAgIAlp OTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsKPiAgIAo+ICAgb3V0X3VubG9jazoKPiAtCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWRybV9kZXZfcHV0KCZkZXZf cHJpdi0+ZHJtKTsKPiAtCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+IEBAIC0xNjc3LDcg KzE2NzQsNiBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCX07Cj4gICAJc3RydWN0IGRybV9maWxlICpmaWxl Owo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gLQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gICAJaWYgKCFIQVNfUFBHVFQoaTkxNSkpIHsK PiBAQCAtMTY5MiwxMyArMTY4OCwxMCBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2Vs ZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCWlmIChJU19FUlIoZmls ZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgm aTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWN0eCA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxl KTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHgpOwo+IC0J CWdvdG8gb3V0X3VubG9jazsKPiArCQlnb3RvIG91dF9maWxlOwo+ICAgCX0KPiAgIAo+ICAgCWlm IChyY3VfYWNjZXNzX3BvaW50ZXIoY3R4LT52bSkpCj4gQEAgLTE3MDYsMTEgKzE2OTksNyBAQCBp bnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICAgCj4gICAJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgY3R4KTsKPiAg IAo+IC1vdXRfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVf cG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gK291dF9maWxlOgo+ICAgCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwo+IC0KPiAg IAlyZXR1cm4gZXJyOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4gaW5kZXggMWNkMjVjZmQwMjQ2Li5jZmE1MmM1MjU2 OTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1 X2dlbV9tbWFuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5 MTVfZ2VtX21tYW4uYwo+IEBAIC02NjksOSArNjY5LDcgQEAgc3RhdGljIGludCBpZ3RfbW1hcF9v ZmZzZXRfZXhoYXVzdGlvbih2b2lkICphcmcpCj4gICAJCQlnb3RvIG91dDsKPiAgIAkJfQo+ICAg Cj4gLQkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCWVyciA9IG1h a2Vfb2JqX2J1c3kob2JqKTsKPiAtCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCQlpZiAoZXJyKSB7Cj4gICAJCQlwcl9lcnIoIltsb29wICVkXSBGYWlsZWQgdG8g YnVzeSB0aGUgb2JqZWN0XG4iLCBsb29wKTsKPiAgIAkJCWdvdG8gZXJyX29iajsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYwo+IGlu ZGV4IDk0YTE1ZTNmNmRiOC4uMzQ5MzI4NzFiM2E1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmMKPiBAQCAtMjUsOSArMjUs NyBAQCBzdGF0aWMgaW50IG1vY2tfcGh5c19vYmplY3Qodm9pZCAqYXJnKQo+ICAgCQlnb3RvIG91 dDsKPiAgIAl9Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCWVyciA9IGk5MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhvYmosIFBBR0VfU0laRSk7Cj4g LQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWlmIChlcnIpIHsK PiAgIAkJcHJfZXJyKCJpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMgZmFpbGVkLCBlcnI9JWRc biIsIGVycik7Cj4gICAJCWdvdG8gb3V0X29iajsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9scmMuYwo+IGluZGV4IGUzM2MyZjY2YzY4My4uODlhZmZjOTU4ZDAxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiBAQCAtMjYsMTcgKzI2LDEzIEBAIHN0 YXRpYyBpbnQgbGl2ZV9zYW5pdHljaGVjayh2b2lkICphcmcpCj4gICAJc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eDsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gICAJc3RydWN0 IGlndF9zcGlubmVyIHNwaW47Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQg ZXJyID0gLUVOT01FTTsKPiAgIAo+ICAgCWlmICghSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhp OTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50 aW1lX3BtKTsKPiAtCj4gICAJaWYgKGlndF9zcGlubmVyX2luaXQoJnNwaW4sICZpOTE1LT5ndCkp Cj4gLQkJZ290byBlcnJfdW5sb2NrOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICAgCj4gICAJY3R4 ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7Cj4gICAJaWYgKCFjdHgpCj4gQEAgLTczLDkgKzY5LDYg QEAgc3RhdGljIGludCBsaXZlX3Nhbml0eWNoZWNrKHZvaWQgKmFyZykKPiAgIAlrZXJuZWxfY29u dGV4dF9jbG9zZShjdHgpOwo+ICAgZXJyX3NwaW46Cj4gICAJaWd0X3NwaW5uZXJfZmluaSgmc3Bp bik7Cj4gLWVycl91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGlt ZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBAQCAtMjI0LDcgKzIxNyw2IEBAIHN0YXRp YyBpbnQgbGl2ZV90aW1lc2xpY2VfcHJlZW1wdCh2b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iajsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwo+ICAgCXZvaWQgKnZhZGRyOwo+ICAgCWludCBlcnIgPSAwOwo+IEBAIC0yMzks MTQgKzIzMSw5IEBAIHN0YXRpYyBpbnQgbGl2ZV90aW1lc2xpY2VfcHJlZW1wdCh2b2lkICphcmcp Cj4gICAJICogcmVhZHkgdGFzay4KPiAgIAkgKi8KPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5 MTUtPnJ1bnRpbWVfcG0pOwo+IC0KPiAgIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2lu dGVybmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4gLQlpZiAoSVNfRVJSKG9iaikpIHsKPiAtCQllcnIg PSBQVFJfRVJSKG9iaik7Cj4gLQkJZ290byBlcnJfdW5sb2NrOwo+IC0JfQo+ICsJaWYgKElTX0VS UihvYmopKQo+ICsJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gICAKPiAgIAl2bWEgPSBpOTE1X3Zt YV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LnZtLCBOVUxMKTsKPiAgIAlpZiAoSVNfRVJSKHZt YSkpIHsKPiBAQCAtMjkxLDEwICsyNzgsNiBAQCBzdGF0aWMgaW50IGxpdmVfdGltZXNsaWNlX3By ZWVtcHQodm9pZCAqYXJnKQo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKPiAg IGVycl9vYmo6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IC1lcnJfdW5sb2NrOgo+ IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0J bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJcmV0dXJuIGVy cjsKPiAgIH0KPiAgIAo+IEBAIC0zMDYsNyArMjg5LDYgQEAgc3RhdGljIGludCBsaXZlX2J1c3l3 YWl0X3ByZWVtcHQodm9pZCAqYXJnKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQgZXJyID0gLUVOT01FTTsK PiAgIAl1MzIgKm1hcDsKPiAgIAo+IEBAIC0zMTUsMTIgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgbGl2 ZV9idXN5d2FpdF9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAkgKiBwcmVlbXB0IHRoZSBidXN5d2Fp dHMgdXNlZCB0byBzeW5jaHJvbmlzZSBiZXR3ZWVuIHJpbmdzLgo+ICAgCSAqLwo+ICAgCj4gLQlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWN0eF9oaSA9IGtlcm5l bF9jb250ZXh0KGk5MTUpOwo+ICAgCWlmICghY3R4X2hpKQo+IC0JCWdvdG8gZXJyX3VubG9jazsK PiArCQlyZXR1cm4gLUVOT01FTTsKPiAgIAljdHhfaGktPnNjaGVkLnByaW9yaXR5ID0KPiAgIAkJ STkxNV9VU0VSX1BSSU9SSVRZKEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWSk7Cj4gICAK PiBAQCAtNDc0LDkgKzQ1Myw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9idXN5d2FpdF9wcmVlbXB0KHZv aWQgKmFyZykKPiAgIAlrZXJuZWxfY29udGV4dF9jbG9zZShjdHhfbG8pOwo+ICAgZXJyX2N0eF9o aToKPiAgIAlrZXJuZWxfY29udGV4dF9jbG9zZShjdHhfaGkpOwo+IC1lcnJfdW5sb2NrOgo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAg fQo+ICAgCj4gQEAgLTUwNSw3ICs0ODEsNiBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdCh2b2lk ICphcmcpCj4gICAJc3RydWN0IGlndF9zcGlubmVyIHNwaW5faGksIHNwaW5fbG87Cj4gICAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk Owo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJaW50IGVyciA9IC1FTk9NRU07Cj4g ICAKPiAgIAlpZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KSkKPiBAQCAtNTE0 LDExICs0ODksOCBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJaWYg KCEoaTkxNS0+Y2Fwcy5zY2hlZHVsZXIgJiBJOTE1X1NDSEVEVUxFUl9DQVBfUFJFRU1QVElPTikp Cj4gICAJCXByX2VycigiTG9naWNhbCBwcmVlbXB0aW9uIHN1cHBvcnRlZCwgYnV0IG5vdCBleHBv c2VkXG4iKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOwo+IC0K PiAgIAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3Bpbl9oaSwgJmk5MTUtPmd0KSkKPiAtCQlnb3Rv IGVycl91bmxvY2s7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAgIAlpZiAoaWd0X3NwaW5u ZXJfaW5pdCgmc3Bpbl9sbywgJmk5MTUtPmd0KSkKPiAgIAkJZ290byBlcnJfc3Bpbl9oaTsKPiBA QCAtNTk4LDkgKzU3MCw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0KHZvaWQgKmFyZykKPiAg IAlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluX2xvKTsKPiAgIGVycl9zcGluX2hpOgo+ICAgCWlndF9z cGlubmVyX2ZpbmkoJnNwaW5faGkpOwo+IC1lcnJfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9w bV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTYx MiwxNyArNTgxLDEzIEBAIHN0YXRpYyBpbnQgbGl2ZV9sYXRlX3ByZWVtcHQodm9pZCAqYXJnKQo+ ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgaTkxNV9zY2hl ZF9hdHRyIGF0dHIgPSB7fTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwo+ICAgCWludCBlcnIgPSAtRU5PTUVNOwo+ICAgCj4gICAJaWYg KCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCj4gICAJCXJldHVybiAwOwo+ICAg Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBp bnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWlmIChpZ3Rf c3Bpbm5lcl9pbml0KCZzcGluX2hpLCAmaTkxNS0+Z3QpKQo+IC0JCWdvdG8gZXJyX3VubG9jazsK PiArCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+ICAgCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZzcGlu X2xvLCAmaTkxNS0+Z3QpKQo+ICAgCQlnb3RvIGVycl9zcGluX2hpOwo+IEBAIC03MDQsOSArNjY5 LDYgQEAgc3RhdGljIGludCBsaXZlX2xhdGVfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJaWd0X3Nw aW5uZXJfZmluaSgmc3Bpbl9sbyk7Cj4gICBlcnJfc3Bpbl9oaToKPiAgIAlpZ3Rfc3Bpbm5lcl9m aW5pKCZzcGluX2hpKTsKPiAtZXJyX3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZp OTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gICAJcmV0dXJuIGVycjsKPiAgIAo+ICAgZXJyX3dlZGdlZDoKPiBAQCAt NzUxLDcgKzcxMyw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3ByZWVtcHQodm9pZCAqYXJnKQo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgcHJlZW1wdF9jbGll bnQgYSwgYjsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwo+ICAgCWludCBlcnIgPSAtRU5PTUVNOwo+ICAgCj4gICAJLyoKPiBAQCAtNzYy LDExICs3MjMsOCBAQCBzdGF0aWMgaW50IGxpdmVfbm9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAlp ZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4g ICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9 IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJaWYgKHBy ZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmEpKQo+IC0JCWdvdG8gZXJyX3VubG9jazsKPiArCQly ZXR1cm4gLUVOT01FTTsKPiAgIAlpZiAocHJlZW1wdF9jbGllbnRfaW5pdChpOTE1LCAmYikpCj4g ICAJCWdvdG8gZXJyX2NsaWVudF9hOwo+ICAgCWIuY3R4LT5zY2hlZC5wcmlvcml0eSA9IEk5MTVf VVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX01BWCk7Cj4gQEAgLTg0MCw5ICs3OTgsNiBAQCBz dGF0aWMgaW50IGxpdmVfbm9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAlwcmVlbXB0X2NsaWVudF9m aW5pKCZiKTsKPiAgIGVycl9jbGllbnRfYToKPiAgIAlwcmVlbXB0X2NsaWVudF9maW5pKCZhKTsK PiAtZXJyX3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZpOTE1LT5ydW50aW1lX3Bt LCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g ICAJcmV0dXJuIGVycjsKPiAgIAo+ICAgZXJyX3dlZGdlZDoKPiBAQCAtODYyLDcgKzgxNyw2IEBA IHN0YXRpYyBpbnQgbGl2ZV9zdXBwcmVzc19zZWxmX3ByZWVtcHQodm9pZCAqYXJnKQo+ICAgCX07 Cj4gICAJc3RydWN0IHByZWVtcHRfY2xpZW50IGEsIGI7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQgZXJyID0gLUVOT01F TTsKPiAgIAo+ICAgCS8qCj4gQEAgLTg4MSwxMSArODM1LDggQEAgc3RhdGljIGludCBsaXZlX3N1 cHByZXNzX3NlbGZfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJaWYgKGludGVsX3ZncHVfYWN0aXZl KGk5MTUpKQo+ICAgCQlyZXR1cm4gMDsgLyogR1ZUIGZvcmNlcyBzaW5nbGUgcG9ydCAmIHJlcXVl c3Qgc3VibWlzc2lvbiAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9w bSk7Cj4gLQo+ICAgCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZhKSkKPiAtCQlnb3Rv IGVycl91bmxvY2s7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gICAJaWYgKHByZWVtcHRfY2xpZW50 X2luaXQoaTkxNSwgJmIpKQo+ICAgCQlnb3RvIGVycl9jbGllbnRfYTsKPiAgIAo+IEBAIC05NjYs OSArOTE3LDYgQEAgc3RhdGljIGludCBsaXZlX3N1cHByZXNzX3NlbGZfcHJlZW1wdCh2b2lkICph cmcpCj4gICAJcHJlZW1wdF9jbGllbnRfZmluaSgmYik7Cj4gICBlcnJfY2xpZW50X2E6Cj4gICAJ cHJlZW1wdF9jbGllbnRfZmluaSgmYSk7Cj4gLWVycl91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1l X3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICAKPiAgIGVycl93ZWRn ZWQ6Cj4gQEAgLTEwMzgsNyArOTg2LDYgQEAgc3RhdGljIGludCBsaXZlX3N1cHByZXNzX3dhaXRf cHJlZW1wdCh2b2lkICphcmcpCj4gICAJc3RydWN0IHByZWVtcHRfY2xpZW50IGNsaWVudFs0XTsK PiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQgZXJyID0gLUVO T01FTTsKPiAgIAlpbnQgaTsKPiAgIAo+IEBAIC0xMDUxLDExICs5OTgsOCBAQCBzdGF0aWMgaW50 IGxpdmVfc3VwcHJlc3Nfd2FpdF9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAlpZiAoIUhBU19MT0dJ Q0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCW11dGV4 X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJaWYgKHByZWVtcHRfY2xpZW50 X2luaXQoaTkxNSwgJmNsaWVudFswXSkpIC8qIEVMU1BbMF0gKi8KPiAtCQlnb3RvIGVycl91bmxv Y2s7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gICAJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkx NSwgJmNsaWVudFsxXSkpIC8qIEVMU1BbMV0gKi8KPiAgIAkJZ290byBlcnJfY2xpZW50XzA7Cj4g ICAJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVudFsyXSkpIC8qIGhlYWQgb2Yg cXVldWUgKi8KPiBAQCAtMTE0MSw5ICsxMDg1LDYgQEAgc3RhdGljIGludCBsaXZlX3N1cHByZXNz X3dhaXRfcHJlZW1wdCh2b2lkICphcmcpCj4gICAJcHJlZW1wdF9jbGllbnRfZmluaSgmY2xpZW50 WzFdKTsKPiAgIGVycl9jbGllbnRfMDoKPiAgIAlwcmVlbXB0X2NsaWVudF9maW5pKCZjbGllbnRb MF0pOwo+IC1lcnJfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRp bWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgCj4gICBlcnJfd2VkZ2VkOgo+IEBAIC0xMTYwLDcgKzEx MDEsNiBAQCBzdGF0aWMgaW50IGxpdmVfY2hhaW5fcHJlZW1wdCh2b2lkICphcmcpCj4gICAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAgCXN0cnVjdCBwcmVlbXB0X2NsaWVudCBo aSwgbG87Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgIAlpbnQgZXJyID0gLUVOT01FTTsKPiAgIAo+ICAgCS8qCj4gQEAgLTExNzIs MTEgKzExMTIsOCBAQCBzdGF0aWMgaW50IGxpdmVfY2hhaW5fcHJlZW1wdCh2b2lkICphcmcpCj4g ICAJaWYgKCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCj4gICAJCXJldHVybiAw Owo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWlm IChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZoaSkpCj4gLQkJZ290byBlcnJfdW5sb2NrOwo+ ICsJCXJldHVybiAtRU5PTUVNOwo+ICAgCj4gICAJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkx NSwgJmxvKSkKPiAgIAkJZ290byBlcnJfY2xpZW50X2hpOwo+IEBAIC0xMjg3LDkgKzEyMjQsNiBA QCBzdGF0aWMgaW50IGxpdmVfY2hhaW5fcHJlZW1wdCh2b2lkICphcmcpCj4gICAJcHJlZW1wdF9j bGllbnRfZmluaSgmbG8pOwo+ICAgZXJyX2NsaWVudF9oaToKPiAgIAlwcmVlbXB0X2NsaWVudF9m aW5pKCZoaSk7Cj4gLWVycl91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+ cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICAKPiAgIGVycl93ZWRnZWQ6Cj4gQEAgLTEzMDcs NyArMTI0MSw2IEBAIHN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X2hhbmcodm9pZCAqYXJnKQo+ICAg CXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGluX2hpLCBzcGluX2xvOwo+ICAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwo+ICAgCWludCBlcnIgPSAtRU5PTUVNOwo+ICAgCj4gICAJaWYg KCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCj4gQEAgLTEzMTYsMTEgKzEyNDks OCBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdF9oYW5nKHZvaWQgKmFyZykKPiAgIAlpZiAoIWlu dGVsX2hhc19yZXNldF9lbmdpbmUoaTkxNSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gLQo+ICAgCWlmIChpZ3Rfc3Bpbm5lcl9p bml0KCZzcGluX2hpLCAmaTkxNS0+Z3QpKQo+IC0JCWdvdG8gZXJyX3VubG9jazsKPiArCQlyZXR1 cm4gLUVOT01FTTsKPiAgIAo+ICAgCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZzcGluX2xvLCAmaTkx NS0+Z3QpKQo+ICAgCQlnb3RvIGVycl9zcGluX2hpOwo+IEBAIC0xNDEyLDkgKzEzNDIsNiBAQCBz dGF0aWMgaW50IGxpdmVfcHJlZW1wdF9oYW5nKHZvaWQgKmFyZykKPiAgIAlpZ3Rfc3Bpbm5lcl9m aW5pKCZzcGluX2xvKTsKPiAgIGVycl9zcGluX2hpOgo+ICAgCWlndF9zcGlubmVyX2ZpbmkoJnNw aW5faGkpOwo+IC1lcnJfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1 bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTE1MDQsMTEgKzE0MzEsOSBA QCBzdGF0aWMgaW50IHNtb2tlX2NyZXNjZW5kb190aHJlYWQodm9pZCAqYXJnKQo+ICAgCQlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gc21va2VfY29udGV4dChzbW9rZSk7Cj4gICAJCWlu dCBlcnI7Cj4gICAKPiAtCQltdXRleF9sb2NrKCZzbW9rZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICAJCWVyciA9IHNtb2tlX3N1Ym1pdChzbW9rZSwKPiAgIAkJCQkgICBjdHgsIGNvdW50 ICUgSTkxNV9QUklPUklUWV9NQVgsCj4gICAJCQkJICAgc21va2UtPmJhdGNoKTsKPiAtCQltdXRl eF91bmxvY2soJnNtb2tlLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJaWYgKGVycikK PiAgIAkJCXJldHVybiBlcnI7Cj4gICAKPiBAQCAtMTUyOSw4ICsxNDU0LDYgQEAgc3RhdGljIGlu dCBzbW9rZV9jcmVzY2VuZG8oc3RydWN0IHByZWVtcHRfc21va2UgKnNtb2tlLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCj4gICAJdW5zaWduZWQgbG9uZyBjb3VudDsKPiAgIAlpbnQgZXJyID0gMDsKPiAg IAo+IC0JbXV0ZXhfdW5sb2NrKCZzbW9rZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIHNtb2tlLT5pOTE1LCBpZCkgewo+ICAgCQlhcmdb aWRdID0gKnNtb2tlOwo+ICAgCQlhcmdbaWRdLmVuZ2luZSA9IGVuZ2luZTsKPiBAQCAtMTU2Myw4 ICsxNDg2LDYgQEAgc3RhdGljIGludCBzbW9rZV9jcmVzY2VuZG8oc3RydWN0IHByZWVtcHRfc21v a2UgKnNtb2tlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAJCXB1dF90YXNrX3N0cnVjdCh0c2tb aWRdKTsKPiAgIAl9Cj4gICAKPiAtCW11dGV4X2xvY2soJnNtb2tlLT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCj4gICAJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjcmVzY2VuZG86JXggcmVx dWVzdHMgYWNyb3NzICVkIGVuZ2luZXMgYW5kICVkIGNvbnRleHRzXG4iLAo+ICAgCQljb3VudCwg ZmxhZ3MsCj4gICAJCVJVTlRJTUVfSU5GTyhzbW9rZS0+aTkxNSktPm51bV9lbmdpbmVzLCBzbW9r ZS0+bmNvbnRleHQpOwo+IEBAIC0xNjA3LDcgKzE1MjgsNiBAQCBzdGF0aWMgaW50IGxpdmVfcHJl ZW1wdF9zbW9rZSh2b2lkICphcmcpCj4gICAJCS5uY29udGV4dCA9IDEwMjQsCj4gICAJfTsKPiAg IAljb25zdCB1bnNpZ25lZCBpbnQgcGhhc2VbXSA9IHsgMCwgQkFUQ0ggfTsKPiAtCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+ICAgCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gICAJaW50IGVy ciA9IC1FTk9NRU07Cj4gICAJdTMyICpjczsKPiBAQCAtMTYyMiwxMyArMTU0MiwxMCBAQCBzdGF0 aWMgaW50IGxpdmVfcHJlZW1wdF9zbW9rZSh2b2lkICphcmcpCj4gICAJaWYgKCFzbW9rZS5jb250 ZXh0cykKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAtCW11dGV4X2xvY2soJnNtb2tlLmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KCZzbW9rZS5pOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gICAJc21va2UuYmF0Y2ggPSBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX2ludGVybmFsKHNtb2tlLmk5MTUsIFBBR0VfU0laRSk7Cj4gICAJaWYg KElTX0VSUihzbW9rZS5iYXRjaCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihzbW9rZS5iYXRjaCk7 Cj4gLQkJZ290byBlcnJfdW5sb2NrOwo+ICsJCWdvdG8gZXJyX2ZyZWU7Cj4gICAJfQo+ICAgCj4g ICAJY3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChzbW9rZS5iYXRjaCwgSTkxNV9NQVBfV0Ip Owo+IEBAIC0xNjc1LDkgKzE1OTIsNyBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdF9zbW9rZSh2 b2lkICphcmcpCj4gICAKPiAgIGVycl9iYXRjaDoKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KHNt b2tlLmJhdGNoKTsKPiAtZXJyX3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZzbW9r ZS5pOTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmc21va2UuaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gK2Vycl9mcmVlOgo+ICAgCWtmcmVlKHNtb2tlLmNvbnRl eHRzKTsKPiAgIAo+ICAgCXJldHVybiBlcnI7Cj4gQEAgLTE4MTUsMTkgKzE3MzAsMTcgQEAgc3Rh dGljIGludCBsaXZlX3ZpcnR1YWxfZW5naW5lKHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgaW50ZWxf Z3QgKmd0ID0gJmk5MTUtPmd0Owo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCXVu c2lnbmVkIGludCBjbGFzcywgaW5zdDsKPiAtCWludCBlcnIgPSAtRU5PREVWOwo+ICsJaW50IGVy cjsKPiAgIAo+ICAgCWlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQo+ICAgCQlyZXR1cm4g MDsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAg CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gICAJCWVyciA9IG5vcF92aXJ0 dWFsX2VuZ2luZShpOTE1LCAmZW5naW5lLCAxLCAxLCAwKTsKPiAgIAkJaWYgKGVycikgewo+ICAg CQkJcHJfZXJyKCJGYWlsZWQgdG8gd3JhcCBlbmdpbmUgJXM6IGVycj0lZFxuIiwKPiAgIAkJCSAg ICAgICBlbmdpbmUtPm5hbWUsIGVycik7Cj4gLQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJcmV0 dXJuIGVycjsKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IEBAIC0xODQ4LDE3ICsxNzYxLDE1IEBAIHN0 YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX2VuZ2luZSh2b2lkICphcmcpCj4gICAJCQllcnIgPSBub3Bf dmlydHVhbF9lbmdpbmUoaTkxNSwgc2libGluZ3MsIG5zaWJsaW5nLAo+ICAgCQkJCQkJIG4sIDAp Owo+ICAgCQkJaWYgKGVycikKPiAtCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCXJldHVybiBl cnI7Cj4gICAJCX0KPiAgIAo+ICAgCQllcnIgPSBub3BfdmlydHVhbF9lbmdpbmUoaTkxNSwgc2li bGluZ3MsIG5zaWJsaW5nLCBuLCBDSEFJTik7Cj4gICAJCWlmIChlcnIpCj4gLQkJCWdvdG8gb3V0 X3VubG9jazsKPiArCQkJcmV0dXJuIGVycjsKPiAgIAl9Cj4gICAKPiAtb3V0X3VubG9jazoKPiAt CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlyZXR1cm4gZXJyOwo+ ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgbWFza192aXJ0dWFsX2VuZ2lu ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiBAQCAtMTkzNyw5ICsxODQ4LDYgQEAg c3RhdGljIGludCBtYXNrX3ZpcnR1YWxfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgCX0KPiAgIAo+ICAgCWVyciA9IGlndF9saXZlX3Rlc3RfZW5kKCZ0KTsKPiAtCWlm IChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQo+ICAgb3V0Ogo+ICAgCWlmIChpZ3RfZmx1c2hfdGVz dChpOTE1KSkKPiAgIAkJZXJyID0gLUVJTzsKPiBAQCAtMTk2MiwxMyArMTg3MCwxMSBAQCBzdGF0 aWMgaW50IGxpdmVfdmlydHVhbF9tYXNrKHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpzaWJsaW5nc1tNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07Cj4gICAJc3RydWN0IGlu dGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKPiAgIAl1bnNpZ25lZCBpbnQgY2xhc3MsIGluc3Q7Cj4g LQlpbnQgZXJyID0gMDsKPiArCWludCBlcnI7Cj4gICAKPiAgIAlpZiAoVVNFU19HVUNfU1VCTUlT U0lPTihpOTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPD0gTUFYX0VO R0lORV9DTEFTUzsgY2xhc3MrKykgewo+ICAgCQl1bnNpZ25lZCBpbnQgbnNpYmxpbmc7Cj4gICAK PiBAQCAtMTk4NCwxMiArMTg5MCwxMCBAQCBzdGF0aWMgaW50IGxpdmVfdmlydHVhbF9tYXNrKHZv aWQgKmFyZykKPiAgIAo+ICAgCQllcnIgPSBtYXNrX3ZpcnR1YWxfZW5naW5lKGk5MTUsIHNpYmxp bmdzLCBuc2libGluZyk7Cj4gICAJCWlmIChlcnIpCj4gLQkJCWdvdG8gb3V0X3VubG9jazsKPiAr CQkJcmV0dXJuIGVycjsKPiAgIAl9Cj4gICAKPiAtb3V0X3VubG9jazoKPiAtCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIDA7 Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgYm9uZF92aXJ0dWFsX2VuZ2luZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiBAQCAtMjE0MCwxMyArMjA0NCwxMSBAQCBzdGF0aWMgaW50 IGxpdmVfdmlydHVhbF9ib25kKHZvaWQgKmFyZykKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpzaWJsaW5nc1tNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07Cj4gICAJc3RydWN0IGludGVsX2d0 ICpndCA9ICZpOTE1LT5ndDsKPiAgIAl1bnNpZ25lZCBpbnQgY2xhc3MsIGluc3Q7Cj4gLQlpbnQg ZXJyID0gMDsKPiArCWludCBlcnI7Cj4gICAKPiAgIAlpZiAoVVNFU19HVUNfU1VCTUlTU0lPTihp OTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+IC0KPiAgIAlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPD0gTUFYX0VOR0lORV9D TEFTUzsgY2xhc3MrKykgewo+ICAgCQljb25zdCBzdHJ1Y3QgcGhhc2UgKnA7Cj4gICAJCWludCBu c2libGluZzsKPiBAQCAtMjE2OSwxNCArMjA3MSwxMiBAQCBzdGF0aWMgaW50IGxpdmVfdmlydHVh bF9ib25kKHZvaWQgKmFyZykKPiAgIAkJCWlmIChlcnIpIHsKPiAgIAkJCQlwcl9lcnIoIiVzKCVz KTogZmFpbGVkIGNsYXNzPSVkLCBuc2libGluZz0lZCwgZXJyPSVkXG4iLAo+ICAgCQkJCSAgICAg ICBfX2Z1bmNfXywgcC0+bmFtZSwgY2xhc3MsIG5zaWJsaW5nLCBlcnIpOwo+IC0JCQkJZ290byBv dXRfdW5sb2NrOwo+ICsJCQkJcmV0dXJuIGVycjsKPiAgIAkJCX0KPiAgIAkJfQo+ICAgCX0KPiAg IAo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCXJldHVybiBlcnI7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgaW50IGludGVs X2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3Vu ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPiBp bmRleCBlZDQ0MzMzZDllMjAuLmExMDk5MGIxYTcyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYwo+IEBAIC03MDQsOSArNzA0LDcgQEAg c3RhdGljIGludCBsaXZlX2RpcnR5X3doaXRlbGlzdCh2b2lkICphcmcpCj4gICAKPiAgIAl3YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOwo+ICAgCj4gLQlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWZpbGUgPSBtb2NrX2Zp bGUoaTkxNSk7Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlp ZiAoSVNfRVJSKGZpbGUpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIoZmlsZSk7Cj4gICAJCWdvdG8g b3V0X3JwbTsKPiBAQCAtNzI4LDkgKzcyNiw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9kaXJ0eV93aGl0 ZWxpc3Qodm9pZCAqYXJnKQo+ICAgCX0KPiAgIAo+ICAgb3V0X2ZpbGU6Cj4gLQltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZp bGUpOwo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICBvdXRfcnBt Ogo+ICAgCWludGVsX3J1bnRpbWVfcG1fcHV0KCZpOTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsK PiAgIAlyZXR1cm4gZXJyOwo+IEBAIC0xMjY0LDE0ICsxMjYwLDkgQEAgaW50IGludGVsX3dvcmth cm91bmRzX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAg CQlTVUJURVNUKGxpdmVfZ3B1X3Jlc2V0X3dvcmthcm91bmRzKSwKPiAgIAkJU1VCVEVTVChsaXZl X2VuZ2luZV9yZXNldF93b3JrYXJvdW5kcyksCj4gICAJfTsKPiAtCWludCBlcnI7Cj4gICAKPiAg IAlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKCZpOTE1LT5ndCkpCj4gICAJCXJldHVybiAwOwo+ICAg Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWVyciA9IGk5MTVf c3VidGVzdHModGVzdHMsIGk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIGk5MTVfc3VidGVzdHModGVz dHMsIGk5MTUpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9zZWxmdGVzdF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL3NlbGZ0ZXN0X2d1 Yy5jCj4gaW5kZXggYmJhMGVhZmUxY2RiLi5mOTI3Zjg1MWFhZGYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvc2VsZnRlc3RfZ3VjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWMuYwo+IEBAIC0xMTYsNyArMTE2LDYgQEAgc3Rh dGljIGludCBpZ3RfZ3VjX2NsaWVudHModm9pZCAqYXJncykKPiAgIAlpbnQgZXJyID0gMDsKPiAg IAo+ICAgCUdFTV9CVUdfT04oIUhBU19HVF9VQyhkZXZfcHJpdikpOwo+IC0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0pOwo+ICAgCj4gICAJZ3VjID0gJmRldl9wcml2 LT5ndC51Yy5ndWM7Cj4gQEAgLTE5MCw3ICsxODksNiBAQCBzdGF0aWMgaW50IGlndF9ndWNfY2xp ZW50cyh2b2lkICphcmdzKQo+ICAgCWd1Y19jbGllbnRzX2VuYWJsZShndWMpOwo+ICAgdW5sb2Nr Ogo+ICAgCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJl Zik7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAly ZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTIwOCw3ICsyMDYsNiBAQCBzdGF0aWMgaW50IGln dF9ndWNfZG9vcmJlbGxzKHZvaWQgKmFyZykKPiAgIAl1MTYgZGJfaWQ7Cj4gICAKPiAgIAlHRU1f QlVHX09OKCFIQVNfR1RfVUMoZGV2X3ByaXYpKTsKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRl dl9wcml2LT5ydW50aW1lX3BtKTsKPiAgIAo+ICAgCWd1YyA9ICZkZXZfcHJpdi0+Z3QudWMuZ3Vj Owo+IEBAIC0yOTksNyArMjk2LDYgQEAgc3RhdGljIGludCBpZ3RfZ3VjX2Rvb3JiZWxscyh2b2lk ICphcmcpCj4gICAJCX0KPiAgIHVubG9jazoKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2 X3ByaXYtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+IAoKVG9vIGJv cmluZyB0byByZWFkIGluIGRldGFpbC4gRXllYmFsbHMgb2theSBhbmQgaW4gYXNzZXJ0cywgY29t cGlsZXJzIAphbmQgc3RhdGljIGFuYWx5c2VycyB3ZSB0cnVzdC4gOikKClJldmlld2VkLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRr bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=