From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 02/46] drm/i915: Revoke mmaps and prevent access to fence registers across reset Date: Tue, 26 Feb 2019 11:53:47 -0800 Message-ID: <20190226195347.GF27074@intel.com> References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE10389FC0 for ; Tue, 26 Feb 2019 19:53:47 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190206130356.18771-3-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 Cc: intel-gfx@lists.freedesktop.org, Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMDYsIDIwMTkgYXQgMDE6MDM6MTJQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFByZXZpb3VzbHksIHdlIHdlcmUgYWJsZSB0byByZWx5IG9uIHRoZSByZWN1cnNpdmUg cHJvcGVydGllcyBvZgo+IHN0cnVjdF9tdXRleCB0byBhbGxvdyB1cyB0byBzZXJpYWxpc2UgcmV2 b2tpbmcgbW1hcHMgYW5kIHJlYWNxdWlyaW5nIHRoZQo+IEZFTkNFIHJlZ2lzdGVycyB3aXRoIHRo ZW0gYmVpbmcgY2xvYmJlcmVkIG92ZXIgYSBnbG9iYWwgZGV2aWNlIHJlc2V0Lgo+IEkgdGhlbiBw cm9jZWVkZWQgdG8gdGhyb3cgb3V0IHRoZSBiYWJ5IHdpdGggdGhlIGJhdGggd2F0ZXIgaW4gb3Jk ZXIgdG8KPiBwdXJzdWUgYSBzdHJ1Y3RfbXV0ZXgtbGVzcyByZXNldC4KPiAKPiBQZXJ1c2luZyBM V04gZm9yIGFsdGVybmF0aXZlIHN0cmF0ZWdpZXMsIHRoZSBkaWxlbW1hIG9uIGhvdyB0byBzZXJp YWxpc2UKPiBhY2Nlc3MgdG8gYSBnbG9iYWwgcmVzb3VyY2Ugb24gb25lIHNpZGUgd2FzIGFuc3dl cmVkIGJ5Cj4gaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzIwMjg0Ny8gLS0gU2xlZXBhYmxlIFJD VToKPiAKPiAgICAgMSAgaW50IHJlYWRzaWRlKHZvaWQpIHsKPiAgICAgMiAgICAgIGludCBpZHg7 Cj4gICAgIDMgICAgICByY3VfcmVhZF9sb2NrKCk7Cj4gICAgIDQJICAgaWYgKG5vbW9yZXNyY3Up IHsKPiAgICAgNSAgICAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiAgICAgNgkgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gICAgIDcgICAgICB9Cj4gICAgIDgJICAgaWR4ID0gc3JjdV9yZWFkX2xv Y2soJnNzKTsKPiAgICAgOQkgICByY3VfcmVhZF91bmxvY2soKTsKPiAgICAgMTAJICAgLyogU1JD VSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4gKi8KPiAgICAgMTEJICAgc3JjdV9yZWFkX3Vu bG9jaygmc3MsIGlkeCk7Cj4gICAgIDEyCSAgIHJldHVybiAwOwo+ICAgICAxMyB9Cj4gICAgIDE0 Cj4gICAgIDE1IHZvaWQgY2xlYW51cCh2b2lkKQo+ICAgICAxNiB7Cj4gICAgIDE3ICAgICBub21v cmVzcmN1ID0gMTsKPiAgICAgMTggICAgIHN5bmNocm9uaXplX3JjdSgpOwo+ICAgICAxOSAgICAg c3luY2hyb25pemVfc3JjdSgmc3MpOwo+ICAgICAyMCAgICAgY2xlYW51cF9zcmN1X3N0cnVjdCgm c3MpOwo+ICAgICAyMSB9Cj4gCj4gTm8gbW9yZSB3b3JyeWluZyBhYm91dCBzdG9wX21hY2hpbmUs IGp1c3QgYW4gdWJlci1jb21wbGV4IG11dGV4LAo+IG9wdGltaXNlZCBmb3IgcmVhZHMsIHdpdGgg dGhlIG92ZXJoZWFkIHB1c2hlZCB0byB0aGUgcmFyZSByZXNldCBwYXRoLgo+IAo+IEhvd2V2ZXIs IHdlIGRvIHJ1biB0aGUgcmlzayBvZiBhIGRlYWRsb2NrIGFzIHdlIGFsbG9jYXRlIHVuZGVybmVh dGggdGhlCj4gU1JDVSByZWFkIGxvY2ssIGFuZCB0aGUgYWxsb2NhdGlvbiBtYXkgcmVxdWlyZSBh IEdQVSByZXNldCwgY2F1c2luZyBhCj4gZGVwZW5kZW5jeSBjeWNsZSB2aWEgdGhlIGluLWZsaWdo dCByZXF1ZXN0cy4gV2UgcmVzb2x2ZSB0aGF0IGJ5IGRlY2xhcmluZwo+IHRoZSBkcml2ZXIgd2Vk Z2VkIGFuZCBjYW5jZWxsaW5nIGFsbCBpbi1mbGlnaHQgcmVuZGVyaW5nLgo+IAo+IHYyOiBVc2Ug ZXhwZWRpdGVkIHJjdSBiYXJyaWVycyB0byBtYXRjaCBvdXIgZWFybGllciB0aW1pbmcKPiBjaGFy YWN0ZXJpc3RpY3MuCj4gdjM6IFRyeSB0byBhbm5vdGF0ZSBsb2NraW5nIGNvbnRleHRzIGZvciBz cGFyc2UKPiB2NDogUmVkdWNlIHNlbGZ0ZXN0IGxvY2sgZHVyYXRpb24gdG8gYXZvaWQgYSByZXNl dCBkZWFkbG9jayB3aXRoIGZlbmNlcwo+IHY1OiBzL3NyY3UvcmVzZXRfYmFja29mZl9zcmN1Lwo+ IAo+IFRlc3RjYXNlOiBpZ3QvZ2VtX21tYXBfZ3R0L2hhbmcKPiBGaXhlczogZWI4ZDBmNWFmNGVj ICgiZHJtL2k5MTU6IFJlbW92ZSBHUFUgcmVzZXQgZGVwZW5kZW5jZSBvbiBzdHJ1Y3RfbXV0ZXgi KQoKSGkgQ2hyaXMsCgp0aGlzIHBhdGNoIGRpZG4ndCBhcHBsaWVkIGNsZWFubHkgb24gZGluZgpz byBJIG5vdGljZWQgdGhhdCBJIGNvdWxkIGFsc28gZ2V0CgoxMTVmZjgwYTk3Y2YgKCJkcm0vaTkx NTogRGVmZXIgcmVtb3ZpbmcgZmVuY2UgcmVnaXN0ZXIgdHJhY2tpbmcgdG8gcnBtIHdha2V1cCIp CgpzbyB0aGF0IGFwcGxpZXMsIGJ1dCB0aGVuIEkgbm90aWNlZCB0aGF0IHRoZXJlJ3MgYSBGaXhl cyBvZgp0aGlzIHBhdGNoIGhlcmU6CgpkZTNhODdjZjYzNTIgKCJkcm0vaTkxNTogUmVjdXJzaXZl IGk5MTVfcmVzZXRfdHJ5bG9jaygpIHZlcmJvdGVuIikKCkl0IHNlZW1zIHNhbmUgdG8gcGljayAz IG9mIHRoZW0sIGJ1dCBJJ2QgbGlrZSB0byBjb25maXJtIHdpdGggeW91IGZpcnN0LgoKVGhvdWdo dHM/CgpUaGFua3MgaW4gYWR2YW5jZSwKUm9kcmlnby4KCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1p a2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICAgICAgIHwgIDE4ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgNTYgKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jICAgICB8ICAzMSArLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAgICAgICAgICAgIHwgMTA5ICsrKysrKysrKysrLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmggICAgICAgICAgICAgfCAg IDQgKwo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyAgfCAg IDUgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwg ICAxICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgMTM5IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMGJkODkwYzA0 ZmU0Li5hNmZkMTU3YjE2MzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ IEBAIC0xMjgxLDE0ICsxMjgxLDExIEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWludGVsX3dha2VyZWZfdCB3YWtl cmVmOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+ICsJc2VxX3ByaW50ZihtLCAi UmVzZXQgZmxhZ3M6ICVseFxuIiwgZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncyk7Cj4gIAlpZiAo dGVzdF9iaXQoSTkxNV9XRURHRUQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKSkKPiAtCQlz ZXFfcHV0cyhtLCAiV2VkZ2VkXG4iKTsKPiArCQlzZXFfcHV0cyhtLCAiXHRXZWRnZWRcbiIpOwo+ ICAJaWYgKHRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwgJmRldl9wcml2LT5ncHVfZXJyb3Iu ZmxhZ3MpKQo+IC0JCXNlcV9wdXRzKG0sICJSZXNldCBpbiBwcm9ncmVzczogc3RydWN0X211dGV4 IGJhY2tvZmZcbiIpOwo+IC0JaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmRldl9wcml2LT5ncHVfZXJy b3Iud2FpdF9xdWV1ZSkpCj4gLQkJc2VxX3B1dHMobSwgIldhaXRlciBob2xkaW5nIHN0cnVjdCBt dXRleFxuIik7Cj4gLQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmZGV2X3ByaXYtPmdwdV9lcnJvci5y ZXNldF9xdWV1ZSkpCj4gLQkJc2VxX3B1dHMobSwgInN0cnVjdF9tdXRleCBibG9ja2VkIGZvciBy ZXNldFxuIik7Cj4gKwkJc2VxX3B1dHMobSwgIlx0RGV2aWNlIChnbG9iYWwpIHJlc2V0IGluIHBy b2dyZXNzXG4iKTsKPiAgCj4gIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2sp IHsKPiAgCQlzZXFfcHV0cyhtLCAiSGFuZ2NoZWNrIGRpc2FibGVkXG4iKTsKPiBAQCAtMzg4NSw5 ICszODgyLDYgQEAgaTkxNV93ZWRnZWRfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAkgKiB3 aGlsZSBpdCBpcyB3cml0aW5nIHRvICdpOTE1X3dlZGdlZCcKPiAgCSAqLwo+ICAKPiAtCWlmIChp OTE1X3Jlc2V0X2JhY2tvZmYoJmk5MTUtPmdwdV9lcnJvcikpCj4gLQkJcmV0dXJuIC1FQUdBSU47 Cj4gLQo+ICAJaTkxNV9oYW5kbGVfZXJyb3IoaTkxNSwgdmFsLCBJOTE1X0VSUk9SX0NBUFRVUkUs Cj4gIAkJCSAgIk1hbnVhbGx5IHNldCB3ZWRnZWQgZW5naW5lIG1hc2sgPSAlbGx4IiwgdmFsKTsK PiAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGEyMjkzMTUyY2I2 YS4uMzcyMzBhZTdmYmU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI5ODks NyArMjk4OSwxMiBAQCBpOTE1X2dlbV9vYmpfZmluaXNoX3NobWVtX2FjY2VzcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9i aik7Cj4gIH0KPiAgCj4gLWludCBfX211c3RfY2hlY2sgaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3N0YXRpYyBpbmxpbmUgaW50IF9fbXVz dF9jaGVjawo+ICtpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICt7Cj4gKwlyZXR1cm4gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gK30KPiArCj4gIGludCBpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAgCQkJIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ CSBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOwo+IEBAIC0zMDA2LDIxICszMDEx LDExIEBAIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X2dsb2JhbF9zZXFubyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pOwo+ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAg aTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwo+ICAKPiAtc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVzZXRfYmFja29mZihzdHJ1Y3Qg aTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+IC17Cj4gLQlyZXR1cm4gdW5saWtlbHkodGVzdF9iaXQo STkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSk7Cj4gLX0KPiAtCj4gIHN0YXRpYyBp bmxpbmUgYm9vbCBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAq ZXJyb3IpCj4gIHsKPiAgCXJldHVybiB1bmxpa2VseSh0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmVy cm9yLT5mbGFncykpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9yZXNldF9i YWNrb2ZmX29yX3dlZGdlZChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+IC17Cj4gLQly ZXR1cm4gaTkxNV9yZXNldF9iYWNrb2ZmKGVycm9yKSB8IGk5MTVfdGVybWluYWxseV93ZWRnZWQo ZXJyb3IpOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW5saW5lIHUzMiBpOTE1X3Jlc2V0X2NvdW50KHN0 cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gIHsKPiAgCXJldHVybiBSRUFEX09OQ0UoZXJy b3ItPnJlc2V0X2NvdW50KTsKPiBAQCAtMzA5Myw3ICszMDg4LDYgQEAgc3RydWN0IGRybV9pOTE1 X2ZlbmNlX3JlZyAqCj4gIGk5MTVfcmVzZXJ2ZV9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfdW5yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkx NV9mZW5jZV9yZWcgKmZlbmNlKTsKPiAgCj4gLXZvaWQgaTkxNV9nZW1fcmV2b2tlX2ZlbmNlcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfZ2VtX3Jlc3Rv cmVfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICB2b2lk IGk5MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggMDVjZTkxNzZhYzRlLi4x ZWIzYTVmODY1NGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTAwLDQ3ICsx MDAsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9pbmZvX3JlbW92ZV9vYmooc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJc3Bpbl91bmxvY2soJmRldl9wcml2LT5tbS5vYmpl Y3Rfc3RhdF9sb2NrKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludAo+IC1pOTE1X2dlbV93YWl0X2Zv cl9lcnJvcihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+IC17Cj4gLQlpbnQgcmV0Owo+ IC0KPiAtCW1pZ2h0X3NsZWVwKCk7Cj4gLQo+IC0JLyoKPiAtCSAqIE9ubHkgd2FpdCAxMCBzZWNv bmRzIGZvciB0aGUgZ3B1IHJlc2V0IHRvIGNvbXBsZXRlIHRvIGF2b2lkIGhhbmdpbmcKPiAtCSAq IHVzZXJzcGFjZS4gSWYgaXQgdGFrZXMgdGhhdCBsb25nIHNvbWV0aGluZyByZWFsbHkgYmFkIGlz IGdvaW5nIG9uIGFuZAo+IC0JICogd2Ugc2hvdWxkIHNpbXBseSB0cnkgdG8gYmFpbCBvdXQgYW5k IGZhaWwgYXMgZ3JhY2VmdWxseSBhcyBwb3NzaWJsZS4KPiAtCSAqLwo+IC0JcmV0ID0gd2FpdF9l dmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoZXJyb3ItPnJlc2V0X3F1ZXVlLAo+IC0JCQkJCSAg ICAgICAhaTkxNV9yZXNldF9iYWNrb2ZmKGVycm9yKSwKPiAtCQkJCQkgICAgICAgSTkxNV9SRVNF VF9USU1FT1VUKTsKPiAtCWlmIChyZXQgPT0gMCkgewo+IC0JCURSTV9FUlJPUigiVGltZWQgb3V0 IHdhaXRpbmcgZm9yIHRoZSBncHUgcmVzZXQgdG8gY29tcGxldGVcbiIpOwo+IC0JCXJldHVybiAt RUlPOwo+IC0JfSBlbHNlIGlmIChyZXQgPCAwKSB7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0gZWxz ZSB7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9Cj4gLX0KPiAtCj4gLWludCBpOTE1X211dGV4X2xvY2tf aW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlpbnQgcmV0Owo+IC0K PiAtCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2Vycm9yKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsK PiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXQgPSBtdXRleF9sb2NrX2lu dGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJu IHJldDsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIHUzMiBfX2k5MTVfZ2Vt X3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+IEBAIC0xODY5LDYgKzE4MjgsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2Vt X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCXBnb2ZmX3QgcGFnZV9vZmZzZXQ7Cj4gKwlp bnQgc3JjdTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJLyogU2FuaXR5IGNoZWNrIHRoYXQgd2UgYWxs b3cgd3JpdGluZyBpbnRvIHRoaXMgb2JqZWN0ICovCj4gQEAgLTE5MDgsNyArMTg2OCw2IEBAIHZt X2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAkJZ290byBl cnJfdW5sb2NrOwo+ICAJfQo+ICAKPiAtCj4gIAkvKiBOb3cgcGluIGl0IGludG8gdGhlIEdUVCBh cyBuZWVkZWQgKi8KPiAgCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIDAsCj4gIAkJCQkgICAgICAgUElOX01BUFBBQkxFIHwKPiBAQCAtMTk0Niw5ICsxOTA1LDE1 IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAlp ZiAocmV0KQo+ICAJCWdvdG8gZXJyX3VucGluOwo+ICAKPiArCXNyY3UgPSBpOTE1X3Jlc2V0X3Ry eWxvY2soZGV2X3ByaXYpOwo+ICsJaWYgKHNyY3UgPCAwKSB7Cj4gKwkJcmV0ID0gc3JjdTsKPiAr CQlnb3RvIGVycl91bnBpbjsKPiArCX0KPiArCj4gIAlyZXQgPSBpOTE1X3ZtYV9waW5fZmVuY2Uo dm1hKTsKPiAgCWlmIChyZXQpCj4gLQkJZ290byBlcnJfdW5waW47Cj4gKwkJZ290byBlcnJfcmVz ZXQ7Cj4gIAo+ICAJLyogRmluYWxseSwgcmVtYXAgaXQgdXNpbmcgdGhlIG5ldyBHVFQgb2Zmc2V0 ICovCj4gIAlyZXQgPSByZW1hcF9pb19tYXBwaW5nKGFyZWEsCj4gQEAgLTE5NjksNiArMTkzNCw4 IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAo+ ICBlcnJfZmVuY2U6Cj4gIAlpOTE1X3ZtYV91bnBpbl9mZW5jZSh2bWEpOwo+ICtlcnJfcmVzZXQ6 Cj4gKwlpOTE1X3Jlc2V0X3VubG9jayhkZXZfcHJpdiwgc3JjdSk7Cj4gIGVycl91bnBpbjoKPiAg CV9faTkxNV92bWFfdW5waW4odm1hKTsKPiAgZXJyX3VubG9jazoKPiBAQCAtNTMyNiw2ICs1Mjkz LDcgQEAgaW50IGk5MTVfZ2VtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmZGV2X3ByaXYtPmdwdV9lcnJvci53YWl0 X3F1ZXVlKTsKPiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRldl9wcml2LT5ncHVfZXJyb3IucmVz ZXRfcXVldWUpOwo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmdwdV9lcnJvci53ZWRnZV9tdXRl eCk7Cj4gKwlpbml0X3NyY3Vfc3RydWN0KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2JhY2tv ZmZfc3JjdSk7Cj4gIAo+ICAJYXRvbWljX3NldCgmZGV2X3ByaXYtPm1tLmJzZF9lbmdpbmVfZGlz cGF0Y2hfaW5kZXgsIDApOwo+ICAKPiBAQCAtNTM1OCw2ICs1MzI2LDggQEAgdm9pZCBpOTE1X2dl bV9jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCUdF TV9CVUdfT04oYXRvbWljX3JlYWQoJmRldl9wcml2LT5tbS5mcmVlX2NvdW50KSk7Cj4gIAlXQVJO X09OKGRldl9wcml2LT5tbS5vYmplY3RfY291bnQpOwo+ICAKPiArCWNsZWFudXBfc3JjdV9zdHJ1 Y3QoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfYmFja29mZl9zcmN1KTsKPiArCj4gIAlrbWVt X2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnByaW9yaXRpZXMpOwo+ICAJa21lbV9jYWNoZV9kZXN0 cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+ICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9w cml2LT5yZXF1ZXN0cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVn LmMKPiBpbmRleCBlMDM3ZTk0NzkyZjMuLjM2ZDU0OGZhM2FhMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTI0MCw2ICsyNDAsMTAgQEAgc3Rh dGljIGludCBmZW5jZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4g IAkJaTkxNV92bWFfZmx1c2hfd3JpdGVzKG9sZCk7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaTkxNV9y ZXNldF90cnlsb2NrKGZlbmNlLT5pOTE1KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICAJaWYgKGZlbmNlLT52bWEgJiYgZmVuY2UtPnZtYSAhPSB2bWEpIHsKPiAgCQkv KiBFbnN1cmUgdGhhdCBhbGwgdXNlcnNwYWNlIENQVSBhY2Nlc3MgaXMgY29tcGxldGVkIGJlZm9y ZQo+ICAJCSAqIHN0ZWFsaW5nIHRoZSBmZW5jZS4KPiBAQCAtMjcyLDYgKzI3Niw3IEBAIHN0YXRp YyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAJ CWxpc3RfbW92ZV90YWlsKCZmZW5jZS0+bGluaywgJmZlbmNlLT5pOTE1LT5tbS5mZW5jZV9saXN0 KTsKPiAgCX0KPiAgCj4gKwlpOTE1X3Jlc2V0X3VubG9jayhmZW5jZS0+aTkxNSwgcmV0KTsKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC00MzUsMzIgKzQ0MCw2IEBAIHZvaWQgaTkxNV91bnJl c2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCj4gIAlsaXN0X2Fk ZCgmZmVuY2UtPmxpbmssICZmZW5jZS0+aTkxNS0+bW0uZmVuY2VfbGlzdCk7Cj4gIH0KPiAgCj4g LS8qKgo+IC0gKiBpOTE1X2dlbV9yZXZva2VfZmVuY2VzIC0gcmV2b2tlIGZlbmNlIHN0YXRlCj4g LSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+IC0gKgo+IC0gKiBSZW1vdmVzIGFs bCBHVFQgbW1hcHBpbmdzIHZpYSB0aGUgZmVuY2UgcmVnaXN0ZXJzLiBUaGlzIGZvcmNlcyBhbnkg dXNlcgo+IC0gKiBvZiB0aGUgZmVuY2UgdG8gcmVhY3F1aXJlIHRoYXQgZmVuY2UgYmVmb3JlIGNv bnRpbnVpbmcgd2l0aCB0aGVpciBhY2Nlc3MuCj4gLSAqIE9uZSB1c2UgaXMgZHVyaW5nIEdQVSBy ZXNldCB3aGVyZSB0aGUgZmVuY2UgcmVnaXN0ZXIgaXMgbG9zdCBhbmQgd2UgbmVlZCB0bwo+IC0g KiByZXZva2UgY29uY3VycmVudCB1c2Vyc3BhY2UgYWNjZXNzIHZpYSBHVFQgbW1hcHMgdW50aWwg dGhlIGhhcmR3YXJlIGhhcyBiZWVuCj4gLSAqIHJlc2V0IGFuZCB0aGUgZmVuY2UgcmVnaXN0ZXJz IGhhdmUgYmVlbiByZXN0b3JlZC4KPiAtICovCj4gLXZvaWQgaTkxNV9nZW1fcmV2b2tlX2ZlbmNl cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWludCBpOwo+IC0K PiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAt Cj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzOyBpKyspIHsKPiAt CQlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSA9ICZkZXZfcHJpdi0+ZmVuY2VfcmVn c1tpXTsKPiAtCj4gLQkJR0VNX0JVR19PTihmZW5jZS0+dm1hICYmIGZlbmNlLT52bWEtPmZlbmNl ICE9IGZlbmNlKTsKPiAtCj4gLQkJaWYgKGZlbmNlLT52bWEpCj4gLQkJCWk5MTVfdm1hX3Jldm9r ZV9tbWFwKGZlbmNlLT52bWEpOwo+IC0JfQo+IC19Cj4gLQo+ICAvKioKPiAgICogaTkxNV9nZW1f cmVzdG9yZV9mZW5jZXMgLSByZXN0b3JlIGZlbmNlIHN0YXRlCj4gICAqIEBkZXZfcHJpdjogaTkx NSBkZXZpY2UgcHJpdmF0ZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+IGlu ZGV4IDUzYjFmMjJkZDM2NS4uZDVjNThlODI1MDhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5oCj4gQEAgLTIzMSwxMiArMjMxLDEwIEBAIHN0cnVjdCBpOTE1X2dwdV9l cnJvciB7Cj4gIAkvKioKPiAgCSAqIGZsYWdzOiBDb250cm9sIHZhcmlvdXMgc3RhZ2VzIG9mIHRo ZSBHUFUgcmVzZXQKPiAgCSAqCj4gLQkgKiAjSTkxNV9SRVNFVF9CQUNLT0ZGIC0gV2hlbiB3ZSBz dGFydCBhIHJlc2V0LCB3ZSB3YW50IHRvIHN0b3AgYW55Cj4gLQkgKiBvdGhlciB1c2VycyBhY3F1 aXJpbmcgdGhlIHN0cnVjdF9tdXRleC4gVG8gZG8gdGhpcyB3ZSBzZXQgdGhlCj4gLQkgKiAjSTkx NV9SRVNFVF9CQUNLT0ZGIGJpdCBpbiB0aGUgZXJyb3IgZmxhZ3Mgd2hlbiB3ZSBkZXRlY3QgYSBy ZXNldAo+IC0JICogYW5kIHRoZW4gY2hlY2sgZm9yIHRoYXQgYml0IGJlZm9yZSBhY3F1aXJpbmcg dGhlIHN0cnVjdF9tdXRleCAoaW4KPiAtCSAqIGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxl KCk/KS4gSTkxNV9SRVNFVF9CQUNLT0ZGIHNlcnZlcyBhCj4gLQkgKiBzZWNvbmRhcnkgcm9sZSBp biBwcmV2ZW50aW5nIHR3byBjb25jdXJyZW50IGdsb2JhbCByZXNldCBhdHRlbXB0cy4KPiArCSAq ICNJOTE1X1JFU0VUX0JBQ0tPRkYgLSBXaGVuIHdlIHN0YXJ0IGEgZ2xvYmFsIHJlc2V0LCB3ZSBu ZWVkIHRvCj4gKwkgKiBzZXJpYWxpc2Ugd2l0aCBhbnkgb3RoZXIgdXNlcnMgYXR0ZW1wdGluZyB0 byBkbyB0aGUgc2FtZSwgYW5kCj4gKwkgKiBhbnkgZ2xvYmFsIHJlc291cmNlcyB0aGF0IG1heSBi ZSBjbG9iYmVyIGJ5IHRoZSByZXNldCAoc3VjaCBhcwo+ICsJICogRkVOQ0UgcmVnaXN0ZXJzKS4K PiAgCSAqCj4gIAkgKiAjSTkxNV9SRVNFVF9FTkdJTkVbbnVtX2VuZ2luZXNdIC0gU2luY2UgdGhl IGRyaXZlciBkb2Vzbid0IG5lZWQgdG8KPiAgCSAqIGFjcXVpcmUgdGhlIHN0cnVjdF9tdXRleCB0 byByZXNldCBhbiBlbmdpbmUsIHdlIG5lZWQgYW4gZXhwbGljaXQKPiBAQCAtMjcyLDYgKzI3MCw4 IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gIAkgKi8KPiAgCXdhaXRfcXVldWVfaGVhZF90 IHJlc2V0X3F1ZXVlOwo+ICAKPiArCXN0cnVjdCBzcmN1X3N0cnVjdCByZXNldF9iYWNrb2ZmX3Ny Y3U7Cj4gKwo+ICAJc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgKnJlc3RhcnQ7Cj4gIH07Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKPiBpbmRleCAwZTBkZGYyZTY4MTUuLjI3MmQwMGQ0 YjhhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKPiBAQCAtNjM5LDYgKzYzOSwz MSBAQCBzdGF0aWMgdm9pZCByZXNldF9wcmVwYXJlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gIAllbmdpbmUtPnJlc2V0LnByZXBhcmUoZW5naW5lKTsKPiAgfQo+ICAK PiArc3RhdGljIHZvaWQgcmV2b2tlX21tYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgaTkxNS0+bnVtX2ZlbmNl X3JlZ3M7IGkrKykgewo+ICsJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gaTkxNS0+ZmVuY2VfcmVn c1tpXS52bWE7Cj4gKwkJc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGU7Cj4gKwkJdTY0 IHZtYV9vZmZzZXQ7Cj4gKwo+ICsJCWlmICghdm1hKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJ R0VNX0JVR19PTih2bWEtPmZlbmNlICE9ICZpOTE1LT5mZW5jZV9yZWdzW2ldKTsKPiArCQlpZiAo IWk5MTVfdm1hX2hhc191c2VyZmF1bHQodm1hKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCW5v ZGUgPSAmdm1hLT5vYmotPmJhc2Uudm1hX25vZGU7Cj4gKwkJdm1hX29mZnNldCA9IHZtYS0+Z2d0 dF92aWV3LnBhcnRpYWwub2Zmc2V0IDw8IFBBR0VfU0hJRlQ7Cj4gKwkJdW5tYXBfbWFwcGluZ19y YW5nZShpOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAo+ICsJCQkJICAgIGRybV92bWFf bm9kZV9vZmZzZXRfYWRkcihub2RlKSArIHZtYV9vZmZzZXQsCj4gKwkJCQkgICAgdm1hLT5zaXpl LAo+ICsJCQkJICAgIDEpOwo+ICsJfQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCByZXNldF9wcmVw YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Cj4gQEAgLTY0OCw2ICs2NzMsNyBAQCBzdGF0aWMgdm9pZCByZXNl dF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCXJlc2V0X3ByZXBh cmVfZW5naW5lKGVuZ2luZSk7Cj4gIAo+ICAJaW50ZWxfdWNfc2FuaXRpemUoaTkxNSk7Cj4gKwly ZXZva2VfbW1hcHMoaTkxNSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgZ3RfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBzdGFsbGVkX21hc2spCj4gQEAg LTkxMSw1MCArOTM3LDIyIEBAIGJvb2wgaTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RydWN0IF9f aTkxNV9yZXNldCB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAtCXVuc2ln bmVkIGludCBzdGFsbGVkX21hc2s7Cj4gLX07Cj4gLQo+IC1zdGF0aWMgaW50IF9faTkxNV9yZXNl dF9fQktMKHZvaWQgKmRhdGEpCj4gLXsKPiAtCXN0cnVjdCBfX2k5MTVfcmVzZXQgKmFyZyA9IGRh dGE7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCWVyciA9IGludGVsX2dwdV9yZXNldChhcmctPmk5MTUs IEFMTF9FTkdJTkVTKTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gLQlyZXR1 cm4gZ3RfcmVzZXQoYXJnLT5pOTE1LCBhcmctPnN0YWxsZWRfbWFzayk7Cj4gLX0KPiAtCj4gLSNp ZiBSRVNFVF9VTkRFUl9TVE9QX01BQ0hJTkUKPiAtLyoKPiAtICogWFhYIEFuIGFsdGVybmF0aXZl IHRvIHVzaW5nIHN0b3BfbWFjaGluZSB3b3VsZCBiZSB0byBwYXJrIG9ubHkgdGhlCj4gLSAqIHBy b2Nlc3NlcyB0aGF0IGhhdmUgYSBHR1RUIG1tYXAuIEJ5IHJlbW90ZSBwYXJraW5nIHRoZSB0aHJl YWRzIChTSUdTVE9QKQo+IC0gKiB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmV2ZW50IHRoZWlyIG1l bW1vcnkgYWNjZXNzZXMgdmlhIHRoZSBsb3N0IGZlbmNlCj4gLSAqIHJlZ2lzdGVycyBvdmVyIHRo ZSBjb3Vyc2Ugb2YgdGhlIHJlc2V0IHdpdGhvdXQgdGhlIHBvdGVudGlhbCByZWN1cnNpdmUKPiAt ICogb2YgbXV0ZXhlcyBiZXR3ZWVuIHRoZSBwYWdlZmF1bHQgaGFuZGxlciBhbmQgcmVzZXQuCj4g LSAqCj4gLSAqIFNlZSBpZ3QvZ2VtX21tYXBfZ3R0L2hhbmcKPiAtICovCj4gLSNkZWZpbmUgX19k b19yZXNldChmbiwgYXJnKSBzdG9wX21hY2hpbmUoZm4sIGFyZywgTlVMTCkKPiAtI2Vsc2UKPiAt I2RlZmluZSBfX2RvX3Jlc2V0KGZuLCBhcmcpIGZuKGFyZykKPiAtI2VuZGlmCj4gLQo+ICBzdGF0 aWMgaW50IGRvX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBp bnQgc3RhbGxlZF9tYXNrKQo+ICB7Cj4gLQlzdHJ1Y3QgX19pOTE1X3Jlc2V0IGFyZyA9IHsgaTkx NSwgc3RhbGxlZF9tYXNrIH07Cj4gIAlpbnQgZXJyLCBpOwo+ICAKPiAtCWVyciA9IF9fZG9fcmVz ZXQoX19pOTE1X3Jlc2V0X19CS0wsICZhcmcpOwo+ICsJLyogRmx1c2ggZXZlcnlvbmUgY3VycmVu dGx5IHVzaW5nIGEgcmVzb3VyY2UgYWJvdXQgdG8gYmUgY2xvYmJlcmVkICovCj4gKwlzeW5jaHJv bml6ZV9zcmN1KCZpOTE1LT5ncHVfZXJyb3IucmVzZXRfYmFja29mZl9zcmN1KTsKPiArCj4gKwll cnIgPSBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgQUxMX0VOR0lORVMpOwo+ICAJZm9yIChpID0gMDsg ZXJyICYmIGkgPCBSRVNFVF9NQVhfUkVUUklFUzsgaSsrKSB7Cj4gLQkJbXNsZWVwKDEwMCk7Cj4g LQkJZXJyID0gX19kb19yZXNldChfX2k5MTVfcmVzZXRfX0JLTCwgJmFyZyk7Cj4gKwkJbXNsZWVw KDEwICogKGkgKyAxKSk7Cj4gKwkJZXJyID0gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJ TkVTKTsKPiAgCX0KPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiAgCj4gLQlyZXR1cm4g ZXJyOwo+ICsJcmV0dXJuIGd0X3Jlc2V0KGk5MTUsIHN0YWxsZWRfbWFzayk7Cj4gIH0KPiAgCj4g IC8qKgo+IEBAIC05NjYsOCArOTY0LDYgQEAgc3RhdGljIGludCBkb19yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IHN0YWxsZWRfbWFzaykKPiAgICogUmVz ZXQgdGhlIGNoaXAuICBVc2VmdWwgaWYgYSBoYW5nIGlzIGRldGVjdGVkLiBNYXJrcyB0aGUgZGV2 aWNlIGFzIHdlZGdlZAo+ICAgKiBvbiBmYWlsdXJlLgo+ICAgKgo+IC0gKiBDYWxsZXIgbXVzdCBo b2xkIHRoZSBzdHJ1Y3RfbXV0ZXguCj4gLSAqCj4gICAqIFByb2NlZHVyZSBpcyBmYWlybHkgc2lt cGxlOgo+ICAgKiAgIC0gcmVzZXQgdGhlIGNoaXAgdXNpbmcgdGhlIHJlc2V0IHJlZwo+ICAgKiAg IC0gcmUtaW5pdCBjb250ZXh0IHN0YXRlCj4gQEAgLTEyNzQsOSArMTI3MCwxMiBAQCB2b2lkIGk5 MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCXdhaXRf ZXZlbnQoaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlLAo+ICAJCQkgICAhdGVzdF9iaXQoSTkx NV9SRVNFVF9CQUNLT0ZGLAo+ICAJCQkJICAgICAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKSk7Cj4g LQkJZ290byBvdXQ7Cj4gKwkJZ290byBvdXQ7IC8qIHBpZ2d5LWJhY2sgb24gdGhlIG90aGVyIHJl c2V0ICovCj4gIAl9Cj4gIAo+ICsJLyogTWFrZSBzdXJlIGk5MTVfcmVzZXRfdHJ5bG9jaygpIHNl ZXMgdGhlIEk5MTVfUkVTRVRfQkFDS09GRiAqLwo+ICsJc3luY2hyb25pemVfcmN1X2V4cGVkaXRl ZCgpOwo+ICsKPiAgCS8qIFByZXZlbnQgYW55IG90aGVyIHJlc2V0LWVuZ2luZSBhdHRlbXB0LiAq Lwo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgdG1wKSB7Cj4gIAkJd2hpbGUgKHRl c3RfYW5kX3NldF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBlbmdpbmUtPmlkLAo+IEBAIC0xMzAw LDYgKzEyOTksMzYgQEAgdm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICB9 Cj4gIAo+ICtpbnQgaTkxNV9yZXNldF90cnlsb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yID0gJmk5MTUtPmdwdV9l cnJvcjsKPiArCWludCBzcmN1Owo+ICsKPiArCXJjdV9yZWFkX2xvY2soKTsKPiArCXdoaWxlICh0 ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsICZlcnJvci0+ZmxhZ3MpKSB7Cj4gKwkJcmN1X3Jl YWRfdW5sb2NrKCk7Cj4gKwo+ICsJCWlmICh3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZXJyb3It PnJlc2V0X3F1ZXVlLAo+ICsJCQkJCSAgICAgIXRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09GRiwK PiArCQkJCQkJICAgICAgICZlcnJvci0+ZmxhZ3MpKSkKPiArCQkJcmV0dXJuIC1FSU5UUjsKPiAr Cj4gKwkJcmN1X3JlYWRfbG9jaygpOwo+ICsJfQo+ICsJc3JjdSA9IHNyY3VfcmVhZF9sb2NrKCZl cnJvci0+cmVzZXRfYmFja29mZl9zcmN1KTsKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiAr CXJldHVybiBzcmN1Owo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfcmVzZXRfdW5sb2NrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgdGFnKQo+ICtfX3JlbGVhc2VzKCZpOTE1LT5ncHVf ZXJyb3IucmVzZXRfYmFja29mZl9zcmN1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3Ig KmVycm9yID0gJmk5MTUtPmdwdV9lcnJvcjsKPiArCj4gKwlzcmN1X3JlYWRfdW5sb2NrKCZlcnJv ci0+cmVzZXRfYmFja29mZl9zcmN1LCB0YWcpOwo+ICt9Cj4gKwo+ICBib29sIGk5MTVfcmVzZXRf Zmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCWludCBlcnI7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaAo+IGluZGV4IGYyZDM0N2YzMTlkZi4uODkzYzVkMWMy ZWI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaAo+IEBAIC05LDYgKzksNyBAQAo+ ICAKPiAgI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3JjdS5oPgo+ICAKPiAgc3RydWN0IGRybV9pOTE1X3By aXZhdGU7Cj4gIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3M7Cj4gQEAgLTMyLDYgKzMzLDkgQEAgaW50 IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgdm9p ZCBpOTE1X3Jlc2V0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGJvb2wgZ3VpbHR5 KTsKPiAgYm9vbCBpOTE1X3Jlc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiAgCj4gK2ludCBfX211c3RfY2hlY2sgaTkxNV9yZXNldF90cnlsb2NrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KTsKPiArdm9pZCBpOTE1X3Jlc2V0X3VubG9jayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHRhZyk7Cj4gKwo+ICBib29sIGludGVsX2hhc19ncHVf cmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICBib29sIGludGVsX2hhc19y ZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXgg N2I2ZjNiZWE5ZWY4Li40ODg2ZmFjMTI2MjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTEwMzksOCArMTAzOSw2IEBA IHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAKPiAgCS8qIENoZWNrIHRoYXQgd2UgY2FuIHJlY292ZXIgYW4gdW5iaW5kIHN0 dWNrIG9uIGEgaGFuZ2luZyByZXF1ZXN0ICovCj4gIAo+IC0JaWd0X2dsb2JhbF9yZXNldF9sb2Nr KGk5MTUpOwo+IC0KPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJ ZXJyID0gaGFuZ19pbml0KCZoLCBpOTE1KTsKPiAgCWlmIChlcnIpCj4gQEAgLTExMzgsNyArMTEz Niw5IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAJfQo+ICAKPiAgb3V0X3Jlc2V0Ogo+ICsJaWd0X2dsb2JhbF9yZXNl dF9sb2NrKGk5MTUpOwo+ICAJZmFrZV9oYW5nY2hlY2socnEtPmk5MTUsIGludGVsX2VuZ2luZV9m bGFnKHJxLT5lbmdpbmUpKTsKPiArCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGk5MTUpOwo+ICAK PiAgCWlmICh0c2spIHsKPiAgCQlzdHJ1Y3QgaWd0X3dlZGdlX21lIHc7Cj4gQEAgLTExNTksNyAr MTE1OSw2IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAo+ICAJaGFuZ19maW5pKCZoKTsKPiAgdW5sb2NrOgo+ICAJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlndF9nbG9iYWxfcmVzZXRfdW5s b2NrKGk5MTUpOwo+ICAKPiAgCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVf ZXJyb3IpKQo+ICAJCXJldHVybiAtRUlPOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCAxNGFlNDZmZGE0OWYuLmZjNTE2YTI5 NzBmNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMKPiBAQCAtMTg5LDYgKzE4OSw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKPiAgCj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpOTE1 LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZSk7Cj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpOTE1LT5n cHVfZXJyb3IucmVzZXRfcXVldWUpOwo+ICsJaW5pdF9zcmN1X3N0cnVjdCgmaTkxNS0+Z3B1X2Vy cm9yLnJlc2V0X2JhY2tvZmZfc3JjdSk7Cj4gIAltdXRleF9pbml0KCZpOTE1LT5ncHVfZXJyb3Iu d2VkZ2VfbXV0ZXgpOwo+ICAKPiAgCWk5MTUtPndxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUo Im1vY2siLCAwKTsKPiAtLSAKPiAyLjIwLjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4