From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Zyngier Subject: Re: [PATCH v1 1/2] KVM: arm: plug guest debug exploit Date: Thu, 11 May 2017 08:39:08 +0100 Message-ID: References: <20170510170200.13285-1-alex.bennee@linaro.org> <20170510170200.13285-2-alex.bennee@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 6F1D040A69 for ; Thu, 11 May 2017 03:35:55 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TbC9ncv7INZN for ; Thu, 11 May 2017 03:35:53 -0400 (EDT) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by mm01.cs.columbia.edu (Postfix) with ESMTP id C7E0740430 for ; Thu, 11 May 2017 03:35:53 -0400 (EDT) In-Reply-To: <20170510170200.13285-2-alex.bennee@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: =?UTF-8?Q?Alex_Benn=c3=a9e?= , christoffer.dall@linaro.org Cc: kvm@vger.kernel.org, Russell King , open list , Zhichao Huang , Paolo Bonzini , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu SGkgQWxleCwKCk9uIDEwLzA1LzE3IDE4OjAxLCBBbGV4IEJlbm7DqWUgd3JvdGU6Cj4gRnJvbTog WmhpY2hhbyBIdWFuZyA8emhpY2hhby5odWFuZ0BsaW5hcm8ub3JnPgo+IAo+IEhhcmR3YXJlIGRl YnVnZ2luZyBpbiBndWVzdHMgaXMgbm90IGludGVyY2VwdGVkIGN1cnJlbnRseSwgaXQgbWVhbnMK PiB0aGF0IGEgbWFsaWNpb3VzIGd1ZXN0IGNhbiBicmluZyBkb3duIHRoZSBlbnRpcmUgbWFjaGlu ZSBieSB3cml0aW5nCj4gdG8gdGhlIGRlYnVnIHJlZ2lzdGVycy4KPiAKPiBUaGlzIHBhdGNoIGVu YWJsZSB0cmFwcGluZyBvZiBhbGwgZGVidWcgcmVnaXN0ZXJzLCBwcmV2ZW50aW5nIHRoZQo+IGd1 ZXN0cyB0byBhY2Nlc3MgdGhlIGRlYnVnIHJlZ2lzdGVycy4gVGhpcyBpbmNsdWRlcyBhY2Nlc3Mg dG8gdGhlCj4gZGVidWcgbW9kZShEQkdEU0NSKSBpbiB0aGUgZ3Vlc3Qgd29ybGQgYWxsIHRoZSB0 aW1lIHdoaWNoIGNvdWxkCj4gb3RoZXJ3aXNlIG1lc3Mgd2l0aCB0aGUgaG9zdCBzdGF0ZS4gUmVh ZHMgcmV0dXJuIDAgYW5kIHdyaXRlcyBhcmUKPiBpZ25vcmVkLgo+IAo+IFRoZSByZXN1bHQgaXMg dGhlIGd1ZXN0IGNhbm5vdCBkZXRlY3QgYW55IHdvcmtpbmcgaGFyZHdhcmUgYmFzZWQgZGVidWcK PiBzdXBwb3J0LiBBcyBkZWJ1ZyBleGNlcHRpb25zIGFyZSBzdGlsbCByb3V0ZWQgdG8gdGhlIGd1 ZXN0IG5vcm1hbAo+IGRlYnVnIHVzaW5nIHNvZnR3YXJlIGJhc2VkIGJyZWFrcG9pbnRzIHN0aWxs IHdvcmtzLgo+IAo+IFRvIHN1cHBvcnQgZGVidWdnaW5nIHVzaW5nIGhhcmR3YXJlIHJlZ2lzdGVy cyB3ZSBuZWVkIHRvIGltcGxlbWVudCBhCj4gZGVidWcgcmVnaXN0ZXIgYXdhcmUgd29ybGQgc3dp dGNoIGFzIHdlbGwgYXMgc3BlY2lhbCB0cmFwcGluZyBmb3IKPiByZWdpc3RlcnMgdGhhdCBtYXkg YWZmZWN0IHRoZSBob3N0IHN0YXRlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFpoaWNoYW8gSHVhbmcg PHpoaWNoYW8uaHVhbmdAbGluYXJvLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IEJlbm7DqWUg PGFsZXguYmVubmVlQGxpbmFyby5vcmc+Cj4gCj4gLS0tCj4gYWpiOgo+ICAgLSBjb252ZXJ0IHRv IEMgd29ybGQgc3dpdGNoCj4gICAtIHJld29yZCBjb21taXQgbWVzc2FnZQo+IC0tLQo+ICBhcmNo L2FybS9pbmNsdWRlL2FzbS9rdm1fY29wcm9jLmggfCAgMyArLQo+ICBhcmNoL2FybS9rdm0vY29w cm9jLmMgICAgICAgICAgICAgfCA4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0KPiAgYXJjaC9hcm0va3ZtL2hhbmRsZV9leGl0LmMgICAgICAgIHwgIDQgKy0KPiAgYXJj aC9hcm0va3ZtL2h5cC9zd2l0Y2guYyAgICAgICAgIHwgIDQgKy0KPiAgNCBmaWxlcyBjaGFuZ2Vk LCA2OSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vaW5jbHVkZS9hc20va3ZtX2NvcHJvYy5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20va3Zt X2NvcHJvYy5oCj4gaW5kZXggNDkxN2MyZjdlNDU5Li5lNzRhYjBmYmFiNzkgMTAwNjQ0Cj4gLS0t IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20va3ZtX2NvcHJvYy5oCj4gKysrIGIvYXJjaC9hcm0vaW5j bHVkZS9hc20va3ZtX2NvcHJvYy5oCj4gQEAgLTMxLDcgKzMxLDggQEAgdm9pZCBrdm1fcmVnaXN0 ZXJfdGFyZ2V0X2NvcHJvY190YWJsZShzdHJ1Y3Qga3ZtX2NvcHJvY190YXJnZXRfdGFibGUgKnRh YmxlKTsKPiAgaW50IGt2bV9oYW5kbGVfY3AxMF9pZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0 cnVjdCBrdm1fcnVuICpydW4pOwo+ICBpbnQga3ZtX2hhbmRsZV9jcF8wXzEzX2FjY2VzcyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pOwo+ICBpbnQga3ZtX2hhbmRs ZV9jcDE0X2xvYWRfc3RvcmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAq cnVuKTsKPiAtaW50IGt2bV9oYW5kbGVfY3AxNF9hY2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTsKPiAraW50IGt2bV9oYW5kbGVfY3AxNF8zMihzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pOwo+ICtpbnQga3ZtX2hhbmRsZV9j cDE0XzY0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bik7Cj4gIGlu dCBrdm1faGFuZGxlX2NwMTVfMzIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1 biAqcnVuKTsKPiAgaW50IGt2bV9oYW5kbGVfY3AxNV82NChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHN0cnVjdCBrdm1fcnVuICpydW4pOwo+ICAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va3ZtL2Nv cHJvYy5jIGIvYXJjaC9hcm0va3ZtL2NvcHJvYy5jCj4gaW5kZXggM2U1ZTQxOTRlZjg2Li5iMjA1 MzM5M2JiMWYgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0va3ZtL2NvcHJvYy5jCj4gKysrIGIvYXJj aC9hcm0va3ZtL2NvcHJvYy5jCj4gQEAgLTkzLDEyICs5Myw2IEBAIGludCBrdm1faGFuZGxlX2Nw MTRfbG9hZF9zdG9yZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4p Cj4gIAlyZXR1cm4gMTsKPiAgfQo+ICAKPiAtaW50IGt2bV9oYW5kbGVfY3AxNF9hY2Nlc3Moc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+IC17Cj4gLQlrdm1faW5q ZWN0X3VuZGVmaW5lZCh2Y3B1KTsKPiAtCXJldHVybiAxOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9p ZCByZXNldF9tcGlkcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBjb3Byb2Nf cmVnICpyKQo+ICB7Cj4gIAkvKgo+IEBAIC01MTQsMTIgKzUwOCw4IEBAIHN0YXRpYyBpbnQgZW11 bGF0ZV9jcDE1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAgCXJldHVybiAxOwo+ICB9Cj4gIAo+ IC0vKioKPiAtICoga3ZtX2hhbmRsZV9jcDE1XzY0IC0tIGhhbmRsZXMgYSBtcnJjL21jcnIgdHJh cCBvbiBhIGd1ZXN0IENQMTUgYWNjZXNzCj4gLSAqIEB2Y3B1OiBUaGUgVkNQVSBwb2ludGVyCj4g LSAqIEBydW46ICBUaGUga3ZtX3J1biBzdHJ1Y3QKPiAtICovCj4gLWludCBrdm1faGFuZGxlX2Nw MTVfNjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ICtzdGF0 aWMgaW50IGt2bV9oYW5kbGVfY3BfNjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3Zt X3J1biAqcnVuLAo+ICsJCQkgICAgYm9vbCBjcDE1KQo+ICB7Cj4gIAlzdHJ1Y3QgY29wcm9jX3Bh cmFtcyBwYXJhbXM7Cj4gIAo+IEBAIC01MzMsNyArNTIzLDM1IEBAIGludCBrdm1faGFuZGxlX2Nw MTVfNjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ICAJcGFy YW1zLlJ0MiA9IChrdm1fdmNwdV9nZXRfaHNyKHZjcHUpID4+IDEwKSAmIDB4ZjsKPiAgCXBhcmFt cy5DUm0gPSAwOwo+ICAKPiAtCXJldHVybiBlbXVsYXRlX2NwMTUodmNwdSwgJnBhcmFtcyk7Cj4g KwlpZiAoY3AxNSkKPiArCQlyZXR1cm4gZW11bGF0ZV9jcDE1KHZjcHUsICZwYXJhbXMpOwo+ICsK PiArCS8qIHJhel93aSBjcDE0ICovCj4gKwkodm9pZClwbV9mYWtlKHZjcHUsICZwYXJhbXMsIE5V TEwpOwoKV2h5IHRoaXMgKHZvaWQpIGNhc3Q/Cgo+ICsKPiArCS8qIGhhbmRsZWQgKi8KPiArCWt2 bV9za2lwX2luc3RyKHZjcHUsIGt2bV92Y3B1X3RyYXBfaWxfaXMzMmJpdCh2Y3B1KSk7Cj4gKwly ZXR1cm4gMTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGt2bV9oYW5kbGVfY3AxNV82NCAtLSBoYW5k bGVzIGEgbXJyYy9tY3JyIHRyYXAgb24gYSBndWVzdCBDUDE1IGFjY2Vzcwo+ICsgKiBAdmNwdTog VGhlIFZDUFUgcG9pbnRlcgo+ICsgKiBAcnVuOiAgVGhlIGt2bV9ydW4gc3RydWN0Cj4gKyAqLwo+ ICtpbnQga3ZtX2hhbmRsZV9jcDE1XzY0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2 bV9ydW4gKnJ1bikKPiArewo+ICsJcmV0dXJuIGt2bV9oYW5kbGVfY3BfNjQodmNwdSwgcnVuLCAx KTsKCnRydWUgaW5zdGVhZCBvZiAxPwoKPiArfQo+ICsKPiArLyoqCj4gKyAqIGt2bV9oYW5kbGVf Y3AxNF82NCAtLSBoYW5kbGVzIGEgbXJyYy9tY3JyIHRyYXAgb24gYSBndWVzdCBDUDE0IGFjY2Vz cwo+ICsgKiBAdmNwdTogVGhlIFZDUFUgcG9pbnRlcgo+ICsgKiBAcnVuOiAgVGhlIGt2bV9ydW4g c3RydWN0Cj4gKyAqLwo+ICtpbnQga3ZtX2hhbmRsZV9jcDE0XzY0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiArewo+ICsJcmV0dXJuIGt2bV9oYW5kbGVfY3Bf NjQodmNwdSwgcnVuLCAwKTsKCmZhbHNlPwoKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgcmVzZXRf Y29wcm9jX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+IEBAIC01NDYsMTIgKzU2NCw4IEBA IHN0YXRpYyB2b2lkIHJlc2V0X2NvcHJvY19yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAg CQkJdGFibGVbaV0ucmVzZXQodmNwdSwgJnRhYmxlW2ldKTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAq IGt2bV9oYW5kbGVfY3AxNV8zMiAtLSBoYW5kbGVzIGEgbXJjL21jciB0cmFwIG9uIGEgZ3Vlc3Qg Q1AxNSBhY2Nlc3MKPiAtICogQHZjcHU6IFRoZSBWQ1BVIHBvaW50ZXIKPiAtICogQHJ1bjogIFRo ZSBrdm1fcnVuIHN0cnVjdAo+IC0gKi8KPiAtaW50IGt2bV9oYW5kbGVfY3AxNV8zMihzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pCj4gK3N0YXRpYyBpbnQga3ZtX2hh bmRsZV9jcF8zMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sCj4g KwkJCSAgICAgIGJvb2wgY3AxNSkKPiAgewo+ICAJc3RydWN0IGNvcHJvY19wYXJhbXMgcGFyYW1z Owo+ICAKPiBAQCAtNTY1LDcgKzU3OSwzNSBAQCBpbnQga3ZtX2hhbmRsZV9jcDE1XzMyKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiAgCXBhcmFtcy5PcDIgPSAo a3ZtX3ZjcHVfZ2V0X2hzcih2Y3B1KSA+PiAxNykgJiAweDc7Cj4gIAlwYXJhbXMuUnQyID0gMDsK PiAgCj4gLQlyZXR1cm4gZW11bGF0ZV9jcDE1KHZjcHUsICZwYXJhbXMpOwo+ICsJaWYgKGNwMTUp Cj4gKwkJcmV0dXJuIGVtdWxhdGVfY3AxNSh2Y3B1LCAmcGFyYW1zKTsKPiArCj4gKwkvKiByYXpf d2kgY3AxNCAqLwo+ICsJKHZvaWQpcG1fZmFrZSh2Y3B1LCAmcGFyYW1zLCBOVUxMKTsKPiArCj4g KwkvKiBoYW5kbGVkICovCj4gKwlrdm1fc2tpcF9pbnN0cih2Y3B1LCBrdm1fdmNwdV90cmFwX2ls X2lzMzJiaXQodmNwdSkpOwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBrdm1f aGFuZGxlX2NwMTVfMzIgLS0gaGFuZGxlcyBhIG1yYy9tY3IgdHJhcCBvbiBhIGd1ZXN0IENQMTUg YWNjZXNzCj4gKyAqIEB2Y3B1OiBUaGUgVkNQVSBwb2ludGVyCj4gKyAqIEBydW46ICBUaGUga3Zt X3J1biBzdHJ1Y3QKPiArICovCj4gK2ludCBrdm1faGFuZGxlX2NwMTVfMzIoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ICt7Cj4gKwlyZXR1cm4ga3ZtX2hhbmRs ZV9jcF8zMih2Y3B1LCBydW4sIDEpOwo+ICt9Cj4gKwo+ICsvKioKPiArICoga3ZtX2hhbmRsZV9j cDE0XzMyIC0tIGhhbmRsZXMgYSBtcmMvbWNyIHRyYXAgb24gYSBndWVzdCBDUDE0IGFjY2Vzcwo+ ICsgKiBAdmNwdTogVGhlIFZDUFUgcG9pbnRlcgo+ICsgKiBAcnVuOiAgVGhlIGt2bV9ydW4gc3Ry dWN0Cj4gKyAqLwo+ICtpbnQga3ZtX2hhbmRsZV9jcDE0XzMyKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiArewo+ICsJcmV0dXJuIGt2bV9oYW5kbGVfY3BfMzIo dmNwdSwgcnVuLCAwKTsKPiAgfQo+ICAKPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IGRpZmYg LS1naXQgYS9hcmNoL2FybS9rdm0vaGFuZGxlX2V4aXQuYyBiL2FyY2gvYXJtL2t2bS9oYW5kbGVf ZXhpdC5jCj4gaW5kZXggOTZhZjY1YTMwZDc4Li40MmY1ZGFmNzE1ZDAgMTAwNjQ0Cj4gLS0tIGEv YXJjaC9hcm0va3ZtL2hhbmRsZV9leGl0LmMKPiArKysgYi9hcmNoL2FybS9rdm0vaGFuZGxlX2V4 aXQuYwo+IEBAIC05NSw5ICs5NSw5IEBAIHN0YXRpYyBleGl0X2hhbmRsZV9mbiBhcm1fZXhpdF9o YW5kbGVyc1tdID0gewo+ICAJW0hTUl9FQ19XRkldCQk9IGt2bV9oYW5kbGVfd2Z4LAo+ICAJW0hT Ul9FQ19DUDE1XzMyXQk9IGt2bV9oYW5kbGVfY3AxNV8zMiwKPiAgCVtIU1JfRUNfQ1AxNV82NF0J PSBrdm1faGFuZGxlX2NwMTVfNjQsCj4gLQlbSFNSX0VDX0NQMTRfTVJdCT0ga3ZtX2hhbmRsZV9j cDE0X2FjY2VzcywKPiArCVtIU1JfRUNfQ1AxNF9NUl0JPSBrdm1faGFuZGxlX2NwMTRfMzIsCj4g IAlbSFNSX0VDX0NQMTRfTFNdCT0ga3ZtX2hhbmRsZV9jcDE0X2xvYWRfc3RvcmUsCj4gLQlbSFNS X0VDX0NQMTRfNjRdCT0ga3ZtX2hhbmRsZV9jcDE0X2FjY2VzcywKPiArCVtIU1JfRUNfQ1AxNF82 NF0JPSBrdm1faGFuZGxlX2NwMTRfNjQsCgpJdCBmZWVscyBhIGJpdCBvZGQgdG8gaGF2ZSBzZXBh cmF0ZSBtZXRob2RzIGF0IHRoaXMgbGV2ZWwsIGNvbnZlcmdpbmcKb250byBhIHNpbmdsZSBvbmUg dGhhdCBoYXMgdG8gYXBwbHkgc2VwYXJhdGUgdHJlYXRtZW50cyBpbgprdm1faGFuZGxlX2NwX3sz Miw2NH0gZGVwZW5kaW5nIG9uIHRoZSBDUCBudW1iZXIuIEkgd29uZGVyIGlmIGl0CndvdWxkbid0 IGJlIG5pY2VyIHRvIGVpdGhlciBrZWVwIHRoZSBwYXRocyBzZXBhcmF0ZSBlbnRpcmVseSwgb3Ig aGF2ZSBhCnNpbmdsZSBhY2Nlc3MgbWV0aG9kIHRoYXQgZG9lcyBpdCBhbGwuCgo+ICAJW0hTUl9F Q19DUF8wXzEzXQk9IGt2bV9oYW5kbGVfY3BfMF8xM19hY2Nlc3MsCj4gIAlbSFNSX0VDX0NQMTBf SURdCT0ga3ZtX2hhbmRsZV9jcDEwX2lkLAo+ICAJW0hTUl9FQ19IVkNdCQk9IGhhbmRsZV9odmMs Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2t2bS9oeXAvc3dpdGNoLmMgYi9hcmNoL2FybS9rdm0v aHlwL3N3aXRjaC5jCj4gaW5kZXggOTI2NzhiN2JkMDQ2Li42MjRhNTEwZDMxZGYgMTAwNjQ0Cj4g LS0tIGEvYXJjaC9hcm0va3ZtL2h5cC9zd2l0Y2guYwo+ICsrKyBiL2FyY2gvYXJtL2t2bS9oeXAv c3dpdGNoLmMKPiBAQCAtNDgsNyArNDgsOSBAQCBzdGF0aWMgdm9pZCBfX2h5cF90ZXh0IF9fYWN0 aXZhdGVfdHJhcHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKmZwZXhjX2hvc3QpCj4gIAl3 cml0ZV9zeXNyZWcoSFNUUl9UKDE1KSwgSFNUUik7Cj4gIAl3cml0ZV9zeXNyZWcoSENQVFJfVFRB IHwgSENQVFJfVENQKDEwKSB8IEhDUFRSX1RDUCgxMSksIEhDUFRSKTsKPiAgCXZhbCA9IHJlYWRf c3lzcmVnKEhEQ1IpOwo+IC0Jd3JpdGVfc3lzcmVnKHZhbCB8IEhEQ1JfVFBNIHwgSERDUl9UUE1D UiwgSERDUik7Cj4gKwl2YWwgfD0gSERDUl9UUE0gfCBIRENSX1RQTUNSOyAvKiB0cmFwIHBlcmZv cm1hbmNlIG1vbml0b3JzICovCj4gKwl2YWwgfD0gSERDUl9URFJBIHwgSERDUl9URE9TQSB8IEhE Q1JfVERBOyAvKiB0cmFwIGRlYnVnIHJlZ3MgKi8KPiArCXdyaXRlX3N5c3JlZyh2YWwsIEhEQ1Ip Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBfX2h5cF90ZXh0IF9fZGVhY3RpdmF0ZV90cmFwcyhz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gCgpUaGFua3MsCgoJTS4KLS0gCkphenogaXMgbm90IGRl YWQuIEl0IGp1c3Qgc21lbGxzIGZ1bm55Li4uCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNv bHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZv L2t2bWFybQo=