From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 33/92] kvm: introspection: add KVMI_SET_PAGE_ACCESS Date: Fri, 9 Aug 2019 18:59:48 +0300 Message-ID: <20190809160047.8319-34-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 , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBjb21tYW5k IHNldHMgdGhlIHNwdGUgYWNjZXNzIGJpdHMgKHJ3eCkgZm9yIGFuIGFycmF5IG9mIGd1ZXN0CnBo eXNpY2FsIGFkZHJlc3NlcyAodGhyb3VnaCB0aGUgcGFnZSB0cmFjayBzdWJzeXN0ZW0pLgoKVGhl c2UgcGFnZXMsIHdpdGggdGhlIHJlcXVlc3RlZCBhY2Nlc3MgYml0cywgYXJlIGFsc28ga2VwdCBp biBhIHJhZGl4CnRyZWUgaW4gb3JkZXIgdG8gZmlsdGVyIG91dCB0aGUgI1BGIGV2ZW50cyB3aGlj aCBhcmUgb2Ygbm8gaW50ZXJlc3QgdG8KdGhlIGludHJvc3BlY3Rpb24gdG9vbC4KClNpZ25lZC1v ZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1i eTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50 YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysr KwogYXJjaC94ODYva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysr KysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAgICB8IDE1ICsrKysrKysrCiB2 aXJ0L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB2aXJ0L2t2bS9rdm1pX2ludC5oICAgICAgICAgICAgICAgIHwgIDQgKysK IHZpcnQva3ZtL2t2bWlfbXNnLmMgICAgICAgICAgICAgICAgfCAxMyArKysrKysrCiA2IGZpbGVz IGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QK aW5kZXggYzI3ZmVhNzNjY2ZiLi5iNjRhMDMwNTA3Y2YgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRp b24vdmlydHVhbC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9r dm1pLnJzdApAQCAtNTYzLDYgKzU2Myw2MCBAQCBFUFQgdmlldyAoMCBpcyBwcmltYXJ5KS4gT24g YWxsIG90aGVyIGhhcmR3YXJlIGl0IG11c3QgYmUgemVyby4KICogLUtWTV9FQUdBSU4gLSB0aGUg c2VsZWN0ZWQgdkNQVSBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgeWV0CiAqIC1LVk1fRU5PTUVNIC0g bm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlIHJlcGx5CiAKKzEwLiBLVk1JX1NFVF9Q QUdFX0FDQ0VTUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiBh bGwKKzpWZXJzaW9uczogPj0gMQorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9z ZXRfcGFnZV9hY2Nlc3MgeworCQlfX3UxNiB2aWV3OworCQlfX3UxNiBjb3VudDsKKwkJX191MzIg cGFkZGluZzsKKwkJc3RydWN0IGt2bWlfcGFnZV9hY2Nlc3NfZW50cnkgZW50cmllc1swXTsKKwl9 OworCit3aGVyZTo6CisKKwlzdHJ1Y3Qga3ZtaV9wYWdlX2FjY2Vzc19lbnRyeSB7CisJCV9fdTY0 IGdwYTsKKwkJX191OCBhY2Nlc3M7CisJCV9fdTggcGFkZGluZzE7CisJCV9fdTE2IHBhZGRpbmcy OworCQlfX3UzMiBwYWRkaW5nMzsKKwl9OworCisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0 IGt2bWlfZXJyb3JfY29kZQorCitTZXRzIHRoZSBzcHRlIGFjY2VzcyBiaXRzIChyd3gpIGZvciBh biBhcnJheSBvZiBgYGNvdW50YGAgZ3Vlc3QgcGh5c2ljYWwKK2FkZHJlc3Nlcy4KKworVGhlIGNv bW1hbmQgd2lsbCBmYWlsIHdpdGggLUtWTV9FSU5WQUwgaWYgYW55IG9mIHRoZSBzcGVjaWZpZWQg Y29tYmluYXRpb24KK29mIGFjY2VzcyBiaXRzIGlzIG5vdCBzdXBwb3J0ZWQuCisKK1RoZSBjb21t YW5kIHdpbGwgbWFrZSB0aGUgY2hhbmdlcyBpbiBvcmRlciBhbmQgaXQgd2lsbCBzdG9wIG9uIHRo ZSBmaXJzdAorZXJyb3IuIFRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgc2hvdWxkIGhhbmRsZSB0aGUg cm9sbGJhY2suCisKK0luIG9yZGVyIHRvICdmb3JnZXQnIGFuIGFkZHJlc3MsIGFsbCB0aGUgYWNj ZXNzIGJpdHMgKCdyd3gnKSBtdXN0IGJlIHNldC4KKworOkVycm9yczoKKworKiAtS1ZNX0VJTlZB TCAtIHRoZSBzcGVjaWZpZWQgYWNjZXNzIGJpdHMgY29tYmluYXRpb24gaXMgaW52YWxpZAorKiAt S1ZNX0VJTlZBTCAtIHRoZSBzZWxlY3RlZCBTUFQgdmlldyBpcyBpbnZhbGlkCisqIC1LVk1fRUlO VkFMIC0gcGFkZGluZyBpcyBub3QgemVybworKiAtS1ZNX0VJTlZBTCAtIHRoZSBtZXNzYWdlIHNp emUgaXMgaW52YWxpZAorKiAtS1ZNX0VPUE5PVFNVUFAgLSBhIFNQVCB2aWV3IHdhcyBzZWxlY3Rl ZCBidXQgdGhlIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBpdAorKiAtS1ZNX0VBR0FJTiAtIHRo ZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKKyogLUtWTV9FTk9NRU0g LSBub3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGhlIHBhZ2UgdHJhY2tpbmcgc3RydWN0dXJlcwor CiBFdmVudHMKID09PT09PQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJj aC94ODYva3ZtL2t2bWkuYwppbmRleCA1OWNmMzMxMjdiNGIuLjMyMzhlZjE3NmFkNiAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC0y MjQsMyArMjI0LDM5IEBAIGludCBrdm1pX2FyY2hfY21kX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qg a3ZtaSAqaWt2bSwKIAlyZXR1cm4gMDsKIH0KIAoraW50IGt2bWlfYXJjaF9jbWRfc2V0X3BhZ2Vf YWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLAorCQkJCSAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hk ciAqbXNnLAorCQkJCSAgY29uc3Qgc3RydWN0IGt2bWlfc2V0X3BhZ2VfYWNjZXNzICpyZXEpCit7 CisJY29uc3Qgc3RydWN0IGt2bWlfcGFnZV9hY2Nlc3NfZW50cnkgKmVudHJ5ID0gcmVxLT5lbnRy aWVzOworCWNvbnN0IHN0cnVjdCBrdm1pX3BhZ2VfYWNjZXNzX2VudHJ5ICplbmQgPSByZXEtPmVu dHJpZXMgKyByZXEtPmNvdW50OworCXU4IHVua25vd25fYml0cyA9IH4oS1ZNSV9QQUdFX0FDQ0VT U19SIHwgS1ZNSV9QQUdFX0FDQ0VTU19XCisJCQkgICAgfCBLVk1JX1BBR0VfQUNDRVNTX1gpOwor CWludCBlYyA9IDA7CisKKwlpZiAocmVxLT5wYWRkaW5nKQorCQlyZXR1cm4gLUtWTV9FSU5WQUw7 CisKKwlpZiAobXNnLT5zaXplIDwgc2l6ZW9mKCpyZXEpICsgKGVuZCAtIGVudHJ5KSAqIHNpemVv ZigqZW50cnkpKQorCQlyZXR1cm4gLUtWTV9FSU5WQUw7CisKKwlpZiAocmVxLT52aWV3ICE9IDAp CS8qIFRPRE8gKi8KKwkJcmV0dXJuIC1LVk1fRU9QTk9UU1VQUDsKKworCWZvciAoOyBlbnRyeSA8 IGVuZDsgZW50cnkrKykgeworCQlpZiAoKGVudHJ5LT5hY2Nlc3MgJiB1bmtub3duX2JpdHMpIHx8 IGVudHJ5LT5wYWRkaW5nMQorCQkJCXx8IGVudHJ5LT5wYWRkaW5nMiB8fCBlbnRyeS0+cGFkZGlu ZzMpCisJCQllYyA9IC1LVk1fRUlOVkFMOworCQllbHNlCisJCQllYyA9IGt2bWlfY21kX3NldF9w YWdlX2FjY2Vzcyhpa3ZtLCBlbnRyeS0+Z3BhLAorCQkJCQkJICAgICAgZW50cnktPmFjY2Vzcyk7 CisJCWlmIChlYykKKwkJCWt2bWlfd2Fybihpa3ZtLCAiJXM6ICVsbHggJXggcGFkZGluZyAleCwl eCwleCIsCisJCQkJICBfX2Z1bmNfXywgZW50cnktPmdwYSwgZW50cnktPmFjY2VzcywKKwkJCQkg IGVudHJ5LT5wYWRkaW5nMSwgZW50cnktPnBhZGRpbmcyLAorCQkJCSAgZW50cnktPnBhZGRpbmcz KTsKKwl9CisKKwlyZXR1cm4gZWM7Cit9CisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51 eC9rdm1pLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCmluZGV4IDA0NzQzNmEwYmRjMC4u MmRkYmIxZmVhODA3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCisrKyBi L2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgKQEAgLTEyNyw2ICsxMjcsMjEgQEAgc3RydWN0IGt2 bWlfZ2V0X3BhZ2VfYWNjZXNzX3JlcGx5IHsKIAlfX3U4IGFjY2Vzc1swXTsKIH07CiAKK3N0cnVj dCBrdm1pX3BhZ2VfYWNjZXNzX2VudHJ5IHsKKwlfX3U2NCBncGE7CisJX191OCBhY2Nlc3M7CisJ X191OCBwYWRkaW5nMTsKKwlfX3UxNiBwYWRkaW5nMjsKKwlfX3UzMiBwYWRkaW5nMzsKK307CisK K3N0cnVjdCBrdm1pX3NldF9wYWdlX2FjY2VzcyB7CisJX191MTYgdmlldzsKKwlfX3UxNiBjb3Vu dDsKKwlfX3UzMiBwYWRkaW5nOworCXN0cnVjdCBrdm1pX3BhZ2VfYWNjZXNzX2VudHJ5IGVudHJp ZXNbMF07Cit9OworCiBzdHJ1Y3Qga3ZtaV9nZXRfdmNwdV9pbmZvX3JlcGx5IHsKIAlfX3U2NCB0 c2Nfc3BlZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaS5jIGIvdmlydC9rdm0va3Zt aS5jCmluZGV4IDIwNTA1ZTRjNGI1Zi4uNGE5YTQ0MzBhNDYwIDEwMDY0NAotLS0gYS92aXJ0L2t2 bS9rdm1pLmMKKysrIGIvdmlydC9rdm0va3ZtaS5jCkBAIC03Myw2ICs3Myw1NyBAQCBzdGF0aWMg aW50IGt2bWlfZ2V0X2dmbl9hY2Nlc3Moc3RydWN0IGt2bWkgKmlrdm0sIGNvbnN0IGdmbl90IGdm biwKIAlyZXR1cm4gbSA/IDAgOiAtMTsKIH0KIAorc3RhdGljIGludCBrdm1pX3NldF9nZm5fYWNj ZXNzKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuLCB1OCBhY2Nlc3MpCit7CisJc3RydWN0IGt2 bWlfbWVtX2FjY2VzcyAqbTsKKwlzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICpfX207CisJc3RydWN0 IGt2bWkgKmlrdm0gPSBJS1ZNKGt2bSk7CisJaW50IGVyciA9IDA7CisJaW50IGlkeDsKKworCW0g PSBrbWVtX2NhY2hlX3phbGxvYyhyYWRpeF9jYWNoZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtKQor CQlyZXR1cm4gLUtWTV9FTk9NRU07CisKKwltLT5nZm4gPSBnZm47CisJbS0+YWNjZXNzID0gYWNj ZXNzOworCisJaWYgKHJhZGl4X3RyZWVfcHJlbG9hZChHRlBfS0VSTkVMKSkgeworCQllcnIgPSAt S1ZNX0VOT01FTTsKKwkJZ290byBleGl0OworCX0KKworCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZr dm0tPnNyY3UpOworCXNwaW5fbG9jaygma3ZtLT5tbXVfbG9jayk7CisJd3JpdGVfbG9jaygmaWt2 bS0+YWNjZXNzX3RyZWVfbG9jayk7CisKKwlfX20gPSBfX2t2bWlfZ2V0X2dmbl9hY2Nlc3MoaWt2 bSwgZ2ZuKTsKKwlpZiAoX19tKSB7CisJCV9fbS0+YWNjZXNzID0gYWNjZXNzOworCQlrdm1pX2Fy Y2hfdXBkYXRlX3BhZ2VfdHJhY2tpbmcoa3ZtLCBOVUxMLCBfX20pOworCQlpZiAoYWNjZXNzID09 IGZ1bGxfYWNjZXNzKSB7CisJCQlyYWRpeF90cmVlX2RlbGV0ZSgmaWt2bS0+YWNjZXNzX3RyZWUs IGdmbik7CisJCQlrbWVtX2NhY2hlX2ZyZWUocmFkaXhfY2FjaGUsIF9fbSk7CisJCX0KKwl9IGVs c2UgeworCQlyYWRpeF90cmVlX2luc2VydCgmaWt2bS0+YWNjZXNzX3RyZWUsIGdmbiwgbSk7CisJ CWt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2luZyhrdm0sIE5VTEwsIG0pOworCQltID0gTlVM TDsKKwl9CisKKwl3cml0ZV91bmxvY2soJmlrdm0tPmFjY2Vzc190cmVlX2xvY2spOworCXNwaW5f dW5sb2NrKCZrdm0tPm1tdV9sb2NrKTsKKwlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlk eCk7CisKKwlyYWRpeF90cmVlX3ByZWxvYWRfZW5kKCk7CisKK2V4aXQ6CisJaWYgKG0pCisJCWtt ZW1fY2FjaGVfZnJlZShyYWRpeF9jYWNoZSwgbSk7CisKKwlyZXR1cm4gZXJyOworfQorCiBzdGF0 aWMgYm9vbCBrdm1pX3Jlc3RyaWN0ZWRfYWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLCBncGFfdCBn cGEsIHU4IGFjY2VzcykKIHsKIAl1OCBhbGxvd2VkX2FjY2VzczsKQEAgLTEwODEsNiArMTEzMiwx NiBAQCBpbnQga3ZtaV9jbWRfZ2V0X3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLCB1NjQg Z3BhLCB1OCAqYWNjZXNzKQogCXJldHVybiAwOwogfQogCitpbnQga3ZtaV9jbWRfc2V0X3BhZ2Vf YWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLCB1NjQgZ3BhLCB1OCBhY2Nlc3MpCit7CisJZ2ZuX3Qg Z2ZuID0gZ3BhX3RvX2dmbihncGEpOworCXU4IGlnbm9yZWRfYWNjZXNzOworCisJa3ZtaV9nZXRf Z2ZuX2FjY2Vzcyhpa3ZtLCBnZm4sICZpZ25vcmVkX2FjY2Vzcyk7CisKKwlyZXR1cm4ga3ZtaV9z ZXRfZ2ZuX2FjY2Vzcyhpa3ZtLT5rdm0sIGdmbiwgYWNjZXNzKTsKK30KKwogaW50IGt2bWlfY21k X2NvbnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV2ZW50 X2lkLAogCQkJICAgIGJvb2wgZW5hYmxlKQogewpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9p bnQuaCBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKaW5kZXggMDBkYzVjZjcyZjg4Li5jNTRiZTkzMzQ5 YjcgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9p bnQuaApAQCAtMTYwLDYgKzE2MCw3IEBAIHZvaWQgKmt2bWlfbXNnX2FsbG9jKHZvaWQpOwogdm9p ZCAqa3ZtaV9tc2dfYWxsb2NfY2hlY2soc2l6ZV90IHNpemUpOwogdm9pZCBrdm1pX21zZ19mcmVl KHZvaWQgKmFkZHIpOwogaW50IGt2bWlfY21kX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAq aWt2bSwgdTY0IGdwYSwgdTggKmFjY2Vzcyk7CitpbnQga3ZtaV9jbWRfc2V0X3BhZ2VfYWNjZXNz KHN0cnVjdCBrdm1pICppa3ZtLCB1NjQgZ3BhLCB1OCBhY2Nlc3MpOwogaW50IGt2bWlfY21kX2Nv bnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV2ZW50X2lk LAogCQkJICAgIGJvb2wgZW5hYmxlKTsKIGludCBrdm1pX2NtZF9jb250cm9sX3ZtX2V2ZW50cyhz dHJ1Y3Qga3ZtaSAqaWt2bSwgdW5zaWduZWQgaW50IGV2ZW50X2lkLApAQCAtMTgwLDYgKzE4MSw5 IEBAIGludCBrdm1pX2FyY2hfY21kX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2bSwK IAkJCQkgIGNvbnN0IHN0cnVjdCBrdm1pX2dldF9wYWdlX2FjY2VzcyAqcmVxLAogCQkJCSAgc3Ry dWN0IGt2bWlfZ2V0X3BhZ2VfYWNjZXNzX3JlcGx5ICoqZGVzdCwKIAkJCQkgIHNpemVfdCAqZGVz dF9zaXplKTsKK2ludCBrdm1pX2FyY2hfY21kX3NldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAq aWt2bSwKKwkJCQkgIGNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywKKwkJCQkgIGNvbnN0 IHN0cnVjdCBrdm1pX3NldF9wYWdlX2FjY2VzcyAqcmVxKTsKIHZvaWQga3ZtaV9hcmNoX3NldHVw X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bWlfZXZlbnQgKmV2KTsKIGJv b2wga3ZtaV9hcmNoX3BmX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBn dmFfdCBndmEsCiAJCQl1OCBhY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tc2cu YyBiL3ZpcnQva3ZtL2t2bWlfbXNnLmMKaW5kZXggMDlhZDE3NDc5YWJiLi5jMTUwZTdiZGQ0NDAg MTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfbXNnLmMKKysrIGIvdmlydC9rdm0va3ZtaV9tc2cu YwpAQCAtMzIsNiArMzIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbXNnX0lEc1tdID0g ewogCVtLVk1JX0dFVF9QQUdFX0FDQ0VTU10gICAgICAgPSAiS1ZNSV9HRVRfUEFHRV9BQ0NFU1Mi LAogCVtLVk1JX0dFVF9WQ1BVX0lORk9dICAgICAgICAgPSAiS1ZNSV9HRVRfVkNQVV9JTkZPIiwK IAlbS1ZNSV9HRVRfVkVSU0lPTl0gICAgICAgICAgID0gIktWTUlfR0VUX1ZFUlNJT04iLAorCVtL Vk1JX1NFVF9QQUdFX0FDQ0VTU10gICAgICAgPSAiS1ZNSV9TRVRfUEFHRV9BQ0NFU1MiLAogfTsK IAogc3RhdGljIGJvb2wgaXNfa25vd25fbWVzc2FnZSh1MTYgaWQpCkBAIC0zMzksNiArMzQwLDE3 IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2bSwK IAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGhhbmRsZV9zZXRfcGFnZV9hY2Nlc3Moc3Ry dWN0IGt2bWkgKmlrdm0sCisJCQkJICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCisJ CQkJICBjb25zdCB2b2lkICpyZXEpCit7CisJaW50IGVjOworCisJZWMgPSBrdm1pX2FyY2hfY21k X3NldF9wYWdlX2FjY2Vzcyhpa3ZtLCBtc2csIHJlcSk7CisKKwlyZXR1cm4ga3ZtaV9tc2dfdm1f bWF5YmVfcmVwbHkoaWt2bSwgbXNnLCBlYywgTlVMTCwgMCk7Cit9CisKIHN0YXRpYyBib29sIGlu dmFsaWRfdmNwdV9oZHIoY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9oZHIgKmhkcikKIHsKIAlyZXR1 cm4gaGRyLT5wYWRkaW5nMSB8fCBoZHItPnBhZGRpbmcyOwpAQCAtMzU2LDYgKzM2OCw3IEBAIHN0 YXRpYyBpbnQoKmNvbnN0IG1zZ192bVtdKShzdHJ1Y3Qga3ZtaSAqLCBjb25zdCBzdHJ1Y3Qga3Zt aV9tc2dfaGRyICosCiAJW0tWTUlfR0VUX0dVRVNUX0lORk9dICAgICAgICA9IGhhbmRsZV9nZXRf Z3Vlc3RfaW5mbywKIAlbS1ZNSV9HRVRfUEFHRV9BQ0NFU1NdICAgICAgID0gaGFuZGxlX2dldF9w YWdlX2FjY2VzcywKIAlbS1ZNSV9HRVRfVkVSU0lPTl0gICAgICAgICAgID0gaGFuZGxlX2dldF92 ZXJzaW9uLAorCVtLVk1JX1NFVF9QQUdFX0FDQ0VTU10gICAgICAgPSBoYW5kbGVfc2V0X3BhZ2Vf YWNjZXNzLAogfTsKIAogc3RhdGljIGludCBoYW5kbGVfZXZlbnRfcmVwbHkoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgt Zm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vdmlydHVhbGl6YXRpb24=