From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 62/92] kvm: introspection: add KVMI_EVENT_HYPERCALL Date: Fri, 9 Aug 2019 19:00:17 +0300 Message-ID: <20190809160047.8319-63-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBldmVudCBp cyBzZW50IG9uIGEgc3BlY2lmaWMgdXNlciBoeXBlcmNhbGwuCgpJdCBpcyB1c2VkIGJ5IHRoZSBj b2RlIHJlc2lkaW5nIGluc2lkZSB0aGUgaW50cm9zcGVjdGVkIGd1ZXN0IHRvIGNhbGwgdGhlCmlu dHJvc3BlY3Rpb24gdG9vbCBhbmQgdG8gcmVwb3J0IGNlcnRhaW4gZGV0YWlscyBhYm91dCBpdHMg b3BlcmF0aW9uLiBGb3IKZXhhbXBsZSwgYSBjbGFzc2ljIGFudGltYWx3YXJlIHJlbWVkaWF0aW9u IHRvb2wgY2FuIHJlcG9ydCB3aGF0IGl0IGhhcwpmb3VuZCBkdXJpbmcgYSBzY2FuLgoKU2lnbmVk LW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgpDby1kZXZlbG9w ZWQtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9m Zi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3Vt ZW50YXRpb24vdmlydHVhbC9rdm0vaHlwZXJjYWxscy50eHQgfCAzNCArKysrKysrKysrKysrKysr KysrKysrKy0KIERvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgICAgICAgfCAzMSAr KysrKysrKysrKysrKysrKysrKysKIGFyY2gveDg2L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAg ICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC94ODYva3ZtL3g4Ni5jICAg ICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tCiBpbmNsdWRlL2xpbnV4L2t2bWku aCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIGluY2x1ZGUvdWFwaS9saW51eC9rdm1fcGFy YS5oICAgICAgICAgICAgfCAgMiArKwogdmlydC9rdm0va3ZtaS5jICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDIyICsrKysrKysrKysrKysrKwogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAg ICAgICAgICAgICAgICB8ICAzICsrKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAg ICAgICAgICB8IDEyICsrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3Zt L2h5cGVyY2FsbHMudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9oeXBlcmNhbGxzLnR4 dAppbmRleCBkYTI0YzEzOGM4ZDEuLjFhYjU5NTM3YjJmYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRh dGlvbi92aXJ0dWFsL2t2bS9oeXBlcmNhbGxzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1 YWwva3ZtL2h5cGVyY2FsbHMudHh0CkBAIC0xMjIsNyArMTIyLDcgQEAgY29tcHV0ZSB0aGUgQ0xP Q0tfUkVBTFRJTUUgZm9yIGl0cyBjbG9jaywgYXQgdGhlIHNhbWUgaW5zdGFudC4KIFJldHVybnMg S1ZNX0VPUE5PVFNVUFAgaWYgdGhlIGhvc3QgZG9lcyBub3QgdXNlIFRTQyBjbG9ja3NvdXJjZSwK IG9yIGlmIGNsb2NrIHR5cGUgaXMgZGlmZmVyZW50IHRoYW4gS1ZNX0NMT0NLX1BBSVJJTkdfV0FM TENMT0NLLgogCi02LiBLVk1fSENfU0VORF9JUEkKKzcuIEtWTV9IQ19TRU5EX0lQSQogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBBcmNoaXRlY3R1cmU6IHg4NgogU3RhdHVzOiBhY3RpdmUKQEAg LTE0MSwzICsxNDEsMzUgQEAgYTAgY29ycmVzcG9uZHMgdG8gdGhlIEFQSUMgSUQgaW4gdGhlIHRo aXJkIGFyZ3VtZW50IChhMiksIGJpdCAxCiBjb3JyZXNwb25kcyB0byB0aGUgQVBJQyBJRCBhMisx LCBhbmQgc28gb24uCiAKIFJldHVybnMgdGhlIG51bWJlciBvZiBDUFVzIHRvIHdoaWNoIHRoZSBJ UElzIHdlcmUgZGVsaXZlcmVkIHN1Y2Nlc3NmdWxseS4KKworOC4gS1ZNX0hDX1hFTl9IVk1fT1AK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FyY2hpdGVjdHVyZTogeDg2CitTdGF0dXM6IGFjdGl2 ZQorUHVycG9zZTogVG8gZW5hYmxlIGNvbW11bmljYXRpb24gYmV0d2VlbiBhIGd1ZXN0IGFnZW50 IGFuZCBhIFZNSSBhcHBsaWNhdGlvbgorVXNhZ2U6CisKK0FuIGV2ZW50IHdpbGwgYmUgc2VudCB0 byB0aGUgVk1JIGFwcGxpY2F0aW9uIChzZWUga3ZtaS5yc3QpIGlmIHRoZSBmb2xsb3dpbmcKK3Jl Z2lzdGVycywgd2hpY2ggZGlmZmVyIGJldHdlZW4gMzJiaXQgYW5kIDY0Yml0LCBoYXZlIHRoZSBm b2xsb3dpbmcgdmFsdWVzOgorCisgICAgICAgMzJiaXQgICAgICAgNjRiaXQgICAgIHZhbHVlCisg ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgZWJ4IChhMCkgICAgcmRp ICAgICAgIEtWTV9IQ19YRU5fSFZNX09QX0dVRVNUX1JFUVVFU1RfVk1fRVZFTlQKKyAgICAgICBl Y3ggKGExKSAgICByc2kgICAgICAgMAorCitUaGlzIHNwZWNpZmljYXRpb24gY29waWVzIFhlbidz IHsgX19IWVBFUlZJU09SX2h2bV9vcCwKK0hWTU9QX2d1ZXN0X3JlcXVlc3Rfdm1fZXZlbnQgfSBo eXBlcmNhbGwgYW5kIGNhbiBvcmlnaW5hdGUgZnJvbSBrZXJuZWwgb3IKK3VzZXJzcGFjZS4KKwor SXQgcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIG9yIGEgbmVnYXRpdmUgUE9TSVguMSBlcnJvciBj b2RlIGlmIGl0IGZhaWxzLiBUaGUKK2Fic2VuY2Ugb2YgYW4gYWN0aXZlIFZNSSBhcHBsaWNhdGlv biBpcyBub3Qgc2lnbmFsZWQgaW4gYW55IHdheS4KKworVGhlIGZvbGxvd2luZyByZWdpc3RlcnMg YXJlIGNsb2JiZXJlZDoKKworICAqIDMyYml0OiBlZHgsIGVzaSwgZWRpLCBlYnAKKyAgKiA2NGJp dDogcmR4LCByMTAsIHI4LCByOQorCitJbiBwYXJ0aWN1bGFyLCBmb3IgS1ZNX0hDX1hFTl9IVk1f T1BfR1VFU1RfUkVRVUVTVF9WTV9FVkVOVCwgdGhlIGxhc3QgdHdvCityZWdpc3RlcnMgY2FuIGJl IHBvaXNvbmVkIGRlbGliZXJhdGVseSBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIHBhc3NpbmcKK2lu Zm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJz dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5kZXggZGEyMTY0MTViZjMy Li4yNjAzODEzZDFlZTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3Zt aS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAtMTUwNSwz ICsxNTA1LDM0IEBAIHRyeWluZyB0byBwZXJmb3JtIGEgY2VydGFpbiBvcGVyYXRpb24gKGxpa2Ug Y3JlYXRpbmcgYSBwcm9jZXNzKS4KIGBga3ZtaV9ldmVudGBgIGFuZCB0aGUgZ3Vlc3QgcGh5c2lj YWwgYWRkcmVzcyBhcmUgc2VudCB0byB0aGUgaW50cm9zcGVjdG9yLgogCiBUaGUgKlJFVFJZKiBh Y3Rpb24gaXMgdXNlZCBieSB0aGUgaW50cm9zcGVjdG9yIGZvciBpdHMgb3duIGJyZWFrcG9pbnRz LgorCisxMC4gS1ZNSV9FVkVOVF9IWVBFUkNBTEwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Cis6QXJjaGl0ZWN0dXJlczogeDg2Cis6VmVyc2lvbnM6ID49IDEKKzpBY3Rpb25zOiBDT05USU5V RSwgQ1JBU0gKKzpQYXJhbWV0ZXJzOgorCis6OgorCisJc3RydWN0IGt2bWlfZXZlbnQ7CisKKzpS ZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfZXZl bnRfcmVwbHk7CisKK1RoaXMgZXZlbnQgaXMgc2VudCBvbiBhIHNwZWNpZmljIHVzZXIgaHlwZXJj YWxsIHdoZW4gdGhlIGludHJvc3BlY3Rpb24gaGFzCitiZWVuIGVuYWJsZWQgZm9yIHRoaXMgZXZl bnQgKHNlZSAqS1ZNSV9DT05UUk9MX0VWRU5UUyopLgorCitUaGUgaHlwZXJjYWxsIG51bWJlciBt dXN0IGJlIGBgS1ZNX0hDX1hFTl9IVk1fT1BgYCB3aXRoIHRoZQorYGBLVk1fSENfWEVOX0hWTV9P UF9HVUVTVF9SRVFVRVNUX1ZNX0VWRU5UYGAgc3ViLWZ1bmN0aW9uCisoc2VlIGh5cGVyY2FsbHMu dHh0KS4KKworSXQgaXMgdXNlZCBieSB0aGUgY29kZSByZXNpZGluZyBpbnNpZGUgdGhlIGludHJv c3BlY3RlZCBndWVzdCB0byBjYWxsIHRoZQoraW50cm9zcGVjdGlvbiB0b29sIGFuZCB0byByZXBv cnQgY2VydGFpbiBkZXRhaWxzIGFib3V0IGl0cyBvcGVyYXRpb24uIEZvcgorZXhhbXBsZSwgYSBj bGFzc2ljIGFudGltYWx3YXJlIHJlbWVkaWF0aW9uIHRvb2wgY2FuIHJlcG9ydCB3aGF0IGl0IGhh cworZm91bmQgZHVyaW5nIGEgc2Nhbi4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9rdm1pLmMg Yi9hcmNoL3g4Ni9rdm0va3ZtaS5jCmluZGV4IGU5OTgyMjNiY2ExZS4uMDJlMDI2ZWY1ZWQ3IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0va3ZtaS5jCisrKyBiL2FyY2gveDg2L2t2bS9rdm1pLmMK QEAgLTQ0OCw2ICs0NDgsMzkgQEAgdm9pZCBrdm1pX2FyY2hfYnJlYWtwb2ludF9ldmVudChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBndmEsIHU4IGluc25fbGVuKQogCX0KIH0KIAorI2RlZmlu ZSBLVk1fSENfWEVOX0hWTV9PUF9HVUVTVF9SRVFVRVNUX1ZNX0VWRU5UIDI0Citib29sIGt2bWlf YXJjaF9pc19hZ2VudF9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXVuc2ln bmVkIGxvbmcgc3ViZnVuYzEsIHN1YmZ1bmMyOworCWJvb2wgbG9uZ21vZGUgPSBpc182NF9iaXRf bW9kZSh2Y3B1KTsKKworCWlmIChsb25nbW9kZSkgeworCQlzdWJmdW5jMSA9IGt2bV9yZWdpc3Rl cl9yZWFkKHZjcHUsIFZDUFVfUkVHU19SREkpOworCQlzdWJmdW5jMiA9IGt2bV9yZWdpc3Rlcl9y ZWFkKHZjcHUsIFZDUFVfUkVHU19SU0kpOworCX0gZWxzZSB7CisJCXN1YmZ1bmMxID0ga3ZtX3Jl Z2lzdGVyX3JlYWQodmNwdSwgVkNQVV9SRUdTX1JCWCk7CisJCXN1YmZ1bmMxICY9IDB4RkZGRkZG RkY7CisJCXN1YmZ1bmMyID0ga3ZtX3JlZ2lzdGVyX3JlYWQodmNwdSwgVkNQVV9SRUdTX1JDWCk7 CisJCXN1YmZ1bmMyICY9IDB4RkZGRkZGRkY7CisJfQorCisJcmV0dXJuIChzdWJmdW5jMSA9PSBL Vk1fSENfWEVOX0hWTV9PUF9HVUVTVF9SRVFVRVNUX1ZNX0VWRU5UCisJCSYmIHN1YmZ1bmMyID09 IDApOworfQorCit2b2lkIGt2bWlfYXJjaF9oeXBlcmNhbGxfZXZlbnQoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQoreworCXUzMiBhY3Rpb247CisKKwlhY3Rpb24gPSBrdm1pX21zZ19zZW5kX2h5cGVy Y2FsbCh2Y3B1KTsKKwlzd2l0Y2ggKGFjdGlvbikgeworCWNhc2UgS1ZNSV9FVkVOVF9BQ1RJT05f Q09OVElOVUU6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWt2bWlfaGFuZGxlX2NvbW1vbl9ldmVu dF9hY3Rpb25zKHZjcHUsIGFjdGlvbiwgIkhZUEVSQ0FMTCIpOworCX0KK30KKwogYm9vbCBrdm1p X2FyY2hfcGZfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2 YSwKIAkJCXU4IGFjY2VzcykKIHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2Fy Y2gveDg2L2t2bS94ODYuYwppbmRleCBhOWRhOGFjMGQyYjMuLmQ1NjhlNjBhZTU2OCAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtNzIz MSwxMSArNzIzMSwxNCBAQCBpbnQga3ZtX2VtdWxhdGVfaHlwZXJjYWxsKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKIHsKIAl1bnNpZ25lZCBsb25nIG5yLCBhMCwgYTEsIGEyLCBhMywgcmV0OwogCWlu dCBvcF82NF9iaXQ7CisJYm9vbCBrdm1pX2hjOwogCi0JaWYgKGt2bV9odl9oeXBlcmNhbGxfZW5h YmxlZCh2Y3B1LT5rdm0pKQorCW5yID0ga3ZtX3JlZ2lzdGVyX3JlYWQodmNwdSwgVkNQVV9SRUdT X1JBWCk7CisJa3ZtaV9oYyA9ICh1MzIpbnIgPT0gS1ZNX0hDX1hFTl9IVk1fT1A7CisKKwlpZiAo a3ZtX2h2X2h5cGVyY2FsbF9lbmFibGVkKHZjcHUtPmt2bSkgJiYgIWt2bWlfaGMpCiAJCXJldHVy biBrdm1faHZfaHlwZXJjYWxsKHZjcHUpOwogCi0JbnIgPSBrdm1fcmVnaXN0ZXJfcmVhZCh2Y3B1 LCBWQ1BVX1JFR1NfUkFYKTsKIAlhMCA9IGt2bV9yZWdpc3Rlcl9yZWFkKHZjcHUsIFZDUFVfUkVH U19SQlgpOwogCWExID0ga3ZtX3JlZ2lzdGVyX3JlYWQodmNwdSwgVkNQVV9SRUdTX1JDWCk7CiAJ YTIgPSBrdm1fcmVnaXN0ZXJfcmVhZCh2Y3B1LCBWQ1BVX1JFR1NfUkRYKTsKQEAgLTcyNTIsNyAr NzI1NSw3IEBAIGludCBrdm1fZW11bGF0ZV9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KQogCQlhMyAmPSAweEZGRkZGRkZGOwogCX0KIAotCWlmIChrdm1feDg2X29wcy0+Z2V0X2NwbCh2 Y3B1KSAhPSAwKSB7CisJaWYgKGt2bV94ODZfb3BzLT5nZXRfY3BsKHZjcHUpICE9IDAgJiYgIWt2 bWlfaGMpIHsKIAkJcmV0ID0gLUtWTV9FUEVSTTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtNzI3Myw2 ICs3Mjc2LDEzIEBAIGludCBrdm1fZW11bGF0ZV9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCWNhc2UgS1ZNX0hDX1NFTkRfSVBJOgogCQlyZXQgPSBrdm1fcHZfc2VuZF9pcGkodmNw dS0+a3ZtLCBhMCwgYTEsIGEyLCBhMywgb3BfNjRfYml0KTsKIAkJYnJlYWs7CisjaWZkZWYgQ09O RklHX0tWTV9JTlRST1NQRUNUSU9OCisJY2FzZSBLVk1fSENfWEVOX0hWTV9PUDoKKwkJcmV0ID0g MDsKKwkJaWYgKCFrdm1pX2h5cGVyY2FsbF9ldmVudCh2Y3B1KSkKKwkJCXJldCA9IC1LVk1fRU5P U1lTOworCQlicmVhazsKKyNlbmRpZiAvKiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04gKi8KIAlk ZWZhdWx0OgogCQlyZXQgPSAtS1ZNX0VOT1NZUzsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvbGludXgva3ZtaS5oCmluZGV4IDEzYjU4YjMyMDJi Yi4uNTlkODNkMmQwY2NhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2t2bWkuaAorKysgYi9p bmNsdWRlL2xpbnV4L2t2bWkuaApAQCAtMTcsNiArMTcsNyBAQCBpbnQga3ZtaV9pb2N0bF91bmhv b2soc3RydWN0IGt2bSAqa3ZtLCBib29sIGZvcmNlX3Jlc2V0KTsKIGludCBrdm1pX3ZjcHVfaW5p dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1pX3ZjcHVfdW5pbml0KHN0cnVjdCBr dm1fdmNwdSAqdmNwdSk7CiBib29sIGt2bWlfYnJlYWtwb2ludF9ldmVudChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHU2NCBndmEsIHU4IGluc25fbGVuKTsKK2Jvb2wga3ZtaV9oeXBlcmNhbGxfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIGJvb2wga3ZtaV9xdWV1ZV9leGNlcHRpb24oc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KTsKIHZvaWQga3ZtaV90cmFwX2V2ZW50KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSk7CiB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSk7CkBAIC0zNiw2ICszNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1pX2JyZWFrcG9pbnRf ZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3ZhLAogCQkJeyByZXR1cm4gdHJ1ZTsg fQogc3RhdGljIGlubGluZSB2b2lkIGt2bWlfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX2hhbmRsZV9yZXF1ZXN0cyhzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpIHsgfQorc3RhdGljIGlubGluZSBib29sIGt2bWlfaHlwZXJjYWxsX2V2 ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyByZXR1cm4gZmFsc2U7IH0KIHN0YXRpYyBpbmxp bmUgYm9vbCBrdm1pX3F1ZXVlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgcmV0 dXJuIHRydWU7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX3RyYXBfZXZlbnQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX2luaXRfZW11bGF0ZShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4 L2t2bV9wYXJhLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtX3BhcmEuaAppbmRleCA1NTNmMTY4 MzMxYTQuLjU5MmJkYTkyYjZkNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bV9w YXJhLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bV9wYXJhLmgKQEAgLTMzLDYgKzMzLDgg QEAKICNkZWZpbmUgS1ZNX0hDX0NMT0NLX1BBSVJJTkcJCTkKICNkZWZpbmUgS1ZNX0hDX1NFTkRf SVBJCQkxMAogCisjZGVmaW5lIEtWTV9IQ19YRU5fSFZNX09QCQkzNCAvKiBYZW4ncyBfX0hZUEVS VklTT1JfaHZtX29wICovCisKIC8qCiAgKiBoeXBlcmNhbGxzIHVzZSBhcmNoaXRlY3R1cmUgc3Bl Y2lmaWMKICAqLwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaS5jIGIvdmlydC9rdm0va3ZtaS5j CmluZGV4IDRjODY4YTk0YWMzNy4uZDA0ZTEzYTBiMjQ0IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9r dm1pLmMKKysrIGIvdmlydC9rdm0va3ZtaS5jCkBAIC0xMTIwLDYgKzExMjAsMjggQEAgYm9vbCBr dm1pX2JyZWFrcG9pbnRfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3ZhLCB1OCBp bnNuX2xlbikKIH0KIEVYUE9SVF9TWU1CT0woa3ZtaV9icmVha3BvaW50X2V2ZW50KTsKIAorYm9v bCBrdm1pX2h5cGVyY2FsbF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJc3RydWN0 IGt2bWkgKmlrdm07CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWlmICgha3ZtaV9hcmNoX2lzX2Fn ZW50X2h5cGVyY2FsbCh2Y3B1KSkKKwkJcmV0dXJuIHJldDsKKworCWlrdm0gPSBrdm1pX2dldCh2 Y3B1LT5rdm0pOworCWlmICghaWt2bSkKKwkJcmV0dXJuIHJldDsKKworCWlmIChpc19ldmVudF9l bmFibGVkKHZjcHUsIEtWTUlfRVZFTlRfSFlQRVJDQUxMKSkgeworCQlrdm1pX2FyY2hfaHlwZXJj YWxsX2V2ZW50KHZjcHUpOworCQlyZXQgPSB0cnVlOworCX0KKworCWt2bWlfcHV0KHZjcHUtPmt2 bSk7CisKKwlyZXR1cm4gcmV0OworfQorCiAvKgogICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGZh bHNlIGlmIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBvciBpbnRlcnJ1cHQgcGVuZGluZy4KICAqIEl0 IHJldHVybnMgdHJ1ZSBpbiBhbGwgb3RoZXIgY2FzZXMgaW5jbHVkaW5nIEtWTUkgbm90IGJlaW5n IGluaXRpYWxpemVkLgpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQva3Zt L2t2bWlfaW50LmgKaW5kZXggZDAzOTQ0NjkyMmU2Li43OTNlYzI2OWI5ZmEgMTAwNjQ0Ci0tLSBh L3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9pbnQuaApAQCAtMTg1LDYg KzE4NSw3IEBAIGludCBrdm1pX3NlbmRfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIg ZXZfaWQsCiAJCSAgICB2b2lkICpldiwgc2l6ZV90IGV2X3NpemUsCiAJCSAgICB2b2lkICpycGws IHNpemVfdCBycGxfc2l6ZSwgaW50ICphY3Rpb24pOwogdTMyIGt2bWlfbXNnX3NlbmRfYnAoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3BhLCB1OCBpbnNuX2xlbik7Cit1MzIga3ZtaV9tc2df c2VuZF9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIHUzMiBrdm1pX21zZ19zZW5k X3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTY0IGd2YSwgdTggYWNjZXNzLAog CQkgICAgIGJvb2wgKnNpbmdsZXN0ZXAsIGJvb2wgKnJlcF9jb21wbGV0ZSwKIAkJICAgICB1NjQg KmN0eF9hZGRyLCB1OCAqY3R4LCB1MzIgKmN0eF9zaXplKTsKQEAgLTI1NSw2ICsyNTYsOCBAQCBi b29sIGt2bWlfYXJjaF9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwg Z3ZhX3QgZ3ZhLAogYm9vbCBrdm1pX2FyY2hfcXVldWVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSk7CiB2b2lkIGt2bWlfYXJjaF90cmFwX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNw dSk7CiB2b2lkIGt2bWlfYXJjaF9icmVha3BvaW50X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgdTY0IGd2YSwgdTggaW5zbl9sZW4pOworYm9vbCBrdm1pX2FyY2hfaXNfYWdlbnRfaHlwZXJj YWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7Cit2b2lkIGt2bWlfYXJjaF9oeXBlcmNhbGxfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIGludCBrdm1pX2FyY2hfY21kX2dldF9jcHVpZChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkgICAgY29uc3Qgc3RydWN0IGt2bWlfZ2V0X2NwdWlk ICpyZXEsCiAJCQkgICAgc3RydWN0IGt2bWlfZ2V0X2NwdWlkX3JlcGx5ICpycGwpOwpkaWZmIC0t Z2l0IGEvdmlydC9rdm0va3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2t2bWlfbXNnLmMKaW5kZXggYzdh MWZhNWY3MjQ1Li44OWY2M2Y0MGY1Y2MgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfbXNnLmMK KysrIGIvdmlydC9rdm0va3ZtaV9tc2cuYwpAQCAtMTA5Niw2ICsxMDk2LDE4IEBAIHUzMiBrdm1p X21zZ19zZW5kX2JwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTggaW5zbl9sZW4p CiAJcmV0dXJuIGFjdGlvbjsKIH0KIAordTMyIGt2bWlfbXNnX3NlbmRfaHlwZXJjYWxsKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlpbnQgZXJyLCBhY3Rpb247CisKKwllcnIgPSBrdm1pX3Nl bmRfZXZlbnQodmNwdSwgS1ZNSV9FVkVOVF9IWVBFUkNBTEwsIE5VTEwsIDAsCisJCQkgICAgICBO VUxMLCAwLCAmYWN0aW9uKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gS1ZNSV9FVkVOVF9BQ1RJT05f Q09OVElOVUU7CisKKwlyZXR1cm4gYWN0aW9uOworfQorCiB1MzIga3ZtaV9tc2dfc2VuZF9wZihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBncGEsIHU2NCBndmEsIHU4IGFjY2VzcywKIAkJICAg ICBib29sICpzaW5nbGVzdGVwLCBib29sICpyZXBfY29tcGxldGUsIHU2NCAqY3R4X2FkZHIsCiAJ CSAgICAgdTggKmN0eF9kYXRhLCB1MzIgKmN0eF9zaXplKQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmly dHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51 eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=