From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [PATCH v9 78/84] KVM: introspection: add KVMI_EVENT_PF Date: Wed, 22 Jul 2020 00:09:16 +0300 Message-ID: <20200721210922.7646-79-alazar@bitdefender.com> References: <20200721210922.7646-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20200721210922.7646-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" To: kvm@vger.kernel.org Cc: =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Paolo Bonzini , =?UTF-8?q?Mihai=20Don=C8=9Bu?= , virtualization@lists.linux-foundation.org List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBldmVudCBp cyBzZW50IHdoZW4gYSAjUEYgb2NjdXJzIGR1ZSB0byBhIGZhaWxlZCBwZXJtaXNzaW9uIGNoZWNr CmluIHRoZSBzaGFkb3cgcGFnZSB0YWJsZXMsIGZvciBhIHBhZ2UgaW4gd2hpY2ggdGhlIGludHJv c3BlY3Rpb24gdG9vbApoYXMgc2hvd24gaW50ZXJlc3QuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBE b27Im3UgPG1kb250dUBiaXRkZWZlbmRlci5jb20+CkNvLWRldmVsb3BlZC1ieTogQWRhbGJlcnQg TGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBM YXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi92aXJ0L2t2 bS9rdm1pLnJzdCAgICAgICAgICAgICAgIHwgIDUxICsrKysrKysKIGFyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3g4Ni9rdm0va3ZtaS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDEgKysrKysrKysrKysrKysrKysrCiBpbmNs dWRlL3VhcGkvbGludXgva3ZtaS5oICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIC4uLi90 ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jICB8ICA3NiArKysrKysrKysr CiB2aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYyAgICAgICAgICAgICAgICAgfCAxMTUgKysr KysrKysrKysrKysKIHZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaCAgICAgICAgICAg ICB8ICAgOSArKwogdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jICAgICAgICAgICAg IHwgIDE4ICsrKwogOCBmaWxlcyBjaGFuZ2VkLCA0MjEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQv a3ZtL2t2bWkucnN0CmluZGV4IDEyM2IyMzYwZDJlMC4uYjJlMmE5ZWRkYTc3IDEwMDY0NAotLS0g YS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0CisrKyBiL0RvY3VtZW50YXRpb24vdmly dC9rdm0va3ZtaS5yc3QKQEAgLTU1NCw2ICs1NTQsNyBAQCB0aGUgZm9sbG93aW5nIGV2ZW50czo6 CiAJS1ZNSV9FVkVOVF9ERVNDUklQVE9SCiAJS1ZNSV9FVkVOVF9IWVBFUkNBTEwKIAlLVk1JX0VW RU5UX01TUgorCUtWTUlfRVZFTlRfUEYKIAlLVk1JX0VWRU5UX1hTRVRCVgogCiBXaGVuIGFuIGV2 ZW50IGlzIGVuYWJsZWQsIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgaXMgbm90aWZpZWQgYW5kCkBA IC0xMzg3LDMgKzEzODgsNTMgQEAgcmVnaXN0ZXIgKHNlZSAqKktWTUlfVkNQVV9DT05UUk9MX0VW RU5UUyoqKS4KIAogYGBrdm1pX2V2ZW50YGAsIHRoZSBNU1IgbnVtYmVyLCB0aGUgb2xkIHZhbHVl IGFuZCB0aGUgbmV3IHZhbHVlIGFyZQogc2VudCB0byB0aGUgaW50cm9zcGVjdGlvbiB0b29sLiBU aGUgKkNPTlRJTlVFKiBhY3Rpb24gd2lsbCBzZXQgdGhlIGBgbmV3X3ZhbGBgLgorCisxMC4gS1ZN SV9FVkVOVF9QRgorLS0tLS0tLS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IHg4NgorOlZl cnNpb25zOiA+PSAxCis6QWN0aW9uczogQ09OVElOVUUsIENSQVNILCBSRVRSWQorOlBhcmFtZXRl cnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9ldmVudDsKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9wZiB7 CisJCV9fdTY0IGd2YTsKKwkJX191NjQgZ3BhOworCQlfX3U4IGFjY2VzczsKKwkJX191OCBwYWRk aW5nMTsKKwkJX191MTYgcGFkZGluZzI7CisJCV9fdTMyIHBhZGRpbmczOworCX07CisKKzpSZXR1 cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfZXZlbnRf cmVwbHk7CisKK1RoaXMgZXZlbnQgaXMgc2VudCB3aGVuIGEgaHlwZXJ2aXNvciBwYWdlIGZhdWx0 IG9jY3VycyBkdWUgdG8gYSBmYWlsZWQKK3Blcm1pc3Npb24gY2hlY2sgaW4gdGhlIHNoYWRvdyBw YWdlIHRhYmxlcywgdGhlIGludHJvc3BlY3Rpb24gaGFzIGJlZW4KK2VuYWJsZWQgZm9yIHRoaXMg ZXZlbnQgKHNlZSAqS1ZNSV9WQ1BVX0NPTlRST0xfRVZFTlRTKikgYW5kIHRoZSBldmVudCB3YXMK K2dlbmVyYXRlZCBmb3IgYSBwYWdlIGluIHdoaWNoIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgaGFz IHNob3duIGludGVyZXN0CisoaWUuIGhhcyBwcmV2aW91c2x5IHRvdWNoZWQgaXQgYnkgYWRqdXN0 aW5nIHRoZSBzcHRlIHBlcm1pc3Npb25zKS4KKworVGhlIHNoYWRvdyBwYWdlIHRhYmxlcyBjYW4g YmUgdXNlZCBieSB0aGUgaW50cm9zcGVjdGlvbiB0b29sIHRvIGd1YXJhbnRlZQordGhlIHB1cnBv c2Ugb2YgY29kZSBhcmVhcyBpbnNpZGUgdGhlIGd1ZXN0IChjb2RlLCByb2RhdGEsIHN0YWNrLCBo ZWFwCitldGMuKSBFYWNoIGF0dGVtcHQgYXQgYW4gb3BlcmF0aW9uIHVuZml0dGluZyBmb3IgYSBj ZXJ0YWluIG1lbW9yeQorcmFuZ2UgKGVnLiBleGVjdXRlIGNvZGUgaW4gaGVhcCkgdHJpZ2dlcnMg YSBwYWdlIGZhdWx0IGFuZCBnaXZlcyB0aGUKK2ludHJvc3BlY3Rpb24gdG9vbCB0aGUgY2hhbmNl IHRvIGF1ZGl0IHRoZSBjb2RlIGF0dGVtcHRpbmcgdGhlIG9wZXJhdGlvbi4KKworYGBrdm1pX2V2 ZW50YGAsIGd1ZXN0IHZpcnR1YWwgYWRkcmVzcyAob3IgMHhmZmZmZmZmZi9VTk1BUFBFRF9HVkEp LAorZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgdGhlIGFjY2VzcyBmbGFncyAoZWcuIEtWTUlf UEFHRV9BQ0NFU1NfUikKK2FyZSBzZW50IHRvIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wuCisKK1Ro ZSAqQ09OVElOVUUqIGFjdGlvbiB3aWxsIGNvbnRpbnVlIHRoZSBwYWdlIGZhdWx0IGhhbmRsaW5n IChlLmcuIHZpYQorZW11bGF0aW9uKS4KKworVGhlICpSRVRSWSogYWN0aW9uIGlzIHVzZWQgYnkg dGhlIGludHJvc3BlY3Rpb24gdG9vbCB0byByZXRyeSB0aGUKK2V4ZWN1dGlvbiBvZiB0aGUgY3Vy cmVudCBpbnN0cnVjdGlvbiwgdXN1YWxseSBiZWNhdXNlIGl0IGNoYW5nZWQgdGhlCitpbnN0cnVj dGlvbiBwb2ludGVyIG9yIHRoZSBwYWdlIHJlc3RyaWN0aW9ucy4KZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9o b3N0LmgKaW5kZXggOThlYTU0OGMwYjE1Li4yNWM3YmI4YTkwODIgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2 bWlfaG9zdC5oCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBrdm1fdmNwdV9hcmNoX2ludHJvc3Bl Y3Rpb24gewogfTsKIAogc3RydWN0IGt2bV9hcmNoX2ludHJvc3BlY3Rpb24geworCXN0cnVjdCBr dm1fcGFnZV90cmFja19ub3RpZmllcl9ub2RlIGtwdG5fbm9kZTsKIH07CiAKICNkZWZpbmUgU0xP VFNfU0laRSBCSVRTX1RPX0xPTkdTKEtWTV9NRU1fU0xPVFNfTlVNKQpkaWZmIC0tZ2l0IGEvYXJj aC94ODYva3ZtL2t2bWkuYyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKaW5kZXggYjIzM2EzYzViZWNi Li44ZmJmMTcyMDc0OWIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1pLmMKKysrIGIvYXJj aC94ODYva3ZtL2t2bWkuYwpAQCAtMTAsNiArMTAsMjEgQEAKICNpbmNsdWRlICJjcHVpZC5oIgog I2luY2x1ZGUgIi4uLy4uLy4uL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaCIKIAor c3RhdGljIGJvb2wga3ZtaV90cmFja19wcmVyZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3Bh X3QgZ3BhLCBndmFfdCBndmEsCisJCQkgICAgICAgaW50IGJ5dGVzLAorCQkJICAgICAgIHN0cnVj dCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2RlICpub2RlKTsKK3N0YXRpYyBib29sIGt2bWlf dHJhY2tfcHJld3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2 YSwKKwkJCQljb25zdCB1OCAqbmV3LCBpbnQgYnl0ZXMsCisJCQkJc3RydWN0IGt2bV9wYWdlX3Ry YWNrX25vdGlmaWVyX25vZGUgKm5vZGUpOworc3RhdGljIGJvb2wga3ZtaV90cmFja19wcmVleGVj KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJCQkgICAgICAg c3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUgKm5vZGUpOworc3RhdGljIHZvaWQg a3ZtaV90cmFja19jcmVhdGVfc2xvdChzdHJ1Y3Qga3ZtICprdm0sCisJCQkJICAgc3RydWN0IGt2 bV9tZW1vcnlfc2xvdCAqc2xvdCwKKwkJCQkgICB1bnNpZ25lZCBsb25nIG5wYWdlcywKKwkJCQkg ICBzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSk7CitzdGF0aWMgdm9p ZCBrdm1pX3RyYWNrX2ZsdXNoX3Nsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9y eV9zbG90ICpzbG90LAorCQkJCSAgc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUg Km5vZGUpOworCiBzdGF0aWMgdW5zaWduZWQgaW50IGt2bWlfdmNwdV9tb2RlKGNvbnN0IHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKIAkJCQkgICBjb25zdCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncykK IHsKQEAgLTEyMDksMyArMTIyNCwxMjkgQEAgdm9pZCBrdm1pX2FyY2hfdXBkYXRlX3BhZ2VfdHJh Y2tpbmcoc3RydWN0IGt2bSAqa3ZtLAogCQl9CiAJfQogfQorCit2b2lkIGt2bWlfYXJjaF9ob29r KHN0cnVjdCBrdm0gKmt2bSkKK3sKKwlzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkgPSBL Vk1JKGt2bSk7CisKKwlrdm1pLT5hcmNoLmtwdG5fbm9kZS50cmFja19wcmVyZWFkID0ga3ZtaV90 cmFja19wcmVyZWFkOworCWt2bWktPmFyY2gua3B0bl9ub2RlLnRyYWNrX3ByZXdyaXRlID0ga3Zt aV90cmFja19wcmV3cml0ZTsKKwlrdm1pLT5hcmNoLmtwdG5fbm9kZS50cmFja19wcmVleGVjID0g a3ZtaV90cmFja19wcmVleGVjOworCWt2bWktPmFyY2gua3B0bl9ub2RlLnRyYWNrX2NyZWF0ZV9z bG90ID0ga3ZtaV90cmFja19jcmVhdGVfc2xvdDsKKwlrdm1pLT5hcmNoLmtwdG5fbm9kZS50cmFj a19mbHVzaF9zbG90ID0ga3ZtaV90cmFja19mbHVzaF9zbG90OworCisJa3ZtX3BhZ2VfdHJhY2tf cmVnaXN0ZXJfbm90aWZpZXIoa3ZtLCAma3ZtaS0+YXJjaC5rcHRuX25vZGUpOworfQorCit2b2lk IGt2bWlfYXJjaF91bmhvb2soc3RydWN0IGt2bSAqa3ZtKQoreworCXN0cnVjdCBrdm1faW50cm9z cGVjdGlvbiAqa3ZtaSA9IEtWTUkoa3ZtKTsKKworCWt2bV9wYWdlX3RyYWNrX3VucmVnaXN0ZXJf bm90aWZpZXIoa3ZtLCAma3ZtaS0+YXJjaC5rcHRuX25vZGUpOworfQorCitzdGF0aWMgYm9vbCBp c19wZl9vZl9pbnRlcmVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgdTggYWNj ZXNzKQoreworCWlmICgha3ZtX3g4Nl9vcHMuc3B0X2ZhdWx0KHZjcHUpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoa3ZtX3g4Nl9vcHMuZ3B0X3RyYW5zbGF0aW9uX2ZhdWx0KHZjcHUpKQorCQly ZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4ga3ZtaV9yZXN0cmljdGVkX3BhZ2VfYWNjZXNzKEtWTUko dmNwdS0+a3ZtKSwgZ3BhLCBhY2Nlc3MpOworfQorCitzdGF0aWMgYm9vbCBoYW5kbGVfcGZfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKKwkJCSAgICBp bnQgYWNjZXNzKQoreworCWlmICghaXNfcGZfb2ZfaW50ZXJlc3QodmNwdSwgZ3BhLCBhY2Nlc3Mp KQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBrdm1pX3BmX2V2ZW50KHZjcHUsIGdwYSwgZ3Zh LCBhY2Nlc3MpOworfQorCitzdGF0aWMgYm9vbCBrdm1pX3RyYWNrX3ByZXJlYWQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKKwkJCSAgICAgICBpbnQgYnl0ZXMs CisJCQkgICAgICAgc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUgKm5vZGUpCit7 CisJc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pOworCWJvb2wgcmV0ID0gdHJ1ZTsKKwor CWt2bWkgPSBrdm1pX2dldCh2Y3B1LT5rdm0pOworCWlmICgha3ZtaSkKKwkJcmV0dXJuIHRydWU7 CisKKwlpZiAoaXNfZXZlbnRfZW5hYmxlZCh2Y3B1LCBLVk1JX0VWRU5UX1BGKSkKKwkJcmV0ID0g aGFuZGxlX3BmX2V2ZW50KHZjcHUsIGdwYSwgZ3ZhLCBLVk1JX1BBR0VfQUNDRVNTX1IpOworCisJ a3ZtaV9wdXQodmNwdS0+a3ZtKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29sIGt2 bWlfdHJhY2tfcHJld3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90 IGd2YSwKKwkJCQljb25zdCB1OCAqbmV3LCBpbnQgYnl0ZXMsCisJCQkJc3RydWN0IGt2bV9wYWdl X3RyYWNrX25vdGlmaWVyX25vZGUgKm5vZGUpCit7CisJc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9u ICprdm1pOworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWt2bWkgPSBrdm1pX2dldCh2Y3B1LT5rdm0p OworCWlmICgha3ZtaSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoaXNfZXZlbnRfZW5hYmxlZCh2 Y3B1LCBLVk1JX0VWRU5UX1BGKSkKKwkJcmV0ID0gaGFuZGxlX3BmX2V2ZW50KHZjcHUsIGdwYSwg Z3ZhLCBLVk1JX1BBR0VfQUNDRVNTX1cpOworCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29sIGt2bWlfdHJhY2tfcHJlZXhlYyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAorCQkJICAgICAgIHN0cnVjdCBrdm1f cGFnZV90cmFja19ub3RpZmllcl9ub2RlICpub2RlKQoreworCXN0cnVjdCBrdm1faW50cm9zcGVj dGlvbiAqa3ZtaTsKKwlib29sIHJldCA9IHRydWU7CisKKwlrdm1pID0ga3ZtaV9nZXQodmNwdS0+ a3ZtKTsKKwlpZiAoIWt2bWkpCisJCXJldHVybiB0cnVlOworCisJaWYgKGlzX2V2ZW50X2VuYWJs ZWQodmNwdSwgS1ZNSV9FVkVOVF9QRikpCisJCXJldCA9IGhhbmRsZV9wZl9ldmVudCh2Y3B1LCBn cGEsIGd2YSwgS1ZNSV9QQUdFX0FDQ0VTU19YKTsKKworCWt2bWlfcHV0KHZjcHUtPmt2bSk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBrdm1pX3RyYWNrX2NyZWF0ZV9zbG90KHN0 cnVjdCBrdm0gKmt2bSwKKwkJCQkgICBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LAorCQkJ CSAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLAorCQkJCSAgIHN0cnVjdCBrdm1fcGFnZV90cmFja19u b3RpZmllcl9ub2RlICpub2RlKQoreworCXN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaTsK KworCWt2bWkgPSBrdm1pX2dldChrdm0pOworCWlmICgha3ZtaSkKKwkJcmV0dXJuOworCisJa3Zt aV9hZGRfbWVtc2xvdChrdm0sIHNsb3QsIG5wYWdlcyk7CisKKwlrdm1pX3B1dChrdm0pOworfQor CitzdGF0aWMgdm9pZCBrdm1pX3RyYWNrX2ZsdXNoX3Nsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1 Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LAorCQkJCSAgc3RydWN0IGt2bV9wYWdlX3RyYWNrX25v dGlmaWVyX25vZGUgKm5vZGUpCit7CisJc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pOwor CisJa3ZtaSA9IGt2bWlfZ2V0KGt2bSk7CisJaWYgKCFrdm1pKQorCQlyZXR1cm47CisKKwlrdm1p X3JlbW92ZV9tZW1zbG90KGt2bSwgc2xvdCk7CisKKwlrdm1pX3B1dChrdm0pOworfQpkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1p LmgKaW5kZXggZGM4MmYxOTI1MzRjLi5kYzdiYTEyNDk4YjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9saW51eC9rdm1pLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaApAQCAtNjAs NiArNjAsNyBAQCBlbnVtIHsKIAlLVk1JX0VWRU5UX1hTRVRCViAgICAgPSA2LAogCUtWTUlfRVZF TlRfREVTQ1JJUFRPUiA9IDcsCiAJS1ZNSV9FVkVOVF9NU1IgICAgICAgID0gOCwKKwlLVk1JX0VW RU5UX1BGICAgICAgICAgPSA5LAogCiAJS1ZNSV9OVU1fRVZFTlRTCiB9OwpAQCAtMjE4LDQgKzIx OSwxMyBAQCBzdHJ1Y3Qga3ZtaV92Y3B1X2luamVjdF9leGNlcHRpb24gewogCV9fdTY0IGFkZHJl c3M7CiB9OwogCitzdHJ1Y3Qga3ZtaV9ldmVudF9wZiB7CisJX191NjQgZ3ZhOworCV9fdTY0IGdw YTsKKwlfX3U4IGFjY2VzczsKKwlfX3U4IHBhZGRpbmcxOworCV9fdTE2IHBhZGRpbmcyOworCV9f dTMyIHBhZGRpbmczOworfTsKKwogI2VuZGlmIC8qIF9VQVBJX19MSU5VWF9LVk1JX0ggKi8KZGlm ZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCmluZGV4IDRm YjEwOWNlYzFiNC4uMjFiM2Y3YTQ1OWM4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L2t2bS94ODZfNjQva3ZtaV90ZXN0LmMKQEAgLTQyLDYgKzQyLDExIEBAIHN0cnVjdCB2Y3B1X3Jl cGx5IHsKIAlzdHJ1Y3Qga3ZtaV9ldmVudF9yZXBseSByZXBseTsKIH07CiAKK3N0cnVjdCBwZl9l diB7CisJc3RydWN0IGt2bWlfZXZlbnQgY29tbW9uOworCXN0cnVjdCBrdm1pX2V2ZW50X3BmIHBm OworfTsKKwogc3RydWN0IHZjcHVfd29ya2VyX2RhdGEgewogCXN0cnVjdCBrdm1fdm0gKnZtOwog CWludCB2Y3B1X2lkOwpAQCAtNTEsNiArNTYsMTAgQEAgc3RydWN0IHZjcHVfd29ya2VyX2RhdGEg ewogCWJvb2wgcmVzdGFydF9vbl9zaHV0ZG93bjsKIH07CiAKK3R5cGVkZWYgdm9pZCAoKmZjdF9w Zl9ldmVudCkoc3RydWN0IGt2bV92bSAqdm0sIHN0cnVjdCBrdm1pX21zZ19oZHIgKmhkciwKKwkJ CQlzdHJ1Y3QgcGZfZXYgKmV2LAorCQkJCXN0cnVjdCB2Y3B1X3JlcGx5ICpycGwpOworCiBlbnVt IHsKIAlHVUVTVF9URVNUX05PT1AgPSAwLAogCUdVRVNUX1RFU1RfQlAsCkBAIC01OCw2ICs2Nyw3 IEBAIGVudW0gewogCUdVRVNUX1RFU1RfREVTQ1JJUFRPUiwKIAlHVUVTVF9URVNUX0hZUEVSQ0FM TCwKIAlHVUVTVF9URVNUX01TUiwKKwlHVUVTVF9URVNUX1BGLAogCUdVRVNUX1RFU1RfWFNFVEJW LAogfTsKIApAQCAtMTExLDYgKzEyMSwxMSBAQCBzdGF0aWMgdm9pZCBndWVzdF9tc3JfdGVzdCh2 b2lkKQogCXdybXNyKE1TUl9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsIG1zcik7CiB9CiAKK3N0YXRp YyB2b2lkIGd1ZXN0X3BmX3Rlc3Qodm9pZCkKK3sKKwkqKCh1aW50OF90ICopdGVzdF9ndmEpID0g UkVBRF9PTkNFKHRlc3Rfd3JpdGVfcGF0dGVybik7Cit9CisKIC8qIGZyb20gZnB1L2ludGVybmFs LmggKi8KIHN0YXRpYyB1NjQgeGdldGJ2KHUzMiBpbmRleCkKIHsKQEAgLTE3MSw2ICsxODYsOSBA QCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpCiAJCWNhc2UgR1VFU1RfVEVTVF9NU1I6CiAJ CQlndWVzdF9tc3JfdGVzdCgpOwogCQkJYnJlYWs7CisJCWNhc2UgR1VFU1RfVEVTVF9QRjoKKwkJ CWd1ZXN0X3BmX3Rlc3QoKTsKKwkJCWJyZWFrOwogCQljYXNlIEdVRVNUX1RFU1RfWFNFVEJWOgog CQkJZ3Vlc3RfeHNldGJ2X3Rlc3QoKTsKIAkJCWJyZWFrOwpAQCAtMTg2MCw2ICsxODc4LDYzIEBA IHN0YXRpYyB2b2lkIHRlc3RfY21kX3ZtX3NldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3ZtX3ZtICp2 bSkKIAlzZXRfcGFnZV9hY2Nlc3MoZ3BhLCBmdWxsX2FjY2Vzcyk7CiB9CiAKK3N0YXRpYyB2b2lk IHRlc3RfcGYoc3RydWN0IGt2bV92bSAqdm0sIGZjdF9wZl9ldmVudCBjYmspCit7CisJX191MTYg ZXZlbnRfaWQgPSBLVk1JX0VWRU5UX1BGOworCXN0cnVjdCB2Y3B1X3dvcmtlcl9kYXRhIGRhdGEg PSB7CisJCS52bSA9IHZtLAorCQkudmNwdV9pZCA9IFZDUFVfSUQsCisJCS50ZXN0X2lkID0gR1VF U1RfVEVTVF9QRiwKKwl9OworCXN0cnVjdCBrdm1pX21zZ19oZHIgaGRyOworCXN0cnVjdCB2Y3B1 X3JlcGx5IHJwbCA9IHt9OworCXB0aHJlYWRfdCB2Y3B1X3RocmVhZDsKKwlzdHJ1Y3QgcGZfZXYg ZXY7CisKKwlzZXRfcGFnZV9hY2Nlc3ModGVzdF9ncGEsIEtWTUlfUEFHRV9BQ0NFU1NfUik7CisJ ZW5hYmxlX3ZjcHVfZXZlbnQodm0sIGV2ZW50X2lkKTsKKworCW5ld190ZXN0X3dyaXRlX3BhdHRl cm4odm0pOworCisJdmNwdV90aHJlYWQgPSBzdGFydF92Y3B1X3dvcmtlcigmZGF0YSk7CisKKwly ZWNlaXZlX2V2ZW50KCZoZHIsICZldi5jb21tb24sIHNpemVvZihldiksIGV2ZW50X2lkKTsKKwor CXByX2luZm8oIlBGIGV2ZW50LCBncGEgMHglbGx4LCBndmEgMHglbGx4LCBhY2Nlc3MgMHgleFxu IiwKKwkJZXYucGYuZ3BhLCBldi5wZi5ndmEsIGV2LnBmLmFjY2Vzcyk7CisKKwlURVNUX0FTU0VS VChldi5wZi5ncGEgPT0gdGVzdF9ncGEgJiYgZXYucGYuZ3ZhID09IHRlc3RfZ3ZhLAorCQkiVW5l eHBlY3RlZCAjUEYgZXZlbnQsIGdwYSAweCVsbHggKGV4cGVuZGVkIDB4JWx4KSwgZ3ZhIDB4JWxs eCAoZXhwZWN0ZWQgMHglbHgpXG4iLAorCQlldi5wZi5ncGEsIHRlc3RfZ3BhLCBldi5wZi5ndmEs IHRlc3RfZ3ZhKTsKKworCWNiayh2bSwgJmhkciwgJmV2LCAmcnBsKTsKKworCXN0b3BfdmNwdV93 b3JrZXIodmNwdV90aHJlYWQsICZkYXRhKTsKKworCVRFU1RfQVNTRVJUKCooKHVpbnQ4X3QgKil0 ZXN0X2h2YSkgPT0gdGVzdF93cml0ZV9wYXR0ZXJuLAorCQkiV3JpdGUgZmFpbGVkLCBleHBlY3Rl ZCAweCV4LCByZXN1bHQgMHgleFxuIiwKKwkJdGVzdF93cml0ZV9wYXR0ZXJuLCAqKCh1aW50OF90 ICopdGVzdF9odmEpKTsKKworCWRpc2FibGVfdmNwdV9ldmVudCh2bSwgZXZlbnRfaWQpOworCXNl dF9wYWdlX2FjY2Vzcyh0ZXN0X2dwYSwgS1ZNSV9QQUdFX0FDQ0VTU19SCisJCQkJfCBLVk1JX1BB R0VfQUNDRVNTX1cKKwkJCQl8IEtWTUlfUEFHRV9BQ0NFU1NfWCk7Cit9CisKK3N0YXRpYyB2b2lk IGNia190ZXN0X2V2ZW50X3BmKHN0cnVjdCBrdm1fdm0gKnZtLCBzdHJ1Y3Qga3ZtaV9tc2dfaGRy ICpoZHIsCisJCQkJc3RydWN0IHBmX2V2ICpldiwgc3RydWN0IHZjcHVfcmVwbHkgKnJwbCkKK3sK KwlzZXRfcGFnZV9hY2Nlc3ModGVzdF9ncGEsIEtWTUlfUEFHRV9BQ0NFU1NfUiB8IEtWTUlfUEFH RV9BQ0NFU1NfVyk7CisKKwlyZXBseV90b19ldmVudChoZHIsICZldi0+Y29tbW9uLCBLVk1JX0VW RU5UX0FDVElPTl9SRVRSWSwKKwkJCXJwbCwgc2l6ZW9mKCpycGwpKTsKK30KKworc3RhdGljIHZv aWQgdGVzdF9ldmVudF9wZihzdHJ1Y3Qga3ZtX3ZtICp2bSkKK3sKKwl0ZXN0X3BmKHZtLCBjYmtf dGVzdF9ldmVudF9wZik7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RfaW50cm9zcGVjdGlvbihzdHJ1 Y3Qga3ZtX3ZtICp2bSkKIHsKIAlzcmFuZG9tKHRpbWUoMCkpOwpAQCAtMTg5Myw2ICsxOTY4LDcg QEAgc3RhdGljIHZvaWQgdGVzdF9pbnRyb3NwZWN0aW9uKHN0cnVjdCBrdm1fdm0gKnZtKQogCXRl c3RfZXZlbnRfZGVzY3JpcHRvcih2bSk7CiAJdGVzdF9jbWRfdmNwdV9jb250cm9sX21zcih2bSk7 CiAJdGVzdF9jbWRfdm1fc2V0X3BhZ2VfYWNjZXNzKHZtKTsKKwl0ZXN0X2V2ZW50X3BmKHZtKTsK IAogCXVuaG9va19pbnRyb3NwZWN0aW9uKHZtKTsKIH0KZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2lu dHJvc3BlY3Rpb24va3ZtaS5jIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pLmMKaW5kZXgg YjU3YWQ0OTBkZDA2Li45OWM4OGUxODI1ODcgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2ludHJvc3Bl Y3Rpb24va3ZtaS5jCisrKyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaS5jCkBAIC0xMTMs NiArMTEzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfa25vd25fZXZlbnRzKHZvaWQpCiAJc2V0X2Jp dChLVk1JX0VWRU5UX0hZUEVSQ0FMTCwgS3ZtaV9rbm93bl92Y3B1X2V2ZW50cyk7CiAJc2V0X2Jp dChLVk1JX0VWRU5UX01TUiwgS3ZtaV9rbm93bl92Y3B1X2V2ZW50cyk7CiAJc2V0X2JpdChLVk1J X0VWRU5UX1BBVVNFX1ZDUFUsIEt2bWlfa25vd25fdmNwdV9ldmVudHMpOworCXNldF9iaXQoS1ZN SV9FVkVOVF9QRiwgS3ZtaV9rbm93bl92Y3B1X2V2ZW50cyk7CiAJc2V0X2JpdChLVk1JX0VWRU5U X1RSQVAsIEt2bWlfa25vd25fdmNwdV9ldmVudHMpOwogCXNldF9iaXQoS1ZNSV9FVkVOVF9YU0VU QlYsIEt2bWlfa25vd25fdmNwdV9ldmVudHMpOwogCkBAIC0zNjgsNiArMzY5LDggQEAgc3RhdGlj IHZvaWQgX19rdm1pX3VuaG9vayhzdHJ1Y3Qga3ZtICprdm0pCiAJc3RydWN0IGt2bV9pbnRyb3Nw ZWN0aW9uICprdm1pID0gS1ZNSShrdm0pOwogCiAJd2FpdF9mb3JfY29tcGxldGlvbl9raWxsYWJs ZSgma3ZtLT5rdm1pX2NvbXBsZXRlKTsKKworCWt2bWlfYXJjaF91bmhvb2soa3ZtKTsKIAlrdm1p X3NvY2tfcHV0KGt2bWkpOwogfQogCkBAIC00MTUsNiArNDE4LDggQEAgc3RhdGljIGludCBfX2t2 bWlfaG9vayhzdHJ1Y3Qga3ZtICprdm0sCiAJaWYgKCFrdm1pX3NvY2tfZ2V0KGt2bWksIGhvb2st PmZkKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwlrdm1pX2FyY2hfaG9vayhrdm0pOworCiAJcmV0 dXJuIDA7CiB9CiAKQEAgLTExODIsMyArMTE4NywxMTMgQEAgaW50IGt2bWlfY21kX3NldF9wYWdl X2FjY2VzcyhzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWksCiAKIAlyZXR1cm4gZWM7CiB9 CisKK3N0YXRpYyBpbnQga3ZtaV9nZXRfZ2ZuX2FjY2VzcyhzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rp b24gKmt2bWksIGNvbnN0IGdmbl90IGdmbiwKKwkJCSAgICAgICB1OCAqYWNjZXNzKQoreworCXN0 cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm07CisKKwlyZWFkX2xvY2soJmt2bWktPmFjY2Vzc190cmVl X2xvY2spOworCW0gPSBfX2t2bWlfZ2V0X2dmbl9hY2Nlc3Moa3ZtaSwgZ2ZuKTsKKwlpZiAobSkK KwkJKmFjY2VzcyA9IG0tPmFjY2VzczsKKwlyZWFkX3VubG9jaygma3ZtaS0+YWNjZXNzX3RyZWVf bG9jayk7CisKKwlyZXR1cm4gbSA/IDAgOiAtMTsKK30KKworYm9vbCBrdm1pX3Jlc3RyaWN0ZWRf cGFnZV9hY2Nlc3Moc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLCBncGFfdCBncGEsCisJ CQkJIHU4IGFjY2VzcykKK3sKKwl1OCBhbGxvd2VkX2FjY2VzczsKKwlpbnQgZXJyOworCisJZXJy ID0ga3ZtaV9nZXRfZ2ZuX2FjY2Vzcyhrdm1pLCBncGFfdG9fZ2ZuKGdwYSksICZhbGxvd2VkX2Fj Y2Vzcyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBXZSB3YW50IHRv IGJlIG5vdGlmaWVkIG9ubHkgZm9yIHZpb2xhdGlvbnMgaW52b2x2aW5nIGFjY2VzcworCSAqIGJp dHMgdGhhdCB3ZSd2ZSBzcGVjaWZpY2FsbHkgY2xlYXJlZAorCSAqLworCWlmIChhY2Nlc3MgJiAo fmFsbG93ZWRfYWNjZXNzKSkKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisK K2Jvb2wga3ZtaV9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3Zh X3QgZ3ZhLCB1OCBhY2Nlc3MpCit7CisJYm9vbCByZXQgPSBmYWxzZTsKKwl1MzIgYWN0aW9uOwor CisJYWN0aW9uID0ga3ZtaV9tc2dfc2VuZF9wZih2Y3B1LCBncGEsIGd2YSwgYWNjZXNzKTsKKwor CXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5VRToKKwkJ cmV0ID0gdHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSBLVk1JX0VWRU5UX0FDVElPTl9SRVRSWToKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJa3ZtaV9oYW5kbGVfY29tbW9uX2V2ZW50X2FjdGlvbnModmNw dS0+a3ZtLCBhY3Rpb24pOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQga3ZtaV9hZGRf bWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsCisJ CSAgICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzKQoreworCXN0cnVjdCBrdm1faW50cm9zcGVjdGlv biAqa3ZtaSA9IEtWTUkoa3ZtKTsKKwlnZm5fdCBzdGFydCA9IHNsb3QtPmJhc2VfZ2ZuOworCWdm bl90IGVuZCA9IHN0YXJ0ICsgbnBhZ2VzOworCWludCBpZHg7CisKKwlpZHggPSBzcmN1X3JlYWRf bG9jaygma3ZtLT5zcmN1KTsKKwlzcGluX2xvY2soJmt2bS0+bW11X2xvY2spOworCXJlYWRfbG9j aygma3ZtaS0+YWNjZXNzX3RyZWVfbG9jayk7CisKKwl3aGlsZSAoc3RhcnQgPCBlbmQpIHsKKwkJ c3RydWN0IGt2bWlfbWVtX2FjY2VzcyAqbTsKKworCQltID0gX19rdm1pX2dldF9nZm5fYWNjZXNz KGt2bWksIHN0YXJ0KTsKKwkJaWYgKG0pCisJCQlrdm1pX2FyY2hfdXBkYXRlX3BhZ2VfdHJhY2tp bmcoa3ZtLCBzbG90LCBtKTsKKwkJc3RhcnQrKzsKKwl9CisKKwlyZWFkX3VubG9jaygma3ZtaS0+ YWNjZXNzX3RyZWVfbG9jayk7CisJc3Bpbl91bmxvY2soJmt2bS0+bW11X2xvY2spOworCXNyY3Vf cmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKK30KKwordm9pZCBrdm1pX3JlbW92ZV9tZW1z bG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCkKK3sKKwlz dHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkgPSBLVk1JKGt2bSk7CisJZ2ZuX3Qgc3RhcnQg PSBzbG90LT5iYXNlX2dmbjsKKwlnZm5fdCBlbmQgPSBzdGFydCArIHNsb3QtPm5wYWdlczsKKwlp bnQgaWR4OworCisJaWR4ID0gc3JjdV9yZWFkX2xvY2soJmt2bS0+c3JjdSk7CisJc3Bpbl9sb2Nr KCZrdm0tPm1tdV9sb2NrKTsKKwl3cml0ZV9sb2NrKCZrdm1pLT5hY2Nlc3NfdHJlZV9sb2NrKTsK KworCXdoaWxlIChzdGFydCA8IGVuZCkgeworCQlzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICptOwor CisJCW0gPSBfX2t2bWlfZ2V0X2dmbl9hY2Nlc3Moa3ZtaSwgc3RhcnQpOworCQlpZiAobSkgewor CQkJdTggcHJldl9hY2Nlc3MgPSBtLT5hY2Nlc3M7CisKKwkJCW0tPmFjY2VzcyA9IGZ1bGxfYWNj ZXNzOworCQkJa3ZtaV9hcmNoX3VwZGF0ZV9wYWdlX3RyYWNraW5nKGt2bSwgc2xvdCwgbSk7CisJ CQltLT5hY2Nlc3MgPSBwcmV2X2FjY2VzczsKKwkJfQorCQlzdGFydCsrOworCX0KKworCXdyaXRl X3VubG9jaygma3ZtaS0+YWNjZXNzX3RyZWVfbG9jayk7CisJc3Bpbl91bmxvY2soJmt2bS0+bW11 X2xvY2spOworCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKK30KZGlmZiAtLWdp dCBhL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaCBiL3ZpcnQva3ZtL2ludHJvc3Bl Y3Rpb24va3ZtaV9pbnQuaAppbmRleCAwMjRlN2FjZjBkY2UuLjlmMjM0MWZlMjFkNSAxMDA2NDQK LS0tIGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3ZtL2lu dHJvc3BlY3Rpb24va3ZtaV9pbnQuaApAQCAtNDcsNiArNDcsNyBAQCBpbnQga3ZtaV9tc2dfc2Vu ZF91bmhvb2soc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pKTsKIHUzMiBrdm1pX21zZ19z ZW5kX3ZjcHVfcGF1c2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIHUzMiBrdm1pX21zZ19zZW5k X2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdTMyIGt2bWlfbXNnX3NlbmRfYnAo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3BhLCB1OCBpbnNuX2xlbik7Cit1MzIga3ZtaV9t c2dfc2VuZF9wZihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBncGEsIHU2NCBndmEsIHU4IGFj Y2Vzcyk7CiAKIC8qIGt2bWkuYyAqLwogdm9pZCAqa3ZtaV9tc2dfYWxsb2Modm9pZCk7CkBAIC04 Miw2ICs4MywxMiBAQCBpbnQga3ZtaV9jbWRfdmNwdV9zZXRfcmVnaXN0ZXJzKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwKIGludCBrdm1pX2NtZF9zZXRfcGFnZV9hY2Nlc3Moc3RydWN0IGt2bV9pbnRy b3NwZWN0aW9uICprdm1pLAogCQkJICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2cs CiAJCQkgICAgIGNvbnN0IHN0cnVjdCBrdm1pX3ZtX3NldF9wYWdlX2FjY2VzcyAqcmVxKTsKK2Jv b2wga3ZtaV9yZXN0cmljdGVkX3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAq a3ZtaSwgZ3BhX3QgZ3BhLAorCQkJCSB1OCBhY2Nlc3MpOworYm9vbCBrdm1pX3BmX2V2ZW50KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsIHU4IGFjY2Vzcyk7Cit2 b2lkIGt2bWlfYWRkX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9z bG90ICpzbG90LAorCQkgICAgICB1bnNpZ25lZCBsb25nIG5wYWdlcyk7Cit2b2lkIGt2bWlfcmVt b3ZlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90 KTsKIAogLyogYXJjaCAqLwogYm9vbCBrdm1pX2FyY2hfdmNwdV9hbGxvY19pbnRlcmNlcHRpb24o c3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKQEAgLTEyOSw1ICsxMzYsNyBAQCBpbnQga3ZtaV9hcmNo X2NtZF92Y3B1X2NvbnRyb2xfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIHZvaWQga3ZtaV9h cmNoX3VwZGF0ZV9wYWdlX3RyYWNraW5nKHN0cnVjdCBrdm0gKmt2bSwKIAkJCQkgICAgc3RydWN0 IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwKIAkJCQkgICAgc3RydWN0IGt2bWlfbWVtX2FjY2VzcyAq bSk7Cit2b2lkIGt2bWlfYXJjaF9ob29rKHN0cnVjdCBrdm0gKmt2bSk7Cit2b2lkIGt2bWlfYXJj aF91bmhvb2soc3RydWN0IGt2bSAqa3ZtKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS92aXJ0L2t2 bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlf bXNnLmMKaW5kZXggZjdmZmI5NzFmMWRjLi4wYTBkMTBiNDNmMmQgMTAwNjQ0Ci0tLSBhL3ZpcnQv a3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9u L2t2bWlfbXNnLmMKQEAgLTk4MywzICs5ODMsMjEgQEAgdTMyIGt2bWlfbXNnX3NlbmRfYnAoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3BhLCB1OCBpbnNuX2xlbikKIAogCXJldHVybiBhY3Rp b247CiB9CisKK3UzMiBrdm1pX21zZ19zZW5kX3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0 IGdwYSwgdTY0IGd2YSwgdTggYWNjZXNzKQoreworCXN0cnVjdCBrdm1pX2V2ZW50X3BmIGU7CisJ aW50IGVyciwgYWN0aW9uOworCisJbWVtc2V0KCZlLCAwLCBzaXplb2YoZSkpOworCWUuZ3BhID0g Z3BhOworCWUuZ3ZhID0gZ3ZhOworCWUuYWNjZXNzID0gYWNjZXNzOworCisJZXJyID0ga3ZtaV9z ZW5kX2V2ZW50KHZjcHUsIEtWTUlfRVZFTlRfUEYsICZlLCBzaXplb2YoZSksCisJCQkgICAgICBO VUxMLCAwLCAmYWN0aW9uKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gS1ZNSV9FVkVOVF9BQ1RJT05f Q09OVElOVUU7CisKKwlyZXR1cm4gYWN0aW9uOworfQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVh bGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZv dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=