From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D4C7C433F5 for ; Wed, 6 Oct 2021 17:50:57 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 299666113E for ; Wed, 6 Oct 2021 17:50:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 299666113E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bitdefender.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 880BC84077; Wed, 6 Oct 2021 17:50:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H5TEWe1CU69c; Wed, 6 Oct 2021 17:50:51 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id AC98784048; Wed, 6 Oct 2021 17:50:50 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8D9B1C0027; Wed, 6 Oct 2021 17:50:50 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 983CFC0011 for ; Wed, 6 Oct 2021 17:50:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 7B04660EE9 for ; Wed, 6 Oct 2021 17:50:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZQPgazdMWylf for ; Wed, 6 Oct 2021 17:50:44 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from mx01.bbu.dsd.mx.bitdefender.com (mx01.bbu.dsd.mx.bitdefender.com [91.199.104.161]) by smtp3.osuosl.org (Postfix) with ESMTPS id 4D58460EC2 for ; Wed, 6 Oct 2021 17:50:44 +0000 (UTC) Received: from smtp.bitdefender.com (smtp01.buh.bitdefender.com [10.17.80.75]) by mx01.bbu.dsd.mx.bitdefender.com (Postfix) with ESMTPS id D18CB30828B9; Wed, 6 Oct 2021 20:31:22 +0300 (EEST) Received: from localhost (unknown [91.199.104.28]) by smtp.bitdefender.com (Postfix) with ESMTPSA id B5D463064495; Wed, 6 Oct 2021 20:31:22 +0300 (EEST) X-Is-Junk-Enabled: fGZTSsP0qEJE2AIKtlSuFiRRwg9xyHmJ From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= To: kvm@vger.kernel.org Subject: [PATCH v12 69/77] KVM: introspection: restore the state of MSR interception on unhook Date: Wed, 6 Oct 2021 20:31:05 +0300 Message-Id: <20211006173113.26445-70-alazar@bitdefender.com> In-Reply-To: <20211006173113.26445-1-alazar@bitdefender.com> References: <20211006173113.26445-1-alazar@bitdefender.com> MIME-Version: 1.0 Cc: Tamas K Lengyel , Wanpeng Li , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Sean Christopherson , Joerg Roedel , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Mathieu Tarral , Paolo Bonzini , Jim Mattson X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" RnJvbTogTmljdciZb3IgQ8OuyJt1IDxuaWN1LmNpdHVAaWNsb3VkLmNvbT4KClRoaXMgY29tbWl0 IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgYW5kIHRoZSB1c2Vyc3Bh Y2UKZG8gbm90IGRpc2FibGUgZWFjaCBvdGhlciB0aGUgTVNSIGFjY2VzcyBWTS1leGl0LgoKU2ln bmVkLW9mZi1ieTogTmljdciZb3IgQ8OuyJt1IDxuaWN1LmNpdHVAaWNsb3VkLmNvbT4KU2lnbmVk LW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIGFy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oIHwgIDEyICsrKwogYXJjaC94ODYva3ZtL2t2 bWkuYyAgICAgICAgICAgICAgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQog YXJjaC94ODYva3ZtL3N2bS9zdm0uYyAgICAgICAgICAgfCAgMTAgKysrCiBhcmNoL3g4Ni9rdm0v dm14L3ZteC5jICAgICAgICAgICB8ICAxMSArKysKIDQgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2Vy dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmgKaW5kZXgg NWE0ZmM1YjgwOTA3Li44ODIyZjAzMTAxNTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCkBA IC0yNiw2ICsyNiwxMiBAQCBzdHJ1Y3Qga3ZtaV9pbnRlcmNlcHRpb24gewogCQkJREVDTEFSRV9C SVRNQVAobG93LCBLVk1JX05VTV9NU1IpOwogCQkJREVDTEFSRV9CSVRNQVAoaGlnaCwgS1ZNSV9O VU1fTVNSKTsKIAkJfSBrdm1pX21hc2s7CisJCXN0cnVjdCB7CisJCQlERUNMQVJFX0JJVE1BUChs b3csIEtWTUlfTlVNX01TUik7CisJCQlERUNMQVJFX0JJVE1BUChoaWdoLCBLVk1JX05VTV9NU1Ip OworCQl9IGt2bV9tYXNrOworCQlib29sICgqbW9uaXRvcl9mY3QpKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgdTMyIG1zciwKKwkJCQkgICAgYm9vbCBlbmFibGUpOwogCX0gbXNydzsKIH07CiAKQEAg LTYxLDYgKzY3LDggQEAgdm9pZCBrdm1pX3hzZXRidl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIHU4IHhjciwKIGJvb2wga3ZtaV9tb25pdG9yX2Rlc2NfaW50ZXJjZXB0KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgYm9vbCBlbmFibGUpOwogYm9vbCBrdm1pX2Rlc2NyaXB0b3JfZXZlbnQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLCBib29sIHdyaXRlKTsKIGJvb2wga3Zt aV9tc3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcik7 Citib29sIGt2bWlfbW9uaXRvcl9tc3J3X2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHUzMiBtc3IsIGJvb2wgZW5hYmxlKTsKK2Jvb2wga3ZtaV9tc3J3X2ludGVyY2VwdF9vcmlnaW5h dG9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKICNlbHNlIC8qIENPTkZJR19LVk1fSU5UUk9T UEVDVElPTiAqLwogCkBAIC04Miw2ICs5MCwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9k ZXNjcmlwdG9yX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggZGVzY3JpcHRvciwKIAkJ CQkJIGJvb2wgd3JpdGUpIHsgcmV0dXJuIHRydWU7IH0KIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1p X21zcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQog CQkJCXsgcmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBrdm1pX21vbml0b3JfbXNy d19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLAorCQkJCQkgICAgICAg Ym9vbCBlbmFibGUpIHsgcmV0dXJuIGZhbHNlOyB9CitzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9t c3J3X2ludGVyY2VwdF9vcmlnaW5hdG9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKKwkJCQl7IHJl dHVybiBmYWxzZTsgfQogCiAjZW5kaWYgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICovCiAK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9rdm1pLmMgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCmlu ZGV4IGM4NGExNDBkYjQ1MS4uNGUyNWZmYzNkMTMxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0v a3ZtaS5jCisrKyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKQEAgLTM0NSwyMiArMzQ1LDI1IEBAIHN0 YXRpYyB2b2lkIGt2bWlfYXJjaF9kaXNhYmxlX2Rlc2NfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKIAl2Y3B1LT5hcmNoLmt2bWktPmRlc2NyaXB0b3Iua3ZtX2ludGVyY2VwdGVkID0g ZmFsc2U7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nICptc3JfbWFzayhzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHVuc2lnbmVkIGludCAqbXNyKQorc3RhdGljIHVuc2lnbmVkIGxvbmcgKm1zcl9t YXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50ICptc3IsCisJCQkgICAgICAg Ym9vbCBrdm1pKQogewogCXN3aXRjaCAoKm1zcikgewogCWNhc2UgMCAuLi4gMHgxZmZmOgotCQly ZXR1cm4gdmNwdS0+YXJjaC5rdm1pLT5tc3J3Lmt2bWlfbWFzay5sb3c7CisJCXJldHVybiBrdm1p ID8gdmNwdS0+YXJjaC5rdm1pLT5tc3J3Lmt2bWlfbWFzay5sb3cgOgorCQkJICAgICAgdmNwdS0+ YXJjaC5rdm1pLT5tc3J3Lmt2bV9tYXNrLmxvdzsKIAljYXNlIDB4YzAwMDAwMDAgLi4uIDB4YzAw MDFmZmY6CiAJCSptc3IgJj0gMHgxZmZmOwotCQlyZXR1cm4gdmNwdS0+YXJjaC5rdm1pLT5tc3J3 Lmt2bWlfbWFzay5oaWdoOworCQlyZXR1cm4ga3ZtaSA/IHZjcHUtPmFyY2gua3ZtaS0+bXNydy5r dm1pX21hc2suaGlnaCA6CisJCQkgICAgICB2Y3B1LT5hcmNoLmt2bWktPm1zcncua3ZtX21hc2su aGlnaDsKIAl9CiAKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGJvb2wgdGVzdF9tc3JfbWFz ayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBtc3IpCitzdGF0aWMgYm9vbCB0 ZXN0X21zcl9tYXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwgYm9v bCBrdm1pKQogewotCXVuc2lnbmVkIGxvbmcgKm1hc2sgPSBtc3JfbWFzayh2Y3B1LCAmbXNyKTsK Kwl1bnNpZ25lZCBsb25nICptYXNrID0gbXNyX21hc2sodmNwdSwgJm1zciwga3ZtaSk7CiAKIAlp ZiAoIW1hc2spCiAJCXJldHVybiBmYWxzZTsKQEAgLTM2OCw5ICszNzEsMjcgQEAgc3RhdGljIGJv b2wgdGVzdF9tc3JfbWFzayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBtc3Ip CiAJcmV0dXJuICEhdGVzdF9iaXQobXNyLCBtYXNrKTsKIH0KIAotc3RhdGljIGJvb2wgbXNyX2Nv bnRyb2woc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbXNyLCBib29sIGVuYWJs ZSkKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgb25lIHNpZGUgKGt2bSBvciBrdm1pKSB0cmllcyB0 byBkaXNhYmxlIHRoZSBNU1Igd3JpdGUKKyAqIGludGVyY2VwdGlvbiB3aGlsZSB0aGUgb3RoZXIg c2lkZSBpcyBzdGlsbCB0cmFja2luZyBpdC4KKyAqLworYm9vbCBrdm1pX21vbml0b3JfbXNyd19p bnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCBib29sIGVuYWJsZSkKK3sK KwlzdHJ1Y3Qga3ZtaV9pbnRlcmNlcHRpb24gKmFyY2hfdmNwdWk7CisKKwlpZiAoIXZjcHUpCisJ CXJldHVybiBmYWxzZTsKKworCWFyY2hfdmNwdWkgPSBSRUFEX09OQ0UodmNwdS0+YXJjaC5rdm1p KTsKKworCXJldHVybiAoYXJjaF92Y3B1aSAmJiBhcmNoX3ZjcHVpLT5tc3J3Lm1vbml0b3JfZmN0 KHZjcHUsIG1zciwgZW5hYmxlKSk7Cit9CitFWFBPUlRfU1lNQk9MKGt2bWlfbW9uaXRvcl9tc3J3 X2ludGVyY2VwdCk7CisKK3N0YXRpYyBib29sIG1zcl9jb250cm9sKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgdW5zaWduZWQgaW50IG1zciwgYm9vbCBlbmFibGUsCisJCQlib29sIGt2bWkpCiB7Ci0J dW5zaWduZWQgbG9uZyAqbWFzayA9IG1zcl9tYXNrKHZjcHUsICZtc3IpOworCXVuc2lnbmVkIGxv bmcgKm1hc2sgPSBtc3JfbWFzayh2Y3B1LCAmbXNyLCBrdm1pKTsKIAogCWlmICghbWFzaykKIAkJ cmV0dXJuIGZhbHNlOwpAQCAtMzgzLDYgKzQwNCw2MyBAQCBzdGF0aWMgYm9vbCBtc3JfY29udHJv bChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBtc3IsIGJvb2wgZW5hYmxlKQog CXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBtc3JfaW50ZXJjZXB0ZWRfYnlfa3ZtaShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IpCit7CisJcmV0dXJuIHRlc3RfbXNyX21hc2so dmNwdSwgbXNyLCB0cnVlKTsKK30KKworc3RhdGljIGJvb2wgbXNyX2ludGVyY2VwdGVkX2J5X2t2 bShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IpCit7CisJcmV0dXJuIHRlc3RfbXNyX21h c2sodmNwdSwgbXNyLCBmYWxzZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlY29yZF9tc3JfaW50ZXJj ZXB0X3N0YXR1c19mb3Jfa3ZtaShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsCisJCQkJ CQkgYm9vbCBlbmFibGUpCit7CisJbXNyX2NvbnRyb2wodmNwdSwgbXNyLCBlbmFibGUsIHRydWUp OworfQorCitzdGF0aWMgdm9pZCByZWNvcmRfbXNyX2ludGVyY2VwdF9zdGF0dXNfZm9yX2t2bShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsCisJCQkJCQlib29sIGVuYWJsZSkKK3sKKwlt c3JfY29udHJvbCh2Y3B1LCBtc3IsIGVuYWJsZSwgZmFsc2UpOworfQorCitzdGF0aWMgYm9vbCBt b25pdG9yX21zcndfZmN0X2t2bWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCBib29s IGVuYWJsZSkKK3sKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKGVuYWJsZSkgeworCQlpZiAo c3RhdGljX2NhbGwoa3ZtX3g4Nl9tc3Jfd3JpdGVfaW50ZXJjZXB0ZWQpKHZjcHUsIG1zcikpCisJ CQlyZWNvcmRfbXNyX2ludGVyY2VwdF9zdGF0dXNfZm9yX2t2bSh2Y3B1LCBtc3IsIHRydWUpOwor CX0gZWxzZSB7CisJCWlmICh1bmxpa2VseSghbXNyX2ludGVyY2VwdGVkX2J5X2t2bWkodmNwdSwg bXNyKSkpCisJCQlyZXQgPSB0cnVlOworCisJCWlmIChtc3JfaW50ZXJjZXB0ZWRfYnlfa3ZtKHZj cHUsIG1zcikpCisJCQlyZXQgPSB0cnVlOworCX0KKworCXJlY29yZF9tc3JfaW50ZXJjZXB0X3N0 YXR1c19mb3Jfa3ZtaSh2Y3B1LCBtc3IsIGVuYWJsZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgYm9vbCBtb25pdG9yX21zcndfZmN0X2t2bShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUz MiBtc3IsIGJvb2wgZW5hYmxlKQoreworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlpZiAoIShtc3Jf aW50ZXJjZXB0ZWRfYnlfa3ZtaSh2Y3B1LCBtc3IpKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYg KCFlbmFibGUpCisJCXJldCA9IHRydWU7CisKKwlyZWNvcmRfbXNyX2ludGVyY2VwdF9zdGF0dXNf Zm9yX2t2bSh2Y3B1LCBtc3IsIGVuYWJsZSk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMg dW5zaWduZWQgaW50IG1zcl9tYXNrX3RvX2Jhc2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNp Z25lZCBsb25nICptYXNrKQogewogCWlmIChtYXNrID09IHZjcHUtPmFyY2gua3ZtaS0+bXNydy5r dm1pX21hc2suaGlnaCkKQEAgLTM5MywxMyArNDcxLDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg bXNyX21hc2tfdG9fYmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgKm1h c2spCiAKIHZvaWQga3ZtaV9jb250cm9sX21zcndfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgdTMyIG1zciwgYm9vbCBlbmFibGUpCiB7CisJdmNwdS0+YXJjaC5rdm1pLT5tc3J3Lm1v bml0b3JfZmN0ID0gbW9uaXRvcl9tc3J3X2ZjdF9rdm1pOwogCXN0YXRpY19jYWxsKGt2bV94ODZf Y29udHJvbF9tc3JfaW50ZXJjZXB0KSh2Y3B1LCBtc3IsIE1TUl9UWVBFX1csCiAJCQkJCQkgICBl bmFibGUpOwotCW1zcl9jb250cm9sKHZjcHUsIG1zciwgZW5hYmxlKTsKKwl2Y3B1LT5hcmNoLmt2 bWktPm1zcncubW9uaXRvcl9mY3QgPSBtb25pdG9yX21zcndfZmN0X2t2bTsKIH0KIAotc3RhdGlj IHZvaWQga3ZtaV9hcmNoX2Rpc2FibGVfbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCi0JCQkJCSAgICB1bnNpZ25lZCBsb25nICptYXNrKQorc3RhdGljIHZvaWQga3ZtaV9hcmNo X2Rpc2FibGVfbXNyd19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAorCQkJCQkgICAg IHVuc2lnbmVkIGxvbmcgKm1hc2spCiB7CiAJdW5zaWduZWQgaW50IG1zcl9iYXNlID0gbXNyX21h c2tfdG9fYmFzZSh2Y3B1LCBtYXNrKTsKIAlpbnQgb2Zmc2V0ID0gLTE7CkBAIC00MTAsOCArNDg5 LDcgQEAgc3RhdGljIHZvaWQga3ZtaV9hcmNoX2Rpc2FibGVfbXNyX2ludGVyY2VwdChzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsCiAJCWlmIChvZmZzZXQgPj0gS1ZNSV9OVU1fTVNSKQogCQkJYnJlYWs7 CiAKLQkJc3RhdGljX2NhbGwoa3ZtX3g4Nl9jb250cm9sX21zcl9pbnRlcmNlcHQpKHZjcHUsCi0J CQkJbXNyX2Jhc2UgKyBvZmZzZXQsIE1TUl9UWVBFX1csIGZhbHNlKTsKKwkJa3ZtaV9jb250cm9s X21zcndfaW50ZXJjZXB0KHZjcHUsIG1zcl9iYXNlICsgb2Zmc2V0LCBmYWxzZSk7CiAJfQogCiAJ Yml0bWFwX3plcm8obWFzaywgS1ZNSV9OVU1fTVNSKTsKQEAgLTQ2Myw4ICs1NDEsOCBAQCBzdGF0 aWMgdm9pZCBrdm1pX2FyY2hfcmVzdG9yZV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCWt2bWlfYXJjaF9kaXNhYmxlX2JwX2ludGVyY2VwdCh2Y3B1KTsKIAlrdm1pX2FyY2hf ZGlzYWJsZV9jcjN3X2ludGVyY2VwdCh2Y3B1KTsKIAlrdm1pX2FyY2hfZGlzYWJsZV9kZXNjX2lu dGVyY2VwdCh2Y3B1KTsKLQlrdm1pX2FyY2hfZGlzYWJsZV9tc3JfaW50ZXJjZXB0KHZjcHUsIGFy Y2hfdmNwdWktPm1zcncua3ZtaV9tYXNrLmxvdyk7Ci0Ja3ZtaV9hcmNoX2Rpc2FibGVfbXNyX2lu dGVyY2VwdCh2Y3B1LCBhcmNoX3ZjcHVpLT5tc3J3Lmt2bWlfbWFzay5oaWdoKTsKKwlrdm1pX2Fy Y2hfZGlzYWJsZV9tc3J3X2ludGVyY2VwdCh2Y3B1LCBhcmNoX3ZjcHVpLT5tc3J3Lmt2bWlfbWFz ay5sb3cpOworCWt2bWlfYXJjaF9kaXNhYmxlX21zcndfaW50ZXJjZXB0KHZjcHUsIGFyY2hfdmNw dWktPm1zcncua3ZtaV9tYXNrLmhpZ2gpOwogfQogCiBib29sIGt2bWlfYXJjaF9jbGVhbl91cF9p bnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpAQCAtNDkxLDEyICs1NjksMTQgQEAg Ym9vbCBrdm1pX2FyY2hfdmNwdV9hbGxvY19pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCWFyY2hfdmNwdWktPmJyZWFrcG9pbnQubW9uaXRvcl9mY3QgPSBtb25pdG9yX2JwX2Zj dF9rdm07CiAJYXJjaF92Y3B1aS0+Y3Izdy5tb25pdG9yX2ZjdCA9IG1vbml0b3JfY3Izd19mY3Rf a3ZtOwogCWFyY2hfdmNwdWktPmRlc2NyaXB0b3IubW9uaXRvcl9mY3QgPSBtb25pdG9yX2Rlc2Nf ZmN0X2t2bTsKKwlhcmNoX3ZjcHVpLT5tc3J3Lm1vbml0b3JfZmN0ID0gbW9uaXRvcl9tc3J3X2Zj dF9rdm07CiAKIAkvKgogCSAqIHBhaXJlZCB3aXRoOgogCSAqICAtIGt2bWlfbW9uaXRvcl9icF9p bnRlcmNlcHQoKQogCSAqICAtIGt2bWlfbW9uaXRvcl9jcjN3X2ludGVyY2VwdCgpCiAJICogIC0g a3ZtaV9tb25pdG9yX2Rlc2NfaW50ZXJjZXB0KCkKKwkgKiAgLSBrdm1pX21vbml0b3JfbXNyd19p bnRlcmNlcHQoKQogCSAqLwogCXNtcF93bWIoKTsKIAlXUklURV9PTkNFKHZjcHUtPmFyY2gua3Zt aSwgYXJjaF92Y3B1aSk7CkBAIC03NzgsNiArODU4LDIwIEBAIGJvb2wga3ZtaV9kZXNjcmlwdG9y X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggZGVzY3JpcHRvciwgYm9vbCB3cml0ZSkK IH0KIEVYUE9SVF9TWU1CT0woa3ZtaV9kZXNjcmlwdG9yX2V2ZW50KTsKIAorYm9vbCBrdm1pX21z cndfaW50ZXJjZXB0X29yaWdpbmF0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVj dCBrdm1pX2ludGVyY2VwdGlvbiAqYXJjaF92Y3B1aTsKKworCWlmICghdmNwdSkKKwkJcmV0dXJu IGZhbHNlOworCisJYXJjaF92Y3B1aSA9IFJFQURfT05DRSh2Y3B1LT5hcmNoLmt2bWkpOworCisJ cmV0dXJuIChhcmNoX3ZjcHVpICYmCisJCWFyY2hfdmNwdWktPm1zcncubW9uaXRvcl9mY3QgPT0g bW9uaXRvcl9tc3J3X2ZjdF9rdm1pKTsKK30KK0VYUE9SVF9TWU1CT0woa3ZtaV9tc3J3X2ludGVy Y2VwdF9vcmlnaW5hdG9yKTsKKwogc3RhdGljIGJvb2wgX19rdm1pX21zcl9ldmVudChzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQogewogCXN0cnVjdCBtc3JfZGF0 YSBvbGRfbXNyID0gewpAQCAtNzg4LDcgKzg4Miw3IEBAIHN0YXRpYyBib29sIF9fa3ZtaV9tc3Jf ZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcikKIAl1MzIg YWN0aW9uOwogCWJvb2wgcmV0OwogCi0JaWYgKCF0ZXN0X21zcl9tYXNrKHZjcHUsIG1zci0+aW5k ZXgpKQorCWlmICghdGVzdF9tc3JfbWFzayh2Y3B1LCBtc3ItPmluZGV4LCB0cnVlKSkKIAkJcmV0 dXJuIHRydWU7CiAJaWYgKHN0YXRpY19jYWxsKGt2bV94ODZfZ2V0X21zcikodmNwdSwgJm9sZF9t c3IpKQogCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMg Yi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCmluZGV4IGQzZDA2MTYxNTUzNi4uZWEyODQzMDI3Njcx IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2bS9z dm0vc3ZtLmMKQEAgLTY3Myw2ICs2NzMsMTYgQEAgc3RhdGljIHZvaWQgc2V0X21zcl9pbnRlcmNl cHRpb25fYml0bWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICptc3JwbSwKIAl1bnNpZ25l ZCBsb25nIHRtcDsKIAl1MzIgb2Zmc2V0OwogCisjaWZkZWYgQ09ORklHX0tWTV9JTlRST1NQRUNU SU9OCisJaWYgKCh0eXBlICYgTVNSX1RZUEVfVykgJiYKKwkgICAga3ZtaV9tb25pdG9yX21zcndf aW50ZXJjZXB0KHZjcHUsIG1zciwgIXZhbHVlKSkKKwkJdHlwZSAmPSB+TVNSX1RZUEVfVzsKKwor CS8qCisJICogQXZvaWQgdGhlIGJlbG93IHdhcm5pbmcgZm9yIGt2bWkgaW50ZXJjZXB0ZWQgbXNy cy4KKwkgKi8KKwlpZiAoIWt2bWlfbXNyd19pbnRlcmNlcHRfb3JpZ2luYXRvcih2Y3B1KSkKKyNl bmRpZiAvKiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04gKi8KIAkvKgogCSAqIElmIHRoaXMgd2Fy bmluZyB0cmlnZ2VycyBleHRlbmQgdGhlIGRpcmVjdF9hY2Nlc3NfbXNycyBsaXN0IGF0IHRoZQog CSAqIGJlZ2lubmluZyBvZiB0aGUgZmlsZQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92 bXguYyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmMKaW5kZXggOTY0ODQwNDMwNTM3Li4xZGYwYTI5 ZDFkOGQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMKKysrIGIvYXJjaC94ODYv a3ZtL3ZteC92bXguYwpAQCAtMzc5OCw2ICszNzk4LDEyIEBAIHZvaWQgdm14X2Rpc2FibGVfaW50 ZXJjZXB0X2Zvcl9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCBpbnQgdHlwZSkK IAlpZiAoIWNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSkKIAkJcmV0dXJuOwogCisjaWZkZWYgQ09O RklHX0tWTV9JTlRST1NQRUNUSU9OCisJaWYgKCh0eXBlICYgTVNSX1RZUEVfVykgJiYKKwkgICAg a3ZtaV9tb25pdG9yX21zcndfaW50ZXJjZXB0KHZjcHUsIG1zciwgZmFsc2UpKQorCQl0eXBlICY9 IH5NU1JfVFlQRV9XOworI2VuZGlmIC8qIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTiAqLworCiAJ aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoJmVuYWJsZV9ldm1jcykpCiAJCWV2bWNzX3RvdWNo X21zcl9iaXRtYXAoKTsKIApAQCAtMzg0Myw2ICszODQ5LDExIEBAIHZvaWQgdm14X2VuYWJsZV9p bnRlcmNlcHRfZm9yX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIGludCB0eXBl KQogCWlmICghY3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKQogCQlyZXR1cm47CiAKKyNpZmRlZiBD T05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04KKwlpZiAodHlwZSAmIE1TUl9UWVBFX1cpCisJCWt2bWlf bW9uaXRvcl9tc3J3X2ludGVyY2VwdCh2Y3B1LCBtc3IsIHRydWUpOworI2VuZGlmIC8qIENPTkZJ R19LVk1fSU5UUk9TUEVDVElPTiAqLworCiAJaWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoJmVu YWJsZV9ldm1jcykpCiAJCWV2bWNzX3RvdWNoX21zcl9iaXRtYXAoKTsKIApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5n IGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=