From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v3 17/17] x86: hide most hypervisor mappings in XPTI shadow page tables Date: Fri, 9 Feb 2018 15:01:51 +0100 Message-ID: <20180209140151.24714-18-jgross@suse.com> References: <20180209140151.24714-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ek9J2-0004bb-TS for xen-devel@lists.xenproject.org; Fri, 09 Feb 2018 14:05:36 +0000 In-Reply-To: <20180209140151.24714-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , andrew.cooper3@citrix.com, dfaggioli@suse.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org SGlkZSBhbGwgYnV0IHRoZSBhYnNvbHV0ZSBuZWNlc3NhcnkgaHlwZXJ2aXNvciBtYXBwaW5ncyBp biB0aGUgWFBUSQpzaGFkb3cgcGFnZSB0YWJsZXMuIFRoZSBmb2xsb3dpbmcgbWFwcGluZ3MgYXJl IG5lZWRlZDoKCi0gZ3Vlc3QgYWNjZXNzaWJsZSBhcmVhcywgZS5nLiB0aGUgUk8gTTJQIHRhYmxl Ci0gSURULCBUU1MsIEdEVAotIGludGVycnVwdCBlbnRyeSBzdGFja3MKLSBpbnRlcnJ1cHQgaGFu ZGxpbmcgY29kZQoKRm9yIHNvbWUgb2YgdGhvc2UgbWFwcGluZ3Mgd2UgbmVlZCB0byBzZXR1cCBs b3dlciBsZXZlbCBwYWdlIHRhYmxlcwp3aXRoIGp1c3Qgc29tZSBlbnRyaWVzIHBvcHVsYXRlZC4K ClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tCiB4ZW4v YXJjaC94ODYvcHYveHB0aS5jICAgICAgICAgICAgIHwgMjI5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgICAgfCAg IDIgKy0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMgfCAgIDQgKwogeGVuL2Fy Y2gveDg2L3g4Nl82NC9lbnRyeS5TICAgICAgICB8ICAgNCArCiB4ZW4vaW5jbHVkZS9hc20teDg2 L3B2L21tLmggICAgICAgIHwgICA1ICsKIDUgZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3hwdGkuYyBi L3hlbi9hcmNoL3g4Ni9wdi94cHRpLmMKaW5kZXggZTA4YWE3ODJiZi4uZGVhMzQzMjJkNyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3hwdGkuYworKysgYi94ZW4vYXJjaC94ODYvcHYveHB0 aS5jCkBAIC0xOSwxMyArMTksMTYgQEAKICAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KIAorI2luY2x1ZGUg PHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4v ZXJybm8uaD4KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVy Lmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9ub3RpZmllci5oPgogI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9iaXRvcHMuaD4KKyNpbmNsdWRlIDxh c20vcHYvbW0uaD4KIAogLyoKICAqIEZvciBlYWNoIEw0IHBhZ2UgdGFibGUgb2YgdGhlIGd1ZXN0 IHdlIG5lZWQgYSBzaGFkb3cgZm9yIHRoZSBoeXBlcnZpc29yLgpAQCAtMTE4LDYgKzEyMSw3IEBA IHN0cnVjdCB4cHRpX2RvbWFpbiB7CiAgICAgdW5zaWduZWQgaW50IHVudXNlZF9maXJzdDsgLyog TGlzdCBvZiB1bnVzZWQgc2xvdHMgKi8KICAgICBzcGlubG9ja190IGxvY2s7ICAgICAgICAgICAv KiBQcm90ZWN0cyBhbGwgc2hhZG93IGxpc3RzICovCiAgICAgc3RydWN0IGRvbWFpbiAqZG9tYWlu OworICAgIHN0cnVjdCBwYWdlX2luZm8gKmwzX3NoYWRvdzsKICAgICBzdHJ1Y3QgdGFza2xldCB0 YXNrbGV0OwogICAgIGwxX3BnZW50cnlfdCAqKnBlcmRvbV9sMXRhYjsKICNpZmRlZiBYUFRJX0RF QlVHCkBAIC0xNDAsNiArMTQ0LDkgQEAgc3RhdGljIF9fcmVhZF9tb3N0bHkgZW51bSB7CiAgICAg WFBUSV9OT0RPTTAKIH0gb3B0X3hwdGkgPSBYUFRJX0RFRkFVTFQ7CiAKK3N0YXRpYyBib29sIHhw dGlfbDNfc2hhZG93ID0gZmFsc2U7CitzdGF0aWMgbDNfcGdlbnRyeV90ICp4cHRpX2wzX3NoYWRv d3NbMTFdOworCiBzdGF0aWMgaW50IHBhcnNlX3hwdGkoY29uc3QgY2hhciAqcykKIHsKICAgICBp bnQgcmMgPSAwOwpAQCAtMzU3LDYgKzM2NCwzNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHhwdGlf c2hhZG93X2dldGZvcmNlKHN0cnVjdCB4cHRpX2RvbWFpbiAqeGQpCiAgICAgcmV0dXJuIGlkeDsK IH0KIAorc3RhdGljIHZvaWQgeHB0aV91cGRhdGVfbDRfZW50cnkoc3RydWN0IHhwdGlfZG9tYWlu ICp4ZCwgbDRfcGdlbnRyeV90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbDRfcGdlbnRyeV90IGVudHJ5LCB1bnNpZ25lZCBpbnQgc2xvdCkKK3sKKyAgICBsM19wZ2Vu dHJ5X3QgKmwzcGc7CisKKyAgICBzd2l0Y2ggKCBzbG90ICkKKyAgICB7CisgICAgY2FzZSAyNTc6 IC8qIGlvcmVtYXAgYXJlYS4gKi8KKyAgICBjYXNlIDI1ODogLyogbGluZWFyIHBhZ2UgdGFibGUg KGd1ZXN0IHRhYmxlKS4gKi8KKyAgICBjYXNlIDI1OTogLyogbGluZWFyIHBhZ2UgdGFibGUgKHNo YWRvdyB0YWJsZSkuICovCisgICAgICAgIGRlc3Rbc2xvdF0gPSBsNGVfZW1wdHkoKTsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSAyNjA6IC8qIHBlci1kb21haW4gbWFwcGluZ3MuICovCisgICAg ICAgIGRlc3Rbc2xvdF0gPSBsNGVfZnJvbV9wYWdlKHhkLT5sM19zaGFkb3csIF9fUEFHRV9IWVBF UlZJU09SKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNjEgLi4uIDI3MTogLyogaHlwZXJ2 aXNvciB0ZXh0IGFuZCBkYXRhLCBkaXJlY3QgcGh5cyBtYXBwaW5nLiAqLworICAgICAgICBsM3Bn ID0geHB0aV9sM19zaGFkb3dzW3Nsb3QgLSAyNjFdOworICAgICAgICBkZXN0W3Nsb3RdID0gbDNw ZworICAgICAgICAgICAgICAgICAgICAgPyBsNGVfZnJvbV9tZm4oX21mbih2aXJ0X3RvX21mbihs M3BnKSksIF9fUEFHRV9IWVBFUlZJU09SKQorICAgICAgICAgICAgICAgICAgICAgOiBsNGVfZW1w dHkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6IC8qIHJlYWQtb25seSBndWVzdCBh Y2Nlc3NpYmxlIG0ycCB0YWJsZS4gKi8KKyAgICBkZWZhdWx0OgorICAgICAgICBkZXN0W3Nsb3Rd ID0gZW50cnk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgeHB0aV9p bml0X3hlbl9sNChzdHJ1Y3QgeHB0aV9kb21haW4gKnhkLCBzdHJ1Y3QgeHB0aV9sNHBnICpsNHBn KQogewogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtMzY1LDcgKzQwMCw3IEBAIHN0YXRpYyB2b2lk IHhwdGlfaW5pdF94ZW5fbDQoc3RydWN0IHhwdGlfZG9tYWluICp4ZCwgc3RydWN0IHhwdGlfbDRw ZyAqbDRwZykKICAgICBzcmMgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihsNHBnLT5ndWVzdF9tZm4p KTsKICAgICBkZXN0ID0gbWZuX3RvX3ZpcnQobDRwZy0+eGVuX21mbik7CiAgICAgZm9yICggaSA9 IDA7IGkgPCBMNF9QQUdFVEFCTEVfRU5UUklFUzsgaSsrICkKLSAgICAgICAgZGVzdFtpXSA9IHNy Y1tpXTsKKyAgICAgICAgeHB0aV91cGRhdGVfbDRfZW50cnkoeGQsIGRlc3QsIHNyY1tpXSwgaSk7 CiAgICAgdW5tYXBfZG9tYWluX3BhZ2Uoc3JjKTsKIH0KIApAQCAtNDMyLDcgKzQ2Nyw3IEBAIHZv aWQgeHB0aV91cGRhdGVfbDQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBt Zm4sCiAgICAgaWYgKCBpZHggIT0gTDRfSU5WQUxJRCApCiAgICAgewogICAgICAgICBsNCA9IG1m bl90b192aXJ0KHhkLT5sNHBnW2lkeF0ueGVuX21mbik7Ci0gICAgICAgIGw0W3Nsb3RdID0gZTsK KyAgICAgICAgeHB0aV91cGRhdGVfbDRfZW50cnkoeGQsIGw0LCBlLCBzbG90KTsKICAgICB9CiAK ICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4ZC0+bG9jaywgZmxhZ3MpOwpAQCAtNTUwLDYg KzU4NSw4IEBAIHZvaWQgeHB0aV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQogICAg ICAgICBmcmVlX3hlbmhlYXBfcGFnZSh4cHRpX3NoYWRvd19mcmVlKHhkLCBpZHgpKTsKICAgICB9 CiAKKyAgICBpZiAoIHhkLT5sM19zaGFkb3cgKQorICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZSh4 ZC0+bDNfc2hhZG93KTsKICAgICB4ZnJlZSh4ZC0+cGVyZG9tX2wxdGFiKTsKICAgICB4ZnJlZSh4 ZC0+bDRwZyk7CiAgICAgeGZyZWUoeGQtPmw0cmVmKTsKQEAgLTY0Miw2ICs2NzksMTI1IEBAIHN0 YXRpYyBpbnQgeHB0aV92Y3B1X2luaXQoc3RydWN0IHZjcHUgKnYpCiAgICAgcmV0dXJuIHJjOwog fQogCitzdGF0aWMgaW50IHhwdGlfYWRkX21hcHBpbmcodW5zaWduZWQgbG9uZyBhZGRyKQorewor ICAgIHVuc2lnbmVkIGludCBzbG90LCBmbGFncywgbWFwZmxhZ3M7CisgICAgdW5zaWduZWQgbG9u ZyBtZm47CisgICAgbDNfcGdlbnRyeV90ICpwbDNlOworICAgIGwyX3BnZW50cnlfdCAqcGwyZTsK KyAgICBsMV9wZ2VudHJ5X3QgKnBsMWU7CisKKyAgICBzbG90ID0gbDRfdGFibGVfb2Zmc2V0KGFk ZHIpOworICAgIHBsM2UgPSBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVbc2xvdF0pOworCisgICAg c2xvdCA9IGwzX3RhYmxlX29mZnNldChhZGRyKTsKKyAgICBtYXBmbGFncyA9IGwzZV9nZXRfZmxh Z3MocGwzZVtzbG90XSk7CisgICAgQVNTRVJUKG1hcGZsYWdzICYgX1BBR0VfUFJFU0VOVCk7Cisg ICAgaWYgKCBtYXBmbGFncyAmIF9QQUdFX1BTRSApCisgICAgeworICAgICAgICBtYXBmbGFncyAm PSB+X1BBR0VfUFNFOworICAgICAgICBtZm4gPSBsM2VfZ2V0X3BmbihwbDNlW3Nsb3RdKSAmIH4o KDFVTCA8PCAoMiAqIFBBR0VUQUJMRV9PUkRFUikpIC0gMSk7CisgICAgICAgIG1mbiB8PSBQRk5f RE9XTihhZGRyKSAmICgoMVVMIDw8ICgyICogUEFHRVRBQkxFX09SREVSKSkgLSAxKTsKKyAgICB9 CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcGwyZSA9IGwzZV90b19sMmUocGwzZVtzbG90XSk7 CisgICAgICAgIHNsb3QgPSBsMl90YWJsZV9vZmZzZXQoYWRkcik7CisgICAgICAgIG1hcGZsYWdz ID0gbDJlX2dldF9mbGFncyhwbDJlW3Nsb3RdKTsKKyAgICAgICAgQVNTRVJUKG1hcGZsYWdzICYg X1BBR0VfUFJFU0VOVCk7CisgICAgICAgIGlmICggbWFwZmxhZ3MgJiBfUEFHRV9QU0UgKQorICAg ICAgICB7CisgICAgICAgICAgICBtYXBmbGFncyAmPSB+X1BBR0VfUFNFOworICAgICAgICAgICAg bWZuID0gbDJlX2dldF9wZm4ocGwyZVtzbG90XSkgJiB+KCgxVUwgPDwgUEFHRVRBQkxFX09SREVS KSAtIDEpOworICAgICAgICAgICAgbWZuIHw9IFBGTl9ET1dOKGFkZHIpICYgKCgxVUwgPDwgUEFH RVRBQkxFX09SREVSKSAtIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor ICAgICAgICAgICAgcGwxZSA9IGwyZV90b19sMWUocGwyZVtzbG90XSk7CisgICAgICAgICAgICBz bG90ID0gbDFfdGFibGVfb2Zmc2V0KGFkZHIpOworICAgICAgICAgICAgbWFwZmxhZ3MgPSBsMWVf Z2V0X2ZsYWdzKHBsMWVbc2xvdF0pOworICAgICAgICAgICAgQVNTRVJUKG1hcGZsYWdzICYgX1BB R0VfUFJFU0VOVCk7CisgICAgICAgICAgICBtZm4gPSBsMWVfZ2V0X3BmbihwbDFlW3Nsb3RdKTsK KyAgICAgICAgfQorICAgIH0KKworICAgIHNsb3QgPSBsNF90YWJsZV9vZmZzZXQoYWRkcik7Cisg ICAgQVNTRVJUKHNsb3QgPj0gMjYxICYmIHNsb3QgPD0gMjcxKTsKKyAgICBwbDNlID0geHB0aV9s M19zaGFkb3dzW3Nsb3QgLSAyNjFdOworICAgIGlmICggIXBsM2UgKQorICAgIHsKKyAgICAgICAg cGwzZSA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKKyAgICAgICAgaWYgKCAhcGwzZSApCisgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgY2xlYXJfcGFnZShwbDNlKTsKKyAgICAg ICAgeHB0aV9sM19zaGFkb3dzW3Nsb3QgLSAyNjFdID0gcGwzZTsKKyAgICB9CisKKyAgICBzbG90 ID0gbDNfdGFibGVfb2Zmc2V0KGFkZHIpOworICAgIGZsYWdzID0gbDNlX2dldF9mbGFncyhwbDNl W3Nsb3RdKTsKKyAgICBpZiAoICEoZmxhZ3MgJiBfUEFHRV9QUkVTRU5UKSApCisgICAgeworICAg ICAgICBwbDJlID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOworICAgICAgICBpZiAoICFwbDJlICkK KyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICBjbGVhcl9wYWdlKHBsMmUpOwor ICAgICAgICBwbDNlW3Nsb3RdID0gbDNlX2Zyb21fbWZuKF9tZm4odmlydF90b19tZm4ocGwyZSkp LCBfX1BBR0VfSFlQRVJWSVNPUik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHBs MmUgPSBsM2VfdG9fbDJlKHBsM2Vbc2xvdF0pOworICAgIH0KKworICAgIHNsb3QgPSBsMl90YWJs ZV9vZmZzZXQoYWRkcik7CisgICAgZmxhZ3MgPSBsMmVfZ2V0X2ZsYWdzKHBsMmVbc2xvdF0pOwor ICAgIGlmICggIShmbGFncyAmIF9QQUdFX1BSRVNFTlQpICkKKyAgICB7CisgICAgICAgIHBsMWUg PSBhbGxvY194ZW5fcGFnZXRhYmxlKCk7CisgICAgICAgIGlmICggIXBsMWUgKQorICAgICAgICAg ICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIGNsZWFyX3BhZ2UocGwxZSk7CisgICAgICAgIHBs MmVbc2xvdF0gPSBsMmVfZnJvbV9tZm4oX21mbih2aXJ0X3RvX21mbihwbDFlKSksIF9fUEFHRV9I WVBFUlZJU09SKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcGwxZSA9IGwyZV90 b19sMWUocGwyZVtzbG90XSk7CisgICAgfQorCisgICAgc2xvdCA9IGwxX3RhYmxlX29mZnNldChh ZGRyKTsKKyAgICBwbDFlW3Nsb3RdID0gbDFlX2Zyb21fbWZuKF9tZm4obWZuKSwgbWFwZmxhZ3Mp OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHhwdGlfcm1fbWFwcGluZyh1bnNp Z25lZCBsb25nIGFkZHIpCit7CisgICAgdW5zaWduZWQgaW50IHNsb3QsIGZsYWdzOworICAgIGwz X3BnZW50cnlfdCAqcGwzZTsKKyAgICBsMl9wZ2VudHJ5X3QgKnBsMmU7CisgICAgbDFfcGdlbnRy eV90ICpwbDFlOworCisgICAgc2xvdCA9IGw0X3RhYmxlX29mZnNldChhZGRyKTsKKyAgICBBU1NF UlQoc2xvdCA+PSAyNjEgJiYgc2xvdCA8PSAyNzEpOworICAgIHBsM2UgPSB4cHRpX2wzX3NoYWRv d3Nbc2xvdCAtIDI2MV07CisgICAgaWYgKCAhcGwzZSApCisgICAgICAgIHJldHVybjsKKworICAg IHNsb3QgPSBsM190YWJsZV9vZmZzZXQoYWRkcik7CisgICAgZmxhZ3MgPSBsM2VfZ2V0X2ZsYWdz KHBsM2Vbc2xvdF0pOworICAgIGlmICggIShmbGFncyAmIF9QQUdFX1BSRVNFTlQpICkKKyAgICAg ICAgcmV0dXJuOworCisgICAgcGwyZSA9IGwzZV90b19sMmUocGwzZVtzbG90XSk7CisgICAgc2xv dCA9IGwyX3RhYmxlX29mZnNldChhZGRyKTsKKyAgICBmbGFncyA9IGwyZV9nZXRfZmxhZ3MocGwy ZVtzbG90XSk7CisgICAgaWYgKCAhKGZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBwbDFlID0gbDJlX3RvX2wxZShwbDJlW3Nsb3RdKTsKKyAgICBzbG90ID0g bDFfdGFibGVfb2Zmc2V0KGFkZHIpOworICAgIHBsMWVbc2xvdF0gPSBsMWVfZW1wdHkoKTsKK30K KwogaW50IHhwdGlfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBib29sIHhw dGkgPSBmYWxzZTsKQEAgLTY0OSw3ICs4MDUsOSBAQCBpbnQgeHB0aV9kb21haW5faW5pdChzdHJ1 Y3QgZG9tYWluICpkKQogICAgIHN0cnVjdCB2Y3B1ICp2OwogICAgIHN0cnVjdCB4cHRpX2RvbWFp biAqeGQ7CiAgICAgdm9pZCAqdmlydDsKKyAgICB1bnNpZ25lZCBsb25nIGFkZHI7CiAgICAgdW5z aWduZWQgaW50IGksIG5ldzsKKyAgICBsM19wZ2VudHJ5X3QgKmwzdGFiLCAqbDNzaGFkb3c7CiAK ICAgICBpZiAoICFpc19wdl9kb21haW4oZCkgfHwgaXNfcHZfMzJiaXRfZG9tYWluKGQpICkKICAg ICAgICAgcmV0dXJuIDA7CkBAIC02ODMsNiArODQxLDI3IEBAIGludCB4cHRpX2RvbWFpbl9pbml0 KHN0cnVjdCBkb21haW4gKmQpCiAgICAgeGQtPmxydV9sYXN0ID0gTDRfSU5WQUxJRDsKICAgICB4 ZC0+ZnJlZV9maXJzdCA9IEw0X0lOVkFMSUQ7CiAKKyAgICBpZiAoICF4cHRpX2wzX3NoYWRvdyAp CisgICAgeworICAgICAgICB4cHRpX2wzX3NoYWRvdyA9IHRydWU7CisKKyAgICAgICAgZm9yX2Vh Y2hfb25saW5lX2NwdSAoIGkgKQorICAgICAgICAgICAgaWYgKCB4cHRpX2FkZF9tYXBwaW5nKCh1 bnNpZ25lZCBsb25nKWlkdF90YWJsZXNbaV0pICkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7 CisKKyAgICAgICAgZm9yICggYWRkciA9IHJvdW5kX3BnZG93bigodW5zaWduZWQgbG9uZykmeHB0 aV9tYXBfc3RhcnQpOworICAgICAgICAgICAgICBhZGRyIDw9IHJvdW5kX3BnZG93bigodW5zaWdu ZWQgbG9uZykmeHB0aV9tYXBfZW5kIC0gMSk7CisgICAgICAgICAgICAgIGFkZHIgKz0gUEFHRV9T SVpFICkKKyAgICAgICAgICAgIGlmICggeHB0aV9hZGRfbWFwcGluZyhhZGRyKSApCisgICAgICAg ICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIGZvciAoIGFkZHIgPSByb3VuZF9wZ2Rvd24o KHVuc2lnbmVkIGxvbmcpJnhwdGlfbWFwX3N0YXJ0X2NvbXBhdCk7CisgICAgICAgICAgICAgIGFk ZHIgPD0gcm91bmRfcGdkb3duKCh1bnNpZ25lZCBsb25nKSZ4cHRpX21hcF9lbmRfY29tcGF0IC0g MSk7CisgICAgICAgICAgICAgIGFkZHIgKz0gUEFHRV9TSVpFICkKKyAgICAgICAgICAgIGlmICgg eHB0aV9hZGRfbWFwcGluZyhhZGRyKSApCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAg IH0KKwogICAgIHNwaW5fbG9ja19pbml0KCZ4ZC0+bG9jayk7CiAgICAgdGFza2xldF9pbml0KCZ4 ZC0+dGFza2xldCwgeHB0aV90YXNrbGV0LCAodW5zaWduZWQgbG9uZyl4ZCk7CiAKQEAgLTcyNSw2 ICs5MDQsMTYgQEAgaW50IHhwdGlfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAg ICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKKyAgICB4ZC0+bDNfc2hhZG93ID0gYWxsb2NfZG9t aGVhcF9wYWdlKGQsIE1FTUZfbm9fb3duZXIpOworICAgIGlmICggIXhkLT5sM19zaGFkb3cgKQor ICAgICAgICBnb3RvIGRvbmU7CisgICAgbDN0YWIgPSBfX21hcF9kb21haW5fcGFnZShkLT5hcmNo LnBlcmRvbWFpbl9sM19wZyk7CisgICAgbDNzaGFkb3cgPSBfX21hcF9kb21haW5fcGFnZSh4ZC0+ bDNfc2hhZG93KTsKKyAgICBjbGVhcl9wYWdlKGwzc2hhZG93KTsKKyAgICBsM3NoYWRvd1swXSA9 IGwzdGFiWzBdOyAgICAgICAgICAvKiBHRFQvTERUIHNoYWRvdyBtYXBwaW5nLiAqLworICAgIGwz c2hhZG93WzNdID0gbDN0YWJbM107ICAgICAgICAgIC8qIFhQVEkgbWFwcGluZ3MuICovCisgICAg dW5tYXBfZG9tYWluX3BhZ2UobDNzaGFkb3cpOworICAgIHVubWFwX2RvbWFpbl9wYWdlKGwzdGFi KTsKICAgICByZXQgPSAwOwogCiAgICAgcHJpbnRrKCJFbmFibGluZyBYZW4gUGFnZXRhYmxlIHBy b3RlY3Rpb24gKFhQVEkpIGZvciBEb21haW4gJWRcbiIsCkBAIC04MDEsMyArOTkwLDM5IEBAIHN0 YXRpYyBpbnQgX19pbml0IHhwdGlfa2V5X2luaXQodm9pZCkKICAgICByZXR1cm4gMDsKIH0KIF9f aW5pdGNhbGwoeHB0aV9rZXlfaW5pdCk7CisKK3N0YXRpYyBpbnQgeHB0aV9jcHVfY2FsbGJhY2so c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuZmIsIHVuc2lnbmVkIGxvbmcgYWN0aW9uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpoY3B1KQoreworICAgIHVuc2lnbmVkIGludCBj cHUgPSAodW5zaWduZWQgbG9uZyloY3B1OworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAoICF4 cHRpX2wzX3NoYWRvdyApCisgICAgICAgIHJldHVybiBOT1RJRllfRE9ORTsKKworICAgIHN3aXRj aCAoIGFjdGlvbiApCisgICAgeworICAgIGNhc2UgQ1BVX0RPV05fRkFJTEVEOgorICAgIGNhc2Ug Q1BVX09OTElORToKKyAgICAgICAgcmMgPSB4cHRpX2FkZF9tYXBwaW5nKCh1bnNpZ25lZCBsb25n KWlkdF90YWJsZXNbY3B1XSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1BVX0RPV05fUFJF UEFSRToKKyAgICAgICAgeHB0aV9ybV9tYXBwaW5nKCh1bnNpZ25lZCBsb25nKWlkdF90YWJsZXNb Y3B1XSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg IH0KKworICAgIHJldHVybiAhcmMgPyBOT1RJRllfRE9ORSA6IG5vdGlmaWVyX2Zyb21fZXJybm8o cmMpOworfQorCitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHhwdGlfY3B1X25mYiA9IHsK KyAgICAubm90aWZpZXJfY2FsbCA9IHhwdGlfY3B1X2NhbGxiYWNrCit9OworCitzdGF0aWMgaW50 IF9faW5pdCB4cHRpX3ByZXNtcF9pbml0KHZvaWQpCit7CisgICAgcmVnaXN0ZXJfY3B1X25vdGlm aWVyKCZ4cHRpX2NwdV9uZmIpOworICAgIHJldHVybiAwOworfQorcHJlc21wX2luaXRjYWxsKHhw dGlfcHJlc21wX2luaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4v YXJjaC94ODYvdHJhcHMuYwppbmRleCA5M2IyMjhkY2VkLi4wMGNjN2NkOWQ3IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtMTAy LDcgKzEwMiw3IEBAIERFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKHN0cnVjdCBkZXNjX3N0cnVj dCAqLCBnZHRfdGFibGUpOwogREVGSU5FX1BFUl9DUFVfUkVBRF9NT1NUTFkoc3RydWN0IGRlc2Nf c3RydWN0ICosIGNvbXBhdF9nZHRfdGFibGUpOwogCiAvKiBNYXN0ZXIgdGFibGUsIHVzZWQgYnkg Q1BVMC4gKi8KLWlkdF9lbnRyeV90IGlkdF90YWJsZVtJRFRfRU5UUklFU107CitpZHRfZW50cnlf dCBpZHRfdGFibGVbSURUX0VOVFJJRVNdIF9fYWxpZ25lZChQQUdFX1NJWkUpOwogCiAvKiBQb2lu dGVyIHRvIHRoZSBJRFQgb2YgZXZlcnkgQ1BVLiAqLwogaWR0X2VudHJ5X3QgKmlkdF90YWJsZXNb TlJfQ1BVU10gX19yZWFkX21vc3RseTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv Y29tcGF0L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TCmluZGV4 IDIwNmJjOWEwNWEuLjU3NWEzZTVkOGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv Y29tcGF0L2VudHJ5LlMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUwpA QCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KICNpbmNsdWRlIDxpcnFf dmVjdG9ycy5oPgogCitFTlRSWSh4cHRpX21hcF9zdGFydF9jb21wYXQpCisKIEVOVFJZKGVudHJ5 X2ludDgyKQogICAgICAgICBBU01fQ0xBQwogICAgICAgICBwdXNocSAkMApAQCAtMzY3LDMgKzM2 OSw1IEBAIGNvbXBhdF9jcmFzaF9wYWdlX2ZhdWx0OgogICAgICAgICBqbXAgICAuTGZ0MTQKIC5w cmV2aW91cwogICAgICAgICBfQVNNX0VYVEFCTEUoLkxmdDE0LCAuTGZ4MTQpCisKK0VOVFJZKHhw dGlfbWFwX2VuZF9jb21wYXQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5 LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKaW5kZXggOTA5ZjZlZWE2Ni4uZDFjYjM1 NTA0NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCisrKyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvZW50cnkuUwpAQCAtMTQsNiArMTQsOCBAQAogI2luY2x1ZGUgPHB1Ymxp Yy94ZW4uaD4KICNpbmNsdWRlIDxpcnFfdmVjdG9ycy5oPgogCitFTlRSWSh4cHRpX21hcF9zdGFy dCkKKwogLyogJXJieDogc3RydWN0IHZjcHUsICVyMTI6IHVzZXJfcmVncyAqLwogRU5UUlkoc3dp dGNoX3RvX2tlcm5lbCkKICAgICAgICAgbGVhcSAgVkNQVV90cmFwX2JvdW5jZSglcmJ4KSwlcmR4 CkBAIC03MzUsNiArNzM3LDggQEAgRU5UUlkoZW5hYmxlX25taXMpCiBHTE9CQUwodHJhcF9ub3Ap CiAgICAgICAgIGlyZXRxCiAKK0VOVFJZKHhwdGlfbWFwX2VuZCkKKwogLyogVGFibGUgb2YgYXV0 b21hdGljYWxseSBnZW5lcmF0ZWQgZW50cnkgcG9pbnRzLiAgT25lIHBlciB2ZWN0b3IuICovCiAg ICAgICAgIC5zZWN0aW9uIC5pbml0LnJvZGF0YSwgImEiLCBAcHJvZ2JpdHMKIEdMT0JBTChhdXRv Z2VuX2VudHJ5cG9pbnRzKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9tbS5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9tbS5oCmluZGV4IDhhOTBhZjEwODQuLjM2ZTE4NTZi OGQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0uaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L3B2L21tLmgKQEAgLTIzLDYgKzIzLDExIEBACiAKICNpZmRlZiBDT05GSUdf UFYKIAorZXh0ZXJuIHZvaWQgKnhwdGlfbWFwX3N0YXJ0OworZXh0ZXJuIHZvaWQgKnhwdGlfbWFw X2VuZDsKK2V4dGVybiB2b2lkICp4cHRpX21hcF9zdGFydF9jb21wYXQ7CitleHRlcm4gdm9pZCAq eHB0aV9tYXBfZW5kX2NvbXBhdDsKKwogaW50IHB2X3JvX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9u ZyBhZGRyLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CiAKIGxvbmcgcHZfc2V0X2dkdChz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyAqZnJhbWVzLCB1bnNpZ25lZCBpbnQgZW50cmll cyk7Ci0tIAoyLjEzLjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs