From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Isaila Subject: [PATCH v3] x86/mm: Add mem access rights to NPT Date: Mon, 2 Jul 2018 15:42:31 +0300 Message-ID: <1530535351-5516-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: tamas@tklengyel.com, rcojocaru@bitdefender.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, jbeulich@suse.com, Isaila Alexandru List-Id: xen-devel@lists.xenproject.org RnJvbTogSXNhaWxhIEFsZXhhbmRydSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+CgpUaGlzIHBh dGNoIGFkZHMgYWNjZXNzIHJpZ2h0cyBmb3IgdGhlIE5QVCBwYWdlcy4gVGhlIGFjY2VzcyByaWdo dHMgYXJlCnNhdmVkIGluIGEgcmFkaXggdHJlZSB3aXRoIHRoZSByb290IHNhdmVkIGluIHAybV9k b21haW4uIFRoZSByaWdodHMgYXJlIG1hbmlwdWxhdGVkIHRocm91Z2ggcDJtX3NldF9hY2Nlc3Mo KQphbmQgcDJtX2dldF9hY2Nlc3MoKSBmdW5jdGlvbnMuClRoZSBwYXRjaCBmb2xsb3dzIHRoZSBl cHQgbG9naWMuCgpOb3RlOiBJdCB3YXMgdGVzdGVkIHdpdGggeGVuLWFjY2VzcyB3cml0ZQoKU2ln bmVkLW9mZi1ieTogQWxleGFuZHJ1IElzYWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+Cgot LS0KQ2hhbmdlcyBzaW5jZSBWMjoKCS0gRGVsZXRlIGJsYWsgbGluZQoJLSBBZGQgcmV0dXJuIGlm IHAybV9hY2Nlc3Nfcnd4ID0gYQoJLSBEZWxldGUgdGhlIGNvbW1lbnQgZnJvbSBwMm1fcHRfZ2V0 X2VudHJ5KCkKCS0gTW92ZWQgcmFkaXhfdHJlZV9pbml0KCkgdG8gYXJjaF9tb25pdG9yX2luaXRf ZG9tYWluKCkuCi0tLQogeGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYyAgICAgfCAgIDMgKysK IHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAgICAgICAg fCAgIDYgKysrCiB4ZW4vYXJjaC94ODYvbW9uaXRvci5jICAgICAgICAgICB8ICAxMyArKysrKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9tZW1fYWNjZXNzLmggfCAgIDIgKy0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvcDJtLmggICAgICAgIHwgICA2ICsrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0 aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL21l bV9hY2Nlc3MuYyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fYWNjZXNzLmMKaW5kZXggYzBjZDAxNy4u ZDc4YzgyYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYworKysgYi94 ZW4vYXJjaC94ODYvbW0vbWVtX2FjY2Vzcy5jCkBAIC0yMjEsNyArMjIxLDEwIEBAIGJvb2wgcDJt X21lbV9hY2Nlc3NfY2hlY2socGFkZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAogICAgICAg ICB7CiAgICAgICAgICAgICByZXEtPnUubWVtX2FjY2Vzcy5mbGFncyB8PSBNRU1fQUNDRVNTX0dM QV9WQUxJRDsKICAgICAgICAgICAgIHJlcS0+dS5tZW1fYWNjZXNzLmdsYSA9IGdsYTsKKyAgICAg ICAgfQogCisgICAgICAgIGlmICggbnBmZWMuZ2xhX3ZhbGlkIHx8IGNwdV9oYXNfc3ZtICkKKyAg ICAgICAgewogICAgICAgICAgICAgaWYgKCBucGZlYy5raW5kID09IG5wZmVjX2tpbmRfd2l0aF9n bGEgKQogICAgICAgICAgICAgICAgIHJlcS0+dS5tZW1fYWNjZXNzLmZsYWdzIHw9IE1FTV9BQ0NF U1NfRkFVTFRfV0lUSF9HTEE7CiAgICAgICAgICAgICBlbHNlIGlmICggbnBmZWMua2luZCA9PSBu cGZlY19raW5kX2luX2dwdCApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMg Yi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggYjhjNWQyZS4uNDMzMGQxZiAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYwpAQCAtNjgsNyArNjgsOCBAQAogc3RhdGljIHVuc2lnbmVkIGxvbmcgcDJtX3R5cGVfdG9f ZmxhZ3MoY29uc3Qgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1mbl90IG1mbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBsZXZlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHAybV9hY2Nlc3NfdCBhY2Nlc3MpCiB7CiAgICAgdW5zaWduZWQgbG9u ZyBmbGFnczsKICAgICAvKgpAQCAtODcsMjMgKzg4LDI3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25n IHAybV90eXBlX3RvX2ZsYWdzKGNvbnN0IHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgY2Fz ZSBwMm1fcmFtX3BhZ2VkOgogICAgIGNhc2UgcDJtX3JhbV9wYWdpbmdfaW46CiAgICAgZGVmYXVs dDoKLSAgICAgICAgcmV0dXJuIGZsYWdzIHwgX1BBR0VfTlhfQklUOworICAgICAgICBmbGFncyB8 PSBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX05YX0JJVDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz ZSBwMm1fZ3JhbnRfbWFwX3JvOgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBQMk1fQkFTRV9GTEFH UyB8IF9QQUdFX05YX0JJVDsKICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CiAgICAgICAgIGZs YWdzIHw9IFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfUlcgfCBfUEFHRV9OWF9CSVQ7CiAgICAgICAg IGlmICggcDJtLT5pb3JlcS5mbGFncyAmIFhFTl9ETU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUg KQotICAgICAgICAgICAgcmV0dXJuIGZsYWdzICYgfl9QQUdFX1JXOwotICAgICAgICByZXR1cm4g ZmxhZ3M7CisgICAgICAgICAgICBmbGFncyAmPSB+X1BBR0VfUlc7CisgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgcDJtX3JhbV9ybzoKICAgICBjYXNlIHAybV9yYW1fbG9nZGlydHk6CiAgICAgY2Fz ZSBwMm1fcmFtX3NoYXJlZDoKLSAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1M7 CisgICAgICAgIGZsYWdzIHw9IFAyTV9CQVNFX0ZMQUdTOworICAgICAgICBicmVhazsKICAgICBj YXNlIHAybV9yYW1fcnc6Ci0gICAgICAgIHJldHVybiBmbGFncyB8IFAyTV9CQVNFX0ZMQUdTIHwg X1BBR0VfUlc7CisgICAgICAgIGZsYWdzIHw9IFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfUlc7Cisg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgcDJtX2dyYW50X21hcF9ydzoKICAgICBjYXNlIHAybV9t YXBfZm9yZWlnbjoKLSAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFH RV9SVyB8IF9QQUdFX05YX0JJVDsKKyAgICAgICAgZmxhZ3MgfD0gUDJNX0JBU0VfRkxBR1MgfCBf UEFHRV9SVyB8IF9QQUdFX05YX0JJVDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBwMm1fbW1p b19kaXJlY3Q6CiAgICAgICAgIGlmICggIXJhbmdlc2V0X2NvbnRhaW5zX3NpbmdsZXRvbihtbWlv X3JvX3JhbmdlcywgbWZuX3gobWZuKSkgKQogICAgICAgICAgICAgZmxhZ3MgfD0gX1BBR0VfUlc7 CkBAIC0xMTIsOCArMTE3LDM3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90eXBlX3RvX2Zs YWdzKGNvbnN0IHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgICAgICBmbGFncyB8PSBf UEFHRV9QV1Q7CiAgICAgICAgICAgICBBU1NFUlQoIWxldmVsKTsKICAgICAgICAgfQotICAgICAg ICByZXR1cm4gZmxhZ3MgfCBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1BDRDsKKyAgICAgICAgZmxh Z3MgfD0gUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9QQ0Q7CisgICAgICAgIGJyZWFrOworICAgIH0K KyAgICBzd2l0Y2ggKCBhY2Nlc3MgKQorICAgIHsKKyAgICAgICAgY2FzZSBwMm1fYWNjZXNzX3I6 CisgICAgICAgIGNhc2UgcDJtX2FjY2Vzc193OgorICAgICAgICAgICAgZmxhZ3MgfD0gX1BBR0Vf TlhfQklUOworICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1JXOworICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIGNhc2UgcDJtX2FjY2Vzc19ydzoKKyAgICAgICAgICAgIGZsYWdzIHw9IF9Q QUdFX05YX0JJVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHAybV9hY2Nlc3Nf bjoKKyAgICAgICAgY2FzZSBwMm1fYWNjZXNzX24ycnd4OgorICAgICAgICAgICAgZmxhZ3MgfD0g X1BBR0VfTlhfQklUOworICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1JXOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgcDJtX2FjY2Vzc19yeDoKKyAgICAgICAgY2FzZSBwMm1f YWNjZXNzX3d4OgorICAgICAgICBjYXNlIHAybV9hY2Nlc3Nfcngycnc6CisgICAgICAgICAgICBm bGFncyAmPSB+KF9QQUdFX05YX0JJVCB8IF9QQUdFX1JXKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHAybV9hY2Nlc3NfeDoKKyAgICAgICAgICAgIGZsYWdzICY9IH5fUEFHRV9S VzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHAybV9hY2Nlc3Nfcnd4OgorICAg ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHJldHVybiBmbGFn czsKIH0KIAogCkBAIC0xNzQsNiArMjA4LDQ0IEBAIHN0YXRpYyB2b2lkIHAybV9hZGRfaW9tbXVf ZmxhZ3MobDFfcGdlbnRyeV90ICpwMm1fZW50cnksCiAgICAgICAgIGwxZV9hZGRfZmxhZ3MoKnAy bV9lbnRyeSwgaW9tbXVfbmxldmVsX3RvX2ZsYWdzKG5sZXZlbCwgZmxhZ3MpKTsKIH0KIAorc3Rh dGljIHAybV9hY2Nlc3NfdCBwMm1fZ2V0X2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbikKK3sKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAoICFwMm0tPm1l bV9hY2Nlc3Nfc2V0dGluZ3MgKQorICAgICAgICByZXR1cm4gcDJtX2FjY2Vzc19yd3g7CisKKyAg ICBwdHIgPSByYWRpeF90cmVlX2xvb2t1cChwMm0tPm1lbV9hY2Nlc3Nfc2V0dGluZ3MsIGdmbik7 CisgICAgaWYgKCAhcHRyICkKKyAgICAgICAgcmV0dXJuIHAybV9hY2Nlc3Nfcnd4OworICAgIGVs c2UKKyAgICAgICAgcmV0dXJuIHJhZGl4X3RyZWVfcHRyX3RvX2ludChwdHIpOworfQorCitzdGF0 aWMgdm9pZCBwMm1fc2V0X2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBs b25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2FjY2Vz c190IGEpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKCAhcDJtLT5tZW1fYWNjZXNzX3NldHRp bmdzICkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCBwMm1fYWNjZXNzX3J3eCA9PSBhICkK KyAgICB7CisgICAgICAgIHJhZGl4X3RyZWVfZGVsZXRlKHAybS0+bWVtX2FjY2Vzc19zZXR0aW5n cywgZ2ZuKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJjID0gcmFkaXhfdHJlZV9p bnNlcnQocDJtLT5tZW1fYWNjZXNzX3NldHRpbmdzLCBnZm4sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICByYWRpeF90cmVlX2ludF90b19wdHIoYSkpOworICAgIGlmICggcmMgPT0gLUVFWElT VCApCisgICAgICAgIC8qIElmIGEgc2V0dGluZyBhbHJlYWR5IGV4aXN0cywgY2hhbmdlIGl0IHRv IHRoZSBuZXcgb25lLiAqLworICAgICAgICByYWRpeF90cmVlX3JlcGxhY2Vfc2xvdCgKKyAgICAg ICAgICAgIHJhZGl4X3RyZWVfbG9va3VwX3Nsb3QoCisgICAgICAgICAgICAgICAgcDJtLT5tZW1f YWNjZXNzX3NldHRpbmdzLCBnZm4pLAorICAgICAgICAgICAgcmFkaXhfdHJlZV9pbnRfdG9fcHRy KGEpKTsKK30KKwogLyogUmV0dXJuczogMCBmb3Igc3VjY2VzcywgLWVycm5vIGZvciBmYWlsdXJl ICovCiBzdGF0aWMgaW50CiBwMm1fbmV4dF9sZXZlbChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB2 b2lkICoqdGFibGUsCkBAIC0yMDEsNiArMjczLDcgQEAgcDJtX25leHRfbGV2ZWwoc3RydWN0IHAy bV9kb21haW4gKnAybSwgdm9pZCAqKnRhYmxlLAogICAgICAgICBuZXdfZW50cnkgPSBsMWVfZnJv bV9tZm4obWZuLCBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1JXKTsKIAogICAgICAgICBwMm1fYWRk X2lvbW11X2ZsYWdzKCZuZXdfZW50cnksIGxldmVsLCBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dy aXRhYmxlKTsKKyAgICAgICAgcDJtX3NldF9hY2Nlc3MocDJtLCBnZm4sIHAybS0+ZGVmYXVsdF9h Y2Nlc3MpOwogICAgICAgICBwMm0tPndyaXRlX3AybV9lbnRyeShwMm0sIGdmbiwgcDJtX2VudHJ5 LCBuZXdfZW50cnksIGxldmVsICsgMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKCBmbGFncyAmIF9Q QUdFX1BTRSApCkBAIC0yNDksNiArMzIyLDcgQEAgcDJtX25leHRfbGV2ZWwoc3RydWN0IHAybV9k b21haW4gKnAybSwgdm9pZCAqKnRhYmxlLAogICAgICAgICB7CiAgICAgICAgICAgICBuZXdfZW50 cnkgPSBsMWVfZnJvbV9wZm4ocGZuIHwgKGkgPDwgKChsZXZlbCAtIDEpICogUEFHRVRBQkxFX09S REVSKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOworICAg ICAgICAgICAgcDJtX3NldF9hY2Nlc3MocDJtLCBnZm4sIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwog ICAgICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBnZm4sIGwxX2VudHJ5ICsgaSwg bmV3X2VudHJ5LCBsZXZlbCk7CiAgICAgICAgIH0KIApAQCAtMjU2LDYgKzMzMCw3IEBAIHAybV9u ZXh0X2xldmVsKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHZvaWQgKip0YWJsZSwKIAogICAgICAg ICBuZXdfZW50cnkgPSBsMWVfZnJvbV9tZm4obWZuLCBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1JX KTsKICAgICAgICAgcDJtX2FkZF9pb21tdV9mbGFncygmbmV3X2VudHJ5LCBsZXZlbCwgSU9NTVVG X3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CisgICAgICAgIHAybV9zZXRfYWNjZXNzKHAybSwg Z2ZuLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnko cDJtLCBnZm4sIHAybV9lbnRyeSwgbmV3X2VudHJ5LCBsZXZlbCArIDEpOwogICAgIH0KICAgICBl bHNlCkBAIC00MjAsOCArNDk1LDkgQEAgc3RhdGljIGludCBkb19yZWNhbGMoc3RydWN0IHAybV9k b21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgICAgIGlmICggbnQgIT0gb3QgKQog ICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IGwxZV9nZXRfcGZuKGUp OworICAgICAgICAgICAgcDJtX2FjY2Vzc190IGEgPSBwMm1fZ2V0X2FjY2VzcyhwMm0sIGdmbik7 CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzID0gcDJtX3R5cGVfdG9fZmxhZ3MocDJt LCBudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfbWZuKG1mbiksIGxldmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfbWZuKG1mbiksIGxldmVsLCBhKTsKIAogICAgICAgICAgICAgaWYg KCBsZXZlbCApCiAgICAgICAgICAgICB7CkBAIC01NjksMTMgKzY0NSwxNCBAQCBwMm1fcHRfc2V0 X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbl8sIG1mbl90IG1mbiwKICAg ICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZuKSB8fCBwMm10ICE9IHAybV9tbWlvX2RpcmVjdCk7 CiAgICAgICAgIGwzZV9jb250ZW50ID0gbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19pbnZh bGlkX21mbihwMm10KQogICAgICAgICAgICAgPyBwMm1fbDNlX2Zyb21fcGZuKG1mbl94KG1mbiks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBw Mm10LCBtZm4sIDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3Rv X2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAyLCBwMm1hKSkKICAgICAgICAgICAgIDogbDNlX2VtcHR5 KCk7CiAgICAgICAgIGVudHJ5X2NvbnRlbnQubDEgPSBsM2VfY29udGVudC5sMzsKIAogICAgICAg ICBpZiAoIGVudHJ5X2NvbnRlbnQubDEgIT0gMCApCiAgICAgICAgICAgICBwMm1fYWRkX2lvbW11 X2ZsYWdzKCZlbnRyeV9jb250ZW50LCAwLCBpb21tdV9wdGVfZmxhZ3MpOwogCisgICAgICAgIHAy bV9zZXRfYWNjZXNzKHAybSwgZ2ZuLCBwMm1hKTsKICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50 cnkocDJtLCBnZm4sIHAybV9lbnRyeSwgZW50cnlfY29udGVudCwgMyk7CiAgICAgICAgIC8qIE5C OiBwYWdpbmdfd3JpdGVfcDJtX2VudHJ5KCkgaGFuZGxlcyB0bGIgZmx1c2hlcyBwcm9wZXJseSAq LwogICAgIH0KQEAgLTYwOCw3ICs2ODUsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIGdmbl90IGdmbl8sIG1mbl90IG1mbiwKIAogICAgICAgICBpZiAoIG1mbl92 YWxpZChtZm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkgKQogICAgICAgICAgICAg ZW50cnlfY29udGVudCA9IHAybV9sMWVfZnJvbV9wZm4obWZuX3gobWZuKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10 LCBtZm4sIDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJt X3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDAsIHAybWEpKTsKICAgICAgICAgZWxzZQog ICAgICAgICAgICAgZW50cnlfY29udGVudCA9IGwxZV9lbXB0eSgpOwogCkBAIC02MzAsNiArNzA3 LDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm5f LCBtZm5fdCBtZm4sCiAgICAgICAgICAgICBwMm0tPmlvcmVxLmVudHJ5X2NvdW50LS07CiAgICAg ICAgIH0KIAorICAgICAgICBwMm1fc2V0X2FjY2VzcyhwMm0sIGdmbiwgcDJtYSk7CiAgICAgICAg IC8qIGxldmVsIDEgZW50cnkgKi8KICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBn Zm4sIHAybV9lbnRyeSwgZW50cnlfY29udGVudCwgMSk7CiAgICAgICAgIC8qIE5COiBwYWdpbmdf d3JpdGVfcDJtX2VudHJ5KCkgaGFuZGxlcyB0bGIgZmx1c2hlcyBwcm9wZXJseSAqLwpAQCAtNjYx LDEzICs3MzksMTQgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBn Zm5fdCBnZm5fLCBtZm5fdCBtZm4sCiAgICAgICAgIEFTU0VSVCghbWZuX3ZhbGlkKG1mbikgfHwg cDJtdCAhPSBwMm1fbW1pb19kaXJlY3QpOwogICAgICAgICBsMmVfY29udGVudCA9IG1mbl92YWxp ZChtZm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkKICAgICAgICAgICAgID8gcDJt X2wyZV9mcm9tX3BmbihtZm5feChtZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAxKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMSwgcDJtYSkp CiAgICAgICAgICAgICA6IGwyZV9lbXB0eSgpOwogICAgICAgICBlbnRyeV9jb250ZW50LmwxID0g bDJlX2NvbnRlbnQubDI7CiAKICAgICAgICAgaWYgKCBlbnRyeV9jb250ZW50LmwxICE9IDAgKQog ICAgICAgICAgICAgcDJtX2FkZF9pb21tdV9mbGFncygmZW50cnlfY29udGVudCwgMCwgaW9tbXVf cHRlX2ZsYWdzKTsKIAorICAgICAgICBwMm1fc2V0X2FjY2VzcyhwMm0sIGdmbiwgcDJtYSk7CiAg ICAgICAgIHAybS0+d3JpdGVfcDJtX2VudHJ5KHAybSwgZ2ZuLCBwMm1fZW50cnksIGVudHJ5X2Nv bnRlbnQsIDIpOwogICAgICAgICAvKiBOQjogcGFnaW5nX3dyaXRlX3AybV9lbnRyeSgpIGhhbmRs ZXMgdGxiIGZsdXNoZXMgcHJvcGVybHkgKi8KICAgICB9CkBAIC03NDksOCArODI4LDcgQEAgcDJt X3B0X2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm5fLAogICAgICAq IFhYWCBPbmNlIHdlIHN0YXJ0IGV4cGxpY2l0bHkgcmVnaXN0ZXJpbmcgTU1JTyByZWdpb25zIGlu IHRoZSBwMm0gCiAgICAgICogWFhYIHdlIHdpbGwgcmV0dXJuIHAybV9pbnZhbGlkIGZvciB1bm1h cHBlZCBnZm5zICovCiAgICAgKnQgPSBwMm1fbW1pb19kbTsKLSAgICAvKiBOb3QgaW1wbGVtZW50 ZWQgZXhjZXB0IHdpdGggRVBUICovCi0gICAgKmEgPSBwMm1fYWNjZXNzX3J3eDsgCisgICAgKmEg PSBwMm1fYWNjZXNzX247CiAKICAgICBpZiAoIGdmbiA+IHAybS0+bWF4X21hcHBlZF9wZm4gKQog ICAgIHsKQEAgLTgxMyw2ICs4OTEsNyBAQCBwb2RfcmV0cnlfbDM6CiAgICAgICAgICAgICAgICAg ICAgICAgIGwxX3RhYmxlX29mZnNldChhZGRyKSk7CiAgICAgICAgICAgICAqdCA9IHAybV9yZWNh bGNfdHlwZShyZWNhbGMgfHwgX25lZWRzX3JlY2FsYyhmbGFncyksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwMm1fZmxhZ3NfdG9fdHlwZShmbGFncyksIHAybSwgZ2ZuKTsKKyAg ICAgICAgICAgICphID0gcDJtX2dldF9hY2Nlc3MocDJtLCBnZm4pOwogICAgICAgICAgICAgdW5t YXBfZG9tYWluX3BhZ2UobDNlKTsKIAogICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4p IHx8ICFwMm1faXNfcmFtKCp0KSk7CkBAIC04NTIsNiArOTMxLDcgQEAgcG9kX3JldHJ5X2wyOgog ICAgICAgICBtZm4gPSBfbWZuKGwyZV9nZXRfcGZuKCpsMmUpICsgbDFfdGFibGVfb2Zmc2V0KGFk ZHIpKTsKICAgICAgICAgKnQgPSBwMm1fcmVjYWxjX3R5cGUocmVjYWxjIHx8IF9uZWVkc19yZWNh bGMoZmxhZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fZmxhZ3NfdG9fdHlw ZShmbGFncyksIHAybSwgZ2ZuKTsKKyAgICAgICAgKmEgPSBwMm1fZ2V0X2FjY2VzcyhwMm0sIGdm bik7CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwyZSk7CiAgICAgICAgIAogICAgICAgICBB U1NFUlQobWZuX3ZhbGlkKG1mbikgfHwgIXAybV9pc19yYW0oKnQpKTsKQEAgLTg4OCw2ICs5Njgs NyBAQCBwb2RfcmV0cnlfbDE6CiAgICAgfQogICAgIG1mbiA9IGwxZV9nZXRfbWZuKCpsMWUpOwog ICAgICp0ID0gcDJtX3JlY2FsY190eXBlKHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwg bDF0LCBwMm0sIGdmbik7CisgICAgKmEgPSBwMm1fZ2V0X2FjY2VzcyhwMm0sIGdmbik7CiAgICAg dW5tYXBfZG9tYWluX3BhZ2UobDFlKTsKIAogICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSB8fCAh cDJtX2lzX3JhbSgqdCkgfHwgcDJtX2lzX3BhZ2luZygqdCkpOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IGM1M2NhYjQuLjEy ZTJkMjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLmMKQEAgLTY3NSw2ICs2NzUsMTIgQEAgdm9pZCBwMm1fdGVhcmRvd24oc3RydWN0 IHAybV9kb21haW4gKnAybSkKIAogICAgIGQgPSBwMm0tPmRvbWFpbjsKIAorICAgIGlmICggcDJt LT5tZW1fYWNjZXNzX3NldHRpbmdzICkKKyAgICB7CisgICAgICAgIHJhZGl4X3RyZWVfZGVzdHJv eShwMm0tPm1lbV9hY2Nlc3Nfc2V0dGluZ3MsIE5VTEwpOworICAgICAgICB4ZnJlZShwMm0tPm1l bV9hY2Nlc3Nfc2V0dGluZ3MpOworICAgIH0KKwogICAgIHAybV9sb2NrKHAybSk7CiAgICAgQVNT RVJUKGF0b21pY19yZWFkKCZkLT5zaHJfcGFnZXMpID09IDApOwogICAgIHAybS0+cGh5c190YWJs ZSA9IHBhZ2V0YWJsZV9udWxsKCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW9uaXRvci5j IGIveGVuL2FyY2gveDg2L21vbml0b3IuYwppbmRleCAzZmI2NTMxLi4xOGI4OGExIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvbW9uaXRvci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tb25pdG9yLmMK QEAgLTIwLDEwICsyMCwxMyBAQAogICovCiAKICNpbmNsdWRlIDxhc20vbW9uaXRvci5oPgorI2lu Y2x1ZGUgPGFzbS9wMm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvdm1fZXZlbnQuaD4KIAogaW50IGFy Y2hfbW9uaXRvcl9pbml0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHN0cnVjdCBw Mm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisKICAgICBpZiAoICFkLT5hcmNo Lm1vbml0b3IubXNyX2JpdG1hcCApCiAgICAgICAgIGQtPmFyY2gubW9uaXRvci5tc3JfYml0bWFw ID0geHphbGxvY19hcnJheShzdHJ1Y3QgbW9uaXRvcl9tc3JfYml0bWFwLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMik7CkBAIC0zMSw2ICszNCwx NiBAQCBpbnQgYXJjaF9tb25pdG9yX2luaXRfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAgICAg aWYgKCAhZC0+YXJjaC5tb25pdG9yLm1zcl9iaXRtYXAgKQogICAgICAgICByZXR1cm4gLUVOT01F TTsKIAorICAgIGlmICggY3B1X2hhc19zdm0gJiYgIXAybS0+bWVtX2FjY2Vzc19zZXR0aW5ncyAp CisgICAgeworICAgICAgICBwMm0tPm1lbV9hY2Nlc3Nfc2V0dGluZ3MgPSB4bWFsbG9jKHN0cnVj dCByYWRpeF90cmVlX3Jvb3QpOworCisgICAgICAgIGlmKCAhcDJtLT5tZW1fYWNjZXNzX3NldHRp bmdzICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgICAgIHJhZGl4X3RyZWVf aW5pdChwMm0tPm1lbV9hY2Nlc3Nfc2V0dGluZ3MpOworICAgIH0KKwogICAgIHJldHVybiAwOwog fQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21lbV9hY2Nlc3MuaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvbWVtX2FjY2Vzcy5oCmluZGV4IDQwNDNjOWYuLjM0ZjJjMDcgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWVtX2FjY2Vzcy5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbWVtX2FjY2Vzcy5oCkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgcDJtX21lbV9hY2Nl c3NfZW11bGF0ZV9jaGVjayhzdHJ1Y3QgdmNwdSAqdiwKIC8qIFNhbml0eSBjaGVjayBmb3IgbWVt X2FjY2VzcyBoYXJkd2FyZSBzdXBwb3J0ICovCiBzdGF0aWMgaW5saW5lIGJvb2wgcDJtX21lbV9h Y2Nlc3Nfc2FuaXR5X2NoZWNrKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgcmV0dXJuIGlzX2h2 bV9kb21haW4oZCkgJiYgY3B1X2hhc192bXggJiYgaGFwX2VuYWJsZWQoZCk7CisgICAgcmV0dXJu IGlzX2h2bV9kb21haW4oZCkgJiYgaGFwX2VuYWJsZWQoZCk7CiB9CiAKICNlbmRpZiAvKl9fQVNN X1g4Nl9NRU1fQUNDRVNTX0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9w Mm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKaW5kZXggZDRiM2NmYy4uYTIzMzAwYSAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAorKysgYi94ZW4vaW5jbHVkZS9h c20teDg2L3AybS5oCkBAIC0yODgsNiArMjg4LDEyIEBAIHN0cnVjdCBwMm1fZG9tYWluIHsKICAg ICAgKiByZXR5cGVkIGdldCB0aGlzIGFjY2VzcyB0eXBlLiAgU2VlIGRlZmluaXRpb24gb2YgcDJt X2FjY2Vzc190LiAqLwogICAgIHAybV9hY2Nlc3NfdCBkZWZhdWx0X2FjY2VzczsKIAorICAgIC8q CisgICAgICogUmFkaXggdHJlZSB0byBzdG9yZSB0aGUgcDJtX2FjY2Vzc190IHNldHRpbmdzIGFz IHRoZSBwdGUncyBkb24ndCBoYXZlCisgICAgICogZW5vdWdoIGF2YWlsYWJsZSBiaXRzIHRvIHN0 b3JlIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgc3RydWN0IHJhZGl4X3RyZWVfcm9v dCAqbWVtX2FjY2Vzc19zZXR0aW5nczsKKwogICAgIC8qIElmIHRydWUsIGFuZCBhbiBhY2Nlc3Mg ZmF1bHQgY29tZXMgaW4gYW5kIHRoZXJlIGlzIG5vIHZtX2V2ZW50IGxpc3RlbmVyLCAKICAgICAg KiBwYXVzZSBkb21haW4uICBPdGhlcndpc2UsIHJlbW92ZSBhY2Nlc3MgcmVzdHJpY3Rpb25zLiAq LwogICAgIGJvb2xfdCAgICAgICBhY2Nlc3NfcmVxdWlyZWQ7Ci0tIAoyLjcuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=