From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [PATCH v9 56/84] KVM: introspection: add KVMI_VCPU_GET_REGISTERS Date: Wed, 22 Jul 2020 00:08:54 +0300 Message-ID: <20200721210922.7646-57-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBjb21tYW5k IGlzIHVzZWQgdG8gZ2V0IGt2bV9yZWdzIGFuZCBrdm1fc3JlZ3Mgc3RydWN0dXJlcywKcGx1cyBh IGxpc3Qgb2Ygc3RydWN0IGt2bV9tc3JzIGZyb20gYSBzcGVjaWZpYyB2Q1BVLgoKV2hpbGUgdGhl IGt2bV9yZWdzIGFuZCBrdm1fc3JlZ3Mgc3RydWN0dXJlcyBhcmUgaW5jbHVkZWQgd2l0aCBldmVy eQpldmVudCwgdGhpcyBjb21tYW5kIGFsbG93cyByZWFkaW5nIGFueSBNU1IgYW5kIGNhbiBiZSB1 c2VkIGFzIGEgcXVpY2sKd2F5IHRvIHJlYWQgdGhlIHN0YXRlIG9mIGFueSB2Q1BVLgoKU2lnbmVk LW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgpDby1kZXZlbG9w ZWQtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9m Zi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3Vt ZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QgICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKwog YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmggICAgICAgICAgICAgIHwgMTUgKysrCiBh cmNoL3g4Ni9rdm0va3ZtaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5MyArKysrKysr KysrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oICAgICAgICAgICAgICAgICAg ICAgfCAgMSArCiAuLi4vdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYyAg fCA3NSArKysrKysrKysrKysrKysKIHZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaCAg ICAgICAgICAgICB8ICA3ICsrCiB2aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMgICAg ICAgICAgICAgfCAyMCArKysrCiA3IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRp b24vdmlydC9rdm0va3ZtaS5yc3QKaW5kZXggNDM5M2NlODliMmZhLi5mOTA5NWUxYTk0MTcgMTAw NjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRh dGlvbi92aXJ0L2t2bS9rdm1pLnJzdApAQCAtNTY4LDYgKzU2OCw1MCBAQCB0aGUgKktWTUlfVk1f Q09OVFJPTF9FVkVOVFMqIGNvbW1hbmQuCiAqIC1LVk1fRVBFUk0gLSB0aGUgYWNjZXNzIGlzIGRp c2FsbG93ZWQgKHVzZSAqS1ZNSV9WTV9DSEVDS19FVkVOVCogZmlyc3QpCiAqIC1LVk1fRUFHQUlO IC0gdGhlIHNlbGVjdGVkIHZDUFUgY2FuJ3QgYmUgaW50cm9zcGVjdGVkIHlldAogCisxMS4gS1ZN SV9WQ1BVX0dFVF9SRUdJU1RFUlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6QXJj aGl0ZWN0dXJlczogeDg2Cis6VmVyc2lvbnM6ID49IDEKKzpQYXJhbWV0ZXJzOgorCis6OgorCisJ c3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzIHsK KwkJX191MTYgbm1zcnM7CisJCV9fdTE2IHBhZGRpbmcxOworCQlfX3UzMiBwYWRkaW5nMjsKKwkJ X191MzIgbXNyc19pZHhbMF07CisJfTsKKworOlJldHVybnM6CisKKzo6CisKKwlzdHJ1Y3Qga3Zt aV9lcnJvcl9jb2RlOworCXN0cnVjdCBrdm1pX3ZjcHVfZ2V0X3JlZ2lzdGVyc19yZXBseSB7CisJ CV9fdTMyIG1vZGU7CisJCV9fdTMyIHBhZGRpbmc7CisJCXN0cnVjdCBrdm1fcmVncyByZWdzOwor CQlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOworCQlzdHJ1Y3Qga3ZtX21zcnMgbXNyczsKKwl9Owor CitGb3IgdGhlIGdpdmVuIHZDUFUgYW5kIHRoZSBgYG5tc3JzYGAgc2l6ZWQgYXJyYXkgb2YgTVNS cyByZWdpc3RlcnMsCityZXR1cm5zIHRoZSBjdXJyZW50IHZDUFUgbW9kZSAoaW4gYnl0ZXM6IDIs IDQgb3IgOCksIHRoZSBnZW5lcmFsIHB1cnBvc2UKK3JlZ2lzdGVycywgdGhlIHNwZWNpYWwgcmVn aXN0ZXJzIGFuZCB0aGUgcmVxdWVzdGVkIHNldCBvZiBNU1JzLgorCis6RXJyb3JzOgorCisqIC1L Vk1fRUlOVkFMIC0gdGhlIHNlbGVjdGVkIHZDUFUgaXMgaW52YWxpZAorKiAtS1ZNX0VJTlZBTCAt IG9uZSBvZiB0aGUgaW5kaWNhdGVkIE1TUnMgaXMgaW52YWxpZAorKiAtS1ZNX0VJTlZBTCAtIHRo ZSBwYWRkaW5nIGlzIG5vdCB6ZXJvCisqIC1LVk1fRUlOVkFMIC0gdGhlIHJlcGx5IHNpemUgaXMg bGFyZ2VyIHRoYW4gS1ZNSV9NU0dfU0laRQorICAgICAgICAgICAgICAgICh0b28gbWFueSBNU1Jz KQorKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3Rl ZCB5ZXQKKyogLUtWTV9FTk9NRU0gLSB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxv Y2F0ZSB0aGUgcmVwbHkKKwogRXZlbnRzCiA9PT09PT0KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9rdm1pLmggYi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2t2bWku aAppbmRleCA4OWFkZjg0Y2VmZTQuLmYxNDY3NGMzYzEwOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9rdm1pLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9r dm1pLmgKQEAgLTMwLDQgKzMwLDE5IEBAIHN0cnVjdCBrdm1pX3ZjcHVfZ2V0X2luZm9fcmVwbHkg ewogCV9fdTY0IHRzY19zcGVlZDsKIH07CiAKK3N0cnVjdCBrdm1pX3ZjcHVfZ2V0X3JlZ2lzdGVy cyB7CisJX191MTYgbm1zcnM7CisJX191MTYgcGFkZGluZzE7CisJX191MzIgcGFkZGluZzI7CisJ X191MzIgbXNyc19pZHhbMF07Cit9OworCitzdHJ1Y3Qga3ZtaV92Y3B1X2dldF9yZWdpc3RlcnNf cmVwbHkgeworCV9fdTMyIG1vZGU7CisJX191MzIgcGFkZGluZzsKKwlzdHJ1Y3Qga3ZtX3JlZ3Mg cmVnczsKKwlzdHJ1Y3Qga3ZtX3NyZWdzIHNyZWdzOworCXN0cnVjdCBrdm1fbXNycyBtc3JzOwor fTsKKwogI2VuZGlmIC8qIF9VQVBJX0FTTV9YODZfS1ZNSV9IICovCmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2bWkuYwppbmRleCBjZTdlMmQ1ZjJhYjQu LjRmZDdhM2MxN2VmNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNo L3g4Ni9rdm0va3ZtaS5jCkBAIC05OCwzICs5OCw5NiBAQCBpbnQga3ZtaV9hcmNoX2NtZF92Y3B1 X2dldF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAogCXJldHVybiAwOwogfQorCitpbnQg a3ZtaV9hcmNoX2NoZWNrX2dldF9yZWdpc3RlcnNfcmVxKGNvbnN0IHN0cnVjdCBrdm1pX21zZ19o ZHIgKm1zZywKKwkJCQljb25zdCBzdHJ1Y3Qga3ZtaV92Y3B1X2dldF9yZWdpc3RlcnMgKnJlcSkK K3sKKwlzaXplX3QgcmVxX3NpemU7CisKKwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KHNpemVvZihz dHJ1Y3Qga3ZtaV92Y3B1X2hkciksCisJCQkJc3RydWN0X3NpemUocmVxLCBtc3JzX2lkeCwgcmVx LT5ubXNycyksCisJCQkJJnJlcV9zaXplKSkKKwkJcmV0dXJuIC0xOworCisJaWYgKG1zZy0+c2l6 ZSA8IHJlcV9zaXplKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBrdm1pX2dldF9yZWdpc3RlcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKm1vZGUsCisJ CQkgICAgICBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MsCisJCQkgICAgICBzdHJ1Y3Qga3ZtX3NyZWdz ICpzcmVncywKKwkJCSAgICAgIHN0cnVjdCBrdm1fbXNycyAqbXNycykKK3sKKwlzdHJ1Y3Qga3Zt X21zcl9lbnRyeSAqbXNyID0gbXNycy0+ZW50cmllczsKKwlzdHJ1Y3Qga3ZtX21zcl9lbnRyeSAq ZW5kID0gbXNycy0+ZW50cmllcyArIG1zcnMtPm5tc3JzOworCXN0cnVjdCBtc3JfZGF0YSBtID0g ey5ob3N0X2luaXRpYXRlZCA9IHRydWV9OworCWludCBlcnIgPSAwOworCisJa3ZtX2FyY2hfdmNw dV9nZXRfcmVncyh2Y3B1LCByZWdzKTsKKwlrdm1fYXJjaF92Y3B1X2dldF9zcmVncyh2Y3B1LCBz cmVncyk7CisJKm1vZGUgPSBrdm1pX3ZjcHVfbW9kZSh2Y3B1LCBzcmVncyk7CisKKwlmb3IgKDsg bXNyIDwgZW5kICYmICFlcnI7IG1zcisrKSB7CisJCW0uaW5kZXggPSBtc3ItPmluZGV4OworCisJ CWVyciA9IGt2bV94ODZfb3BzLmdldF9tc3IodmNwdSwgJm0pOworCisJCWlmICghZXJyKQorCQkJ bXNyLT5kYXRhID0gbS5kYXRhOworCX0KKworCXJldHVybiBlcnIgPyAtS1ZNX0VJTlZBTCA6IDA7 Cit9CisKK3N0YXRpYyBib29sIHZhbGlkX3JlcGx5X3NpemUoc2l6ZV90IHJwbF9zaXplKQorewor CXNpemVfdCBtc2dfc2l6ZTsKKworCWlmIChjaGVja19hZGRfb3ZlcmZsb3coc2l6ZW9mKHN0cnVj dCBrdm1pX2Vycm9yX2NvZGUpLAorCQkJCXJwbF9zaXplLCAmbXNnX3NpemUpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlpZiAobXNnX3NpemUgPiBLVk1JX01TR19TSVpFKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworaW50IGt2bWlfYXJjaF9jbWRfdmNwdV9nZXRfcmVnaXN0 ZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRy ICptc2csCisJCQkJY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzICpyZXEsCisJ CQkJc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzX3JlcGx5ICoqZGVzdCwKKwkJCQlzaXpl X3QgKmRlc3Rfc2l6ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2dldF9yZWdpc3RlcnNfcmVwbHkg KnJwbDsKKwlzaXplX3QgcnBsX3NpemU7CisJaW50IGVycjsKKwl1MTYgazsKKworCWlmIChyZXEt PnBhZGRpbmcxIHx8IHJlcS0+cGFkZGluZzIpCisJCXJldHVybiAtS1ZNX0VJTlZBTDsKKworCXJw bF9zaXplID0gc3RydWN0X3NpemUocnBsLCBtc3JzLmVudHJpZXMsIHJlcS0+bm1zcnMpOworCisJ aWYgKCF2YWxpZF9yZXBseV9zaXplKHJwbF9zaXplKSkKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOwor CisJcnBsID0ga3ZtaV9tc2dfYWxsb2MoKTsKKwlpZiAoIXJwbCkKKwkJcmV0dXJuIC1LVk1fRU5P TUVNOworCisJcnBsLT5tc3JzLm5tc3JzID0gcmVxLT5ubXNyczsKKworCWZvciAoayA9IDA7IGsg PCByZXEtPm5tc3JzOyBrKyspCisJCXJwbC0+bXNycy5lbnRyaWVzW2tdLmluZGV4ID0gcmVxLT5t c3JzX2lkeFtrXTsKKworCWVyciA9IGt2bWlfZ2V0X3JlZ2lzdGVycyh2Y3B1LCAmcnBsLT5tb2Rl LCAmcnBsLT5yZWdzLAorCQkJCSAmcnBsLT5zcmVncywgJnJwbC0+bXNycyk7CisKKwkqZGVzdCA9 IHJwbDsKKwkqZGVzdF9zaXplID0gcnBsX3NpemU7CisKKwlyZXR1cm4gZXJyOworfQpkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1p LmgKaW5kZXggOWViZjE3ZmE5NTY0Li4zOWZmNTRiNGI2NjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9saW51eC9rdm1pLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaApAQCAtMjgs NiArMjgsNyBAQCBlbnVtIHsKIAlLVk1JX1ZDUFVfR0VUX0lORk8gICAgICAgPSA4LAogCUtWTUlf VkNQVV9QQVVTRSAgICAgICAgICA9IDksCiAJS1ZNSV9WQ1BVX0NPTlRST0xfRVZFTlRTID0gMTAs CisJS1ZNSV9WQ1BVX0dFVF9SRUdJU1RFUlMgID0gMTEsCiAKIAlLVk1JX05VTV9NRVNTQUdFUwog fTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90 ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCmlu ZGV4IGRhNmEwNmZhMGJhYS4uNzNhYWZjNWQ5NTlhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMKQEAgLTg4Nyw2ICs4ODcsODAgQEAgc3RhdGlj IHZvaWQgdGVzdF9jbWRfdmNwdV9jb250cm9sX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZtICp2bSkKIAog fQogCitzdGF0aWMgdm9pZCBjbWRfdmNwdV9nZXRfcmVnaXN0ZXJzKHN0cnVjdCBrdm1fdm0gKnZt LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IHsKKwkJc3RydWN0IGt2bWlfbXNn X2hkciBoZHI7CisJCXN0cnVjdCBrdm1pX3ZjcHVfaGRyIHZjcHVfaGRyOworCQlzdHJ1Y3Qga3Zt aV92Y3B1X2dldF9yZWdpc3RlcnMgY21kOworCX0gcmVxID0ge307CisJc3RydWN0IGt2bWlfdmNw dV9nZXRfcmVnaXN0ZXJzX3JlcGx5IHJwbDsKKworCXRlc3RfdmNwdTBfY29tbWFuZCh2bSwgS1ZN SV9WQ1BVX0dFVF9SRUdJU1RFUlMsICZyZXEuaGRyLCBzaXplb2YocmVxKSwKKwkJCSAgICZycGws IHNpemVvZihycGwpKTsKKworCW1lbWNweShyZWdzLCAmcnBsLnJlZ3MsIHNpemVvZigqcmVncykp OworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2ludmFsaWRfY21kX3ZjcHVfZ2V0X3JlZ2lzdGVycyhz dHJ1Y3Qga3ZtX3ZtICp2bSwKKwkJCQkJCXN0cnVjdCBrdm1pX21zZ19oZHIgKnJlcSwKKwkJCQkJ CXNpemVfdCByZXFfc2l6ZSwgdm9pZCAqcnBsLAorCQkJCQkJc2l6ZV90IHJwbF9zaXplKQorewor CWludCByOworCisJciA9IGRvX3ZjcHUwX2NvbW1hbmQodm0sIEtWTUlfVkNQVV9HRVRfUkVHSVNU RVJTLCByZXEsIHJlcV9zaXplLAorCQkJICAgICBycGwsIHJwbF9zaXplKTsKKwlURVNUX0FTU0VS VChyID09IC1LVk1fRUlOVkFMLAorCQkiS1ZNSV9WQ1BVX0dFVF9SRUdJU1RFUlMgZGlkbid0IGZh aWxlZCB3aXRoIC1LVk1fRUlOVkFMLCBlcnJvciAlZCAoJXMpXG4iLAorCQktciwga3ZtX3N0cmVy cm9yKC1yKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfaW52YWxpZF92Y3B1X2dldF9yZWdpc3Rl cnMoc3RydWN0IGt2bV92bSAqdm0pCit7CisJc3RydWN0IHsKKwkJc3RydWN0IGt2bWlfbXNnX2hk ciBoZHI7CisJCXN0cnVjdCBrdm1pX3ZjcHVfaGRyIHZjcHVfaGRyOworCQlzdHJ1Y3Qga3ZtaV92 Y3B1X2dldF9yZWdpc3RlcnMgY21kOworCQlfX3UzMiBtc3JzX2lkeFsxXTsKKwl9IHJlcSA9IHt9 OworCXN0cnVjdCB7CisJCXN0cnVjdCBrdm1pX21zZ19oZHIgaGRyOworCQlzdHJ1Y3Qga3ZtaV92 Y3B1X2hkciB2Y3B1X2hkcjsKKwkJc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzIGNtZDsK Kwl9ICpyZXFfYmlnOworCXN0cnVjdCBrdm1pX3ZjcHVfZ2V0X3JlZ2lzdGVyc19yZXBseSBycGw7 CisKKwlyZXEuY21kLnBhZGRpbmcxID0gMTsKKwlyZXEuY21kLnBhZGRpbmcyID0gMTsKKwl0ZXN0 X2ludmFsaWRfY21kX3ZjcHVfZ2V0X3JlZ2lzdGVycyh2bSwgJnJlcS5oZHIsIHNpemVvZihyZXEp LAorCQkJCQkgICAgJnJwbCwgc2l6ZW9mKHJwbCkpOworCisJcmVxLmNtZC5wYWRkaW5nMSA9IDA7 CisJcmVxLmNtZC5wYWRkaW5nMiA9IDA7CisJcmVxLmNtZC5ubXNycyA9IDE7CisJcmVxLmNtZC5t c3JzX2lkeFswXSA9IDB4ZmZmZmZmZmY7CisJdGVzdF9pbnZhbGlkX2NtZF92Y3B1X2dldF9yZWdp c3RlcnModm0sICZyZXEuaGRyLCBzaXplb2YocmVxKSwKKwkJCQkJICAgICZycGwsIHNpemVvZihy cGwpKTsKKworCXJlcV9iaWcgPSBjYWxsb2MoMSwgS1ZNSV9NU0dfU0laRSk7CisJcmVxX2JpZy0+ Y21kLm5tc3JzID0gKEtWTUlfTVNHX1NJWkUgLSBzaXplb2YoKnJlcV9iaWcpKSAvIHNpemVvZihf X3UzMik7CisJdGVzdF9pbnZhbGlkX2NtZF92Y3B1X2dldF9yZWdpc3RlcnModm0sICZyZXEuaGRy LCBzaXplb2YocmVxKSwKKwkJCQkJICAgICZycGwsIHNpemVvZihycGwpKTsKKwlmcmVlKHJlcV9i aWcpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2NtZF92Y3B1X2dldF9yZWdpc3RlcnMoc3RydWN0 IGt2bV92bSAqdm0pCit7CisJc3RydWN0IGt2bV9yZWdzIHJlZ3MgPSB7fTsKKworCWNtZF92Y3B1 X2dldF9yZWdpc3RlcnModm0sICZyZWdzKTsKKworCXByX2luZm8oImdldF9yZWdpc3RlcnMgcmlw IDB4JWxseFxuIiwgcmVncy5yaXApOworCisJdGVzdF9pbnZhbGlkX3ZjcHVfZ2V0X3JlZ2lzdGVy cyh2bSk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RfaW50cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3Zt ICp2bSkKIHsKIAlzcmFuZG9tKHRpbWUoMCkpOwpAQCAtOTA0LDYgKzk3OCw3IEBAIHN0YXRpYyB2 b2lkIHRlc3RfaW50cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKIAl0ZXN0X2NtZF92Y3B1 X2dldF9pbmZvKHZtKTsKIAl0ZXN0X3BhdXNlKHZtKTsKIAl0ZXN0X2NtZF92Y3B1X2NvbnRyb2xf ZXZlbnRzKHZtKTsKKwl0ZXN0X2NtZF92Y3B1X2dldF9yZWdpc3RlcnModm0pOwogCiAJdW5ob29r X2ludHJvc3BlY3Rpb24odm0pOwogfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlv bi9rdm1pX2ludC5oIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCmluZGV4IDU3 YTYyZWJhZGQ5NC4uNzQwZWVhM2E5NTMxIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0 aW9uL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCkBA IC01Nyw1ICs1NywxMiBAQCBpbnQga3ZtaV9jbWRfdmNwdV9wYXVzZShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGJvb2wgd2FpdCk7CiBpbnQga3ZtaV9hcmNoX2NtZF92Y3B1X2dldF9pbmZvKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKIAkJCQlzdHJ1Y3Qga3ZtaV92Y3B1X2dldF9pbmZvX3JlcGx5ICpy cGwpOwogdm9pZCBrdm1pX2FyY2hfc2V0dXBfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBz dHJ1Y3Qga3ZtaV9ldmVudCAqZXYpOworaW50IGt2bWlfYXJjaF9jaGVja19nZXRfcmVnaXN0ZXJz X3JlcShjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCisJCQkJY29uc3Qgc3RydWN0IGt2 bWlfdmNwdV9nZXRfcmVnaXN0ZXJzICpyZXEpOworaW50IGt2bWlfYXJjaF9jbWRfdmNwdV9nZXRf cmVnaXN0ZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9t c2dfaGRyICptc2csCisJCQkJY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzICpy ZXEsCisJCQkJc3RydWN0IGt2bWlfdmNwdV9nZXRfcmVnaXN0ZXJzX3JlcGx5ICoqZGVzdCwKKwkJ CQlzaXplX3QgKmRlc3Rfc2l6ZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50 cm9zcGVjdGlvbi9rdm1pX21zZy5jIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5j CmluZGV4IDIwZWY0YTQ0ZDNhMi4uNmM3YTYwMGRkNDc3IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9p bnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1p X21zZy5jCkBAIC00MTgsNiArNDE4LDI1IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3ZjcHVfY29udHJv bF9ldmVudHMoY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9tc2dfam9iICpqb2IsCiAJcmV0dXJuIGt2 bWlfbXNnX3ZjcHVfcmVwbHkoam9iLCBtc2csIGVjLCBOVUxMLCAwKTsKIH0KIAorc3RhdGljIGlu dCBoYW5kbGVfdmNwdV9nZXRfcmVnaXN0ZXJzKGNvbnN0IHN0cnVjdCBrdm1pX3ZjcHVfbXNnX2pv YiAqam9iLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCSAg ICAgY29uc3Qgdm9pZCAqcmVxKQoreworCXN0cnVjdCBrdm1pX3ZjcHVfZ2V0X3JlZ2lzdGVyc19y ZXBseSAqcnBsID0gTlVMTDsKKwlzaXplX3QgcnBsX3NpemUgPSAwOworCWludCBlcnIsIGVjOwor CisJaWYgKGt2bWlfYXJjaF9jaGVja19nZXRfcmVnaXN0ZXJzX3JlcShtc2csIHJlcSkpCisJCXJl dHVybiAtRUlOVkFMOworCisJZWMgPSBrdm1pX2FyY2hfY21kX3ZjcHVfZ2V0X3JlZ2lzdGVycyhq b2ItPnZjcHUsIG1zZywgcmVxLAorCQkJCQkgICAgICAmcnBsLCAmcnBsX3NpemUpOworCisJZXJy ID0ga3ZtaV9tc2dfdmNwdV9yZXBseShqb2IsIG1zZywgZWMsIHJwbCwgcnBsX3NpemUpOworCWt2 bWlfbXNnX2ZyZWUocnBsKTsKKwlyZXR1cm4gZXJyOworfQorCiAvKgogICogVGhlc2UgZnVuY3Rp b25zIGFyZSBleGVjdXRlZCBmcm9tIHRoZSB2Q1BVIHRocmVhZC4gVGhlIHJlY2VpdmluZyB0aHJl YWQKICAqIHBhc3NlcyB0aGUgbWVzc2FnZXMgdXNpbmcgYSBuZXdseSBhbGxvY2F0ZWQgJ3N0cnVj dCBrdm1pX3ZjcHVfbXNnX2pvYicKQEAgLTQyOSw2ICs0NDgsNyBAQCBzdGF0aWMgaW50KCpjb25z dCBtc2dfdmNwdVtdKShjb25zdCBzdHJ1Y3Qga3ZtaV92Y3B1X21zZ19qb2IgKiwKIAlbS1ZNSV9F VkVOVF0gICAgICAgICAgICAgICA9IGhhbmRsZV92Y3B1X2V2ZW50X3JlcGx5LAogCVtLVk1JX1ZD UFVfQ09OVFJPTF9FVkVOVFNdID0gaGFuZGxlX3ZjcHVfY29udHJvbF9ldmVudHMsCiAJW0tWTUlf VkNQVV9HRVRfSU5GT10gICAgICAgPSBoYW5kbGVfdmNwdV9nZXRfaW5mbywKKwlbS1ZNSV9WQ1BV X0dFVF9SRUdJU1RFUlNdICA9IGhhbmRsZV92Y3B1X2dldF9yZWdpc3RlcnMsCiB9OwogCiBzdGF0 aWMgYm9vbCBpc192Y3B1X2NvbW1hbmQodTE2IGlkKQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVh bGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZv dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=