From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 31/92] kvm: introspection: add KVMI_EVENT_PF Date: Fri, 9 Aug 2019 18:59:46 +0300 Message-ID: <20190809160047.8319-32-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 , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBldmVudCBp cyBzZW50IHdoZW4gYSAjUEYgb2NjdXJzIGR1ZSB0byBhIGZhaWxlZCBwZXJtaXNzaW9uIGNoZWNr CmluIHRoZSBzaGFkb3cgcGFnZSB0YWJsZXMsIGZvciBhIHBhZ2UgaW4gd2hpY2ggdGhlIGludHJv c3BlY3Rpb24gdG9vbApoYXMgc2hvd24gaW50ZXJlc3QuCgpUaGUgaW50cm9zcGVjdGlvbiB0b29s IGNhbiByZXNwb25kIHRvIGEgS1ZNSV9FVkVOVF9QRiBldmVudCB3aXRoIGN1c3RvbQppbnB1dCBm b3IgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24uIFRoaXMgaW5wdXQgaXMgdXNlZCB0byB0cmljayB0 aGUgZ3Vlc3QKc29mdHdhcmUgaW50byBiZWxpZXZpbmcgaXQgaGFzIHJlYWQgY2VydGFpbiBkYXRh LCBpbiBvcmRlciB0byBoaWRlIHRoZQpjb250ZW50IG9mIGNlcnRhaW4gbWVtb3J5IGFyZWFzIChl Zy4gaGlkZSBpbmplY3RlZCBjb2RlIGZyb20gaW50ZWdyaXR5CmNoZWNrZXJzKS4KClNpZ25lZC1v ZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVk LWJ5OiBOaWN1yJlvciBDw67Im3UgPG5jaXR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1i eTogTmljdciZb3IgQ8OuyJt1IDxuY2l0dUBiaXRkZWZlbmRlci5jb20+CkNvLWRldmVsb3BlZC1i eTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5 OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+Ci0tLQogRG9jdW1lbnRh dGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdCB8ICA2MyArKysrKysrKysrKysrKysrKysKIGFyY2gv eDg2L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAgfCAgMzggKysrKysrKysrKy0KIGFyY2gveDg2 L2t2bS94ODYuYyAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIGluY2x1ZGUvbGludXgva3ZtaS5o ICAgICAgICAgICAgICAgfCAgIDQgKysKIGluY2x1ZGUvdWFwaS9saW51eC9rdm1pLmggICAgICAg ICAgfCAgMTggKysrKysKIHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgfCAxMDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHZpcnQva3ZtL2t2bWlfaW50LmggICAgICAg ICAgICAgICAgfCAgMTMgKysrKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAgICB8 ICA1NSArKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjk4IGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9r dm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5kZXggOTU3NjQx ODAyY2FjLi4wZmM1MWI1N2IxZTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9r dm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAt NjE4LDMgKzYxOCw2NiBAQCBUaGUgaW50cm9zcGVjdGlvbiB0b29sIGhhcyBhIGNoYW5jZSB0byB1 bmhvb2sgYW5kIGNsb3NlIHRoZSBLVk1JIGNoYW5uZWwKIFRoaXMgZXZlbnQgaXMgc2VudCB3aGVu IGEgbmV3IHZDUFUgaXMgY3JlYXRlZCBhbmQgdGhlIGludHJvc3BlY3Rpb24gaGFzCiBiZWVuIGVu YWJsZWQgZm9yIHRoaXMgZXZlbnQgKHNlZSAqS1ZNSV9DT05UUk9MX1ZNX0VWRU5UUyopLgogCisz LiBLVk1JX0VWRU5UX1BGCistLS0tLS0tLS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiB4ODYK KzpWZXJzaW9uczogPj0gMQorOkFjdGlvbnM6IENPTlRJTlVFLCBDUkFTSCwgUkVUUlkKKzpQYXJh bWV0ZXJzOgorCis6OgorCisJc3RydWN0IGt2bWlfZXZlbnQ7CisJc3RydWN0IGt2bWlfZXZlbnRf cGYgeworCQlfX3U2NCBndmE7CisJCV9fdTY0IGdwYTsKKwkJX191OCBhY2Nlc3M7CisJCV9fdTgg cGFkZGluZzE7CisJCV9fdTE2IHZpZXc7CisJCV9fdTMyIHBhZGRpbmcyOworCX07CisKKzpSZXR1 cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfZXZlbnRf cmVwbHk7CisJc3RydWN0IGt2bWlfZXZlbnRfcGZfcmVwbHkgeworCQlfX3U2NCBjdHhfYWRkcjsK KwkJX191MzIgY3R4X3NpemU7CisJCV9fdTggc2luZ2xlc3RlcDsKKwkJX191OCByZXBfY29tcGxl dGU7CisJCV9fdTE2IHBhZGRpbmc7CisJCV9fdTggY3R4X2RhdGFbMjU2XTsKKwl9OworCitUaGlz IGV2ZW50IGlzIHNlbnQgd2hlbiBhIGh5cGVydmlzb3IgcGFnZSBmYXVsdCBvY2N1cnMgZHVlIHRv IGEgZmFpbGVkCitwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBzaGFkb3cgcGFnZSB0YWJsZXMsIHRo ZSBpbnRyb3NwZWN0aW9uIGhhcworYmVlbiBlbmFibGVkIGZvciB0aGlzIGV2ZW50IChzZWUgKktW TUlfQ09OVFJPTF9FVkVOVFMqKSBhbmQgdGhlIGV2ZW50IHdhcworZ2VuZXJhdGVkIGZvciBhIHBh Z2UgaW4gd2hpY2ggdGhlIGludHJvc3BlY3RvciBoYXMgc2hvd24gaW50ZXJlc3QKKyhpZS4gaGFz IHByZXZpb3VzbHkgdG91Y2hlZCBpdCBieSBhZGp1c3RpbmcgdGhlIHNwdGUgcGVybWlzc2lvbnMp LgorCitUaGUgc2hhZG93IHBhZ2UgdGFibGVzIGNhbiBiZSB1c2VkIGJ5IHRoZSBpbnRyb3NwZWN0 aW9uIHRvb2wgdG8gZ3VhcmFudGVlCit0aGUgcHVycG9zZSBvZiBjb2RlIGFyZWFzIGluc2lkZSB0 aGUgZ3Vlc3QgKGNvZGUsIHJvZGF0YSwgc3RhY2ssIGhlYXAKK2V0Yy4pIEVhY2ggYXR0ZW1wdCBh dCBhbiBvcGVyYXRpb24gdW5maXR0aW5nIGZvciBhIGNlcnRhaW4gbWVtb3J5CityYW5nZSAoZWcu IGV4ZWN1dGUgY29kZSBpbiBoZWFwKSB0cmlnZ2VycyBhIHBhZ2UgZmF1bHQgYW5kIGdpdmVzIHRo ZQoraW50cm9zcGVjdGlvbiB0b29sIHRoZSBjaGFuY2UgdG8gYXVkaXQgdGhlIGNvZGUgYXR0ZW1w dGluZyB0aGUgb3BlcmF0aW9uLgorCitgYGt2bWlfZXZlbnRgYCwgZ3Vlc3QgdmlydHVhbCBhZGRy ZXNzIChvciAweGZmZmZmZmZmL1VOTUFQUEVEX0dWQSksCitndWVzdCBwaHlzaWNhbCBhZGRyZXNz LCBhY2Nlc3MgZmxhZ3MgKGVnLiBLVk1JX1BBR0VfQUNDRVNTX1IpIGFuZCB0aGUKK0VQVCB2aWV3 IGFyZSBzZW50IHRvIHRoZSBpbnRyb3NwZWN0b3IuCisKK1RoZSAqQ09OVElOVUUqIGFjdGlvbiB3 aWxsIGNvbnRpbnVlIHRoZSBwYWdlIGZhdWx0IGhhbmRsaW5nIHZpYSBlbXVsYXRpb24KKyh3aXRo IGN1c3RvbSBpbnB1dCBpZiBgYGN0eF9zaXplYGAgPiAwKS4gVGhlIHVzZSBvZiBjdXN0b20gaW5w dXQgaXMKK3RvIHRyaWNrIHRoZSBndWVzdCBzb2Z0d2FyZSBpbnRvIGJlbGlldmluZyBpdCBoYXMg cmVhZCBjZXJ0YWluIGRhdGEsCitpbiBvcmRlciB0byBoaWRlIHRoZSBjb250ZW50IG9mIGNlcnRh aW4gbWVtb3J5IGFyZWFzIChlZy4gaGlkZSBpbmplY3RlZAorY29kZSBmcm9tIGludGVncml0eSBj aGVja2VycykuIElmIGBgcmVwX2NvbXBsZXRlYGAgaXMgbm90IHplcm8sIHRoZSBSRVAKK3ByZWZp eGVkIGluc3RydWN0aW9uIHNob3VsZCBiZSBlbXVsYXRlZCBqdXN0IG9uY2UgKG9yIGF0IGxlYXN0 IG5vIG90aGVyCisqS1ZNSV9FVkVOVF9QRiogZXZlbnQgc2hvdWxkIGJlIHNlbnQgZm9yIHRoZSBj dXJyZW50IGluc3RydWN0aW9uKS4KKworVGhlICpSRVRSWSogYWN0aW9uIGlzIHVzZWQgYnkgdGhl IGludHJvc3BlY3RvciB0byByZXRyeSB0aGUgZXhlY3V0aW9uIG9mCit0aGUgY3VycmVudCBpbnN0 cnVjdGlvbi4gRWl0aGVyIHVzaW5nIHNpbmdsZS1zdGVwIChpZiBgYHNpbmdsZXN0ZXBgYCBpcwor bm90IHplcm8pIG9yIHJldHVybiB0byBndWVzdCAoaWYgdGhlIGludHJvc3BlY3RvciBjaGFuZ2Vk IHRoZSBpbnN0cnVjdGlvbgorcG9pbnRlciBvciB0aGUgcGFnZSByZXN0cmljdGlvbnMpLgpkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bWkuYyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKaW5kZXgg ZDdiOTIwMTU4MmI0Li4xMjE4MTlmOWM0ODcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1p LmMKKysrIGIvYXJjaC94ODYva3ZtL2t2bWkuYwpAQCAtOTQsNyArOTQsNDMgQEAgdm9pZCBrdm1p X2FyY2hfc2V0dXBfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtaV9ldmVu dCAqZXYpCiBib29sIGt2bWlfYXJjaF9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdw YV90IGdwYSwgZ3ZhX3QgZ3ZhLAogCQkJdTggYWNjZXNzKQogewotCXJldHVybiBLVk1JX0VWRU5U X0FDVElPTl9DT05USU5VRTsgLyogVE9ETyAqLworCXN0cnVjdCBrdm1pX3ZjcHUgKml2Y3B1Owor CXUzMiBjdHhfc2l6ZTsKKwl1NjQgY3R4X2FkZHI7CisJdTMyIGFjdGlvbjsKKwlib29sIHNpbmds ZXN0ZXBfaWdub3JlZDsKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKCFrdm1fc3B0X2ZhdWx0 KHZjcHUpKQorCQkvKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIEVQVC9OUFQgdmlvbGF0aW9u cyAqLworCQlyZXR1cm4gdHJ1ZTsKKworCWl2Y3B1ID0gSVZDUFUodmNwdSk7CisJY3R4X3NpemUg PSBzaXplb2YoaXZjcHUtPmN0eF9kYXRhKTsKKworCWlmIChpdmNwdS0+ZWZmZWN0aXZlX3JlcF9j b21wbGV0ZSkKKwkJcmV0dXJuIHRydWU7CisKKwlhY3Rpb24gPSBrdm1pX21zZ19zZW5kX3BmKHZj cHUsIGdwYSwgZ3ZhLCBhY2Nlc3MsICZzaW5nbGVzdGVwX2lnbm9yZWQsCisJCQkJICAmaXZjcHUt PnJlcF9jb21wbGV0ZSwgJmN0eF9hZGRyLAorCQkJCSAgaXZjcHUtPmN0eF9kYXRhLCAmY3R4X3Np emUpOworCisJaXZjcHUtPmN0eF9zaXplID0gMDsKKwlpdmNwdS0+Y3R4X2FkZHIgPSAwOworCisJ c3dpdGNoIChhY3Rpb24pIHsKKwljYXNlIEtWTUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOgorCQlp dmNwdS0+Y3R4X3NpemUgPSBjdHhfc2l6ZTsKKwkJaXZjcHUtPmN0eF9hZGRyID0gY3R4X2FkZHI7 CisJCXJldCA9IHRydWU7CisJCWJyZWFrOworCWNhc2UgS1ZNSV9FVkVOVF9BQ1RJT05fUkVUUlk6 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWt2bWlfaGFuZGxlX2NvbW1vbl9ldmVudF9hY3Rpb25z KHZjcHUsIGFjdGlvbiwgIlBGIik7CisJfQorCisJcmV0dXJuIHJldDsKIH0KIAogaW50IGt2bWlf YXJjaF9jbWRfZ2V0X3ZjcHVfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMjU3YzRhMjYy YWNkLi5lZjZkOWRkODAwODYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9h cmNoL3g4Ni9rdm0veDg2LmMKQEAgLTY0MTgsNiArNjQxOCw4IEBAIGludCB4ODZfZW11bGF0ZV9p bnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAKIAl2Y3B1LT5hcmNoLmwxdGZfZmx1 c2hfbDFkID0gdHJ1ZTsKIAorCWt2bWlfaW5pdF9lbXVsYXRlKHZjcHUpOworCiAJLyoKIAkgKiBD bGVhciB3cml0ZV9mYXVsdF90b19zaGFkb3dfcGd0YWJsZSBoZXJlIHRvIGVuc3VyZSBpdCBpcwog CSAqIG5ldmVyIHJldXNlZC4KQEAgLTY1MjMsOSArNjUyNSwxMCBAQCBpbnQgeDg2X2VtdWxhdGVf aW5zdHJ1Y3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJd3JpdGViYWNrID0gZmFsc2U7 CiAJCXIgPSBFTVVMQVRFX1VTRVJfRVhJVDsKIAkJdmNwdS0+YXJjaC5jb21wbGV0ZV91c2Vyc3Bh Y2VfaW8gPSBjb21wbGV0ZV9lbXVsYXRlZF9tbWlvOwotCX0gZWxzZSBpZiAociA9PSBFTVVMQVRJ T05fUkVTVEFSVCkKKwl9IGVsc2UgaWYgKHIgPT0gRU1VTEFUSU9OX1JFU1RBUlQpIHsKKwkJa3Zt aV9hY3RpdmF0ZV9yZXBfY29tcGxldGUodmNwdSk7CiAJCWdvdG8gcmVzdGFydDsKLQllbHNlCisJ fSBlbHNlCiAJCXIgPSBFTVVMQVRFX0RPTkU7CiAKIAlpZiAod3JpdGViYWNrKSB7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvbGludXgva3ZtaS5oCmluZGV4IGFl NWRlMTkwNWI1NS4uODBjMTViOTE5NWU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2t2bWku aAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bWkuaApAQCAtMTcsNiArMTcsOCBAQCBpbnQga3ZtaV9p b2N0bF91bmhvb2soc3RydWN0IGt2bSAqa3ZtLCBib29sIGZvcmNlX3Jlc2V0KTsKIGludCBrdm1p X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1pX3ZjcHVfdW5pbml0 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSk7Cit2b2lkIGt2bWlfaW5pdF9lbXVsYXRlKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSk7Cit2b2lkIGt2bWlfYWN0aXZhdGVfcmVwX2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSk7CiAKICNlbHNlCiAKQEAgLTI3LDYgKzI5LDggQEAgc3RhdGljIGlubGluZSB2b2lk IGt2bWlfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pIHsgfQogc3RhdGljIGlubGluZSBpbnQg a3ZtaV92Y3B1X2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7IHJldHVybiAwOyB9CiBzdGF0 aWMgaW5saW5lIHZvaWQga3ZtaV92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsg fQogc3RhdGljIGlubGluZSB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQga3ZtaV9pbml0X2VtdWxhdGUoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX2FjdGl2YXRlX3Jl cF9jb21wbGV0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQogCiAjZW5kaWYgLyogQ09ORklH X0tWTV9JTlRST1NQRUNUSU9OICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9r dm1pLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCmluZGV4IDkzNGMwNjEwMTQwYS4uNDBh NWMzMDRjMjZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCisrKyBiL2lu Y2x1ZGUvdWFwaS9saW51eC9rdm1pLmgKQEAgLTE1NSw0ICsxNTUsMjIgQEAgc3RydWN0IGt2bWlf ZXZlbnRfcmVwbHkgewogCV9fdTMyIHBhZGRpbmcyOwogfTsKIAorc3RydWN0IGt2bWlfZXZlbnRf cGYgeworCV9fdTY0IGd2YTsKKwlfX3U2NCBncGE7CisJX191OCBhY2Nlc3M7CisJX191OCBwYWRk aW5nMTsKKwlfX3UxNiB2aWV3OworCV9fdTMyIHBhZGRpbmcyOworfTsKKworc3RydWN0IGt2bWlf ZXZlbnRfcGZfcmVwbHkgeworCV9fdTY0IGN0eF9hZGRyOworCV9fdTMyIGN0eF9zaXplOworCV9f dTggc2luZ2xlc3RlcDsKKwlfX3U4IHJlcF9jb21wbGV0ZTsKKwlfX3UxNiBwYWRkaW5nOworCV9f dTggY3R4X2RhdGFbMjU2XTsKK307CisKICNlbmRpZiAvKiBfVUFQSV9fTElOVVhfS1ZNSV9IICov CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5kZXggMTQ5 NjM0NzQ2MTdlLi4wMjY0MTE1YTdmNGQgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWkuYworKysg Yi92aXJ0L2t2bS9rdm1pLmMKQEAgLTM4Nyw2ICszODcsNTIgQEAgc3RhdGljIGJvb2wgaXNfcGZf b2ZfaW50ZXJlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIHU4IGFjY2VzcykK IAlyZXR1cm4ga3ZtaV9yZXN0cmljdGVkX2FjY2VzcyhJS1ZNKGt2bSksIGdwYSwgYWNjZXNzKTsK IH0KIAorLyoKKyAqIFRoZSBjdXN0b20gaW5wdXQgaXMgZGVmaW5lZCBieSBhIHZpcnR1YWwgYWRk cmVzcyBhbmQgc2l6ZSwgYW5kIGFsbCByZWFkcworICogbXVzdCBiZSB3aXRoaW4gdGhpcyBzcGFj ZS4gUmVhZHMgdGhhdCBhcmUgY29tcGxldGVseSBvdXRzaWRlIHNob3VsZCBiZQorICogc2F0aXNm eWllZCB1c2luZyBndWVzdCBtZW1vcnkuIE92ZXJsYXBwaW5nIHJlYWRzIGFyZSBlcnJvbmVvdXMu CisgKi8KK3N0YXRpYyBpbnQgdXNlX2N1c3RvbV9pbnB1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IGd2YV90IGd2YSwgdTggKm5ldywKKwkJCSAgICBpbnQgYnl0ZXMpCit7CisJdW5zaWduZWQgaW50 IG9mZnNldDsKKwlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOworCisJaWYg KCFpdmNwdS0+Y3R4X3NpemUgfHwgIWJ5dGVzKQorCQlyZXR1cm4gMDsKKworCWlmIChieXRlcyA8 IDAgfHwgYnl0ZXMgPiBpdmNwdS0+Y3R4X3NpemUpIHsKKwkJa3ZtaV93YXJuX29uY2UoSUtWTSh2 Y3B1LT5rdm0pLAorCQkJICAgICAgICJpbnZhbGlkIHJhbmdlOiAlZCAobWF4OiAldSlcbiIsCisJ CQkgICAgICAgYnl0ZXMsIGl2Y3B1LT5jdHhfc2l6ZSk7CisJCXJldHVybiAwOworCX0KKworCWlm IChndmEgKyBieXRlcyA8PSBpdmNwdS0+Y3R4X2FkZHIgfHwKKwkgICAgZ3ZhID49IGl2Y3B1LT5j dHhfYWRkciArIGl2Y3B1LT5jdHhfc2l6ZSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZ3ZhIDwgaXZj cHUtPmN0eF9hZGRyICYmIGd2YSArIGJ5dGVzID4gaXZjcHUtPmN0eF9hZGRyKSB7CisJCWt2bWlf d2Fybl9vbmNlKElLVk0odmNwdS0+a3ZtKSwKKwkJCSAgICAgICAicmVhZCByYW5nZXMgb3Zlcmxh cDogMHglbHg6JWQsIDB4JWxseDoldVxuIiwKKwkJCSAgICAgICBndmEsIGJ5dGVzLCBpdmNwdS0+ Y3R4X2FkZHIsIGl2Y3B1LT5jdHhfc2l6ZSk7CisJCXJldHVybiAwOworCX0KKworCWlmIChndmEg KyBieXRlcyA+IGl2Y3B1LT5jdHhfYWRkciArIGl2Y3B1LT5jdHhfc2l6ZSkgeworCQlrdm1pX3dh cm5fb25jZShJS1ZNKHZjcHUtPmt2bSksCisJCQkgICAgICAgInJlYWQgcmFuZ2VzIG92ZXJsYXA6 IDB4JWx4OiVkLCAweCVsbHg6JXVcbiIsCisJCQkgICAgICAgZ3ZhLCBieXRlcywgaXZjcHUtPmN0 eF9hZGRyLCBpdmNwdS0+Y3R4X3NpemUpOworCQlyZXR1cm4gMDsKKwl9CisKKwlvZmZzZXQgPSBn dmEgLSBpdmNwdS0+Y3R4X2FkZHI7CisKKwltZW1jcHkobmV3LCBpdmNwdS0+Y3R4X2RhdGEgKyBv ZmZzZXQsIGJ5dGVzKTsKKworCXJldHVybiBieXRlczsKK30KKwogc3RhdGljIGJvb2wgX19rdm1p X3RyYWNrX3ByZXJlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2 YSwKIAl1OCAqbmV3LCBpbnQgYnl0ZXMsIHN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9u b2RlICpub2RlLAogCWJvb2wgKmRhdGFfcmVhZHkpCkBAIC0zOTYsOSArNDQyLDI0IEBAIHN0YXRp YyBib29sIF9fa3ZtaV90cmFja19wcmVyZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3Qg Z3BhLCBndmFfdCBndmEsCiAJaWYgKCFpc19wZl9vZl9pbnRlcmVzdCh2Y3B1LCBncGEsIEtWTUlf UEFHRV9BQ0NFU1NfUikpCiAJCXJldHVybiB0cnVlOwogCisJaWYgKHVzZV9jdXN0b21faW5wdXQo dmNwdSwgZ3ZhLCBuZXcsIGJ5dGVzKSkKKwkJZ290byBvdXRfY3VzdG9tOworCiAJcmV0ID0ga3Zt aV9hcmNoX3BmX2V2ZW50KHZjcHUsIGdwYSwgZ3ZhLCBLVk1JX1BBR0VfQUNDRVNTX1IpOwogCisJ aWYgKHJldCAmJiB1c2VfY3VzdG9tX2lucHV0KHZjcHUsIGd2YSwgbmV3LCBieXRlcykpCisJCWdv dG8gb3V0X2N1c3RvbTsKKwogCXJldHVybiByZXQ7CisKK291dF9jdXN0b206CisJaWYgKCpkYXRh X3JlYWR5KQorCQlrdm1pX2VycihJS1ZNKHZjcHUtPmt2bSksCisJCQkiT3ZlcnJpZGUgY3VzdG9t IGRhdGEgZnJvbSBhbm90aGVyIHRyYWNrZXJcbiIpOworCisJKmRhdGFfcmVhZHkgPSB0cnVlOwor CisJcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGt2bWlfdHJhY2tfcHJlcmVhZChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLApAQCAtODU1LDYgKzkxNiw0 OCBAQCB2b2lkIGt2bWlfaGFuZGxlX2NvbW1vbl9ldmVudF9hY3Rpb25zKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgdTMyIGFjdGlvbiwKIAl9CiB9CiAKK3ZvaWQga3ZtaV9pbml0X2VtdWxhdGUoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1pICppa3ZtOworCXN0cnVjdCBrdm1p X3ZjcHUgKml2Y3B1OworCisJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3Zt KQorCQlyZXR1cm47CisKKwlpdmNwdSA9IElWQ1BVKHZjcHUpOworCisJaXZjcHUtPnJlcF9jb21w bGV0ZSA9IGZhbHNlOworCWl2Y3B1LT5lZmZlY3RpdmVfcmVwX2NvbXBsZXRlID0gZmFsc2U7CisK KwlpdmNwdS0+Y3R4X3NpemUgPSAwOworCWl2Y3B1LT5jdHhfYWRkciA9IDA7CisKKwlrdm1pX3B1 dCh2Y3B1LT5rdm0pOworfQorRVhQT1JUX1NZTUJPTChrdm1pX2luaXRfZW11bGF0ZSk7CisKKy8q CisgKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIHRoYXQgZXZlbnRzIHRyaWdnZXJlZCBieSBy ZXBldGl0aXZlCisgKiBpbnN0cnVjdGlvbnMgYmUgc3VwcHJlc3NlZCBhZnRlciB0aGUgZmlyc3Qg Y3ljbGUsIHRoZW4gdGhpcworICogZnVuY3Rpb24gd2lsbCBlZmZlY3RpdmVseSBhY3RpdmF0ZSBp dC4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QKKyAqIHByZW1hdHVyZWx5IHN1cHByZXNzIHBv dGVudGlhbCBldmVudHMgKHNlY29uZCBvciBsYXRlcikgdHJpZ2dlcmQKKyAqIGJ5IGFuIGluc3Ry dWN0aW9uIGR1cmluZyBhIHNpbmdsZSBwYXNzLgorICovCit2b2lkIGt2bWlfYWN0aXZhdGVfcmVw X2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsK KworCWlrdm0gPSBrdm1pX2dldCh2Y3B1LT5rdm0pOworCWlmICghaWt2bSkKKwkJcmV0dXJuOwor CisJSVZDUFUodmNwdSktPmVmZmVjdGl2ZV9yZXBfY29tcGxldGUgPSBJVkNQVSh2Y3B1KS0+cmVw X2NvbXBsZXRlOworCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKK30KK0VYUE9SVF9TWU1CT0woa3Zt aV9hY3RpdmF0ZV9yZXBfY29tcGxldGUpOworCiBzdGF0aWMgYm9vbCBfX2t2bWlfY3JlYXRlX3Zj cHVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXUzMiBhY3Rpb247CmRpZmYgLS1n aXQgYS92aXJ0L2t2bS9rdm1pX2ludC5oIGIvdmlydC9rdm0va3ZtaV9pbnQuaAppbmRleCBjMDA0 NGNhZTgwODkuLmQ0NzhkOWEyZTc2OSAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaV9pbnQuaAor KysgYi92aXJ0L2t2bS9rdm1pX2ludC5oCkBAIC0yNiw2ICsyNiw4IEBACiAKICNkZWZpbmUgSVZD UFUodmNwdSkgKChzdHJ1Y3Qga3ZtaV92Y3B1ICopKCh2Y3B1KS0+a3ZtaSkpCiAKKyNkZWZpbmUg S1ZNSV9DVFhfREFUQV9TSVpFIEZJRUxEX1NJWkVPRihzdHJ1Y3Qga3ZtaV9ldmVudF9wZl9yZXBs eSwgY3R4X2RhdGEpCisKICNkZWZpbmUgS1ZNSV9NU0dfU0laRV9BTExPQyAoc2l6ZW9mKHN0cnVj dCBrdm1pX21zZ19oZHIpICsgS1ZNSV9NU0dfU0laRSkKIAogI2RlZmluZSBLVk1JX0tOT1dOX1ZD UFVfRVZFTlRTICggXApAQCAtOTIsNiArOTQsMTIgQEAgc3RydWN0IGt2bWlfdmNwdV9yZXBseSB7 CiB9OwogCiBzdHJ1Y3Qga3ZtaV92Y3B1IHsKKwl1OCBjdHhfZGF0YVtLVk1JX0NUWF9EQVRBX1NJ WkVdOworCXUzMiBjdHhfc2l6ZTsKKwl1NjQgY3R4X2FkZHI7CisJYm9vbCByZXBfY29tcGxldGU7 CisJYm9vbCBlZmZlY3RpdmVfcmVwX2NvbXBsZXRlOworCiAJYm9vbCByZXBseV93YWl0aW5nOwog CXN0cnVjdCBrdm1pX3ZjcHVfcmVwbHkgcmVwbHk7CiAKQEAgLTE0MSw2ICsxNDksOSBAQCBib29s IGt2bWlfc29ja19nZXQoc3RydWN0IGt2bWkgKmlrdm0sIGludCBmZCk7CiB2b2lkIGt2bWlfc29j a19zaHV0ZG93bihzdHJ1Y3Qga3ZtaSAqaWt2bSk7CiB2b2lkIGt2bWlfc29ja19wdXQoc3RydWN0 IGt2bWkgKmlrdm0pOwogYm9vbCBrdm1pX21zZ19wcm9jZXNzKHN0cnVjdCBrdm1pICppa3ZtKTsK K3UzMiBrdm1pX21zZ19zZW5kX3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTY0 IGd2YSwgdTggYWNjZXNzLAorCQkgICAgIGJvb2wgKnNpbmdsZXN0ZXAsIGJvb2wgKnJlcF9jb21w bGV0ZSwKKwkJICAgICB1NjQgKmN0eF9hZGRyLCB1OCAqY3R4LCB1MzIgKmN0eF9zaXplKTsKIHUz MiBrdm1pX21zZ19zZW5kX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQg a3ZtaV9tc2dfc2VuZF91bmhvb2soc3RydWN0IGt2bWkgKmlrdm0pOwogCkBAIC0xNTYsNiArMTY3 LDggQEAgaW50IGt2bWlfcnVuX2pvYnNfYW5kX3dhaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsK IGludCBrdm1pX2FkZF9qb2Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkgdm9pZCAoKmZjdCko c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpjdHgpLAogCQkgdm9pZCAqY3R4LCB2b2lkICgq ZnJlZV9mY3QpKHZvaWQgKmN0eCkpOwordm9pZCBrdm1pX2hhbmRsZV9jb21tb25fZXZlbnRfYWN0 aW9ucyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBhY3Rpb24sCisJCQkJICAgICAgY29uc3Qg Y2hhciAqc3RyKTsKIAogLyogYXJjaCAqLwogdm9pZCBrdm1pX2FyY2hfdXBkYXRlX3BhZ2VfdHJh Y2tpbmcoc3RydWN0IGt2bSAqa3ZtLApkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tc2cuYyBi L3ZpcnQva3ZtL2t2bWlfbXNnLmMKaW5kZXggYTNjNjdhZjg2NzRlLi4wNjQyMzU2ZDRlMDQgMTAw NjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfbXNnLmMKKysrIGIvdmlydC9rdm0va3ZtaV9tc2cuYwpA QCAtNzY0LDYgKzc2NCw2MSBAQCBpbnQga3ZtaV9tc2dfc2VuZF91bmhvb2soc3RydWN0IGt2bWkg Kmlrdm0pCiAJcmV0dXJuIGt2bWlfc29ja193cml0ZShpa3ZtLCB2ZWMsIG4sIG1zZ19zaXplKTsK IH0KIAordTMyIGt2bWlfbXNnX3NlbmRfcGYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3Bh LCB1NjQgZ3ZhLCB1OCBhY2Nlc3MsCisJCSAgICAgYm9vbCAqc2luZ2xlc3RlcCwgYm9vbCAqcmVw X2NvbXBsZXRlLCB1NjQgKmN0eF9hZGRyLAorCQkgICAgIHU4ICpjdHhfZGF0YSwgdTMyICpjdHhf c2l6ZSkKK3sKKwl1MzIgbWF4X2N0eF9zaXplID0gKmN0eF9zaXplOworCXN0cnVjdCBrdm1pX2V2 ZW50X3BmIGU7CisJc3RydWN0IGt2bWlfZXZlbnRfcGZfcmVwbHkgcjsKKwlpbnQgZXJyLCBhY3Rp b247CisKKwltZW1zZXQoJmUsIDAsIHNpemVvZihlKSk7CisJZS5ncGEgPSBncGE7CisJZS5ndmEg PSBndmE7CisJZS5hY2Nlc3MgPSBhY2Nlc3M7CisKKwllcnIgPSBrdm1pX3NlbmRfZXZlbnQodmNw dSwgS1ZNSV9FVkVOVF9QRiwgJmUsIHNpemVvZihlKSwKKwkJCSAgICAgICZyLCBzaXplb2Yociks ICZhY3Rpb24pOworCWlmIChlcnIpCisJCXJldHVybiBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5V RTsKKworCWlmIChlLnBhZGRpbmcxIHx8IGUucGFkZGluZzIpIHsKKwkJc3RydWN0IGt2bWkgKmlr dm0gPSBJS1ZNKHZjcHUtPmt2bSk7CisKKwkJa3ZtaV9lcnIoaWt2bSwgIiVzOiBub24gemVybyBw YWRkaW5nICV1LCV1XG4iLAorCQkJX19mdW5jX18sIGUucGFkZGluZzEsIGUucGFkZGluZzIpOwor CQlrdm1pX3NvY2tfc2h1dGRvd24oaWt2bSk7CisJCXJldHVybiBLVk1JX0VWRU5UX0FDVElPTl9D T05USU5VRTsKKwl9CisKKwkqY3R4X3NpemUgPSAwOworCisJaWYgKHIuY3R4X3NpemUgPiBtYXhf Y3R4X3NpemUpIHsKKwkJc3RydWN0IGt2bWkgKmlrdm0gPSBJS1ZNKHZjcHUtPmt2bSk7CisKKwkJ a3ZtaV9lcnIoaWt2bSwgIiVzOiBjdHhfc2l6ZSAocmVjdjoldSBtYXg6JXUpXG4iLAorCQkJCV9f ZnVuY19fLCByLmN0eF9zaXplLCBtYXhfY3R4X3NpemUpOworCisJCWt2bWlfc29ja19zaHV0ZG93 bihpa3ZtKTsKKworCQkqc2luZ2xlc3RlcCA9IGZhbHNlOworCQkqcmVwX2NvbXBsZXRlID0gMDsK KworCQlyZXR1cm4gS1ZNSV9FVkVOVF9BQ1RJT05fQ09OVElOVUU7CisJfQorCisJKnNpbmdsZXN0 ZXAgPSByLnNpbmdsZXN0ZXA7CisJKnJlcF9jb21wbGV0ZSA9IHIucmVwX2NvbXBsZXRlOworCisJ KmN0eF9zaXplID0gbWluX3QodTMyLCByLmN0eF9zaXplLCBzaXplb2Yoci5jdHhfZGF0YSkpOwor CSpjdHhfYWRkciA9IHIuY3R4X2FkZHI7CisJaWYgKCpjdHhfc2l6ZSkKKwkJbWVtY3B5KGN0eF9k YXRhLCByLmN0eF9kYXRhLCAqY3R4X3NpemUpOworCisJcmV0dXJuIGFjdGlvbjsKK30KKwogdTMy IGt2bWlfbXNnX3NlbmRfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCWlu dCBlcnIsIGFjdGlvbjsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxp bnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWls bWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u