From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [PATCH v9 40/84] KVM: introspection: add the read/dispatch message function Date: Wed, 22 Jul 2020 00:08:38 +0300 Message-ID: <20200721210922.7646-41-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 , virtualization@lists.linux-foundation.org List-Id: virtualization@lists.linuxfoundation.org QmFzZWQgb24gdGhlIGNvbW1vbiBoZWFkZXIgKHN0cnVjdCBrdm1pX21zZ19oZHIpLCB0aGUgcmVj ZWl2aW5nIHRocmVhZAp3aWxsIHJlYWQvdmFsaWRhdGUgYWxsIG1lc3NhZ2VzLCBleGVjdXRlIHRo ZSBWTSBpbnRyb3NwZWN0aW9uIGNvbW1hbmRzCihlZy4gS1ZNSV9WTV9HRVRfSU5GTykgYW5kIGRp c3BhdGNoIHRoZSB2Q1BVIGludHJvc3BlY3Rpb24gY29tbWFuZHMKKGVnLiBLVk1JX1ZDUFVfR0VU X1JFR0lTVEVSUykgdG8gdGhlIHZDUFUgdGhyZWFkcy4KClRoZSB2Q1BVIHRocmVhZHMgd2lsbCBy ZXBseSB0byB2Q1BVIGludHJvc3BlY3Rpb24gY29tbWFuZHMgd2l0aG91dAp0aGUgaGVscCBvZiB0 aGUgcmVjZWl2aW5nIHRocmVhZC4gU2FtZSBmb3Igc2VuZGluZyB2Q1BVIGV2ZW50cywgYnV0CnRo ZSB2Q1BVIHRocmVhZCB3aWxsIHdhaXQgZm9yIHRoZSByZWNlaXZpbmcgdGhyZWFkIHRvIGdldCB0 aGUgZXZlbnQKcmVwbHkuIE1lYW53aGlsZSwgaXQgd2lsbCBleGVjdXRlIGFueSBxdWV1ZWQgdkNQ VSBpbnRyb3NwZWN0aW9uIGNvbW1hbmQuCgpUaGUgcmVjZWl2aW5nIHRocmVhZCB3aWxsIGVuZCB3 aGVuIHRoZSBzb2NrZXQgaXMgY2xvc2VkIG9yIG9uIHRoZSBmaXJzdApBUEkgZXJyb3IgKGVnLiB3 cm9uZyBtZXNzYWdlIHNpemUpLgoKU2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6 YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3Qg ICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrCiBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5o ICAgICAgICAgICAgICAgICAgICAgfCAgMjEgKysrCiAuLi4vdGVzdGluZy9zZWxmdGVzdHMva3Zt L3g4Nl82NC9rdm1pX3Rlc3QuYyAgfCAxMDAgKysrKysrKysrKysrCiB2aXJ0L2t2bS9pbnRyb3Nw ZWN0aW9uL2t2bWkuYyAgICAgICAgICAgICAgICAgfCAgNDIgKysrKy0KIHZpcnQva3ZtL2ludHJv c3BlY3Rpb24va3ZtaV9pbnQuaCAgICAgICAgICAgICB8ICAgNSArCiB2aXJ0L2t2bS9pbnRyb3Nw ZWN0aW9uL2t2bWlfbXNnLmMgICAgICAgICAgICAgfCAxNDkgKysrKysrKysrKysrKysrKystCiA2 IGZpbGVzIGNoYW5nZWQsIDQwMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3Zp cnQva3ZtL2t2bWkucnN0CmluZGV4IDNhMWI2YzY1NWRlNy4uZjNkMTY5NzFiYTJiIDEwMDY0NAot LS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0CisrKyBiL0RvY3VtZW50YXRpb24v dmlydC9rdm0va3ZtaS5yc3QKQEAgLTY1LDYgKzY1LDg1IEBAIGJlZW4gdXNlZCBvbiB0aGF0IGd1 ZXN0IChpZiByZXF1ZXN0ZWQpLiBPYnZpb3VzbHksIHdoZXRoZXIgdGhlIGd1ZXN0IGNhbgogcmVh bGx5IGNvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBpbnRy b3NwZWN0aW9uCiB0b29sIGhhcyBtYWRlIGFueSBtb2RpZmljYXRpb25zIHRoYXQgcmVxdWlyZSBh biBhY3RpdmUgS1ZNSSBjaGFubmVsLgogCitBbGwgbWVzc2FnZXMgKGNvbW1hbmRzIG9yIGV2ZW50 cykgaGF2ZSBhIGNvbW1vbiBoZWFkZXI6OgorCisJc3RydWN0IGt2bWlfbXNnX2hkciB7CisJCV9f dTE2IGlkOworCQlfX3UxNiBzaXplOworCQlfX3UzMiBzZXE7CisJfTsKKworVGhlIHJlcGxpZXMg aGF2ZSB0aGUgc2FtZSBoZWFkZXIsIHdpdGggdGhlIHNlcXVlbmNlIG51bWJlciAoYGBzZXFgYCkK K2FuZCBtZXNzYWdlIGlkIChgYGlkYGApIG1hdGNoaW5nIHRoZSBjb21tYW5kL2V2ZW50LgorCitB ZnRlciBgYGt2bWlfbXNnX2hkcmBgLCBgYGlkYGAgc3BlY2lmaWMgZGF0YSBvZiBgYHNpemVgYCBi eXRlcyB3aWxsCitmb2xsb3cuCisKK1RoZSBtZXNzYWdlIGhlYWRlciBhbmQgaXRzIGRhdGEgbXVz dCBiZSBzZW50IHdpdGggb25lIGBgc2VuZG1zZygpYGAgY2FsbAordG8gdGhlIHNvY2tldC4gVGhp cyBzaW1wbGlmaWVzIHRoZSByZWNlaXZlciBsb29wIGFuZCBhdm9pZHMKK3RoZSByZWNvbnN0cnVj dGlvbiBvZiBtZXNzYWdlcyBvbiB0aGUgb3RoZXIgc2lkZS4KKworVGhlIHdpcmUgcHJvdG9jb2wg dXNlcyB0aGUgaG9zdCBuYXRpdmUgYnl0ZS1vcmRlci4gVGhlIGludHJvc3BlY3Rpb24gdG9vbAor bXVzdCBjaGVjayB0aGlzIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFuZCBkbyB0aGUgbmVjZXNzYXJ5 IGNvbnZlcnNpb24uCisKK0EgY29tbWFuZCByZXBseSBiZWdpbnMgd2l0aDo6CisKKwlzdHJ1Y3Qg a3ZtaV9lcnJvcl9jb2RlIHsKKwkJX19zMzIgZXJyOworCQlfX3UzMiBwYWRkaW5nOworCX0KKwor Zm9sbG93ZWQgYnkgdGhlIGNvbW1hbmQgc3BlY2lmaWMgZGF0YSBpZiB0aGUgZXJyb3IgY29kZSBg YGVycmBgIGlzIHplcm8uCisKK1RoZSBlcnJvciBjb2RlIC1LVk1fRU5PU1lTIGlzIHJldHVybmVk IGZvciB1bnN1cHBvcnRlZCBjb21tYW5kcy4KKworVGhlIGVycm9yIGNvZGUgLUtWTV9FUEVSTSBp cyByZXR1cm5lZCBmb3IgZGlzYWxsb3dlZCBjb21tYW5kcyAoc2VlICoqSG9va2luZyoqKS4KKwor VGhlIGVycm9yIGNvZGUgaXMgcmVsYXRlZCB0byB0aGUgbWVzc2FnZSBwcm9jZXNzaW5nLCBpbmNs dWRpbmcgdW5zdXBwb3J0ZWQKK2NvbW1hbmRzLiBGb3IgYWxsIHRoZSBvdGhlciBlcnJvcnMgKGlu Y29tcGxldGUgbWVzc2FnZXMsIHdyb25nIHNlcXVlbmNlCitudW1iZXJzLCBzb2NrZXQgZXJyb3Jz IGV0Yy4pIHRoZSBzb2NrZXQgd2lsbCBiZSBjbG9zZWQuIFRoZSBkZXZpY2UKK21hbmFnZXIgc2hv dWxkIHJlY29ubmVjdC4KKworV2hpbGUgYWxsIGNvbW1hbmRzIHdpbGwgaGF2ZSBhIHJlcGx5IGFz IHNvb24gYXMgcG9zc2libGUsIHRoZSByZXBsaWVzCit0byBldmVudHMgd2lsbCBwcm9iYWJseSBi ZSBkZWxheWVkIHVudGlsIGEgc2V0IG9mIChuZXcpIGNvbW1hbmRzIHdpbGwKK2NvbXBsZXRlOjoK KworICAgSG9zdCBrZXJuZWwgICAgICAgICAgICAgICBJbnRyb3NwZWN0aW9uIHRvb2wKKyAgIC0t LS0tLS0tLS0tICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCisgICBldmVudCAxIC0+ CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtIGNvbW1hbmQgMQorICAgY29tbWFuZCAx IHJlcGx5IC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtIGNvbW1hbmQgMgorICAg Y29tbWFuZCAyIHJlcGx5IC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtIGV2ZW50 IDEgcmVwbHkKKworSWYgYm90aCBlbmRzIHNlbmQgYSBtZXNzYWdlIGF0IHRoZSBzYW1lIHRpbWU6 OgorCisgICBIb3N0IGtlcm5lbCAgICAgICAgICAgICAgIFRvb2wKKyAgIC0tLS0tLS0tLS0tICAg ICAgICAgICAgICAgLS0tLQorICAgZXZlbnQgWCAtPiAgICAgICAgICAgICAgICA8LSBjb21tYW5k IFgKKwordGhlIGhvc3Qga2VybmVsIHdpbGwgcmVwbHkgdG8gJ2NvbW1hbmQgWCcsIHJlZ2FyZGxl c3Mgb2YgdGhlIHJlY2VpdmUgdGltZQorKGJlZm9yZSBvciBhZnRlciB0aGUgJ2V2ZW50IFgnIHdh cyBzZW50KS4KKworQXMgaXQgY2FuIGJlIHNlZW4gYmVsb3csIHRoZSB3aXJlIHByb3RvY29sIHNw ZWNpZmllcyBvY2Nhc2lvbmFsIHBhZGRpbmcuIFRoaXMKK2lzIHRvIHBlcm1pdCB3b3JraW5nIHdp dGggdGhlIGRhdGEgYnkgZGlyZWN0bHkgdXNpbmcgQyBzdHJ1Y3R1cmVzIG9yIHRvIHJvdW5kCit0 aGUgc3RydWN0dXJlIHNpemUgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzICg2NGJpdCkgdG8gaW1w cm92ZSB0aGUgY29weQorb3BlcmF0aW9ucyB0aGF0IGhhcHBlbiBkdXJpbmcgYGByZWN2bXNnKClg YCBvciBgYHNlbmRtc2coKWBgLiBUaGUgbWVtYmVycworc2hvdWxkIGhhdmUgdGhlIG5hdGl2ZSBh bGlnbm1lbnQgb2YgdGhlIGhvc3QuIEFsbCBwYWRkaW5nIG11c3QgYmUKK2luaXRpYWxpemVkIHdp dGggemVybyBvdGhlcndpc2UgdGhlIHJlc3BlY3RpdmUgY29tbWFuZCB3aWxsIGZhaWwgd2l0aAor LUtWTV9FSU5WQUwuCisKK1RvIGRlc2NyaWJlIHRoZSBjb21tYW5kcy9ldmVudHMsIHdlIHJldXNl IHNvbWUgY29udmVudGlvbnMgZnJvbSBhcGkudHh0OgorCisgIC0gQXJjaGl0ZWN0dXJlczogd2hp Y2ggaW5zdHJ1Y3Rpb24gc2V0IGFyY2hpdGVjdHVyZXMgcHJvdmlkZSB0aGlzIGNvbW1hbmQvZXZl bnQKKworICAtIFZlcnNpb25zOiB3aGljaCB2ZXJzaW9ucyBwcm92aWRlIHRoaXMgY29tbWFuZC9l dmVudAorCisgIC0gUGFyYW1ldGVyczogaW5jb21pbmcgbWVzc2FnZSBkYXRhCisKKyAgLSBSZXR1 cm5zOiBvdXRnb2luZy9yZXBseSBtZXNzYWdlIGRhdGEKKwogSGFuZHNoYWtlCiAtLS0tLS0tLS0K IApAQCAtOTksNiArMTc4LDEzIEBAIEluIHRoZSBlbmQsIHRoZSBkZXZpY2UgbWFuYWdlciB3aWxs IHBhc3MgdGhlIGZpbGUgaGFuZGxlIChwbHVzIHRoZSBhbGxvd2VkCiBjb21tYW5kcy9ldmVudHMp IHRvIEtWTS4gSXQgd2lsbCBkZXRlY3Qgd2hlbiB0aGUgc29ja2V0IGlzIHNodXRkb3duCiBhbmQg aXQgd2lsbCByZWluaXRpYXRlIHRoZSBoYW5kc2hha2UuCiAKK09uY2UgdGhlIGZpbGUgaGFuZGxl IHJlYWNoZXMgS1ZNLCB0aGUgaW50cm9zcGVjdGlvbiB0b29sIHNob3VsZAordXNlIHRoZSAqS1ZN SV9HRVRfVkVSU0lPTiogY29tbWFuZCB0byBnZXQgdGhlIEFQSSB2ZXJzaW9uIGFuZC9vciB0aGUK KypLVk1JX1ZNX0NIRUNLX0NPTU1BTkQqIGFuZCAqS1ZNSV9WTV9DSEVDS19FVkVOVCogY29tbWFu ZHMgdG8gc2VlIHdoaWNoCitjb21tYW5kcy9ldmVudHMgYXJlIGFsbG93ZWQgZm9yIHRoaXMgZ3Vl c3QuIFRoZSBlcnJvciBjb2RlIC1LVk1fRVBFUk0KK3dpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGlu dHJvc3BlY3Rpb24gdG9vbCB1c2VzIGEgY29tbWFuZCBvciBlbmFibGVzIGFuCitldmVudCB3aGlj aCBpcyBkaXNhbGxvd2VkLgorCiBVbmhvb2tpbmcKIC0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvbGludXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRl eCBkN2IxOGZmZWY0ZmEuLjliZmZmNDg0ZmQ2ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xp bnV4L2t2bWkuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC0xOCw0ICsxOCwy NSBAQCBlbnVtIHsKIAlLVk1JX05VTV9FVkVOVFMKIH07CiAKK3N0cnVjdCBrdm1pX21zZ19oZHIg eworCV9fdTE2IGlkOworCV9fdTE2IHNpemU7CisJX191MzIgc2VxOworfTsKKworLyoKKyAqIFRo ZSBrZXJuZWwgc2lkZSB3aWxsIGNsb3NlIHRoZSBzb2NrZXQgaWYga3ZtaV9tc2dfaGRyLnNpemUK KyAqIGlzIGJpZ2dlciB0aGFuIEtWTUlfTVNHX1NJWkUuCisgKiBUaGlzIGxpbWl0IGlzIHVzZWQg dG8gYWNjb21tb2RhdGUgdGhlIGJpZ2dlc3Qga25vd24gbWVzc2FnZSwKKyAqIHRoZSBjb21tYW5k cyB0byByZWFkL3dyaXRlIGEgNEsgcGFnZSBmcm9tL3RvIGd1ZXN0IG1lbW9yeS4KKyAqLworZW51 bSB7CisJS1ZNSV9NU0dfU0laRSA9ICg0MDk2ICogMiAtIHNpemVvZihzdHJ1Y3Qga3ZtaV9tc2df aGRyKSkKK307CisKK3N0cnVjdCBrdm1pX2Vycm9yX2NvZGUgeworCV9fczMyIGVycjsKKwlfX3Uz MiBwYWRkaW5nOworfTsKKwogI2VuZGlmIC8qIF9VQVBJX19MSU5VWF9LVk1JX0ggKi8KZGlmZiAt LWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMgYi90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCmluZGV4IDA5Yjg5 ODkzMTdkNy4uOWM1OTFlMGQ5YzhhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2 bS94ODZfNjQva3ZtaV90ZXN0LmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJwcm9jZXNz b3IuaCIKICNpbmNsdWRlICIuLi9saWIva3ZtX3V0aWxfaW50ZXJuYWwuaCIKIAorI2luY2x1ZGUg ImxpbnV4L2t2bV9wYXJhLmgiCiAjaW5jbHVkZSAibGludXgva3ZtaS5oIgogCiAjZGVmaW5lIFZD UFVfSUQgICAgICAgICA1CkBAIC0xMTYsMTAgKzExNywxMDkgQEAgc3RhdGljIHZvaWQgdW5ob29r X2ludHJvc3BlY3Rpb24oc3RydWN0IGt2bV92bSAqdm0pCiAJCWVycm5vLCBzdHJlcnJvcihlcnJu bykpOwogfQogCitzdGF0aWMgdm9pZCByZWNlaXZlX2RhdGEodm9pZCAqZGVzdCwgc2l6ZV90IHNp emUpCit7CisJc3NpemVfdCByOworCisJciA9IHJlY3YoVXNlcnNwYWNlX3NvY2tldCwgZGVzdCwg c2l6ZSwgTVNHX1dBSVRBTEwpOworCVRFU1RfQVNTRVJUKHIgPT0gc2l6ZSwKKwkJInJlY3YoKSBm YWlsZWQsIGV4cGVjdGVkICV6ZCwgcmVzdWx0ICV6ZCwgZXJybm8gJWQgKCVzKVxuIiwKKwkJc2l6 ZSwgciwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Cit9CisKK3N0YXRpYyBpbnQgcmVjZWl2ZV9j bWRfcmVwbHkoc3RydWN0IGt2bWlfbXNnX2hkciAqcmVxLCB2b2lkICpycGwsCisJCQkgICAgIHNp emVfdCBycGxfc2l6ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV9tc2dfaGRyIGhkcjsKKwlzdHJ1Y3Qga3Zt aV9lcnJvcl9jb2RlIGVjOworCisJcmVjZWl2ZV9kYXRhKCZoZHIsIHNpemVvZihoZHIpKTsKKwor CVRFU1RfQVNTRVJUKGhkci5zZXEgPT0gcmVxLT5zZXEsCisJCSJVbmV4cGVjdGVkIG1lc3NhZ2Vz IHNlcXVlbmNlIDB4JXgsIGV4cGVjdGVkIDB4JXhcbiIsCisJCWhkci5zZXEsIHJlcS0+c2VxKTsK KworCVRFU1RfQVNTRVJUKGhkci5zaXplID49IHNpemVvZihlYyksCisJCSJJbnZhbGlkIG1lc3Nh Z2Ugc2l6ZSAlZCwgZXhwZWN0ZWQgJXpkIGJ5dGVzIChhdCBsZWFzdClcbiIsCisJCWhkci5zaXpl LCBzaXplb2YoZWMpKTsKKworCXJlY2VpdmVfZGF0YSgmZWMsIHNpemVvZihlYykpOworCisJaWYg KGVjLmVycikgeworCQlURVNUX0FTU0VSVChoZHIuc2l6ZSA9PSBzaXplb2YoZWMpLAorCQkJIklu dmFsaWQgY29tbWFuZCByZXBseSBvbiBlcnJvclxuIik7CisJfSBlbHNlIHsKKwkJVEVTVF9BU1NF UlQoaGRyLnNpemUgPT0gc2l6ZW9mKGVjKSArIHJwbF9zaXplLAorCQkJIkludmFsaWQgY29tbWFu ZCByZXBseVxuIik7CisKKwkJaWYgKHJwbCAmJiBycGxfc2l6ZSkKKwkJCXJlY2VpdmVfZGF0YShy cGwsIHJwbF9zaXplKTsKKwl9CisKKwlyZXR1cm4gZWMuZXJyOworfQorCitzdGF0aWMgdW5zaWdu ZWQgaW50IG5ld19zZXEodm9pZCkKK3sKKwlzdGF0aWMgdW5zaWduZWQgaW50IHNlcTsKKworCXJl dHVybiBzZXErKzsKK30KKworc3RhdGljIHZvaWQgc2VuZF9tZXNzYWdlKGludCBtc2dfaWQsIHN0 cnVjdCBrdm1pX21zZ19oZHIgKmhkciwgc2l6ZV90IHNpemUpCit7CisJc3NpemVfdCByOworCisJ aGRyLT5pZCA9IG1zZ19pZDsKKwloZHItPnNlcSA9IG5ld19zZXEoKTsKKwloZHItPnNpemUgPSBz aXplIC0gc2l6ZW9mKCpoZHIpOworCisJciA9IHNlbmQoVXNlcnNwYWNlX3NvY2tldCwgaGRyLCBz aXplLCAwKTsKKwlURVNUX0FTU0VSVChyID09IHNpemUsCisJCSJzZW5kKCkgZmFpbGVkLCBzZW5k aW5nICV6ZCwgcmVzdWx0ICV6ZCwgZXJybm8gJWQgKCVzKVxuIiwKKwkJc2l6ZSwgciwgZXJybm8s IHN0cmVycm9yKGVycm5vKSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICprdm1fc3RyZXJyb3Io aW50IGVycm9yKQoreworCXN3aXRjaCAoZXJyb3IpIHsKKwljYXNlIEtWTV9FTk9TWVM6CisJCXJl dHVybiAiSW52YWxpZCBzeXN0ZW0gY2FsbCBudW1iZXIiOworCWNhc2UgS1ZNX0VPUE5PVFNVUFA6 CisJCXJldHVybiAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdHJhbnNwb3J0IGVuZHBvaW50 IjsKKwljYXNlIEtWTV9FQUdBSU46CisJCXJldHVybiAiVHJ5IGFnYWluIjsKKwlkZWZhdWx0Ogor CQlyZXR1cm4gc3RyZXJyb3IoZXJyb3IpOworCX0KK30KKworc3RhdGljIGludCBkb19jb21tYW5k KGludCBjbWRfaWQsIHN0cnVjdCBrdm1pX21zZ19oZHIgKnJlcSwKKwkJICAgICAgc2l6ZV90IHJl cV9zaXplLCB2b2lkICpycGwsIHNpemVfdCBycGxfc2l6ZSkKK3sKKwlzZW5kX21lc3NhZ2UoY21k X2lkLCByZXEsIHJlcV9zaXplKTsKKwlyZXR1cm4gcmVjZWl2ZV9jbWRfcmVwbHkocmVxLCBycGws IHJwbF9zaXplKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9jbWRfaW52YWxpZCh2b2lkKQorewor CWludCBpbnZhbGlkX21zZ19pZCA9IDB4ZmZmZjsKKwlzdHJ1Y3Qga3ZtaV9tc2dfaGRyIHJlcTsK KwlpbnQgcjsKKworCXIgPSBkb19jb21tYW5kKGludmFsaWRfbXNnX2lkLCAmcmVxLCBzaXplb2Yo cmVxKSwgTlVMTCwgMCk7CisJVEVTVF9BU1NFUlQociA9PSAtS1ZNX0VOT1NZUywKKwkJIkludmFs aWQgY29tbWFuZCBkaWRuJ3QgZmFpbGVkIHdpdGggS1ZNX0VOT1NZUywgZXJyb3IgJWQgKCVzKVxu IiwKKwkJLXIsIGt2bV9zdHJlcnJvcigtcikpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0X2ludHJv c3BlY3Rpb24oc3RydWN0IGt2bV92bSAqdm0pCiB7CiAJc2V0dXBfc29ja2V0KCk7CiAJaG9va19p bnRyb3NwZWN0aW9uKHZtKTsKKworCXRlc3RfY21kX2ludmFsaWQoKTsKKwogCXVuaG9va19pbnRy b3NwZWN0aW9uKHZtKTsKIH0KIApkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9r dm1pLmMgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYwppbmRleCBiMWVhMzlmMzU0ODEu LjU0N2QzMzg4ZmY4YSAxMDA2NDQKLS0tIGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pLmMK KysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pLmMKQEAgLTksMTAgKzksNDkgQEAKICNp bmNsdWRlICJrdm1pX2ludC5oIgogCiAjZGVmaW5lIEtWTUlfTlVNX0NPTU1BTkRTIEtWTUlfTlVN X01FU1NBR0VTCisjZGVmaW5lIEtWTUlfTVNHX1NJWkVfQUxMT0MgKHNpemVvZihzdHJ1Y3Qga3Zt aV9tc2dfaGRyKSArIEtWTUlfTVNHX1NJWkUpCisKK3N0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAq bXNnX2NhY2hlOworCit2b2lkICprdm1pX21zZ19hbGxvYyh2b2lkKQoreworCXJldHVybiBrbWVt X2NhY2hlX3phbGxvYyhtc2dfY2FjaGUsIEdGUF9LRVJORUwpOworfQorCit2b2lkIGt2bWlfbXNn X2ZyZWUodm9pZCAqYWRkcikKK3sKKwlpZiAoYWRkcikKKwkJa21lbV9jYWNoZV9mcmVlKG1zZ19j YWNoZSwgYWRkcik7Cit9CisKK3N0YXRpYyB2b2lkIGt2bWlfY2FjaGVfZGVzdHJveSh2b2lkKQor eworCWttZW1fY2FjaGVfZGVzdHJveShtc2dfY2FjaGUpOworCW1zZ19jYWNoZSA9IE5VTEw7Cit9 CisKK3N0YXRpYyBpbnQga3ZtaV9jYWNoZV9jcmVhdGUodm9pZCkKK3sKKwltc2dfY2FjaGUgPSBr bWVtX2NhY2hlX2NyZWF0ZSgia3ZtaV9tc2ciLCBLVk1JX01TR19TSVpFX0FMTE9DLAorCQkJCSAg ICAgIDQwOTYsIFNMQUJfQUNDT1VOVCwgTlVMTCk7CisKKwlpZiAoIW1zZ19jYWNoZSkgeworCQlr dm1pX2NhY2hlX2Rlc3Ryb3koKTsKKworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK2Jvb2wga3ZtaV9pc19jb21tYW5kX2FsbG93ZWQoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9u ICprdm1pLCB1MTYgaWQpCit7CisJcmV0dXJuIGlkIDwgS1ZNSV9OVU1fQ09NTUFORFMgJiYgdGVz dF9iaXQoaWQsIGt2bWktPmNtZF9hbGxvd19tYXNrKTsKK30KIAogaW50IGt2bWlfaW5pdCh2b2lk KQogewotCXJldHVybiAwOworCXJldHVybiBrdm1pX2NhY2hlX2NyZWF0ZSgpOwogfQogCiBpbnQg a3ZtaV92ZXJzaW9uKHZvaWQpCkBAIC0yMiw2ICs2MSw3IEBAIGludCBrdm1pX3ZlcnNpb24odm9p ZCkKIAogdm9pZCBrdm1pX3VuaW5pdCh2b2lkKQogeworCWt2bWlfY2FjaGVfZGVzdHJveSgpOwog fQogCiBzdGF0aWMgdm9pZCBmcmVlX2t2bWkoc3RydWN0IGt2bSAqa3ZtKQpkaWZmIC0tZ2l0IGEv dmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oIGIvdmlydC9rdm0vaW50cm9zcGVjdGlv bi9rdm1pX2ludC5oCmluZGV4IGYwYThkNjUzZDc5Yi4uNWU0ZWFiZWVmYzViIDEwMDY0NAotLS0g YS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0vaW50cm9z cGVjdGlvbi9rdm1pX2ludC5oCkBAIC0yNiw0ICsyNiw5IEBAIHZvaWQga3ZtaV9zb2NrX3NodXRk b3duKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSk7CiB2b2lkIGt2bWlfc29ja19wdXQo c3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pKTsKIGJvb2wga3ZtaV9tc2dfcHJvY2Vzcyhz dHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkpOwogCisvKiBrdm1pLmMgKi8KK3ZvaWQgKmt2 bWlfbXNnX2FsbG9jKHZvaWQpOwordm9pZCBrdm1pX21zZ19mcmVlKHZvaWQgKmFkZHIpOworYm9v bCBrdm1pX2lzX2NvbW1hbmRfYWxsb3dlZChzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWks IHUxNiBpZCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9r dm1pX21zZy5jIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCmluZGV4IDNhZTUy YzYxZjg2MS4uNGU3YjU1ZWM3MDcxIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9u L2t2bWlfbXNnLmMKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCkBAIC0z Myw3ICszMywxNTQgQEAgdm9pZCBrdm1pX3NvY2tfc2h1dGRvd24oc3RydWN0IGt2bV9pbnRyb3Nw ZWN0aW9uICprdm1pKQogCWtlcm5lbF9zb2NrX3NodXRkb3duKGt2bWktPnNvY2ssIFNIVVRfUkRX Uik7CiB9CiAKK3N0YXRpYyBpbnQga3ZtaV9zb2NrX3JlYWQoc3RydWN0IGt2bV9pbnRyb3NwZWN0 aW9uICprdm1pLCB2b2lkICpidWYsCisJCQkgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBrdmVj IHZlYyA9IHsKKwkJLmlvdl9iYXNlID0gYnVmLAorCQkuaW92X2xlbiA9IHNpemUsCisJfTsKKwlz dHJ1Y3QgbXNnaGRyIG0gPSB7IH07CisJaW50IHJjOworCisJcmMgPSBrZXJuZWxfcmVjdm1zZyhr dm1pLT5zb2NrLCAmbSwgJnZlYywgMSwgc2l6ZSwgTVNHX1dBSVRBTEwpOworCisJaWYgKHVubGlr ZWx5KHJjICE9IHNpemUgJiYgcmMgPj0gMCkpCisJCXJjID0gLUVQSVBFOworCisJcmV0dXJuIHJj ID49IDAgPyAwIDogcmM7Cit9CisKK3N0YXRpYyBpbnQga3ZtaV9zb2NrX3dyaXRlKHN0cnVjdCBr dm1faW50cm9zcGVjdGlvbiAqa3ZtaSwgc3RydWN0IGt2ZWMgKnZlYywKKwkJCSAgIHNpemVfdCBu LCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgbXNnaGRyIG0gPSB7IH07CisJaW50IHJjOworCisJ cmMgPSBrZXJuZWxfc2VuZG1zZyhrdm1pLT5zb2NrLCAmbSwgdmVjLCBuLCBzaXplKTsKKworCWlm ICh1bmxpa2VseShyYyAhPSBzaXplICYmIHJjID49IDApKQorCQlyYyA9IC1FUElQRTsKKworCXJl dHVybiByYyA+PSAwID8gMCA6IHJjOworfQorCitzdGF0aWMgaW50IGt2bWlfbXNnX3JlcGx5KHN0 cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwKKwkJCSAgY29uc3Qgc3RydWN0IGt2bWlfbXNn X2hkciAqbXNnLCBpbnQgZXJyLAorCQkJICBjb25zdCB2b2lkICpycGwsIHNpemVfdCBycGxfc2l6 ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlIGVjOworCXN0cnVjdCBrdm1pX21zZ19oZHIg aDsKKwlzdHJ1Y3Qga3ZlYyB2ZWNbM10gPSB7CisJCXsgLmlvdl9iYXNlID0gJmgsIC5pb3ZfbGVu ID0gc2l6ZW9mKGgpIH0sCisJCXsgLmlvdl9iYXNlID0gJmVjLCAuaW92X2xlbiA9IHNpemVvZihl YykgfSwKKwkJeyAuaW92X2Jhc2UgPSAodm9pZCAqKXJwbCwgLmlvdl9sZW4gPSBycGxfc2l6ZSB9 LAorCX07CisJc2l6ZV90IHNpemUgPSBzaXplb2YoaCkgKyBzaXplb2YoZWMpICsgKGVyciA/IDAg OiBycGxfc2l6ZSk7CisJc2l6ZV90IG4gPSBBUlJBWV9TSVpFKHZlYykgLSAoZXJyID8gMSA6IDAp OworCisJbWVtc2V0KCZoLCAwLCBzaXplb2YoaCkpOworCWguaWQgPSBtc2ctPmlkOworCWguc2Vx ID0gbXNnLT5zZXE7CisJaC5zaXplID0gc2l6ZSAtIHNpemVvZihoKTsKKworCW1lbXNldCgmZWMs IDAsIHNpemVvZihlYykpOworCWVjLmVyciA9IGVycjsKKworCXJldHVybiBrdm1pX3NvY2tfd3Jp dGUoa3ZtaSwgdmVjLCBuLCBzaXplKTsKK30KKworc3RhdGljIGludCBrdm1pX21zZ192bV9yZXBs eShzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWksCisJCQkgICAgIGNvbnN0IHN0cnVjdCBr dm1pX21zZ19oZHIgKm1zZywKKwkJCSAgICAgaW50IGVyciwgY29uc3Qgdm9pZCAqcnBsLAorCQkJ ICAgICBzaXplX3QgcnBsX3NpemUpCit7CisJcmV0dXJuIGt2bWlfbXNnX3JlcGx5KGt2bWksIG1z ZywgZXJyLCBycGwsIHJwbF9zaXplKTsKK30KKworLyoKKyAqIFRoZXNlIGNvbW1hbmRzIGFyZSBl eGVjdXRlZCBieSB0aGUgcmVjZWl2aW5nIHRocmVhZC4KKyAqLworc3RhdGljIGludCgqY29uc3Qg bXNnX3ZtW10pKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqLAorCQkJICAgIGNvbnN0IHN0cnVj dCBrdm1pX21zZ19oZHIgKiwgY29uc3Qgdm9pZCAqKSA9IHsKK307CisKK3N0YXRpYyBib29sIGlz X3ZtX2NvbW1hbmQodTE2IGlkKQoreworCXJldHVybiBpZCA8IEFSUkFZX1NJWkUobXNnX3ZtKSAm JiAhIW1zZ192bVtpZF07Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICprdm1pX21z Z19yZWN2KHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSkKK3sKKwlzdHJ1Y3Qga3ZtaV9t c2dfaGRyICptc2c7CisJaW50IGVycjsKKworCW1zZyA9IGt2bWlfbXNnX2FsbG9jKCk7CisJaWYg KCFtc2cpCisJCWdvdG8gb3V0OworCisJZXJyID0ga3ZtaV9zb2NrX3JlYWQoa3ZtaSwgbXNnLCBz aXplb2YoKm1zZykpOworCWlmIChlcnIpCisJCWdvdG8gb3V0X2VycjsKKworCWlmIChtc2ctPnNp emUpIHsKKwkJaWYgKG1zZy0+c2l6ZSA+IEtWTUlfTVNHX1NJWkUpCisJCQlnb3RvIG91dF9lcnI7 CisKKwkJZXJyID0ga3ZtaV9zb2NrX3JlYWQoa3ZtaSwgbXNnICsgMSwgbXNnLT5zaXplKTsKKwkJ aWYgKGVycikKKwkJCWdvdG8gb3V0X2VycjsKKwl9CisKKwlyZXR1cm4gbXNnOworCitvdXRfZXJy OgorCWt2bWlfbXNnX2ZyZWUobXNnKTsKK291dDoKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IGludCBrdm1pX21zZ19kb192bV9jbWQoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLAor CQkJICAgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnKQoreworCXJldHVybiBtc2df dm1bbXNnLT5pZF0oa3ZtaSwgbXNnLCBtc2cgKyAxKTsKK30KKworc3RhdGljIGJvb2wgaXNfbWVz c2FnZV9hbGxvd2VkKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwgdTE2IGlkKQorewor CXJldHVybiBrdm1pX2lzX2NvbW1hbmRfYWxsb3dlZChrdm1pLCBpZCk7Cit9CisKK3N0YXRpYyBp bnQga3ZtaV9tc2dfdm1fcmVwbHlfZWMoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLAor CQkJCWNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywgaW50IGVjKQoreworCXJldHVybiBr dm1pX21zZ192bV9yZXBseShrdm1pLCBtc2csIGVjLCBOVUxMLCAwKTsKK30KKworc3RhdGljIGlu dCBrdm1pX21zZ19oYW5kbGVfdm1fY21kKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwK KwkJCQkgIHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZykKK3sKKwlpZiAoIWlzX21lc3NhZ2VfYWxs b3dlZChrdm1pLCBtc2ctPmlkKSkKKwkJcmV0dXJuIGt2bWlfbXNnX3ZtX3JlcGx5X2VjKGt2bWks IG1zZywgLUtWTV9FUEVSTSk7CisKKwlyZXR1cm4ga3ZtaV9tc2dfZG9fdm1fY21kKGt2bWksIG1z Zyk7Cit9CisKIGJvb2wga3ZtaV9tc2dfcHJvY2VzcyhzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24g Kmt2bWkpCiB7Ci0JcmV0dXJuIGZhbHNlOworCXN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZzsKKwlp bnQgZXJyID0gLTE7CisKKwltc2cgPSBrdm1pX21zZ19yZWN2KGt2bWkpOworCWlmICghbXNnKQor CQlnb3RvIG91dDsKKworCWlmIChpc192bV9jb21tYW5kKG1zZy0+aWQpKQorCQllcnIgPSBrdm1p X21zZ19oYW5kbGVfdm1fY21kKGt2bWksIG1zZyk7CisJZWxzZQorCQllcnIgPSBrdm1pX21zZ192 bV9yZXBseV9lYyhrdm1pLCBtc2csIC1LVk1fRU5PU1lTKTsKKworCWt2bWlfbXNnX2ZyZWUobXNn KTsKK291dDoKKwlyZXR1cm4gZXJyID09IDA7CiB9Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFs aXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91 bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==