From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Rutland Subject: [PATCH 2/2] kvm/arm: consistently advance singlestep when emulating instructions Date: Fri, 9 Nov 2018 15:07:11 +0000 Message-ID: <20181109150711.45864-3-mark.rutland@arm.com> References: <20181109150711.45864-1-mark.rutland@arm.com> 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 EA89E4A344 for ; Fri, 9 Nov 2018 10:07:26 -0500 (EST) 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 tYGYc+hwnw09 for ; Fri, 9 Nov 2018 10:07:25 -0500 (EST) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 35E5E4A358 for ; Fri, 9 Nov 2018 10:07:25 -0500 (EST) In-Reply-To: <20181109150711.45864-1-mark.rutland@arm.com> 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: linux-arm-kernel@lists.infradead.org Cc: marc.zyngier@arm.com, kvmarm@lists.cs.columbia.edu List-Id: kvmarm@lists.cs.columbia.edu V2hlbiB3ZSBlbXVsYXRlIGEgZ3Vlc3QgaW5zdHJ1Y3Rpb24sIHdlIGRvbid0IGFkdmFuY2UgdGhl IGhhcmR3YXJlCnNpbmdsZXN0ZXAgc3RhdGUgbWFjaGluZSwgYW5kIHRodXMgdGhlIGd1ZXN0IHdp bGwgcmVjZWl2ZSBhIHNvZnR3YXJlCnN0ZXAgZXhjZXB0aW9uIGFmdGVyIGEgbmV4dCBpbnN0cnVj dGlvbiB3aGljaCBpcyBub3QgZW11bGF0ZWQgYnkgdGhlCmhvc3QuCgpXZSBib2RnZSBhcm91bmQg dGhpcyBpbiBhbiBhZC1ob2MgZmFzaGlvbi4gU29tZXRpbWVzIHdlIGV4cGxpY2l0bHkgY2hlY2sK d2hldGhlciB1c2Vyc3BhY2UgcmVxdWVzdGVkIGEgc2luZ2xlIHN0ZXAsIGFuZCBmYWtlIGEgZGVi dWcgZXhjZXB0aW9uCmZyb20gd2l0aGluIHRoZSBrZXJuZWwuIE90aGVyIHRpbWVzLCB3ZSBhZHZh bmNlIHRoZSBIVyBzaW5nbGVzdGVwIHN0YXRlCnJlbHkgb24gdGhlIEhXIHRvIGdlbmVyYXRlIHRo ZSBleGNlcHRpb24gZm9yIHVzLiBUaHVzLCB0aGUgb2JzZXJ2ZWQgc3RlcApiZWhhdmlvdXIgZGlm ZmVycyBmb3IgaG9zdCBhbmQgZ3Vlc3QuCgpMZXQncyBtYWtlIHRoaXMgc2ltcGxlciBhbmQgY29u c2lzdGVudCBieSBhbHdheXMgYWR2YW5jaW5nIHRoZSBIVwpzaW5nbGVzdGVwIHN0YXRlIG1hY2hp bmUgd2hlbiB3ZSBza2lwIGFuIGluc3RydWN0aW9uLiBUaHVzIHdlIGNhbiByZWx5Cm9uIHRoZSBo YXJkd2FyZSB0byBnZW5lcmF0ZSB0aGUgc2luZ2xlc3RlcCBleGNlcHRpb24gZm9yIHVzLCBhbmQg bmV2ZXIKbmVlZCB0byBleHBsaWNpdGx5IGNoZWNrIGZvciBhbiBhY3RpdmUtcGVuZGluZyBzdGVw LCBub3IgZG8gd2UgbmVlZCB0bwpmYWtlIGEgZGVidWcgZXhjZXB0aW9uIGZyb20gdGhlIGd1ZXN0 LgoKU2lnbmVkLW9mZi1ieTogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KQ2M6 IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4KQ2M6IENocmlzdG9mZmVyIERh bGwgPGNocmlzdG9mZmVyLmRhbGxAYXJtLmNvbT4KQ2M6IE1hcmMgWnluZ2llciA8bWFyYy56eW5n aWVyQGFybS5jb20+CkNjOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+ Ci0tLQogYXJjaC9hcm0vaW5jbHVkZS9hc20va3ZtX2hvc3QuaCAgICAgICAgICB8ICA1IC0tLS0K IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaCAgICAgfCAzNSArKysrKysrKysr KysrKysrKysrKy0tLS0tLQogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAg ICB8ICAxIC0KIGFyY2gvYXJtNjQva3ZtL2RlYnVnLmMgICAgICAgICAgICAgICAgICAgfCAyMSAt LS0tLS0tLS0tLS0tLS0tCiBhcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jICAgICAgICAgICAg IHwgMTQgKy0tLS0tLS0tLS0KIGFyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYyAgICAgICAgICAg ICAgfCA0MyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm02NC9rdm0v aHlwL3ZnaWMtdjItY3B1aWYtcHJveHkuYyB8IDEyICsrKysrKy0tLQogdmlydC9rdm0vYXJtL2Fy bS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyIC0tCiB2aXJ0L2t2bS9hcm0vaHlwL3ZnaWMt djMtc3IuYyAgICAgICAgICAgIHwgIDYgKysrKy0KIDkgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0 aW9ucygrKSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9h c20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggNWNh NWQ5YWYwYzI2Li5jNTYzNGM2ZmZjZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L2t2bV9ob3N0LmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMjk2 LDExICsyOTYsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV9pbml0X2RlYnVnKHZvaWQp IHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV9zZXR1cF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV9jbGVhcl9kZWJ1ZyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV9yZXNldF9k ZWJ1Z19wdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQotc3RhdGljIGlubGluZSBib29sIGt2 bV9hcm1faGFuZGxlX3N0ZXBfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAotCQkJCQkgICAg IHN0cnVjdCBrdm1fcnVuICpydW4pCi17Ci0JcmV0dXJuIGZhbHNlOwotfQogCiBpbnQga3ZtX2Fy bV92Y3B1X2FyY2hfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJICAgICAgIHN0 cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9rdm1fZW11bGF0ZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0 ZS5oCmluZGV4IDIxMjQ3ODcwZGVmNy4uNTA2Mzg2YTNlZGRlIDEwMDY0NAotLS0gYS9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9rdm1fZW11bGF0ZS5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9rdm1f aG9zdC5oPgogCisjaW5jbHVkZSA8YXNtL2RlYnVnLW1vbml0b3JzLmg+CiAjaW5jbHVkZSA8YXNt L2Vzci5oPgogI2luY2x1ZGUgPGFzbS9rdm1fYXJtLmg+CiAjaW5jbHVkZSA8YXNtL2t2bV9oeXAu aD4KQEAgLTE0NywxNCArMTQ4LDYgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9jb25kaXRpb25f dmFsaWQoY29uc3Qgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXJldHVybiB0cnVlOwogfQogCi1z dGF0aWMgaW5saW5lIHZvaWQga3ZtX3NraXBfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBi b29sIGlzX3dpZGVfaW5zdHIpCi17Ci0JaWYgKHZjcHVfbW9kZV9pc18zMmJpdCh2Y3B1KSkKLQkJ a3ZtX3NraXBfaW5zdHIzMih2Y3B1LCBpc193aWRlX2luc3RyKTsKLQllbHNlCi0JCSp2Y3B1X3Bj KHZjcHUpICs9IDQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y3B1X3NldF90aHVtYihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJKnZjcHVfY3Bzcih2Y3B1KSB8PSBQU1JfQUEzMl9UX0JJ VDsKQEAgLTQyNCw0ICs0MTcsMzAgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZjcHVf ZGF0YV9ob3N0X3RvX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAlyZXR1cm4gZGF0YTsJ CS8qIExlYXZlIExFIHVudG91Y2hlZCAqLwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3Nr aXBfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGlzX3dpZGVfaW5zdHIpCit7CisJ aWYgKHZjcHVfbW9kZV9pc18zMmJpdCh2Y3B1KSkKKwkJa3ZtX3NraXBfaW5zdHIzMih2Y3B1LCBp c193aWRlX2luc3RyKTsKKwllbHNlCisJCSp2Y3B1X3BjKHZjcHUpICs9IDQ7CisKKwkvKiBhZHZh bmNlIHRoZSBzaW5nbGVzdGVwIHN0YXRlIG1hY2hpbmUgKi8KKwkqdmNwdV9jcHNyKHZjcHUpICY9 IH5EQkdfU1BTUl9TUzsKK30KKworLyoKKyAqIFNraXAgYW4gaW5zdHJ1Y3Rpb24gd2hpY2ggaGFz IGJlZW4gZW11bGF0ZWQgYXQgaHlwIHdoaWxlIG1vc3QgZ3Vlc3Qgc3lzcmVncworICogYXJlIGxp dmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2h5cF90ZXh0IF9fa3ZtX3NraXBfaW5zdHIo c3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCSp2Y3B1X3BjKHZjcHUpID0gcmVhZF9zeXNyZWdf ZWwyKGVscik7CisJdmNwdS0+YXJjaC5jdHh0LmdwX3JlZ3MucmVncy5wc3RhdGUgPSByZWFkX3N5 c3JlZ19lbDIoc3Bzcik7CisKKwlrdm1fc2tpcF9pbnN0cih2Y3B1LCBrdm1fdmNwdV90cmFwX2ls X2lzMzJiaXQodmNwdSkpOworCisJd3JpdGVfc3lzcmVnX2VsMih2Y3B1LT5hcmNoLmN0eHQuZ3Bf cmVncy5yZWdzLnBzdGF0ZSwgc3Bzcik7CisJd3JpdGVfc3lzcmVnX2VsMigqdmNwdV9wYyh2Y3B1 KSwgZWxyKTsKK30KKwogI2VuZGlmIC8qIF9fQVJNNjRfS1ZNX0VNVUxBVEVfSF9fICovCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggNTJmYmM4MjNmZjhjLi43YTUwMzVmOWM1YzMgMTAw NjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAorKysgYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTQ0NSw3ICs0NDUsNiBAQCB2b2lkIGt2bV9h cm1faW5pdF9kZWJ1Zyh2b2lkKTsKIHZvaWQga3ZtX2FybV9zZXR1cF9kZWJ1ZyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fYXJtX2NsZWFyX2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSk7CiB2b2lkIGt2bV9hcm1fcmVzZXRfZGVidWdfcHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSk7Ci1ib29sIGt2bV9hcm1faGFuZGxlX3N0ZXBfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKTsKIGludCBrdm1fYXJtX3ZjcHVfYXJjaF9zZXRfYXR0cihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkgICAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAq YXR0cik7CiBpbnQga3ZtX2FybV92Y3B1X2FyY2hfZ2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vZGVidWcuYyBiL2FyY2gvYXJtNjQva3Zt L2RlYnVnLmMKaW5kZXggMDBkNDIyMzM2YTQ1Li5mMzk4MDFlNDEzNmMgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtNjQva3ZtL2RlYnVnLmMKKysrIGIvYXJjaC9hcm02NC9rdm0vZGVidWcuYwpAQCAtMjM2 LDI0ICsyMzYsMyBAQCB2b2lkIGt2bV9hcm1fY2xlYXJfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCQl9CiAJfQogfQotCi0KLS8qCi0gKiBBZnRlciBzdWNjZXNzZnVsbHkgZW11bGF0aW5n IGFuIGluc3RydWN0aW9uLCB3ZSBtaWdodCB3YW50IHRvCi0gKiByZXR1cm4gdG8gdXNlciBzcGFj ZSB3aXRoIGEgS1ZNX0VYSVRfREVCVUcuIFdlIGNhbiBvbmx5IGRvIHRoaXMKLSAqIG9uY2UgdGhl IGVtdWxhdGlvbiBpcyBjb21wbGV0ZSwgdGhvdWdoLCBzbyBmb3IgdXNlcnNwYWNlIGVtdWxhdGlv bnMKLSAqIHdlIGhhdmUgdG8gd2FpdCB1bnRpbCB3ZSBoYXZlIHJlLWVudGVyZWQgS1ZNIGJlZm9y ZSBjYWxsaW5nIHRoaXMKLSAqIGhlbHBlci4KLSAqCi0gKiBSZXR1cm4gdHJ1ZSAoYW5kIHNldCBl eGl0X3JlYXNvbikgdG8gcmV0dXJuIHRvIHVzZXJzcGFjZSBvciBmYWxzZQotICogaWYgbm8gZnVy dGhlciBhY3Rpb24gaXMgcmVxdWlyZWQuCi0gKi8KLWJvb2wga3ZtX2FybV9oYW5kbGVfc3RlcF9k ZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pCi17Ci0JaWYg KHZjcHUtPmd1ZXN0X2RlYnVnICYgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVApIHsKLQkJcnVuLT5l eGl0X3JlYXNvbiA9IEtWTV9FWElUX0RFQlVHOwotCQlydW4tPmRlYnVnLmFyY2guaHNyID0gRVNS X0VMeF9FQ19TT0ZUU1RQX0xPVyA8PCBFU1JfRUx4X0VDX1NISUZUOwotCQlyZXR1cm4gdHJ1ZTsK LQl9Ci0JcmV0dXJuIGZhbHNlOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vaGFuZGxl X2V4aXQuYyBiL2FyY2gvYXJtNjQva3ZtL2hhbmRsZV9leGl0LmMKaW5kZXggMzVhODFiZWJkMDJi Li5iMDY0M2Y5YzQ4NzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2hhbmRsZV9leGl0LmMK KysrIGIvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYwpAQCAtMjI5LDEzICsyMjksNiBAQCBz dGF0aWMgaW50IGhhbmRsZV90cmFwX2V4Y2VwdGlvbnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBz dHJ1Y3Qga3ZtX3J1biAqcnVuKQogCQloYW5kbGVkID0gZXhpdF9oYW5kbGVyKHZjcHUsIHJ1bik7 CiAJfQogCi0JLyoKLQkgKiBrdm1fYXJtX2hhbmRsZV9zdGVwX2RlYnVnKCkgc2V0cyB0aGUgZXhp dF9yZWFzb24gb24gdGhlIGt2bV9ydW4KLQkgKiBzdHJ1Y3R1cmUgaWYgd2UgbmVlZCB0byByZXR1 cm4gdG8gdXNlcnNwYWNlLgotCSAqLwotCWlmIChoYW5kbGVkID4gMCAmJiBrdm1fYXJtX2hhbmRs ZV9zdGVwX2RlYnVnKHZjcHUsIHJ1bikpCi0JCWhhbmRsZWQgPSAwOwotCiAJcmV0dXJuIGhhbmRs ZWQ7CiB9CiAKQEAgLTI2OSwxMiArMjYyLDcgQEAgaW50IGhhbmRsZV9leGl0KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1biwKIAljYXNlIEFSTV9FWENFUFRJT05fSVJR OgogCQlyZXR1cm4gMTsKIAljYXNlIEFSTV9FWENFUFRJT05fRUwxX1NFUlJPUjoKLQkJLyogV2Ug bWF5IHN0aWxsIG5lZWQgdG8gcmV0dXJuIGZvciBzaW5nbGUtc3RlcCAqLwotCQlpZiAoISgqdmNw dV9jcHNyKHZjcHUpICYgREJHX1NQU1JfU1MpCi0JCQkmJiBrdm1fYXJtX2hhbmRsZV9zdGVwX2Rl YnVnKHZjcHUsIHJ1bikpCi0JCQlyZXR1cm4gMDsKLQkJZWxzZQotCQkJcmV0dXJuIDE7CisJCXJl dHVybiAxOwogCWNhc2UgQVJNX0VYQ0VQVElPTl9UUkFQOgogCQlyZXR1cm4gaGFuZGxlX3RyYXBf ZXhjZXB0aW9ucyh2Y3B1LCBydW4pOwogCWNhc2UgQVJNX0VYQ0VQVElPTl9IWVBfR09ORToKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYyBiL2FyY2gvYXJtNjQva3ZtL2h5 cC9zd2l0Y2guYwppbmRleCA3Y2MxNzVjODhhMzcuLjQyODJmMDU3NzFjMSAxMDA2NDQKLS0tIGEv YXJjaC9hcm02NC9rdm0vaHlwL3N3aXRjaC5jCisrKyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0 Y2guYwpAQCAtMzA1LDMzICszMDUsNiBAQCBzdGF0aWMgYm9vbCBfX2h5cF90ZXh0IF9fcG9wdWxh dGVfZmF1bHRfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcmV0dXJuIHRydWU7CiB9CiAK LS8qIFNraXAgYW4gaW5zdHJ1Y3Rpb24gd2hpY2ggaGFzIGJlZW4gZW11bGF0ZWQuIFJldHVybnMg dHJ1ZSBpZgotICogZXhlY3V0aW9uIGNhbiBjb250aW51ZSBvciBmYWxzZSBpZiB3ZSBuZWVkIHRv IGV4aXQgaHlwIG1vZGUgYmVjYXVzZQotICogc2luZ2xlLXN0ZXAgd2FzIGluIGVmZmVjdC4KLSAq Lwotc3RhdGljIGJvb2wgX19oeXBfdGV4dCBfX3NraXBfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQotewotCSp2Y3B1X3BjKHZjcHUpID0gcmVhZF9zeXNyZWdfZWwyKGVscik7Ci0KLQlpZiAo dmNwdV9tb2RlX2lzXzMyYml0KHZjcHUpKSB7Ci0JCXZjcHUtPmFyY2guY3R4dC5ncF9yZWdzLnJl Z3MucHN0YXRlID0gcmVhZF9zeXNyZWdfZWwyKHNwc3IpOwotCQlrdm1fc2tpcF9pbnN0cjMyKHZj cHUsIGt2bV92Y3B1X3RyYXBfaWxfaXMzMmJpdCh2Y3B1KSk7Ci0JCXdyaXRlX3N5c3JlZ19lbDIo dmNwdS0+YXJjaC5jdHh0LmdwX3JlZ3MucmVncy5wc3RhdGUsIHNwc3IpOwotCX0gZWxzZSB7Ci0J CSp2Y3B1X3BjKHZjcHUpICs9IDQ7Ci0JfQotCi0Jd3JpdGVfc3lzcmVnX2VsMigqdmNwdV9wYyh2 Y3B1KSwgZWxyKTsKLQotCWlmICh2Y3B1LT5ndWVzdF9kZWJ1ZyAmIEtWTV9HVUVTVERCR19TSU5H TEVTVEVQKSB7Ci0JCXZjcHUtPmFyY2guZmF1bHQuZXNyX2VsMiA9Ci0JCQkoRVNSX0VMeF9FQ19T T0ZUU1RQX0xPVyA8PCBFU1JfRUx4X0VDX1NISUZUKSB8IDB4MjI7Ci0JCXJldHVybiBmYWxzZTsK LQl9IGVsc2UgewotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci19Ci0KIHN0YXRpYyBib29sIF9faHlwX3Rl eHQgX19oeXBfc3dpdGNoX2Zwc2ltZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0 IHVzZXJfZnBzaW1kX3N0YXRlICpob3N0X2Zwc2ltZCA9IHZjcHUtPmFyY2guaG9zdF9mcHNpbWRf c3RhdGU7CkBAIC00MjAsMjAgKzM5MywxMiBAQCBzdGF0aWMgYm9vbCBfX2h5cF90ZXh0IGZpeHVw X2d1ZXN0X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmV4aXRfY29kZSkKIAkJaWYg KHZhbGlkKSB7CiAJCQlpbnQgcmV0ID0gX192Z2ljX3YyX3BlcmZvcm1fY3B1aWZfYWNjZXNzKHZj cHUpOwogCi0JCQlpZiAocmV0ID09ICAxICYmIF9fc2tpcF9pbnN0cih2Y3B1KSkKKwkJCWlmIChy ZXQgPT0gMSkKIAkJCQlyZXR1cm4gdHJ1ZTsKIAotCQkJaWYgKHJldCA9PSAtMSkgewotCQkJCS8q IFByb21vdGUgYW4gaWxsZWdhbCBhY2Nlc3MgdG8gYW4KLQkJCQkgKiBTRXJyb3IuIElmIHdlIHdv dWxkIGJlIHJldHVybmluZwotCQkJCSAqIGR1ZSB0byBzaW5nbGUtc3RlcCBjbGVhciB0aGUgU1MK LQkJCQkgKiBiaXQgc28gaGFuZGxlX2V4aXQga25vd3Mgd2hhdCB0bwotCQkJCSAqIGRvIGFmdGVy IGRlYWxpbmcgd2l0aCB0aGUgZXJyb3IuCi0JCQkJICovCi0JCQkJaWYgKCFfX3NraXBfaW5zdHIo dmNwdSkpCi0JCQkJCSp2Y3B1X2Nwc3IodmNwdSkgJj0gfkRCR19TUFNSX1NTOworCQkJLyogUHJv bW90ZSBhbiBpbGxlZ2FsIGFjY2VzcyB0byBhbiBTRXJyb3IuKi8KKwkJCWlmIChyZXQgPT0gLTEp CiAJCQkJKmV4aXRfY29kZSA9IEFSTV9FWENFUFRJT05fRUwxX1NFUlJPUjsKLQkJCX0KIAogCQkJ Z290byBleGl0OwogCQl9CkBAIC00NDQsNyArNDA5LDcgQEAgc3RhdGljIGJvb2wgX19oeXBfdGV4 dCBmaXh1cF9ndWVzdF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICpleGl0X2NvZGUp CiAJICAgICBrdm1fdmNwdV90cmFwX2dldF9jbGFzcyh2Y3B1KSA9PSBFU1JfRUx4X0VDX0NQMTVf MzIpKSB7CiAJCWludCByZXQgPSBfX3ZnaWNfdjNfcGVyZm9ybV9jcHVpZl9hY2Nlc3ModmNwdSk7 CiAKLQkJaWYgKHJldCA9PSAxICYmIF9fc2tpcF9pbnN0cih2Y3B1KSkKKwkJaWYgKHJldCA9PSAx KQogCQkJcmV0dXJuIHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9oeXAv dmdpYy12Mi1jcHVpZi1wcm94eS5jIGIvYXJjaC9hcm02NC9rdm0vaHlwL3ZnaWMtdjItY3B1aWYt cHJveHkuYwppbmRleCAyMTVjN2MwZWIzYjAuLjljYmRkMDM0YTU2MyAxMDA2NDQKLS0tIGEvYXJj aC9hcm02NC9rdm0vaHlwL3ZnaWMtdjItY3B1aWYtcHJveHkuYworKysgYi9hcmNoL2FybTY0L2t2 bS9oeXAvdmdpYy12Mi1jcHVpZi1wcm94eS5jCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBib29s IF9faHlwX3RleHQgX19pc19iZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAgKiBSZXR1cm5zOgog ICogIDE6IEdJQ1YgYWNjZXNzIHN1Y2Nlc3NmdWxseSBwZXJmb3JtZWQKICAqICAwOiBOb3QgYSBH SUNWIGFjY2VzcwotICogLTE6IElsbGVnYWwgR0lDViBhY2Nlc3MKKyAqIC0xOiBJbGxlZ2FsIEdJ Q1YgYWNjZXNzIHN1Y2Nlc3NmdWxseSBwZXJmb3JtZWQKICAqLwogaW50IF9faHlwX3RleHQgX192 Z2ljX3YyX3BlcmZvcm1fY3B1aWZfYWNjZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKQEAg LTYxLDEyICs2MSwxNiBAQCBpbnQgX19oeXBfdGV4dCBfX3ZnaWNfdjJfcGVyZm9ybV9jcHVpZl9h Y2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlyZXR1cm4gMDsKIAogCS8qIFJlamVjdCBh bnl0aGluZyBidXQgYSAzMmJpdCBhY2Nlc3MgKi8KLQlpZiAoa3ZtX3ZjcHVfZGFidF9nZXRfYXMo dmNwdSkgIT0gc2l6ZW9mKHUzMikpCisJaWYgKGt2bV92Y3B1X2RhYnRfZ2V0X2FzKHZjcHUpICE9 IHNpemVvZih1MzIpKSB7CisJCV9fa3ZtX3NraXBfaW5zdHIodmNwdSk7CiAJCXJldHVybiAtMTsK Kwl9CiAKIAkvKiBOb3QgYWxpZ25lZD8gRG9uJ3QgYm90aGVyICovCi0JaWYgKGZhdWx0X2lwYSAm IDMpCisJaWYgKGZhdWx0X2lwYSAmIDMpIHsKKwkJX19rdm1fc2tpcF9pbnN0cih2Y3B1KTsKIAkJ cmV0dXJuIC0xOworCX0KIAogCXJkID0ga3ZtX3ZjcHVfZGFidF9nZXRfcmQodmNwdSk7CiAJYWRk ciAgPSBoeXBfc3ltYm9sX2FkZHIoa3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlKS0+dmNwdV9oeXBfdmE7 CkBAIC04OCw1ICs5Miw3IEBAIGludCBfX2h5cF90ZXh0IF9fdmdpY192Ml9wZXJmb3JtX2NwdWlm X2FjY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXZjcHVfc2V0X3JlZyh2Y3B1LCByZCwg ZGF0YSk7CiAJfQogCisJX19rdm1fc2tpcF9pbnN0cih2Y3B1KTsKKwogCXJldHVybiAxOwogfQpk aWZmIC0tZ2l0IGEvdmlydC9rdm0vYXJtL2FybS5jIGIvdmlydC9rdm0vYXJtL2FybS5jCmluZGV4 IDIzNzc0OTcwYzlkZi4uNGFkY2VlNWZjMTI2IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9hcm0vYXJt LmMKKysrIGIvdmlydC9rdm0vYXJtL2FybS5jCkBAIC02NzQsOCArNjc0LDYgQEAgaW50IGt2bV9h cmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4g KnJ1bikKIAkJcmV0ID0ga3ZtX2hhbmRsZV9tbWlvX3JldHVybih2Y3B1LCB2Y3B1LT5ydW4pOwog CQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQkJaWYgKGt2bV9hcm1faGFuZGxlX3N0ZXBfZGVi dWcodmNwdSwgdmNwdS0+cnVuKSkKLQkJCXJldHVybiAwOwogCX0KIAogCWlmIChydW4tPmltbWVk aWF0ZV9leGl0KQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vYXJtL2h5cC92Z2ljLXYzLXNyLmMgYi92 aXJ0L2t2bS9hcm0vaHlwL3ZnaWMtdjMtc3IuYwppbmRleCA2MTZlNWE0MzNhYjAuLjk2NTJjNDUz NDgwZiAxMDA2NDQKLS0tIGEvdmlydC9rdm0vYXJtL2h5cC92Z2ljLXYzLXNyLmMKKysrIGIvdmly dC9rdm0vYXJtL2h5cC92Z2ljLXYzLXNyLmMKQEAgLTEwMTIsOCArMTAxMiwxMCBAQCBpbnQgX19o eXBfdGV4dCBfX3ZnaWNfdjNfcGVyZm9ybV9jcHVpZl9hY2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCiAJZXNyID0ga3ZtX3ZjcHVfZ2V0X2hzcih2Y3B1KTsKIAlpZiAodmNwdV9tb2RlX2lz XzMyYml0KHZjcHUpKSB7Ci0JCWlmICgha3ZtX2NvbmRpdGlvbl92YWxpZCh2Y3B1KSkKKwkJaWYg KCFrdm1fY29uZGl0aW9uX3ZhbGlkKHZjcHUpKSB7CisJCQlfX2t2bV9za2lwX2luc3RyKHZjcHUp OwogCQkJcmV0dXJuIDE7CisJCX0KIAogCQlzeXNyZWcgPSBlc3JfY3AxNV90b19zeXNyZWcoZXNy KTsKIAl9IGVsc2UgewpAQCAtMTEyMyw2ICsxMTI1LDggQEAgaW50IF9faHlwX3RleHQgX192Z2lj X3YzX3BlcmZvcm1fY3B1aWZfYWNjZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlydCA9IGt2 bV92Y3B1X3N5c19nZXRfcnQodmNwdSk7CiAJZm4odmNwdSwgdm1jciwgcnQpOwogCisJX19rdm1f c2tpcF9pbnN0cih2Y3B1KTsKKwogCXJldHVybiAxOwogfQogCi0tIAoyLjExLjAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxp c3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlh LmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo=