From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 56/92] kvm: x86: block any attempt to disable MSR interception if tracked by introspection Date: Fri, 9 Aug 2019 19:00:11 +0300 Message-ID: <20190809160047.8319-57-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , Joerg Roedel , Sean Christopherson , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= , Jim Mattson List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTmljdciZb3IgQ8OuyJt1IDxuY2l0dUBiaXRkZWZlbmRlci5jb20+CgpJbnRlcmNlcHQg YWxsIGNhbGxzIHRoYXQgbWlnaHQgZGlzYWJsZSB0aGUgTVNSIGludGVyY2VwdGlvbiAod3JpdGVz KSBhbmQKZG8gbm90aGluZyBpZiB0aGF0IHNwZWNpZmljIE1TUiBpcyBjdXJyZW50bHkgdHJhY2tl ZCBieSB0aGUgaW50cm9zcGVjdGlvbgp0b29sLgoKQ0M6IFNlYW4gQ2hyaXN0b3BoZXJzb24gPHNl YW4uai5jaHJpc3RvcGhlcnNvbkBpbnRlbC5jb20+CkNDOiBKaW0gTWF0dHNvbiA8am1hdHRzb25A Z29vZ2xlLmNvbT4KQ0M6IEpvZXJnIFJvZWRlbCA8am9yb0A4Ynl0ZXMub3JnPgpDQzogVml0YWx5 IEt1em5ldHNvdiA8dmt1em5ldHNAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogTmljdciZb3Ig Q8OuyJt1IDxuY2l0dUBiaXRkZWZlbmRlci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExh esSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9r dm1pX2hvc3QuaCB8ICA2ICsrKwogYXJjaC94ODYva3ZtL2t2bWkuYyAgICAgICAgICAgICAgfCAy NSArKysrKysrKysrKysrCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgICAgICAgICAgICAgICB8IDMzICsr KysrKysrKystLS0tLS0tCiBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jICAgICAgICAgICB8IDYzICsr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDg4IGluc2Vy dGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmgKaW5kZXgg ODI4NWQxZWIwZGI2Li44NmQ5MGI3YmVkODQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCkBA IC0xMiw2ICsxMiw3IEBAIHN0cnVjdCBrdm1pX2FyY2hfbWVtX2FjY2VzcyB7CiAjaWZkZWYgQ09O RklHX0tWTV9JTlRST1NQRUNUSU9OCiAKIGJvb2wga3ZtaV9tc3JfZXZlbnQoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcik7Citib29sIGt2bWlfbW9uaXRvcmVkX21z cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IpOwogYm9vbCBrdm1pX2NyX2V2ZW50KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGNyLAogCQkgICB1bnNpZ25lZCBsb25n IG9sZF92YWx1ZSwgdW5zaWduZWQgbG9uZyAqbmV3X3ZhbHVlKTsKIApAQCAtMjIsNiArMjMsMTEg QEAgc3RhdGljIGlubGluZSBib29sIGt2bWlfbXNyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgc3RydWN0IG1zcl9kYXRhICptc3IpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpbmxp bmUgYm9vbCBrdm1pX21vbml0b3JlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNy KQoreworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGt2bWlfY3JfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgY3IsCiAJCQkJIHVuc2lnbmVk IGxvbmcgb2xkX3ZhbHVlLAogCQkJCSB1bnNpZ25lZCBsb25nICpuZXdfdmFsdWUpCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2bWkuYwppbmRleCA1ZGJh NGY4N2FmZWYuLmZjNjk1NmI1MGRhMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYwor KysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC0xMzYsNiArMTM2LDMxIEBAIGJvb2wga3ZtaV9t c3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcikKIAly ZXR1cm4gcmV0OwogfQogCitib29sIGt2bWlfbW9uaXRvcmVkX21zcihzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHUzMiBtc3IpCit7CisJc3RydWN0IGt2bWkgKmlrdm07CisJYm9vbCByZXQgPSBmYWxz ZTsKKworCWlmICghdmNwdSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWt2bSA9IGt2bWlfZ2V0KHZj cHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAodGVzdF9tc3Jf bWFzayh2Y3B1LCBtc3IpKSB7CisJCWt2bWlfd2Fybl9vbmNlKGlrdm0sCisJCQkgICAgICAgIlRy eWluZyB0byBkaXNhYmxlIHdyaXRlIGludGVyY2VwdGlvbiBmb3IgTVNSICV4XG4iLAorCQkJICAg ICAgIG1zcik7CisJCXJldCA9IHRydWU7CisJfQorCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKKwor CXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGt2bWlfbW9uaXRvcmVkX21zcik7CisKIHN0 YXRpYyB2b2lkICphbGxvY19nZXRfcmVnaXN0ZXJzX3JlcGx5KGNvbnN0IHN0cnVjdCBrdm1pX21z Z19oZHIgKm1zZywKIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGt2bWlfZ2V0X3JlZ2lzdGVycyAq cmVxLAogCQkJCSAgICAgICBzaXplX3QgKnJwbF9zaXplKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv a3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS5jCmluZGV4IGNkYjMxNTU3ODk3OS4uZTQ2YTRj NDIzNTQ1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtLmMKKysrIGIvYXJjaC94ODYva3Zt L3N2bS5jCkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5lIHByX2ZtdChmbXQpICJTVk06ICIgZm10 CiAKICNpbmNsdWRlIDxsaW51eC9rdm1faG9zdC5oPgorI2luY2x1ZGUgPGFzbS9rdm1pX2hvc3Qu aD4KIAogI2luY2x1ZGUgImlycS5oIgogI2luY2x1ZGUgIm1tdS5oIgpAQCAtMTA0OSwxMyArMTA1 MCwxOSBAQCBzdGF0aWMgYm9vbCBtc3Jfd3JpdGVfaW50ZXJjZXB0ZWQoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1LCB1bnNpZ25lZCBtc3IpCiAJcmV0dXJuICEhdGVzdF9iaXQoYml0X3dyaXRlLCAgJnRt cCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldF9tc3JfaW50ZXJjZXB0aW9uKHUzMiAqbXNycG0sIHVu c2lnbmVkIG1zciwKK3N0YXRpYyB2b2lkIHNldF9tc3JfaW50ZXJjZXB0aW9uKHN0cnVjdCB2Y3B1 X3N2bSAqc3ZtLAorCQkJCSB1MzIgKm1zcnBtLCB1bnNpZ25lZCBpbnQgbXNyLAogCQkJCSBpbnQg cmVhZCwgaW50IHdyaXRlKQogewogCXU4IGJpdF9yZWFkLCBiaXRfd3JpdGU7CiAJdW5zaWduZWQg bG9uZyB0bXA7CiAJdTMyIG9mZnNldDsKIAorI2lmZGVmIENPTkZJR19LVk1fSU5UUk9TUEVDVElP TgorCWlmICghd3JpdGUgJiYga3ZtaV9tb25pdG9yZWRfbXNyKCZzdm0tPnZjcHUsIG1zcikpCisJ CXJldHVybjsKKyNlbmRpZiAvKiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04gKi8KKwogCS8qCiAJ ICogSWYgdGhpcyB3YXJuaW5nIHRyaWdnZXJzIGV4dGVuZCB0aGUgZGlyZWN0X2FjY2Vzc19tc3Jz IGxpc3QgYXQgdGhlCiAJICogYmVnaW5uaW5nIG9mIHRoZSBmaWxlCkBAIC0xMDg1LDcgKzEwOTIs NyBAQCBzdGF0aWMgdm9pZCBzdm1fdmNwdV9pbml0X21zcnBtKHUzMiAqbXNycG0pCiAJCWlmICgh ZGlyZWN0X2FjY2Vzc19tc3JzW2ldLmFsd2F5cykKIAkJCWNvbnRpbnVlOwogCi0JCXNldF9tc3Jf aW50ZXJjZXB0aW9uKG1zcnBtLCBkaXJlY3RfYWNjZXNzX21zcnNbaV0uaW5kZXgsIDEsIDEpOwor CQlzZXRfbXNyX2ludGVyY2VwdGlvbihOVUxMLCBtc3JwbSwgZGlyZWN0X2FjY2Vzc19tc3JzW2ld LmluZGV4LCAxLCAxKTsKIAl9CiB9CiAKQEAgLTExMzcsMTAgKzExNDQsMTAgQEAgc3RhdGljIHZv aWQgc3ZtX2VuYWJsZV9sYnJ2KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCXUzMiAqbXNycG0gPSBz dm0tPm1zcnBtOwogCiAJc3ZtLT52bWNiLT5jb250cm9sLnZpcnRfZXh0IHw9IExCUl9DVExfRU5B QkxFX01BU0s7Ci0Jc2V0X21zcl9pbnRlcmNlcHRpb24obXNycG0sIE1TUl9JQTMyX0xBU1RCUkFO Q0hGUk9NSVAsIDEsIDEpOwotCXNldF9tc3JfaW50ZXJjZXB0aW9uKG1zcnBtLCBNU1JfSUEzMl9M QVNUQlJBTkNIVE9JUCwgMSwgMSk7Ci0Jc2V0X21zcl9pbnRlcmNlcHRpb24obXNycG0sIE1TUl9J QTMyX0xBU1RJTlRGUk9NSVAsIDEsIDEpOwotCXNldF9tc3JfaW50ZXJjZXB0aW9uKG1zcnBtLCBN U1JfSUEzMl9MQVNUSU5UVE9JUCwgMSwgMSk7CisJc2V0X21zcl9pbnRlcmNlcHRpb24oc3ZtLCBt c3JwbSwgTVNSX0lBMzJfTEFTVEJSQU5DSEZST01JUCwgMSwgMSk7CisJc2V0X21zcl9pbnRlcmNl cHRpb24oc3ZtLCBtc3JwbSwgTVNSX0lBMzJfTEFTVEJSQU5DSFRPSVAsIDEsIDEpOworCXNldF9t c3JfaW50ZXJjZXB0aW9uKHN2bSwgbXNycG0sIE1TUl9JQTMyX0xBU1RJTlRGUk9NSVAsIDEsIDEp OworCXNldF9tc3JfaW50ZXJjZXB0aW9uKHN2bSwgbXNycG0sIE1TUl9JQTMyX0xBU1RJTlRUT0lQ LCAxLCAxKTsKIH0KIAogc3RhdGljIHZvaWQgc3ZtX2Rpc2FibGVfbGJydihzdHJ1Y3QgdmNwdV9z dm0gKnN2bSkKQEAgLTExNDgsMTAgKzExNTUsMTAgQEAgc3RhdGljIHZvaWQgc3ZtX2Rpc2FibGVf bGJydihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSkKIAl1MzIgKm1zcnBtID0gc3ZtLT5tc3JwbTsKIAog CXN2bS0+dm1jYi0+Y29udHJvbC52aXJ0X2V4dCAmPSB+TEJSX0NUTF9FTkFCTEVfTUFTSzsKLQlz ZXRfbXNyX2ludGVyY2VwdGlvbihtc3JwbSwgTVNSX0lBMzJfTEFTVEJSQU5DSEZST01JUCwgMCwg MCk7Ci0Jc2V0X21zcl9pbnRlcmNlcHRpb24obXNycG0sIE1TUl9JQTMyX0xBU1RCUkFOQ0hUT0lQ LCAwLCAwKTsKLQlzZXRfbXNyX2ludGVyY2VwdGlvbihtc3JwbSwgTVNSX0lBMzJfTEFTVElOVEZS T01JUCwgMCwgMCk7Ci0Jc2V0X21zcl9pbnRlcmNlcHRpb24obXNycG0sIE1TUl9JQTMyX0xBU1RJ TlRUT0lQLCAwLCAwKTsKKwlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0sIG1zcnBtLCBNU1JfSUEz Ml9MQVNUQlJBTkNIRlJPTUlQLCAwLCAwKTsKKwlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0sIG1z cnBtLCBNU1JfSUEzMl9MQVNUQlJBTkNIVE9JUCwgMCwgMCk7CisJc2V0X21zcl9pbnRlcmNlcHRp b24oc3ZtLCBtc3JwbSwgTVNSX0lBMzJfTEFTVElOVEZST01JUCwgMCwgMCk7CisJc2V0X21zcl9p bnRlcmNlcHRpb24oc3ZtLCBtc3JwbSwgTVNSX0lBMzJfTEFTVElOVFRPSVAsIDAsIDApOwogfQog CiBzdGF0aWMgdm9pZCBkaXNhYmxlX25taV9zaW5nbGVzdGVwKHN0cnVjdCB2Y3B1X3N2bSAqc3Zt KQpAQCAtNDI5MCw3ICs0Mjk3LDcgQEAgc3RhdGljIGludCBzdm1fc2V0X21zcihzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQogCQkgKiBXZSB1cGRhdGUgdGhlIEwx IE1TUiBiaXQgYXMgd2VsbCBzaW5jZSBpdCB3aWxsIGVuZCB1cAogCQkgKiB0b3VjaGluZyB0aGUg TVNSIGFueXdheSBub3cuCiAJCSAqLwotCQlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0tPm1zcnBt LCBNU1JfSUEzMl9TUEVDX0NUUkwsIDEsIDEpOworCQlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0s IHN2bS0+bXNycG0sIE1TUl9JQTMyX1NQRUNfQ1RSTCwgMSwgMSk7CiAJCWJyZWFrOwogCWNhc2Ug TVNSX0lBMzJfUFJFRF9DTUQ6CiAJCWlmICghbXNyLT5ob3N0X2luaXRpYXRlZCAmJgpAQCAtNDMw Niw3ICs0MzEzLDcgQEAgc3RhdGljIGludCBzdm1fc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQogCQl3cm1zcmwoTVNSX0lBMzJfUFJFRF9DTUQsIFBS RURfQ01EX0lCUEIpOwogCQlpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkKIAkJCWJyZWFrOwotCQlz ZXRfbXNyX2ludGVyY2VwdGlvbihzdm0tPm1zcnBtLCBNU1JfSUEzMl9QUkVEX0NNRCwgMCwgMSk7 CisJCXNldF9tc3JfaW50ZXJjZXB0aW9uKHN2bSwgc3ZtLT5tc3JwbSwgTVNSX0lBMzJfUFJFRF9D TUQsIDAsIDEpOwogCQlicmVhazsKIAljYXNlIE1TUl9BTUQ2NF9WSVJUX1NQRUNfQ1RSTDoKIAkJ aWYgKCFtc3ItPmhvc3RfaW5pdGlhdGVkICYmCkBAIC03MTA5LDcgKzcxMTYsNyBAQCBzdGF0aWMg dm9pZCBzdm1fbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGlu dCBtc3IsCiAJICogcmVhZCBhbmQgd3JpdGUuIFRoZSBiZXN0IHdheSB3aWxsIGJlIHRvIGdldCBo ZXJlIHRoZSBjdXJyZW50CiAJICogYml0IHN0YXR1cyBmb3IgcmVhZCBhbmQgc2VuZCB0aGF0IHZh bHVlIGFzIGFyZ3VtZW50LgogCSAqLwotCXNldF9tc3JfaW50ZXJjZXB0aW9uKG1zcnBtLCBtc3Is IGVuYWJsZSwgZW5hYmxlKTsKKwlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0sIG1zcnBtLCBtc3Is IGVuYWJsZSwgZW5hYmxlKTsKIH0KIAogc3RhdGljIGJvb2wgc3ZtX25lc3RlZF9wYWdlZmF1bHQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXgu YyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmMKaW5kZXggMDMwNmM3ZWYzMTU4Li5mZmY0MWFkY2Rm ZmUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMKKysrIGIvYXJjaC94ODYva3Zt L3ZteC92bXguYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2hydGltZXIuaD4K ICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9rdm1faG9zdC5oPgor I2luY2x1ZGUgPGFzbS9rdm1pX2hvc3QuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNp bmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZpY2V0 YWJsZS5oPgpAQCAtMzM2LDcgKzMzNyw4IEBAIG1vZHVsZV9wYXJhbV9jYih2bWVudHJ5X2wxZF9m bHVzaCwgJnZtZW50cnlfbDFkX2ZsdXNoX29wcywgTlVMTCwgMDY0NCk7CiAKIHN0YXRpYyBib29s IGd1ZXN0X3N0YXRlX3ZhbGlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBzdGF0aWMgdTMyIHZt eF9zZWdtZW50X2FjY2Vzc19yaWdodHMoc3RydWN0IGt2bV9zZWdtZW50ICp2YXIpOwotc3RhdGlj IF9fYWx3YXlzX2lubGluZSB2b2lkIHZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHVuc2ln bmVkIGxvbmcgKm1zcl9iaXRtYXAsCitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdm14X2Rp c2FibGVfaW50ZXJjZXB0X2Zvcl9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAorCQkJCQkJCSAg dW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcCwKIAkJCQkJCQkgIHUzMiBtc3IsIGludCB0eXBlKTsK IAogdm9pZCB2bXhfdm1leGl0KHZvaWQpOwpAQCAtMTg2Miw3ICsxODY0LDcgQEAgc3RhdGljIGlu dCB2bXhfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNy X2luZm8pCiAJCSAqIGluIHRoZSBtZXJnaW5nLiBXZSB1cGRhdGUgdGhlIHZtY3MwMSBoZXJlIGZv ciBMMSBhcyB3ZWxsCiAJCSAqIHNpbmNlIGl0IHdpbGwgZW5kIHVwIHRvdWNoaW5nIHRoZSBNU1Ig YW55d2F5IG5vdy4KIAkJICovCi0JCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHZteC0+ dm1jczAxLm1zcl9iaXRtYXAsCisJCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHZjcHUs IHZteC0+dm1jczAxLm1zcl9iaXRtYXAsCiAJCQkJCSAgICAgIE1TUl9JQTMyX1NQRUNfQ1RSTCwK IAkJCQkJICAgICAgTVNSX1RZUEVfUlcpOwogCQlicmVhazsKQEAgLTE4OTAsNyArMTg5Miw3IEBA IHN0YXRpYyBpbnQgdm14X3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNy X2RhdGEgKm1zcl9pbmZvKQogCQkgKiB2bWNzMDIubXNyX2JpdG1hcCBoZXJlIHNpbmNlIGl0IGdl dHMgY29tcGxldGVseSBvdmVyd3JpdHRlbgogCQkgKiBpbiB0aGUgbWVyZ2luZy4KIAkJICovCi0J CXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHZteC0+dm1jczAxLm1zcl9iaXRtYXAsIE1T Ul9JQTMyX1BSRURfQ01ELAorCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2Y3B1LCB2 bXgtPnZtY3MwMS5tc3JfYml0bWFwLCBNU1JfSUEzMl9QUkVEX0NNRCwKIAkJCQkJICAgICAgTVNS X1RZUEVfVyk7CiAJCWJyZWFrOwogCWNhc2UgTVNSX0lBMzJfQVJDSF9DQVBBQklMSVRJRVM6CkBA IC0zNDYzLDcgKzM0NjUsOCBAQCB2b2lkIGZyZWVfdnBpZChpbnQgdnBpZCkKIAlzcGluX3VubG9j aygmdm14X3ZwaWRfbG9jayk7CiB9CiAKLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bXhf ZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih1bnNpZ25lZCBsb25nICptc3JfYml0bWFwLAorc3Rh dGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJCQkJCQkgIHVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXAs CiAJCQkJCQkJICB1MzIgbXNyLCBpbnQgdHlwZSkKIHsKIAlpbnQgZiA9IHNpemVvZih1bnNpZ25l ZCBsb25nKTsKQEAgLTM0NzEsNiArMzQ3NCwxMSBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZv aWQgdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IodW5zaWduZWQgbG9uZyAqbXNyX2JpdAog CWlmICghY3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKQogCQlyZXR1cm47CiAKKyNpZmRlZiBDT05G SUdfS1ZNX0lOVFJPU1BFQ1RJT04KKwlpZiAoKHR5cGUgJiBNU1JfVFlQRV9XKSAmJiBrdm1pX21v bml0b3JlZF9tc3IodmNwdSwgbXNyKSkKKwkJcmV0dXJuOworI2VuZGlmIC8qIENPTkZJR19LVk1f SU5UUk9TUEVDVElPTiAqLworCiAJaWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoJmVuYWJsZV9l dm1jcykpCiAJCWV2bWNzX3RvdWNoX21zcl9iaXRtYXAoKTsKIApAQCAtMzUzOSwxMyArMzU0Nywx NCBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdm14X2VuYWJsZV9pbnRlcmNlcHRfZm9y X21zcih1bnNpZ25lZCBsb25nICptc3JfYml0bQogCX0KIH0KIAotc3RhdGljIF9fYWx3YXlzX2lu bGluZSB2b2lkIHZteF9zZXRfaW50ZXJjZXB0X2Zvcl9tc3IodW5zaWduZWQgbG9uZyAqbXNyX2Jp dG1hcCwKLQkJCSAgICAgCQkJICAgICAgdTMyIG1zciwgaW50IHR5cGUsIGJvb2wgdmFsdWUpCitz dGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdm14X3NldF9pbnRlcmNlcHRfZm9yX21zcihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsCisJCQkJCQkgICAgICB1bnNpZ25lZCBsb25nICptc3JfYml0bWFw LAorCQkJCQkJICAgICAgdTMyIG1zciwgaW50IHR5cGUsIGJvb2wgdmFsdWUpCiB7CiAJaWYgKHZh bHVlKQogCQl2bXhfZW5hYmxlX2ludGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAsIG1zciwgdHlw ZSk7CiAJZWxzZQotCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBt c3IsIHR5cGUpOworCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2Y3B1LCBtc3JfYml0 bWFwLCBtc3IsIHR5cGUpOwogfQogCiBzdGF0aWMgdTggdm14X21zcl9iaXRtYXBfbW9kZShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCkBAIC0zNTYzLDcgKzM1NzIsOCBAQCBzdGF0aWMgdTggdm14X21z cl9iaXRtYXBfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcmV0dXJuIG1vZGU7CiB9CiAK LXN0YXRpYyB2b2lkIHZteF91cGRhdGVfbXNyX2JpdG1hcF94MmFwaWModW5zaWduZWQgbG9uZyAq bXNyX2JpdG1hcCwKK3N0YXRpYyB2b2lkIHZteF91cGRhdGVfbXNyX2JpdG1hcF94MmFwaWMoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LAorCQkJCQkgdW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcCwKIAkJ CQkJIHU4IG1vZGUpCiB7CiAJaW50IG1zcjsKQEAgLTM1NzksMTEgKzM1ODksMTEgQEAgc3RhdGlj IHZvaWQgdm14X3VwZGF0ZV9tc3JfYml0bWFwX3gyYXBpYyh1bnNpZ25lZCBsb25nICptc3JfYml0 bWFwLAogCQkgKiBUUFIgcmVhZHMgYW5kIHdyaXRlcyBjYW4gYmUgdmlydHVhbGl6ZWQgZXZlbiBp ZiB2aXJ0dWFsIGludGVycnVwdAogCQkgKiBkZWxpdmVyeSBpcyBub3QgaW4gdXNlLgogCQkgKi8K LQkJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgWDJBUElDX01TUihB UElDX1RBU0tQUkkpLCBNU1JfVFlQRV9SVyk7CisJCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3Jf bXNyKHZjcHUsIG1zcl9iaXRtYXAsIFgyQVBJQ19NU1IoQVBJQ19UQVNLUFJJKSwgTVNSX1RZUEVf UlcpOwogCQlpZiAobW9kZSAmIE1TUl9CSVRNQVBfTU9ERV9YMkFQSUNfQVBJQ1YpIHsKIAkJCXZt eF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgWDJBUElDX01TUihBUElDX1RN Q0NUKSwgTVNSX1RZUEVfUik7Ci0JCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3Jf Yml0bWFwLCBYMkFQSUNfTVNSKEFQSUNfRU9JKSwgTVNSX1RZUEVfVyk7Ci0JCQl2bXhfZGlzYWJs ZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBYMkFQSUNfTVNSKEFQSUNfU0VMRl9JUEkp LCBNU1JfVFlQRV9XKTsKKwkJCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHZjcHUsIG1z cl9iaXRtYXAsIFgyQVBJQ19NU1IoQVBJQ19FT0kpLCBNU1JfVFlQRV9XKTsKKwkJCXZteF9kaXNh YmxlX2ludGVyY2VwdF9mb3JfbXNyKHZjcHUsIG1zcl9iaXRtYXAsIFgyQVBJQ19NU1IoQVBJQ19T RUxGX0lQSSksIE1TUl9UWVBFX1cpOwogCQl9CiAJfQogfQpAQCAtMzU5OSwyOSArMzYwOSwzMCBA QCB2b2lkIHZteF91cGRhdGVfbXNyX2JpdG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJl dHVybjsKIAogCWlmIChjaGFuZ2VkICYgKE1TUl9CSVRNQVBfTU9ERV9YMkFQSUMgfCBNU1JfQklU TUFQX01PREVfWDJBUElDX0FQSUNWKSkKLQkJdm14X3VwZGF0ZV9tc3JfYml0bWFwX3gyYXBpYyht c3JfYml0bWFwLCBtb2RlKTsKKwkJdm14X3VwZGF0ZV9tc3JfYml0bWFwX3gyYXBpYyh2Y3B1LCBt c3JfYml0bWFwLCBtb2RlKTsKIAogCXZteC0+bXNyX2JpdG1hcF9tb2RlID0gbW9kZTsKIH0KIAog dm9pZCBwdF91cGRhdGVfaW50ZXJjZXB0X2Zvcl9tc3Ioc3RydWN0IHZjcHVfdm14ICp2bXgpCiB7 CisJc3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gJnZteC0+dmNwdTsKIAl1bnNpZ25lZCBsb25nICpt c3JfYml0bWFwID0gdm14LT52bWNzMDEubXNyX2JpdG1hcDsKIAlib29sIGZsYWcgPSAhKHZteC0+ cHRfZGVzYy5ndWVzdC5jdGwgJiBSVElUX0NUTF9UUkFDRUVOKTsKIAl1MzIgaTsKIAotCXZteF9z ZXRfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgTVNSX0lBMzJfUlRJVF9TVEFUVVMsCisJ dm14X3NldF9pbnRlcmNlcHRfZm9yX21zcih2Y3B1LCBtc3JfYml0bWFwLCBNU1JfSUEzMl9SVElU X1NUQVRVUywKIAkJCQkJCQlNU1JfVFlQRV9SVywgZmxhZyk7Ci0Jdm14X3NldF9pbnRlcmNlcHRf Zm9yX21zcihtc3JfYml0bWFwLCBNU1JfSUEzMl9SVElUX09VVFBVVF9CQVNFLAorCXZteF9zZXRf aW50ZXJjZXB0X2Zvcl9tc3IodmNwdSwgbXNyX2JpdG1hcCwgTVNSX0lBMzJfUlRJVF9PVVRQVVRf QkFTRSwKIAkJCQkJCQlNU1JfVFlQRV9SVywgZmxhZyk7Ci0Jdm14X3NldF9pbnRlcmNlcHRfZm9y X21zcihtc3JfYml0bWFwLCBNU1JfSUEzMl9SVElUX09VVFBVVF9NQVNLLAorCXZteF9zZXRfaW50 ZXJjZXB0X2Zvcl9tc3IodmNwdSwgbXNyX2JpdG1hcCwgTVNSX0lBMzJfUlRJVF9PVVRQVVRfTUFT SywKIAkJCQkJCQlNU1JfVFlQRV9SVywgZmxhZyk7Ci0Jdm14X3NldF9pbnRlcmNlcHRfZm9yX21z cihtc3JfYml0bWFwLCBNU1JfSUEzMl9SVElUX0NSM19NQVRDSCwKKwl2bXhfc2V0X2ludGVyY2Vw dF9mb3JfbXNyKHZjcHUsIG1zcl9iaXRtYXAsIE1TUl9JQTMyX1JUSVRfQ1IzX01BVENILAogCQkJ CQkJCU1TUl9UWVBFX1JXLCBmbGFnKTsKIAlmb3IgKGkgPSAwOyBpIDwgdm14LT5wdF9kZXNjLmFk ZHJfcmFuZ2U7IGkrKykgewotCQl2bXhfc2V0X2ludGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAs CisJCXZteF9zZXRfaW50ZXJjZXB0X2Zvcl9tc3IodmNwdSwgbXNyX2JpdG1hcCwKIAkJCU1TUl9J QTMyX1JUSVRfQUREUjBfQSArIGkgKiAyLCBNU1JfVFlQRV9SVywgZmxhZyk7Ci0JCXZteF9zZXRf aW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwKKwkJdm14X3NldF9pbnRlcmNlcHRfZm9yX21z cih2Y3B1LCBtc3JfYml0bWFwLAogCQkJTVNSX0lBMzJfUlRJVF9BRERSMF9CICsgaSAqIDIsIE1T Ul9UWVBFX1JXLCBmbGFnKTsKIAl9CiB9CkBAIC02ODIzLDEzICs2ODM0LDEzIEBAIHN0YXRpYyBz dHJ1Y3Qga3ZtX3ZjcHUgKnZteF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVk IGludCBpZCkKIAkJZ290byBmcmVlX21zcnM7CiAKIAltc3JfYml0bWFwID0gdm14LT52bWNzMDEu bXNyX2JpdG1hcDsKLQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBN U1JfSUEzMl9UU0MsIE1TUl9UWVBFX1IpOwotCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNy KG1zcl9iaXRtYXAsIE1TUl9GU19CQVNFLCBNU1JfVFlQRV9SVyk7Ci0Jdm14X2Rpc2FibGVfaW50 ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgTVNSX0dTX0JBU0UsIE1TUl9UWVBFX1JXKTsKLQl2 bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBNU1JfS0VSTkVMX0dTX0JB U0UsIE1TUl9UWVBFX1JXKTsKLQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0 bWFwLCBNU1JfSUEzMl9TWVNFTlRFUl9DUywgTVNSX1RZUEVfUlcpOwotCXZteF9kaXNhYmxlX2lu dGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAsIE1TUl9JQTMyX1NZU0VOVEVSX0VTUCwgTVNSX1RZ UEVfUlcpOwotCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAsIE1TUl9J QTMyX1NZU0VOVEVSX0VJUCwgTVNSX1RZUEVfUlcpOworCXZteF9kaXNhYmxlX2ludGVyY2VwdF9m b3JfbXNyKE5VTEwsIG1zcl9iaXRtYXAsIE1TUl9JQTMyX1RTQywgTVNSX1RZUEVfUik7CisJdm14 X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoTlVMTCwgbXNyX2JpdG1hcCwgTVNSX0ZTX0JBU0Us IE1TUl9UWVBFX1JXKTsKKwl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihOVUxMLCBtc3Jf Yml0bWFwLCBNU1JfR1NfQkFTRSwgTVNSX1RZUEVfUlcpOworCXZteF9kaXNhYmxlX2ludGVyY2Vw dF9mb3JfbXNyKE5VTEwsIG1zcl9iaXRtYXAsIE1TUl9LRVJORUxfR1NfQkFTRSwgTVNSX1RZUEVf UlcpOworCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKE5VTEwsIG1zcl9iaXRtYXAsIE1T Ul9JQTMyX1NZU0VOVEVSX0NTLCBNU1JfVFlQRV9SVyk7CisJdm14X2Rpc2FibGVfaW50ZXJjZXB0 X2Zvcl9tc3IoTlVMTCwgbXNyX2JpdG1hcCwgTVNSX0lBMzJfU1lTRU5URVJfRVNQLCBNU1JfVFlQ RV9SVyk7CisJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoTlVMTCwgbXNyX2JpdG1hcCwg TVNSX0lBMzJfU1lTRU5URVJfRUlQLCBNU1JfVFlQRV9SVyk7CiAJdm14LT5tc3JfYml0bWFwX21v ZGUgPSAwOwogCiAJdm14LT5sb2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsKQEAgLTc3OTAsNyAr NzgwMSw3IEBAIHN0YXRpYyB2b2lkIHZteF9tc3JfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgdW5zaWduZWQgaW50IG1zciwKIAlzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2 Y3B1KTsKIAl1bnNpZ25lZCBsb25nICptc3JfYml0bWFwID0gdm14LT52bWNzMDEubXNyX2JpdG1h cDsKIAotCXZteF9zZXRfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgbXNyLCBNU1JfVFlQ RV9XLCBlbmFibGUpOworCXZteF9zZXRfaW50ZXJjZXB0X2Zvcl9tc3IodmNwdSwgbXNyX2JpdG1h cCwgbXNyLCBNU1JfVFlQRV9XLCBlbmFibGUpOwogfQogCiBzdGF0aWMgdm9pZCB2bXhfY3IzX3dy aXRlX2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmly dHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51 eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=