From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 67/92] kvm: introspection: use single stepping on unimplemented instructions Date: Fri, 9 Aug 2019 19:00:22 +0300 Message-ID: <20190809160047.8319-68-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 , 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?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKT24gZW11bGF0aW9u IGZhaWx1cmVzLCB3ZSBub3RpZnkgdGhlIGludHJvc3BlY3Rpb24gdG9vbCBmb3IgcmVhZC93cml0 ZQpvcGVyYXRpb25zIGlmIG5lZWRlZC4gVW5sZXNzIGl0IHJlc3BvbmRzIHdpdGggUkVUUlkgKHRv IHJlLWVudGVyIGd1ZXN0KSwKd2UgY29udGludWUgc2luZ2xlIHN0ZXBwaW5nIHRoZSB2Q1BVLgoK U2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgpDby1k ZXZlbG9wZWQtYnk6IE5pY3XImW9yIEPDrsibdSA8bmNpdHVAYml0ZGVmZW5kZXIuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBOaWN1yJlvciBDw67Im3UgPG5jaXR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVk LW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIGFy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggfCAgNSArKysKIGFyY2gveDg2L2luY2x1ZGUv YXNtL3ZteC5oICAgICAgfCAgMiArKwogYXJjaC94ODYva3ZtL2t2bWkuYyAgICAgICAgICAgICB8 IDIxICsrKysrKysrKysrKwogYXJjaC94ODYva3ZtL21tdS5jICAgICAgICAgICAgICB8ICA1ICsr KwogYXJjaC94ODYva3ZtL3N2bS5jICAgICAgICAgICAgICB8ICA4ICsrKysrCiBhcmNoL3g4Ni9r dm0vdm14L3ZteC5jICAgICAgICAgIHwgMTMgKysrKysrLS0KIGFyY2gveDg2L2t2bS94ODYuYyAg ICAgICAgICAgICAgfCA1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGluY2x1 ZGUvbGludXgva3ZtaS5oICAgICAgICAgICAgfCAgNCArKysKIHZpcnQva3ZtL2t2bWkuYyAgICAg ICAgICAgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdmlydC9r dm0va3ZtaV9pbnQuaCAgICAgICAgICAgICB8ICAxICsKIDEwIGZpbGVzIGNoYW5nZWQsIDE2OSBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4 IDYwZTJjMjk4ZDQ2OS4uMjM5MjY3OGRkZTQ2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9rdm1faG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAg LTc3MCw2ICs3NzAsOSBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7CiAJLyogc2V0IGF0IEVQVCB2 aW9sYXRpb24gYXQgdGhpcyBwb2ludCAqLwogCXVuc2lnbmVkIGxvbmcgZXhpdF9xdWFsaWZpY2F0 aW9uOwogCisJLyogI1BGIHRyYW5zbGF0ZWQgZXJyb3IgY29kZSBmcm9tIEVQVC9OUFQgZXhpdCBy ZWFzb24gKi8KKwl1NjQgZXJyb3JfY29kZTsKKwogCS8qIHB2IHJlbGF0ZWQgaG9zdCBzcGVjaWZp YyBpbmZvICovCiAJc3RydWN0IHsKIAkJYm9vbCBwdl91bmhhbHRlZDsKQEAgLTEwMTYsNiArMTAx OSw3IEBAIHN0cnVjdCBrdm1feDg2X29wcyB7CiAJdm9pZCAoKm1zcl9pbnRlcmNlcHQpKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwKIAkJCQlib29sIGVuYWJsZSk7CiAJ Ym9vbCAoKmRlc2NfaW50ZXJjZXB0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5hYmxl KTsKKwl1NjQgKCpmYXVsdF9nbGEpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAJdm9pZCAoKnNl dF9tdGYpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUpOwogCXZvaWQgKCpjcjNf d3JpdGVfZXhpdGluZykoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSk7CiAJYm9v bCAoKm5lc3RlZF9wYWdlZmF1bHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CkBAIC0xNjI3LDYg KzE2MzEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBrdm1fY3B1X2dldF9hcGljaWQoaW50IG1wc19j cHUpCiAKIHZvaWQga3ZtX2FyY2hfbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHVuc2lnbmVkIGludCBtc3IsCiAJCQkJYm9vbCBlbmFibGUpOwordTY0IGt2bV9tbXVfZmF1bHRf Z2xhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBib29sIGt2bV9tbXVfbmVzdGVkX3BhZ2VmYXVs dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogYm9vbCBrdm1fc3B0X2ZhdWx0KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7CiB2b2lkIGt2bV9zZXRfbXRmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9v bCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdm14LmggYi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS92bXguaAppbmRleCAxMWNhNjRjZWQ1NzguLmJjMGY1YmJkNjkyYyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdm14LmgKKysrIGIvYXJjaC94ODYvaW5j bHVkZS9hc20vdm14LmgKQEAgLTUzOCw2ICs1MzgsNyBAQCBzdHJ1Y3Qgdm14X21zcl9lbnRyeSB7 CiAjZGVmaW5lIEVQVF9WSU9MQVRJT05fUkVBREFCTEVfQklUCTMKICNkZWZpbmUgRVBUX1ZJT0xB VElPTl9XUklUQUJMRV9CSVQJNAogI2RlZmluZSBFUFRfVklPTEFUSU9OX0VYRUNVVEFCTEVfQklU CTUKKyNkZWZpbmUgRVBUX1ZJT0xBVElPTl9HTEFfVkFMSURfQklUCTcKICNkZWZpbmUgRVBUX1ZJ T0xBVElPTl9HVkFfVFJBTlNMQVRFRF9CSVQgOAogI2RlZmluZSBFUFRfVklPTEFUSU9OX0FDQ19S RUFECQkoMSA8PCBFUFRfVklPTEFUSU9OX0FDQ19SRUFEX0JJVCkKICNkZWZpbmUgRVBUX1ZJT0xB VElPTl9BQ0NfV1JJVEUJCSgxIDw8IEVQVF9WSU9MQVRJT05fQUNDX1dSSVRFX0JJVCkKQEAgLTU0 NSw2ICs1NDYsNyBAQCBzdHJ1Y3Qgdm14X21zcl9lbnRyeSB7CiAjZGVmaW5lIEVQVF9WSU9MQVRJ T05fUkVBREFCTEUJCSgxIDw8IEVQVF9WSU9MQVRJT05fUkVBREFCTEVfQklUKQogI2RlZmluZSBF UFRfVklPTEFUSU9OX1dSSVRBQkxFCQkoMSA8PCBFUFRfVklPTEFUSU9OX1dSSVRBQkxFX0JJVCkK ICNkZWZpbmUgRVBUX1ZJT0xBVElPTl9FWEVDVVRBQkxFCSgxIDw8IEVQVF9WSU9MQVRJT05fRVhF Q1VUQUJMRV9CSVQpCisjZGVmaW5lIEVQVF9WSU9MQVRJT05fR0xBX1ZBTElECQkoMSA8PCBFUFRf VklPTEFUSU9OX0dMQV9WQUxJRF9CSVQpCiAjZGVmaW5lIEVQVF9WSU9MQVRJT05fR1ZBX1RSQU5T TEFURUQJKDEgPDwgRVBUX1ZJT0xBVElPTl9HVkFfVFJBTlNMQVRFRF9CSVQpCiAKIC8qCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2bWkuYwppbmRleCBm MGFiNGJkOWViMzcuLjlkNjZjN2Q2Yzk1MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2t2bWku YworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC03NTksNiArNzU5LDI3IEBAIGludCBrdm1p X2FyY2hfY21kX2NvbnRyb2xfY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCXJldHVybiAwOwog fQogCitib29sIGlzX3VkMl9pbnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCAq ZW11bGF0aW9uX3R5cGUpCit7CisJdTggdWQyW10gPSB7MHgwRiwgMHgwQn07CisJdTggaW5zbl9s ZW4gPSB2Y3B1LT5hcmNoLmVtdWxhdGVfY3R4dC5mZXRjaC5wdHIgLQorCQkgICAgICB2Y3B1LT5h cmNoLmVtdWxhdGVfY3R4dC5mZXRjaC5kYXRhOworCisJaWYgKGluc25fbGVuICE9IHNpemVvZih1 ZDIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAobWVtY21wKHZjcHUtPmFyY2guZW11bGF0ZV9j dHh0LmZldGNoLmRhdGEsIHVkMiwgaW5zbl9sZW4pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBE byBub3QgcmVleGVjdXRlIHRoZSBVRDIgaW5zdHJ1Y3Rpb24sIGVsc2Ugd2UgbWlnaHQgZW50ZXIg dG8gYW4KKwkgKiBlbmRsZXNzIGVtdWxhdGlvbiBsb29wLiBMZXQgdGhlIGVtdWxhdG9yIGZhbGwg ZG93biB0aHJvdWdoIHRoZQorCSAqIGhhbmRsZV9lbXVsYXRpb25fZmFpbHVyZSgpIHdoaWNoIHNo YWxsIGluamVjdCB0aGUgI1VEIGV4Y2VwdGlvbi4KKwkgKi8KKwkqZW11bGF0aW9uX3R5cGUgJj0g fkVNVUxUWVBFX0FMTE9XX1JFVFJZOworCisJcmV0dXJuIHRydWU7Cit9CisKIHZvaWQga3ZtaV9h cmNoX3N0YXJ0X3NpbmdsZV9zdGVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlrdm1fc2V0 X210Zih2Y3B1LCB0cnVlKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuYyBiL2FyY2gv eDg2L2t2bS9tbXUuYwppbmRleCAwYjg1OWIxNzk3ZjYuLmMyZjg2Mzc5NzQ5NSAxMDA2NDQKLS0t IGEvYXJjaC94ODYva3ZtL21tdS5jCisrKyBiL2FyY2gveDg2L2t2bS9tbXUuYwpAQCAtNjY2Nyw2 ICs2NjY3LDExIEBAIHZvaWQga3ZtX21tdV9tb2R1bGVfZXhpdCh2b2lkKQogCW1tdV9hdWRpdF9k aXNhYmxlKCk7CiB9CiAKK3U2NCBrdm1fbW11X2ZhdWx0X2dsYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCit7CisJcmV0dXJuIGt2bV94ODZfb3BzLT5mYXVsdF9nbGEodmNwdSk7Cit9CisKIGJvb2wg a3ZtX21tdV9uZXN0ZWRfcGFnZWZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlyZXR1 cm4ga3ZtX3g4Nl9vcHMtPm5lc3RlZF9wYWdlZmF1bHQodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKaW5kZXggMzQ4MWMwMjQ3NjgwLi5j YjUzNmEyNjExZjYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0uYworKysgYi9hcmNoL3g4 Ni9rdm0vc3ZtLmMKQEAgLTI2NzUsNiArMjY3NSw4IEBAIHN0YXRpYyBpbnQgcGZfaW50ZXJjZXB0 aW9uKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCXU2NCBmYXVsdF9hZGRyZXNzID0gX19zbWVfY2xy KHN2bS0+dm1jYi0+Y29udHJvbC5leGl0X2luZm9fMik7CiAJdTY0IGVycm9yX2NvZGUgPSBzdm0t PnZtY2ItPmNvbnRyb2wuZXhpdF9pbmZvXzE7CiAKKwlzdm0tPnZjcHUuYXJjaC5lcnJvcl9jb2Rl ID0gZXJyb3JfY29kZTsKKwogCXJldHVybiBrdm1faGFuZGxlX3BhZ2VfZmF1bHQoJnN2bS0+dmNw dSwgZXJyb3JfY29kZSwgZmF1bHRfYWRkcmVzcywKIAkJCXN0YXRpY19jcHVfaGFzKFg4Nl9GRUFU VVJFX0RFQ09ERUFTU0lTVFMpID8KIAkJCXN2bS0+dm1jYi0+Y29udHJvbC5pbnNuX2J5dGVzIDog TlVMTCwKQEAgLTcxNzEsNiArNzE3MywxMSBAQCBzdGF0aWMgdm9pZCBzdm1fbXNyX2ludGVyY2Vw dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBtc3IsCiAJc2V0X21zcl9pbnRl cmNlcHRpb24oc3ZtLCBtc3JwbSwgbXNyLCBlbmFibGUsIGVuYWJsZSk7CiB9CiAKK3N0YXRpYyB1 NjQgc3ZtX2ZhdWx0X2dsYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJcmV0dXJuIH4wdWxs OworfQorCiBzdGF0aWMgYm9vbCBzdm1fbmVzdGVkX3BhZ2VmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiB7CiAJcmV0dXJuIGZhbHNlOwpAQCAtNzIzMyw2ICs3MjQwLDcgQEAgc3RhdGljIHN0 cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLmNyM193 cml0ZV9leGl0aW5nID0gc3ZtX2NyM193cml0ZV9leGl0aW5nLAogCS5tc3JfaW50ZXJjZXB0ID0g c3ZtX21zcl9pbnRlcmNlcHQsCiAJLmRlc2NfaW50ZXJjZXB0ID0gc3ZtX2Rlc2NfaW50ZXJjZXB0 LAorCS5mYXVsdF9nbGEgPSBzdm1fZmF1bHRfZ2xhLAogCS5uZXN0ZWRfcGFnZWZhdWx0ID0gc3Zt X25lc3RlZF9wYWdlZmF1bHQsCiAJLnNwdF9mYXVsdCA9IHN2bV9zcHRfZmF1bHQsCiAKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCmlu ZGV4IGYwMzY5ZDA1NzRkYy4uZGM2NDhiYTQ3ZGYzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0v dm14L3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmMKQEAgLTUxNzEsMTAgKzUxNzEs MTEgQEAgc3RhdGljIGludCBoYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCiAJCQlFUFRfVklPTEFUSU9OX0VYRUNVVEFCTEUpKQogCQkgICAgICA/IFBGRVJSX1BSRVNF TlRfTUFTSyA6IDA7CiAKLQllcnJvcl9jb2RlIHw9IChleGl0X3F1YWxpZmljYXRpb24gJiAweDEw MCkgIT0gMCA/Ci0JICAgICAgIFBGRVJSX0dVRVNUX0ZJTkFMX01BU0sgOiBQRkVSUl9HVUVTVF9Q QUdFX01BU0s7CisJZXJyb3JfY29kZSB8PSAoZXhpdF9xdWFsaWZpY2F0aW9uICYgRVBUX1ZJT0xB VElPTl9HVkFfVFJBTlNMQVRFRCkKKwkJICAgICAgPyBQRkVSUl9HVUVTVF9GSU5BTF9NQVNLIDog UEZFUlJfR1VFU1RfUEFHRV9NQVNLOwogCiAJdmNwdS0+YXJjaC5leGl0X3F1YWxpZmljYXRpb24g PSBleGl0X3F1YWxpZmljYXRpb247CisJdmNwdS0+YXJjaC5lcnJvcl9jb2RlID0gZXJyb3JfY29k ZTsKIAlyZXR1cm4ga3ZtX21tdV9wYWdlX2ZhdWx0KHZjcHUsIGdwYSwgZXJyb3JfY29kZSwgTlVM TCwgMCk7CiB9CiAKQEAgLTc4ODAsNiArNzg4MSwxMyBAQCBzdGF0aWMgdm9pZCB2bXhfY3IzX3dy aXRlX2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCS8qIFRPRE86IG5lc3RlZCA/IHZt Y3MxMi0+Y3B1X2Jhc2VkX3ZtX2V4ZWNfY29udHJvbCAqLwogfQogCitzdGF0aWMgdTY0IHZteF9m YXVsdF9nbGEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCWlmICh2Y3B1LT5hcmNoLmV4aXRf cXVhbGlmaWNhdGlvbiAmIEVQVF9WSU9MQVRJT05fR0xBX1ZBTElEKQorCQlyZXR1cm4gdm1jc19y ZWFkbChHVUVTVF9MSU5FQVJfQUREUkVTUyk7CisJcmV0dXJuIH4wdWxsOworfQorCiBzdGF0aWMg Ym9vbCB2bXhfbmVzdGVkX3BhZ2VmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJaWYg KHZjcHUtPmFyY2guZXhpdF9xdWFsaWZpY2F0aW9uICYgRVBUX1ZJT0xBVElPTl9HVkFfVFJBTlNM QVRFRCkKQEAgLTc5NDcsNiArNzk1NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgdm14 X3g4Nl9vcHMgX19yb19hZnRlcl9pbml0ID0gewogCS5tc3JfaW50ZXJjZXB0ID0gdm14X21zcl9p bnRlcmNlcHQsCiAJLmNyM193cml0ZV9leGl0aW5nID0gdm14X2NyM193cml0ZV9leGl0aW5nLAog CS5kZXNjX2ludGVyY2VwdCA9IHZteF9kZXNjX2ludGVyY2VwdCwKKwkuZmF1bHRfZ2xhID0gdm14 X2ZhdWx0X2dsYSwKIAkubmVzdGVkX3BhZ2VmYXVsdCA9IHZteF9uZXN0ZWRfcGFnZWZhdWx0LAog CS5zcHRfZmF1bHQgPSB2bXhfc3B0X2ZhdWx0LAogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v eDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggNjU4NTUzNDAyNDlhLi5kZDEwZjllMGMw NTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0veDg2 LmMKQEAgLTY1MjYsNiArNjUyNiw1MyBAQCBzdGF0aWMgYm9vbCBpc192bXdhcmVfYmFja2Rvb3Jf b3Bjb2RlKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogCXJldHVybiBmYWxzZTsKIH0K IAorLyoKKyAqIFdpdGggaW50cm9zcGVjdGlvbiBlbmFibGVkLCBlbXVsYXRpb24gZmFpbHVyZXMg dHJhbnNsYXRlIGluIGV2ZW50cyBiZWluZworICogbWlzc2VkIGJlY2F1c2UgdGhlIHJlYWQvd3Jp dGUgY2FsbGJhY2tzIGFyZSBub3QgaW52b2tlZC4gQWxsIHdlIGhhdmUgaXMKKyAqIHRoZSBmZXRj aCBldmVudCAoa3ZtX3BhZ2VfdHJhY2tfcHJlZXhlYykuIEJlbG93IHdlIHVzZSB0aGUgRVBUL05Q VCBWTUVYSVQKKyAqIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIHRoZSBldmVudHMsIGJ1dCB3aXRo b3V0IHByb3ZpZGluZyBhY2N1cmF0ZQorICogZGF0YSBhbmQgc2l6ZSAodGhlIGVtdWxhdG9yIHdv dWxkIGhhdmUgY29tcHV0ZWQgdGhvc2UpLiBJZiBhbiBpbnN0cnVjdGlvbgorICogd291bGQgaGFw cGVuIHRvIHJlYWQgYW5kIHdyaXRlIGluIHRoZSBzYW1lIHBhZ2UsIHRoZSBzZWNvbmQgZXZlbnQg d2lsbAorICogaW5pdGlhbGx5IGJlIG1pc3NlZCBhbmQgd2UgcmVseSBvbiB0aGUgcGFnZSB0cmFj a2luZyBtZWNoYW5pc20gdG8gYnJpbmcKKyAqIHVzIGJhY2sgaGVyZSB0byBzZW5kIGl0LgorICov CitzdGF0aWMgYm9vbCBrdm1fcGFnZV90cmFja19lbXVsYXRpb25fZmFpbHVyZShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIGdwYV90IGdwYSkKK3sKKwl1NjQgZXJyb3JfY29kZSA9IHZjcHUtPmFyY2gu ZXJyb3JfY29kZTsKKwlib29sIGRhdGFfcmVhZHkgPSBmYWxzZTsKKwl1OCBkYXRhID0gMDsKKwln dmFfdCBndmE7CisJYm9vbCByZXQ7CisKKwkvKiBNTUlPIGVtdWxhdGlvbiBmYWlsdXJlcyBzaG91 bGQgYmUgdHJlYXRlZCB0aGUgbm9ybWFsIHdheSAqLworCWlmICh1bmxpa2VseShlcnJvcl9jb2Rl ICYgUEZFUlJfUlNWRF9NQVNLKSkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBFUFQvTlRQIG11c3Qg YmUgZW5hYmxlZCAqLworCWlmICh1bmxpa2VseSghdmNwdS0+YXJjaC5tbXUtPmRpcmVjdF9tYXAp KQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogVGhlIEEvRCBiaXQgZW11bGF0aW9uIHNob3Vs ZCBtYWtlIHRoaXMgdGVzdCB1bm5lZWRlZCwgYnV0IGp1c3QKKwkgKiBpbiBjYXNlCisJICovCisJ aWYgKHVubGlrZWx5KChlcnJvcl9jb2RlICYgUEZFUlJfTkVTVEVEX0dVRVNUX1BBR0UpID09CisJ CSAgICAgUEZFUlJfTkVTVEVEX0dVRVNUX1BBR0UpKQorCQlyZXR1cm4gdHJ1ZTsKKworCWd2YSA9 IGt2bV9tbXVfZmF1bHRfZ2xhKHZjcHUpOworCisJaWYgKGVycm9yX2NvZGUgJiBQRkVSUl9XUklU RV9NQVNLKQorCQlyZXQgPSBrdm1fcGFnZV90cmFja19wcmV3cml0ZSh2Y3B1LCBncGEsIGd2YSwg JmRhdGEsIDApOworCWVsc2UgaWYgKGVycm9yX2NvZGUgJiBQRkVSUl9VU0VSX01BU0spCisJCXJl dCA9IGt2bV9wYWdlX3RyYWNrX3ByZXJlYWQodmNwdSwgZ3BhLCBndmEsICZkYXRhLCAwLAorCQkJ CQkgICAgICZkYXRhX3JlYWR5KTsKKwllbHNlCisJCXJldCA9IHRydWU7CisKKwlyZXR1cm4gcmV0 OworfQorCiBpbnQgeDg2X2VtdWxhdGVfaW5zdHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LAogCQkJICAgIHVuc2lnbmVkIGxvbmcgY3IyLAogCQkJICAgIGludCBlbXVsYXRpb25fdHlwZSwK QEAgLTY1NzQsOSArNjYyMSwxMyBAQCBpbnQgeDg2X2VtdWxhdGVfaW5zdHJ1Y3Rpb24oc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LAogCQkrK3ZjcHUtPnN0YXQuaW5zbl9lbXVsYXRpb247CiAJCWlmIChy ID09IEVNVUxBVElPTl9SRVRSWV9JTlNUUikKIAkJCXJldHVybiBFTVVMQVRFX0RPTkU7Ci0JCWlm IChyICE9IEVNVUxBVElPTl9PSykgIHsKKwkJaWYgKHIgIT0gRU1VTEFUSU9OX09LKSB7CiAJCQlp ZiAoZW11bGF0aW9uX3R5cGUgJiBFTVVMVFlQRV9UUkFQX1VEKQogCQkJCXJldHVybiBFTVVMQVRF X0ZBSUw7CisJCQlpZiAoIWt2bV9wYWdlX3RyYWNrX2VtdWxhdGlvbl9mYWlsdXJlKHZjcHUsIGNy MikpCisJCQkJcmV0dXJuIEVNVUxBVEVfRE9ORTsKKwkJCWlmIChrdm1pX3NpbmdsZV9zdGVwKHZj cHUsIGNyMiwgJmVtdWxhdGlvbl90eXBlKSkKKwkJCQlyZXR1cm4gRU1VTEFURV9ET05FOwogCQkJ aWYgKHJlZXhlY3V0ZV9pbnN0cnVjdGlvbih2Y3B1LCBjcjIsIHdyaXRlX2ZhdWx0X3RvX3NwdCwK IAkJCQkJCWVtdWxhdGlvbl90eXBlKSkKIAkJCQlyZXR1cm4gRU1VTEFURV9ET05FOwpAQCAtNjYy MSw2ICs2NjcyLDEwIEBAIGludCB4ODZfZW11bGF0ZV9pbnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsCiAJCXJldHVybiBFTVVMQVRFX0RPTkU7CiAKIAlpZiAociA9PSBFTVVMQVRJT05f RkFJTEVEKSB7CisJCWlmICgha3ZtX3BhZ2VfdHJhY2tfZW11bGF0aW9uX2ZhaWx1cmUodmNwdSwg Y3IyKSkKKwkJCXJldHVybiBFTVVMQVRFX0RPTkU7CisJCWlmIChrdm1pX3NpbmdsZV9zdGVwKHZj cHUsIGNyMiwgJmVtdWxhdGlvbl90eXBlKSkKKwkJCXJldHVybiBFTVVMQVRFX0RPTkU7CiAJCWlm IChyZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24odmNwdSwgY3IyLCB3cml0ZV9mYXVsdF90b19zcHQsCiAJ CQkJCWVtdWxhdGlvbl90eXBlKSkKIAkJCXJldHVybiBFTVVMQVRFX0RPTkU7CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvbGludXgva3ZtaS5oCmluZGV4IDFkYzkw Mjg0ZGMzYS4uNjlkYjAyNzk1ZmMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2t2bWkuaAor KysgYi9pbmNsdWRlL2xpbnV4L2t2bWkuaApAQCAtMjEsNiArMjEsNyBAQCBib29sIGt2bWlfaHlw ZXJjYWxsX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBib29sIGt2bWlfcXVldWVfZXhj ZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bWlfdHJhcF9ldmVudChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogYm9vbCBrdm1pX2Rlc2NyaXB0b3JfZXZlbnQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLCB1OCB3cml0ZSk7Citib29sIGt2bWlfc2luZ2xl X3N0ZXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGludCAqZW11bGF0aW9uX3R5 cGUpOwogdm9pZCBrdm1pX2hhbmRsZV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwog dm9pZCBrdm1pX3N0b3Bfc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIGJvb2wga3ZtaV92Y3B1 X2VuYWJsZWRfc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKQEAgLTQxLDYgKzQyLDkgQEAgc3Rh dGljIGlubGluZSBib29sIGt2bWlfYnJlYWtwb2ludF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIHU2NCBndmEsCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9kZXNjcmlwdG9yX2V2ZW50KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggZGVzY3JpcHRvciwKIAkJCQkJIHU4IHdyaXRlKQogCQkJ eyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIGt2bWlfc2luZ2xlX3N0ZXAoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsCisJCQkJICAgIGludCAqZW11bGF0aW9uX3R5 cGUpCisJCQl7IHJldHVybiBmYWxzZTsgfQogc3RhdGljIGlubGluZSB2b2lkIGt2bWlfdmNwdV91 bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1p X2hhbmRsZV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQogc3RhdGljIGlubGlu ZSBib29sIGt2bWlfaHlwZXJjYWxsX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyByZXR1 cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWkuYyBiL3ZpcnQva3ZtL2t2bWku YwppbmRleCAwNmRjMjNmNDBkZWQuLjE0ZWFkYzNiOWNhOSAxMDA2NDQKLS0tIGEvdmlydC9rdm0v a3ZtaS5jCisrKyBiL3ZpcnQva3ZtL2t2bWkuYwpAQCAtMTAxOCw2ICsxMDE4LDYyIEBAIHZvaWQg a3ZtaV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSkKIAl3YWl0X2Zvcl9jb21wbGV0aW9uX2tp bGxhYmxlKCZrdm0tPmt2bWlfY29tcGxldGVkKTsKIH0KIAorc3RhdGljIHU4IGt2bWlfdHJhbnNs YXRlX3BmX2Vycm9yX2NvZGUodTY0IGVycm9yX2NvZGUpCit7CisJdTggYWNjZXNzID0gMDsKKwor CWlmIChlcnJvcl9jb2RlICYgUEZFUlJfVVNFUl9NQVNLKQorCQlhY2Nlc3MgfD0gS1ZNSV9QQUdF X0FDQ0VTU19SOworCWlmIChlcnJvcl9jb2RlICYgUEZFUlJfV1JJVEVfTUFTSykKKwkJYWNjZXNz IHw9IEtWTUlfUEFHRV9BQ0NFU1NfVzsKKwlpZiAoZXJyb3JfY29kZSAmIFBGRVJSX0ZFVENIX01B U0spCisJCWFjY2VzcyB8PSBLVk1JX1BBR0VfQUNDRVNTX1g7CisKKwlyZXR1cm4gYWNjZXNzOwor fQorCitzdGF0aWMgYm9vbCBfX2t2bWlfc2luZ2xlX3N0ZXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBncGFfdCBncGEsCisJCQkgICAgICAgaW50ICplbXVsYXRpb25fdHlwZSkKK3sKKwlzdHJ1Y3Qg a3ZtICprdm0gPSB2Y3B1LT5rdm07CisJc3RydWN0IGt2bWkgKmlrdm0gPSBJS1ZNKGt2bSk7CisJ dTggYWxsb3dlZF9hY2Nlc3MsIHBmX2FjY2VzczsKKwl1MzIgaWdub3JlZF93cml0ZV9iaXRtYXA7 CisJZ2ZuX3QgZ2ZuID0gZ3BhX3RvX2dmbihncGEpOworCWludCBlcnI7CisKKwlpZiAoaXNfdWQy X2luc3RydWN0aW9uKHZjcHUsIGVtdWxhdGlvbl90eXBlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJ ZXJyID0ga3ZtaV9nZXRfZ2ZuX2FjY2Vzcyhpa3ZtLCBnZm4sICZhbGxvd2VkX2FjY2VzcywKKwkJ CQkgICZpZ25vcmVkX3dyaXRlX2JpdG1hcCk7CisJaWYgKGVycikgeworCQlrdm1pX3dhcm4oaWt2 bSwgIiVzOiBnZm4gMHglbGx4IG5vdCBmb3VuZCBpbiB0aGUgcmFkaXggdHJlZVxuIiwKKwkJCSAg X19mdW5jX18sIGdwYV90b19nZm4oZ3BhKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlwZl9h Y2Nlc3MgPSBrdm1pX3RyYW5zbGF0ZV9wZl9lcnJvcl9jb2RlKHZjcHUtPmFyY2guZXJyb3JfY29k ZSk7CisKKwlyZXR1cm4ga3ZtaV9zdGFydF9zcyh2Y3B1LCBncGEsIHBmX2FjY2Vzcyk7Cit9CisK K2Jvb2wga3ZtaV9zaW5nbGVfc3RlcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwg aW50ICplbXVsYXRpb25fdHlwZSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlib29sIHJldCA9 IGZhbHNlOworCisJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQly ZXR1cm4gZmFsc2U7CisKKwlyZXQgPSBfX2t2bWlfc2luZ2xlX3N0ZXAodmNwdSwgZ3BhLCBlbXVs YXRpb25fdHlwZSk7CisKKwlrdm1pX3B1dCh2Y3B1LT5rdm0pOworCisJcmV0dXJuIHJldDsKK30K Kwogc3RhdGljIGludCBrdm1pX3ZjcHVfa2lsbChpbnQgc2lnLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCiB7CiAJaW50IGVyciA9IC1FU1JDSDsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50 LmggYi92aXJ0L2t2bS9rdm1pX2ludC5oCmluZGV4IDU0ODU1MjlkYjA2Yi4uYzk2ZmEyYjFlOWI3 IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50 LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBpbnQga3ZtaV9hcmNoX2NtZF9pbmplY3RfZXhjZXB0aW9u KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggdmVjdG9yLAogCQkJCSAgIHU2NCBhZGRyZXNzKTsK IGludCBrdm1pX2FyY2hfY21kX2NvbnRyb2xfY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJ ICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9jb250cm9sX2NyICpyZXEpOworYm9vbCBpc191ZDJfaW5z dHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgKmVtdWxhdGlvbl90eXBlKTsKIHZv aWQga3ZtaV9hcmNoX3N0YXJ0X3NpbmdsZV9zdGVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2 b2lkIGt2bWlfYXJjaF9zdG9wX3NpbmdsZV9zdGVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB1 OCBrdm1pX2FyY2hfcmVsYXhfcGFnZV9hY2Nlc3ModTggb2xkLCB1OCBuZXcpOwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWls aW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6 Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRp b24=