From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 47/92] kvm: introspection: add KVMI_READ_PHYSICAL and KVMI_WRITE_PHYSICAL Date: Fri, 9 Aug 2019 19:00:02 +0300 Message-ID: <20190809160047.8319-48-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlc2UgY29tbWFu ZHMgYWxsb3dzIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgdG8gcmVhZC93cml0ZSBmcm9tL3RvIHRo ZQpndWVzdCBtZW1vcnkuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRk ZWZlbmRlci5jb20+CkNvLWRldmVsb3BlZC1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0 ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRk ZWZlbmRlci5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdCB8ICA2 MCArKysrKysrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oICAgICAgICAgIHwg IDExICsrKwogdmlydC9rdm0va3ZtaS5jICAgICAgICAgICAgICAgICAgICB8IDEwNyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAgICAgICAg ICB8ICAgNyArKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAgICB8ICA0MiArKysr KysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1 YWwva3ZtL2t2bWkucnN0CmluZGV4IDY5NTU3YzYzZmY5NC4uZWVmMzIxMDc4MzdhIDEwMDY0NAot LS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0CisrKyBiL0RvY3VtZW50YXRp b24vdmlydHVhbC9rdm0va3ZtaS5yc3QKQEAgLTc2MCw2ICs3NjAsNjYgQEAgY29ycmVzcG9uZGlu ZyBiaXQgc2V0IHRvIDEuCiAqIC1LVk1fRUFHQUlOIC0gdGhlIHNlbGVjdGVkIHZDUFUgY2FuJ3Qg YmUgaW50cm9zcGVjdGVkIHlldAogKiAtS1ZNX0VOT01FTSAtIG5vdCBlbm91Z2ggbWVtb3J5IHRv IGFkZCB0aGUgcGFnZSB0cmFja2luZyBzdHJ1Y3R1cmVzCiAKKzE0LiBLVk1JX1JFQURfUEhZU0lD QUwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IGFsbAorOlZlcnNp b25zOiA+PSAxCis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX3JlYWRfcGh5c2lj YWwgeworCQlfX3U2NCBncGE7CisJCV9fdTY0IHNpemU7CisJfTsKKworOlJldHVybnM6CisKKzo6 CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlOworCV9fdTggZGF0YVswXTsKKworUmVhZHMgZnJv bSB0aGUgZ3Vlc3QgbWVtb3J5LgorCitDdXJyZW50bHksIHRoZSBzaXplIG11c3QgYmUgbm9uLXpl cm8gYW5kIHRoZSByZWFkIG11c3QgYmUgcmVzdHJpY3RlZCB0bworb25lIHBhZ2UgKG9mZnNldCAr IHNpemUgPD0gUEFHRV9TSVpFKS4KKworOkVycm9yczoKKworKiAtS1ZNX0VJTlZBTCAtIHRoZSBz cGVjaWZpZWQgZ3BhIGlzIGludmFsaWQKKworMTUuIEtWTUlfV1JJVEVfUEhZU0lDQUwKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiBhbGwKKzpWZXJzaW9uczogPj0g MQorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV93cml0ZV9waHlzaWNhbCB7CisJ CV9fdTY0IGdwYTsKKwkJX191NjQgc2l6ZTsKKwkJX191OCAgZGF0YVswXTsKKwl9OworCis6UmV0 dXJuczoKKworOjoKKworCXN0cnVjdCBrdm1pX2Vycm9yX2NvZGUKKworV3JpdGVzIGludG8gdGhl IGd1ZXN0IG1lbW9yeS4KKworQ3VycmVudGx5LCB0aGUgc2l6ZSBtdXN0IGJlIG5vbi16ZXJvIGFu ZCB0aGUgd3JpdGUgbXVzdCBiZSByZXN0cmljdGVkIHRvCitvbmUgcGFnZSAob2Zmc2V0ICsgc2l6 ZSA8PSBQQUdFX1NJWkUpLgorCis6RXJyb3JzOgorCisqIC1LVk1fRUlOVkFMIC0gdGhlIHNwZWNp ZmllZCBncGEgaXMgaW52YWxpZAorCiBFdmVudHMKID09PT09PQogCmRpZmYgLS1naXQgYS9pbmNs dWRlL3VhcGkvbGludXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRleCAw YjMxMzljNTJhMzAuLmJlM2YwNjZmMzE0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4 L2t2bWkuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC0xOTEsNiArMTkxLDE3 IEBAIHN0cnVjdCBrdm1pX2NvbnRyb2xfdm1fZXZlbnRzIHsKIAlfX3UzMiBwYWRkaW5nMjsKIH07 CiAKK3N0cnVjdCBrdm1pX3JlYWRfcGh5c2ljYWwgeworCV9fdTY0IGdwYTsKKwlfX3U2NCBzaXpl OworfTsKKworc3RydWN0IGt2bWlfd3JpdGVfcGh5c2ljYWwgeworCV9fdTY0IGdwYTsKKwlfX3U2 NCBzaXplOworCV9fdTggIGRhdGFbMF07Cit9OworCiBzdHJ1Y3Qga3ZtaV92Y3B1X2hkciB7CiAJ X191MTYgdmNwdTsKIAlfX3UxNiBwYWRkaW5nMTsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWku YyBiL3ZpcnQva3ZtL2t2bWkuYwppbmRleCBkMmJlYmVmOThkOGQuLmE4NGViMTUwZTExNiAxMDA2 NDQKLS0tIGEvdmlydC9rdm0va3ZtaS5jCisrKyBiL3ZpcnQva3ZtL2t2bWkuYwpAQCAtNSw2ICs1 LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEJpdGRlZmVuZGVyIFMuUi5MLgogICoK ICAqLworI2luY2x1ZGUgPGxpbnV4L21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8dWFwaS9saW51 eC9rdm1pLmg+CiAjaW5jbHVkZSAia3ZtaV9pbnQuaCIKICNpbmNsdWRlIDxsaW51eC9rdGhyZWFk Lmg+CkBAIC0xMjIwLDYgKzEyMjEsMTEyIEBAIGludCBrdm1pX2NtZF9zZXRfcGFnZV93cml0ZV9i aXRtYXAoc3RydWN0IGt2bWkgKmlrdm0sIHU2NCBncGEsCiAJcmV0dXJuIGt2bWlfc2V0X2dmbl9h Y2Nlc3MoaWt2bS0+a3ZtLCBnZm4sIGFjY2Vzcywgd3JpdGVfYml0bWFwKTsKIH0KIAordW5zaWdu ZWQgbG9uZyBnZm5fdG9faHZhX3NhZmUoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm4pCit7CisJ dW5zaWduZWQgbG9uZyBodmE7CisJaW50IHNyY3VfaWR4OworCisJc3JjdV9pZHggPSBzcmN1X3Jl YWRfbG9jaygma3ZtLT5zcmN1KTsKKwlodmEgPSBnZm5fdG9faHZhKGt2bSwgZ2ZuKTsKKwlzcmN1 X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIHNyY3VfaWR4KTsKKworCXJldHVybiBodmE7Cit9CisK K3N0YXRpYyBsb25nIGdldF91c2VyX3BhZ2VzX3JlbW90ZV91bmxvY2tlZChzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKKwl1bnNpZ25lZCBsb25nIHN0YXJ0LAorCXVuc2lnbmVkIGxvbmcgbnJfcGFnZXMs CisJdW5zaWduZWQgaW50IGd1cF9mbGFncywKKwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQoreworCWxv bmcgcmV0OworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gTlVMTDsKKwlzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKip2bWFzID0gTlVMTDsKKwlpbnQgbG9ja2VkID0gMTsKKworCWRvd25fcmVhZCgm bW0tPm1tYXBfc2VtKTsKKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUodHNrLCBtbSwgc3Rh cnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsCisJCXBhZ2VzLCB2bWFzLCAmbG9ja2VkKTsKKwlpZiAo bG9ja2VkKQorCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyB2b2lkICpnZXRfcGFnZV9wdHIoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBncGEsIHN0cnVj dCBwYWdlICoqcGFnZSwKKwkJCSAgYm9vbCB3cml0ZSkKK3sKKwl1bnNpZ25lZCBpbnQgZmxhZ3Mg PSB3cml0ZSA/IEZPTExfV1JJVEUgOiAwOworCXVuc2lnbmVkIGxvbmcgaHZhOworCisJKnBhZ2Ug PSBOVUxMOworCisJaHZhID0gZ2ZuX3RvX2h2YV9zYWZlKGt2bSwgZ3BhX3RvX2dmbihncGEpKTsK KworCWlmIChrdm1faXNfZXJyb3JfaHZhKGh2YSkpIHsKKwkJa3ZtaV9lcnIoSUtWTShrdm0pLCAi SW52YWxpZCBncGEgJWxseFxuIiwgZ3BhKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKGdl dF91c2VyX3BhZ2VzX3JlbW90ZV91bmxvY2tlZChrdm0tPm1tLCBodmEsIDEsIGZsYWdzLCBwYWdl KSAhPSAxKSB7CisJCWt2bWlfZXJyKElLVk0oa3ZtKSwKKwkJCSAiRmFpbGVkIHRvIGdldCB0aGUg cGFnZSBmb3IgaHZhICVseCBncGEgJWxseFxuIiwKKwkJCSBodmEsIGdwYSk7CisJCXJldHVybiBO VUxMOworCX0KKworCXJldHVybiBrbWFwX2F0b21pYygqcGFnZSk7Cit9CisKK3N0YXRpYyB2b2lk IHB1dF9wYWdlX3B0cih2b2lkICpwdHIsIHN0cnVjdCBwYWdlICpwYWdlKQoreworCWlmIChwdHIp CisJCWt1bm1hcF9hdG9taWMocHRyKTsKKwlpZiAocGFnZSkKKwkJcHV0X3BhZ2UocGFnZSk7Cit9 CisKK2ludCBrdm1pX2NtZF9yZWFkX3BoeXNpY2FsKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdwYSwg dTY0IHNpemUsIGludCgqc2VuZCkoCisJc3RydWN0IGt2bWkgKiwgY29uc3Qgc3RydWN0IGt2bWlf bXNnX2hkciAqLAorCWludCBlcnIsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90KSwKKwljb25zdCBz dHJ1Y3Qga3ZtaV9tc2dfaGRyICpjdHgpCit7CisJaW50IGVyciwgZWMgPSAwOworCXN0cnVjdCBw YWdlICpwYWdlID0gTlVMTDsKKwl2b2lkICpwdHJfcGFnZSA9IE5VTEwsICpwdHIgPSBOVUxMOwor CXNpemVfdCBwdHJfc2l6ZSA9IDA7CisKKwlwdHJfcGFnZSA9IGdldF9wYWdlX3B0cihrdm0sIGdw YSwgJnBhZ2UsIGZhbHNlKTsKKwlpZiAoIXB0cl9wYWdlKSB7CisJCWVjID0gLUtWTV9FSU5WQUw7 CisJCWdvdG8gb3V0OworCX0KKworCXB0ciA9IHB0cl9wYWdlICsgKGdwYSAmIH5QQUdFX01BU0sp OworCXB0cl9zaXplID0gc2l6ZTsKKworb3V0OgorCWVyciA9IHNlbmQoSUtWTShrdm0pLCBjdHgs IGVjLCBwdHIsIHB0cl9zaXplKTsKKworCXB1dF9wYWdlX3B0cihwdHJfcGFnZSwgcGFnZSk7CisJ cmV0dXJuIGVycjsKK30KKworaW50IGt2bWlfY21kX3dyaXRlX3BoeXNpY2FsKHN0cnVjdCBrdm0g Kmt2bSwgdTY0IGdwYSwgdTY0IHNpemUsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3QgcGFn ZSAqcGFnZTsKKwl2b2lkICpwdHI7CisKKwlwdHIgPSBnZXRfcGFnZV9wdHIoa3ZtLCBncGEsICZw YWdlLCB0cnVlKTsKKwlpZiAoIXB0cikKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOworCisJbWVtY3B5 KHB0ciArIChncGEgJiB+UEFHRV9NQVNLKSwgYnVmLCBzaXplKTsKKworCXB1dF9wYWdlX3B0cihw dHIsIHBhZ2UpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50 cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBi b29sIGVuYWJsZSkKIHsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0L2t2 bS9rdm1pX2ludC5oCmluZGV4IDE4YzAwZGFlMGYyZi4uN2JkZmY3MGQ0MzA5IDEwMDY0NAotLS0g YS92aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTE3NCw2 ICsxNzQsMTMgQEAgaW50IGt2bWlfY21kX2dldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2 bSwgdTY0IGdwYSwgdTggKmFjY2Vzcyk7CiBpbnQga3ZtaV9jbWRfc2V0X3BhZ2VfYWNjZXNzKHN0 cnVjdCBrdm1pICppa3ZtLCB1NjQgZ3BhLCB1OCBhY2Nlc3MpOwogaW50IGt2bWlfY21kX2dldF9w YWdlX3dyaXRlX2JpdG1hcChzdHJ1Y3Qga3ZtaSAqaWt2bSwgdTY0IGdwYSwgdTMyICpiaXRtYXAp OwogaW50IGt2bWlfY21kX3NldF9wYWdlX3dyaXRlX2JpdG1hcChzdHJ1Y3Qga3ZtaSAqaWt2bSwg dTY0IGdwYSwgdTMyIGJpdG1hcCk7CitpbnQga3ZtaV9jbWRfcmVhZF9waHlzaWNhbChzdHJ1Y3Qg a3ZtICprdm0sIHU2NCBncGEsIHU2NCBzaXplLAorCQkJICAgaW50ICgqc2VuZCkoc3RydWN0IGt2 bWkgKiwKKwkJCQkJY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciosCisJCQkJCWludCBlcnIsIGNv bnN0IHZvaWQgKmJ1Ziwgc2l6ZV90KSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIg KmN0eCk7CitpbnQga3ZtaV9jbWRfd3JpdGVfcGh5c2ljYWwoc3RydWN0IGt2bSAqa3ZtLCB1NjQg Z3BhLCB1NjQgc2l6ZSwKKwkJCSAgICBjb25zdCB2b2lkICpidWYpOwogaW50IGt2bWlfY21kX2Nv bnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV2ZW50X2lk LAogCQkJICAgIGJvb2wgZW5hYmxlKTsKIGludCBrdm1pX2NtZF9jb250cm9sX3ZtX2V2ZW50cyhz dHJ1Y3Qga3ZtaSAqaWt2bSwgdW5zaWduZWQgaW50IGV2ZW50X2lkLApkaWZmIC0tZ2l0IGEvdmly dC9rdm0va3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2t2bWlfbXNnLmMKaW5kZXggZjllZmI1MmQ0OWMz Li45YzIwYTljZmRhNDIgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfbXNnLmMKKysrIGIvdmly dC9rdm0va3ZtaV9tc2cuYwpAQCAtMzQsOCArMzQsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IG1zZ19JRHNbXSA9IHsKIAlbS1ZNSV9HRVRfUEFHRV9XUklURV9CSVRNQVBdID0gIktWTUlf R0VUX1BBR0VfV1JJVEVfQklUTUFQIiwKIAlbS1ZNSV9HRVRfVkNQVV9JTkZPXSAgICAgICAgID0g IktWTUlfR0VUX1ZDUFVfSU5GTyIsCiAJW0tWTUlfR0VUX1ZFUlNJT05dICAgICAgICAgICA9ICJL Vk1JX0dFVF9WRVJTSU9OIiwKKwlbS1ZNSV9SRUFEX1BIWVNJQ0FMXSAgICAgICAgID0gIktWTUlf UkVBRF9QSFlTSUNBTCIsCiAJW0tWTUlfU0VUX1BBR0VfQUNDRVNTXSAgICAgICA9ICJLVk1JX1NF VF9QQUdFX0FDQ0VTUyIsCiAJW0tWTUlfU0VUX1BBR0VfV1JJVEVfQklUTUFQXSA9ICJLVk1JX1NF VF9QQUdFX1dSSVRFX0JJVE1BUCIsCisJW0tWTUlfV1JJVEVfUEhZU0lDQUxdICAgICAgICA9ICJL Vk1JX1dSSVRFX1BIWVNJQ0FMIiwKIH07CiAKIHN0YXRpYyBib29sIGlzX2tub3duX21lc3NhZ2Uo dTE2IGlkKQpAQCAtMzAzLDYgKzMwNSw0NCBAQCBzdGF0aWMgaW50IGt2bWlfZ2V0X3ZjcHUoc3Ry dWN0IGt2bWkgKmlrdm0sIHVuc2lnbmVkIGludCB2Y3B1X2lkeCwKIAlyZXR1cm4gMDsKIH0KIAor c3RhdGljIGJvb2wgaW52YWxpZF9wYWdlX2FjY2Vzcyh1NjQgZ3BhLCB1NjQgc2l6ZSkKK3sKKwl1 NjQgb2ZmID0gZ3BhICYgflBBR0VfTUFTSzsKKworCXJldHVybiAoc2l6ZSA9PSAwIHx8IHNpemUg PiBQQUdFX1NJWkUgfHwgb2ZmICsgc2l6ZSA+IFBBR0VfU0laRSk7Cit9CisKK3N0YXRpYyBpbnQg aGFuZGxlX3JlYWRfcGh5c2ljYWwoc3RydWN0IGt2bWkgKmlrdm0sCisJCQkJY29uc3Qgc3RydWN0 IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCWNvbnN0IHZvaWQgKl9yZXEpCit7CisJY29uc3Qgc3Ry dWN0IGt2bWlfcmVhZF9waHlzaWNhbCAqcmVxID0gX3JlcTsKKworCWlmIChpbnZhbGlkX3BhZ2Vf YWNjZXNzKHJlcS0+Z3BhLCByZXEtPnNpemUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVy biBrdm1pX2NtZF9yZWFkX3BoeXNpY2FsKGlrdm0tPmt2bSwgcmVxLT5ncGEsIHJlcS0+c2l6ZSwK KwkJCQkgICAgICBrdm1pX21zZ192bV9tYXliZV9yZXBseSwgbXNnKTsKK30KKworc3RhdGljIGlu dCBoYW5kbGVfd3JpdGVfcGh5c2ljYWwoc3RydWN0IGt2bWkgKmlrdm0sCisJCQkJIGNvbnN0IHN0 cnVjdCBrdm1pX21zZ19oZHIgKm1zZywKKwkJCQkgY29uc3Qgdm9pZCAqX3JlcSkKK3sKKwljb25z dCBzdHJ1Y3Qga3ZtaV93cml0ZV9waHlzaWNhbCAqcmVxID0gX3JlcTsKKwlpbnQgZWM7CisKKwlp ZiAoaW52YWxpZF9wYWdlX2FjY2VzcyhyZXEtPmdwYSwgcmVxLT5zaXplKSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAobXNnLT5zaXplIDwgc2l6ZW9mKCpyZXEpICsgcmVxLT5zaXplKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWVjID0ga3ZtaV9jbWRfd3JpdGVfcGh5c2ljYWwoaWt2bS0+a3Zt LCByZXEtPmdwYSwgcmVxLT5zaXplLCByZXEtPmRhdGEpOworCisJcmV0dXJuIGt2bWlfbXNnX3Zt X21heWJlX3JlcGx5KGlrdm0sIG1zZywgZWMsIE5VTEwsIDApOworfQorCiBzdGF0aWMgYm9vbCBl bmFibGVfc3BwKHN0cnVjdCBrdm1pICppa3ZtKQogewogCWlmICghaWt2bS0+c3BwLmluaXRpYWxp emVkKSB7CkBAIC00MzEsOCArNDcxLDEwIEBAIHN0YXRpYyBpbnQoKmNvbnN0IG1zZ192bVtdKShz dHJ1Y3Qga3ZtaSAqLCBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICosCiAJW0tWTUlfR0VUX1BB R0VfQUNDRVNTXSAgICAgICA9IGhhbmRsZV9nZXRfcGFnZV9hY2Nlc3MsCiAJW0tWTUlfR0VUX1BB R0VfV1JJVEVfQklUTUFQXSA9IGhhbmRsZV9nZXRfcGFnZV93cml0ZV9iaXRtYXAsCiAJW0tWTUlf R0VUX1ZFUlNJT05dICAgICAgICAgICA9IGhhbmRsZV9nZXRfdmVyc2lvbiwKKwlbS1ZNSV9SRUFE X1BIWVNJQ0FMXSAgICAgICAgID0gaGFuZGxlX3JlYWRfcGh5c2ljYWwsCiAJW0tWTUlfU0VUX1BB R0VfQUNDRVNTXSAgICAgICA9IGhhbmRsZV9zZXRfcGFnZV9hY2Nlc3MsCiAJW0tWTUlfU0VUX1BB R0VfV1JJVEVfQklUTUFQXSA9IGhhbmRsZV9zZXRfcGFnZV93cml0ZV9iaXRtYXAsCisJW0tWTUlf V1JJVEVfUEhZU0lDQUxdICAgICAgICA9IGhhbmRsZV93cml0ZV9waHlzaWNhbCwKIH07CiAKIHN0 YXRpYyBpbnQgaGFuZGxlX2V2ZW50X3JlcGx5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24g bWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxp emF0aW9u