From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 46/92] kvm: introspection: add KVMI_SET_PAGE_WRITE_BITMAP Date: Fri, 9 Aug 2019 19:00:01 +0300 Message-ID: <20190809160047.8319-47-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 VGhpcyBjb21tYW5kIHNldHMgdGhlIHN1YnBhZ2UgcHJvdGVjdGlvbiAoU1BQKSB3cml0ZSBiaXRt YXAgZm9yIGFuIGFycmF5Cm9mIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3NlcyBvZiA0S0IgYnl0ZXMu CgpDby1kZXZlbG9wZWQtYnk6IFlhbmcgV2VpamlhbmcgPHdlaWppYW5nLnlhbmdAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBZYW5nIFdlaWppYW5nIDx3ZWlqaWFuZy55YW5nQGludGVsLmNvbT4K Q28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+ ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4K LS0tCiBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IHwgNjYgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9rdm0va3ZtaS5jICAgICAgICAgICAgICAgIHwg MzAgKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9saW51eC9rdm1pLmggICAgICAgICAgfCAx MyArKysrKysKIHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgfCAzNyArKysrKysr KysrKysrKysrKwogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAgICAgICAgICB8ICA0ICsrCiB2 aXJ0L2t2bS9rdm1pX21zZy5jICAgICAgICAgICAgICAgIHwgMTMgKysrKysrCiA2IGZpbGVzIGNo YW5nZWQsIDE2MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0 dWFsL2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5k ZXggMmZmYjkyYjBmYTcxLi42OTU1N2M2M2ZmOTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24v dmlydHVhbC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1p LnJzdApAQCAtNjk0LDYgKzY5NCw3MiBAQCBFUFQgdmlldyAoMCBpcyBwcmltYXJ5KS4gT24gYWxs IG90aGVyIGhhcmR3YXJlIGl0IG11c3QgYmUgemVyby4KICogLUtWTV9FQUdBSU4gLSB0aGUgc2Vs ZWN0ZWQgdkNQVSBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgeWV0CiAqIC1LVk1fRU5PTUVNIC0gbm90 IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlIHJlcGx5CiAKKzEzLiBLVk1JX1NFVF9QQUdF X1dSSVRFX0JJVE1BUAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpBcmNoaXRl Y3R1cmVzOiB4ODYKKzpWZXJzaW9uczogPj0gMQorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1 Y3Qga3ZtaV9zZXRfcGFnZV93cml0ZV9iaXRtYXAgeworCQlfX3UxNiB2aWV3OworCQlfX3UxNiBj b3VudDsKKwkJX191MzIgcGFkZGluZzsKKwkJc3RydWN0IGt2bWlfcGFnZV93cml0ZV9iaXRtYXBf ZW50cnkgZW50cmllc1swXTsKKwl9OworCit3aGVyZTo6CisKKwlzdHJ1Y3Qga3ZtaV9wYWdlX3dy aXRlX2JpdG1hcF9lbnRyeSB7CisJCV9fdTY0IGdwYTsKKwkJX191MzIgYml0bWFwOworCQlfX3Uz MiBwYWRkaW5nOworCX07CisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfZXJyb3Jf Y29kZTsKKworU2V0cyB0aGUgc3VicGFnZSBwcm90ZWN0aW9uIChTUFApIHdyaXRlIGJpdG1hcCBm b3IgYW4gYXJyYXkgb2YgYGBjb3VudGBgCitndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMgb2YgNEtC IGJ5dGVzLgorCitUaGUgY29tbWFuZCB3aWxsIG1ha2UgdGhlIGNoYW5nZXMgc3RhcnRpbmcgd2l0 aCB0aGUgZmlyc3QgZW50cnkgYW5kCitpdCB3aWxsIHN0b3Agb24gdGhlIGZpcnN0IGVycm9yLiBU aGUgaW50cm9zcGVjdGlvbiB0b29sIHNob3VsZCBoYW5kbGUKK3RoZSByb2xsYmFjay4KKworV2hp bGUgdGhlICpLVk1JX1NFVF9QQUdFX0FDQ0VTUyogY29tbWFuZCBjYW4gYmUgdXNlZCB0byB3cml0 ZS1wcm90ZWN0IGEKKzRLQiBwYWdlLCB0aGlzIGNvbW1hbmQgY2FuIHdyaXRlLXByb3RlY3QgMTI4 LWJ5dGVzIHN1YnBhZ2VzIGluc2lkZSBvZiBhCis0S0IgcGFnZSBieSBzZXR0aW5nIHRoZSBjb3Jy ZXNwb25kaW5nIGJpdCB0byAxICh3cml0ZSBhbGxvd2VkKSBvciB0byAwCisod3JpdGUgZGlzYWxs b3dlZCkuIEZvciBleGFtcGxlLCB0byBhbGxvdyB3cml0ZSBhY2Nlc3MgdG8gdGhlIEEgYW5kIEIK K3N1YnBhZ2VzIG9ubHksIHRoZSBiaXRtYXAgbXVzdCBiZSBzZXQgdG86OgorCisJQklUKEEpIHwg QklUKEIpCisKK0EgYW5kIEIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgKGZpcnN0IHN1YnBh Z2UpIGFuZCAzMSAobGFzdCBzdWJwYWdlKS4KKworVXNpbmcgdGhpcyBjb21tYW5kIHRvIHNldCBh bGwgYml0cyB0byAxIChhbGxvdyB3cml0ZSBhY2Nlc3MgZm9yCithbGwgc3VicGFnZXMpIHdpbGwg YWxsb3cgd3JpdGUgYWNjZXNzIHRvIHRoZSB3aG9sZSA0S0IgcGFnZSAobGlrZSBhCisqS1ZNSV9T RVRfUEFHRV9BQ0NFU1MqIGNvbW1hbmQgd2l0aCB0aGUgKktWTUlfUEFHRV9BQ0NFU1NfVyogZmxh ZyBzZXQpCithbmQgdmljZSB2ZXJzYS4KKworVXNpbmcgdGhpcyBjb21tYW5kIHRvIHNldCBhbnkg Yml0IHRvIDAgd2lsbCB3cml0ZS1wcm90ZWN0IHRoZSB3aG9sZSA0S0IKK3BhZ2UgKGxpa2UgYSAq S1ZNSV9TRVRfUEFHRV9BQ0NFU1MqIGNvbW1hbmQgd2l0aCB0aGUgKktWTUlfUEFHRV9BQ0NFU1Nf VyoKK2ZsYWcgY2xlYXJlZCkgYW5kIGFsbG93IHdyaXRlIGFjY2VzcyBvbmx5IGZvciBzdWJwYWdl cyB3aXRoIHRoZQorY29ycmVzcG9uZGluZyBiaXQgc2V0IHRvIDEuCisKKzpFcnJvcnM6CisKKyog LUtWTV9FSU5WQUwgLSB0aGUgc2VsZWN0ZWQgU1BUIHZpZXcgaXMgaW52YWxpZAorKiAtS1ZNX0VP UE5PVFNVUFAgLSBhIFNQVCB2aWV3IHdhcyBzZWxlY3RlZCBidXQgdGhlIGhhcmR3YXJlIGRvZXNu J3Qgc3VwcG9ydCBpdAorKiAtS1ZNX0VPUE5PVFNVUFAgLSB0aGUgaGFyZHdhcmUgZG9lc24ndCBz dXBwb3J0IFNQUCBvciBoYXNuJ3QgYmVlbiBlbmFibGVkCisqIC1LVk1fRUlOVkFMIC0gdGhlIHdy aXRlIGFjY2VzcyBpcyBhbHJlYWR5IGFsbG93ZWQgZm9yIHRoZSB3aG9sZSA0S0IgcGFnZQorKiAt S1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQK KyogLUtWTV9FTk9NRU0gLSBub3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGhlIHBhZ2UgdHJhY2tp bmcgc3RydWN0dXJlcworCiBFdmVudHMKID09PT09PQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9r dm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2bWkuYwppbmRleCAzNTZlYzc5OTM2YjMuLmZhMjkw ZmJmMWY3NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9r dm0va3ZtaS5jCkBAIC0zMDQsNiArMzA0LDM2IEBAIGludCBrdm1pX2FyY2hfY21kX3NldF9wYWdl X2FjY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2bSwKIAlyZXR1cm4gZWM7CiB9CiAKK2ludCBrdm1pX2Fy Y2hfY21kX3NldF9wYWdlX3dyaXRlX2JpdG1hcChzdHJ1Y3Qga3ZtaSAqaWt2bSwKKwkJCQkJY29u c3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9zZXRf cGFnZV93cml0ZV9iaXRtYXAKKwkJCQkJKnJlcSkKK3sKKwl1MTYgaywgbiA9IHJlcS0+Y291bnQ7 CisJaW50IGVjID0gMDsKKworCWlmIChyZXEtPnBhZGRpbmcpCisJCXJldHVybiAtS1ZNX0VJTlZB TDsKKworCWlmIChtc2ctPnNpemUgPCBzaXplb2YoKnJlcSkgKyByZXEtPmNvdW50ICogc2l6ZW9m KHJlcS0+ZW50cmllc1swXSkpCisJCXJldHVybiAtS1ZNX0VJTlZBTDsKKworCWlmICgha3ZtaV9z cHBfZW5hYmxlZChpa3ZtKSkKKwkJcmV0dXJuIC1LVk1fRU9QTk9UU1VQUDsKKworCWlmIChyZXEt PnZpZXcgIT0gMCkJLyogVE9ETyAqLworCQlyZXR1cm4gLUtWTV9FT1BOT1RTVVBQOworCisJZm9y IChrID0gMDsgayA8IG4gJiYgZWMgPT0gMDsgaysrKSB7CisJCXU2NCBncGEgPSByZXEtPmVudHJp ZXNba10uZ3BhOworCQl1MzIgYml0bWFwID0gcmVxLT5lbnRyaWVzW2tdLmJpdG1hcDsKKworCQll YyA9IGt2bWlfY21kX3NldF9wYWdlX3dyaXRlX2JpdG1hcChpa3ZtLCBncGEsIGJpdG1hcCk7CisJ fQorCisJcmV0dXJuIGVjOworfQorCiBpbnQga3ZtaV9hcmNoX2NtZF9jb250cm9sX3NwcChzdHJ1 Y3Qga3ZtaSAqaWt2bSkKIHsKIAlyZXR1cm4ga3ZtX2FyY2hfaW5pdF9zcHAoaWt2bS0+a3ZtKTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmggYi9pbmNsdWRlL3VhcGkvbGlu dXgva3ZtaS5oCmluZGV4IDE5YTZhNTBkZjk2Yi4uMGIzMTM5YzUyYTMwIDEwMDY0NAotLS0gYS9p bmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgK QEAgLTE2MCw2ICsxNjAsMTkgQEAgc3RydWN0IGt2bWlfZ2V0X3BhZ2Vfd3JpdGVfYml0bWFwX3Jl cGx5IHsKIAlfX3UzMiBiaXRtYXBbMF07CiB9OwogCitzdHJ1Y3Qga3ZtaV9wYWdlX3dyaXRlX2Jp dG1hcF9lbnRyeSB7CisJX191NjQgZ3BhOworCV9fdTMyIGJpdG1hcDsKKwlfX3UzMiBwYWRkaW5n OworfTsKKworc3RydWN0IGt2bWlfc2V0X3BhZ2Vfd3JpdGVfYml0bWFwIHsKKwlfX3UxNiB2aWV3 OworCV9fdTE2IGNvdW50OworCV9fdTMyIHBhZGRpbmc7CisJc3RydWN0IGt2bWlfcGFnZV93cml0 ZV9iaXRtYXBfZW50cnkgZW50cmllc1swXTsKK307CisKIHN0cnVjdCBrdm1pX2dldF92Y3B1X2lu Zm9fcmVwbHkgewogCV9fdTY0IHRzY19zcGVlZDsKIH07CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9r dm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5kZXggMjJlMjMzY2E0NzRjLi5kMmJlYmVmOThkOGQg MTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWkuYworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTk5 LDYgKzk5LDI0IEBAIHN0YXRpYyBpbnQga3ZtaV9zZXRfZ2ZuX2FjY2VzcyhzdHJ1Y3Qga3ZtICpr dm0sIGdmbl90IGdmbiwgdTggYWNjZXNzLAogCW0tPmFjY2VzcyA9IGFjY2VzczsKIAltLT53cml0 ZV9iaXRtYXAgPSB3cml0ZV9iaXRtYXA7CiAKKwkvKgorCSAqIE9ubHkgdHJ5IHRvIHNldCBTUFAg Yml0bWFwIHdoZW4gdGhlIHBhZ2UgaXMgd3JpdGFibGUuCisJICogQmUgY2FyZWZ1bCwga3ZtX21t dV9zZXRfc3VicGFnZXMoKSB3aWxsIGVuYWJsZSBwYWdlIHdyaXRlLXByb3RlY3Rpb24KKwkgKiBi eSBkZWZhdWx0IHdoZW4gc2V0IFNQUCBiaXRtYXAuIElmIGJpdG1hcCBjb250YWlucyBhbGwgMXMs IGl0J2xsCisJICogbWFrZSB0aGUgcGFnZSB3cml0YWJsZSBieSBkZWZhdWx0IHRvby4KKwkgKi8K KwlpZiAoIShhY2Nlc3MgJiBLVk1JX1BBR0VfQUNDRVNTX1cpICYmIGt2bWlfc3BwX2VuYWJsZWQo aWt2bSkpIHsKKwkJc3RydWN0IGt2bV9zdWJwYWdlIHNwcF9pbmZvOworCisJCXNwcF9pbmZvLmJh c2VfZ2ZuID0gZ2ZuOworCQlzcHBfaW5mby5ucGFnZXMgPSAxOworCQlzcHBfaW5mby5hY2Nlc3Nf bWFwWzBdID0gd3JpdGVfYml0bWFwOworCisJCWVyciA9IGt2bV9hcmNoX3NldF9zdWJwYWdlcyhr dm0sICZzcHBfaW5mbyk7CisJCWlmIChlcnIpCisJCQlnb3RvIGV4aXQ7CisJfQorCiAJaWYgKHJh ZGl4X3RyZWVfcHJlbG9hZChHRlBfS0VSTkVMKSkgewogCQllcnIgPSAtS1ZNX0VOT01FTTsKIAkJ Z290byBleGl0OwpAQCAtMTE4Myw2ICsxMjAxLDI1IEBAIGludCBrdm1pX2NtZF9zZXRfcGFnZV9h Y2Nlc3Moc3RydWN0IGt2bWkgKmlrdm0sIHU2NCBncGEsIHU4IGFjY2VzcykKIAlyZXR1cm4ga3Zt aV9zZXRfZ2ZuX2FjY2Vzcyhpa3ZtLT5rdm0sIGdmbiwgYWNjZXNzLCB3cml0ZV9iaXRtYXApOwog fQogCitpbnQga3ZtaV9jbWRfc2V0X3BhZ2Vfd3JpdGVfYml0bWFwKHN0cnVjdCBrdm1pICppa3Zt LCB1NjQgZ3BhLAorCQkJCSAgIHUzMiB3cml0ZV9iaXRtYXApCit7CisJYm9vbCB3cml0ZV9hbGxv d2VkX2Zvcl9hbGw7CisJZ2ZuX3QgZ2ZuID0gZ3BhX3RvX2dmbihncGEpOworCXUzMiBpZ25vcmVk X3dyaXRlX2JpdG1hcDsKKwl1OCBhY2Nlc3M7CisKKwlrdm1pX2dldF9nZm5fYWNjZXNzKGlrdm0s IGdmbiwgJmFjY2VzcywgJmlnbm9yZWRfd3JpdGVfYml0bWFwKTsKKworCXdyaXRlX2FsbG93ZWRf Zm9yX2FsbCA9ICh3cml0ZV9iaXRtYXAgPT0gKHUzMikoKDFVTEwgPDwgMzIpIC0gMSkpOworCWlm ICh3cml0ZV9hbGxvd2VkX2Zvcl9hbGwpCisJCWFjY2VzcyB8PSBLVk1JX1BBR0VfQUNDRVNTX1c7 CisJZWxzZQorCQlhY2Nlc3MgJj0gfktWTUlfUEFHRV9BQ0NFU1NfVzsKKworCXJldHVybiBrdm1p X3NldF9nZm5fYWNjZXNzKGlrdm0tPmt2bSwgZ2ZuLCBhY2Nlc3MsIHdyaXRlX2JpdG1hcCk7Cit9 CisKIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVu c2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBib29sIGVuYWJsZSkKIHsKZGlmZiAtLWdpdCBh L3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0L2t2bS9rdm1pX2ludC5oCmluZGV4IDcyNDNjNTdi ZTI3YS4uMThjMDBkYWUwZjJmIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBi L3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTE3Myw2ICsxNzMsNyBAQCB2b2lkIGt2bWlfbXNnX2Zy ZWUodm9pZCAqYWRkcik7CiBpbnQga3ZtaV9jbWRfZ2V0X3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1p ICppa3ZtLCB1NjQgZ3BhLCB1OCAqYWNjZXNzKTsKIGludCBrdm1pX2NtZF9zZXRfcGFnZV9hY2Nl c3Moc3RydWN0IGt2bWkgKmlrdm0sIHU2NCBncGEsIHU4IGFjY2Vzcyk7CiBpbnQga3ZtaV9jbWRf Z2V0X3BhZ2Vfd3JpdGVfYml0bWFwKHN0cnVjdCBrdm1pICppa3ZtLCB1NjQgZ3BhLCB1MzIgKmJp dG1hcCk7CitpbnQga3ZtaV9jbWRfc2V0X3BhZ2Vfd3JpdGVfYml0bWFwKHN0cnVjdCBrdm1pICpp a3ZtLCB1NjQgZ3BhLCB1MzIgYml0bWFwKTsKIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50cyhz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBib29s IGVuYWJsZSk7CiBpbnQga3ZtaV9jbWRfY29udHJvbF92bV9ldmVudHMoc3RydWN0IGt2bWkgKmlr dm0sIHVuc2lnbmVkIGludCBldmVudF9pZCwKQEAgLTIwMiw2ICsyMDMsOSBAQCBpbnQga3ZtaV9h cmNoX2NtZF9nZXRfcGFnZV93cml0ZV9iaXRtYXAoc3RydWN0IGt2bWkgKmlrdm0sCiAJCQkJCWNv bnN0IHN0cnVjdCBrdm1pX2dldF9wYWdlX3dyaXRlX2JpdG1hcCAqcmVxLAogCQkJCQlzdHJ1Y3Qg a3ZtaV9nZXRfcGFnZV93cml0ZV9iaXRtYXBfcmVwbHkgKipkZXN0LAogCQkJCQlzaXplX3QgKmRl c3Rfc2l6ZSk7CitpbnQga3ZtaV9hcmNoX2NtZF9zZXRfcGFnZV93cml0ZV9iaXRtYXAoc3RydWN0 IGt2bWkgKmlrdm0sCisJCQkJCWNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywKKwkJCQkJ Y29uc3Qgc3RydWN0IGt2bWlfc2V0X3BhZ2Vfd3JpdGVfYml0bWFwICpyZXEpOwogdm9pZCBrdm1p X2FyY2hfc2V0dXBfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtaV9ldmVu dCAqZXYpOwogYm9vbCBrdm1pX2FyY2hfcGZfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBn cGFfdCBncGEsIGd2YV90IGd2YSwKIAkJCXU4IGFjY2Vzcyk7CmRpZmYgLS1naXQgYS92aXJ0L2t2 bS9rdm1pX21zZy5jIGIvdmlydC9rdm0va3ZtaV9tc2cuYwppbmRleCBlYjI0N2FjM2UwMzcuLmY5 ZWZiNTJkNDljMyAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2 bS9rdm1pX21zZy5jCkBAIC0zNSw2ICszNSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBt c2dfSURzW10gPSB7CiAJW0tWTUlfR0VUX1ZDUFVfSU5GT10gICAgICAgICA9ICJLVk1JX0dFVF9W Q1BVX0lORk8iLAogCVtLVk1JX0dFVF9WRVJTSU9OXSAgICAgICAgICAgPSAiS1ZNSV9HRVRfVkVS U0lPTiIsCiAJW0tWTUlfU0VUX1BBR0VfQUNDRVNTXSAgICAgICA9ICJLVk1JX1NFVF9QQUdFX0FD Q0VTUyIsCisJW0tWTUlfU0VUX1BBR0VfV1JJVEVfQklUTUFQXSA9ICJLVk1JX1NFVF9QQUdFX1dS SVRFX0JJVE1BUCIsCiB9OwogCiBzdGF0aWMgYm9vbCBpc19rbm93bl9tZXNzYWdlKHUxNiBpZCkK QEAgLTQwMCw2ICs0MDEsMTcgQEAgc3RhdGljIGludCBoYW5kbGVfZ2V0X3BhZ2Vfd3JpdGVfYml0 bWFwKHN0cnVjdCBrdm1pICppa3ZtLAogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgaGFu ZGxlX3NldF9wYWdlX3dyaXRlX2JpdG1hcChzdHJ1Y3Qga3ZtaSAqaWt2bSwKKwkJCQkJY29uc3Qg c3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCQljb25zdCB2b2lkICpyZXEpCit7CisJaW50 IGVjOworCisJZWMgPSBrdm1pX2FyY2hfY21kX3NldF9wYWdlX3dyaXRlX2JpdG1hcChpa3ZtLCBt c2csIHJlcSk7CisKKwlyZXR1cm4ga3ZtaV9tc2dfdm1fbWF5YmVfcmVwbHkoaWt2bSwgbXNnLCBl YywgTlVMTCwgMCk7Cit9CisKIHN0YXRpYyBib29sIGludmFsaWRfdmNwdV9oZHIoY29uc3Qgc3Ry dWN0IGt2bWlfdmNwdV9oZHIgKmhkcikKIHsKIAlyZXR1cm4gaGRyLT5wYWRkaW5nMSB8fCBoZHIt PnBhZGRpbmcyOwpAQCAtNDIwLDYgKzQzMiw3IEBAIHN0YXRpYyBpbnQoKmNvbnN0IG1zZ192bVtd KShzdHJ1Y3Qga3ZtaSAqLCBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICosCiAJW0tWTUlfR0VU X1BBR0VfV1JJVEVfQklUTUFQXSA9IGhhbmRsZV9nZXRfcGFnZV93cml0ZV9iaXRtYXAsCiAJW0tW TUlfR0VUX1ZFUlNJT05dICAgICAgICAgICA9IGhhbmRsZV9nZXRfdmVyc2lvbiwKIAlbS1ZNSV9T RVRfUEFHRV9BQ0NFU1NdICAgICAgID0gaGFuZGxlX3NldF9wYWdlX2FjY2VzcywKKwlbS1ZNSV9T RVRfUEFHRV9XUklURV9CSVRNQVBdID0gaGFuZGxlX3NldF9wYWdlX3dyaXRlX2JpdG1hcCwKIH07 CiAKIHN0YXRpYyBpbnQgaGFuZGxlX2V2ZW50X3JlcGx5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6 YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24u b3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3Zp cnR1YWxpemF0aW9u