From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74A3DC433FE for ; Wed, 6 Oct 2021 17:55:51 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3DE4761186 for ; Wed, 6 Oct 2021 17:55:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 3DE4761186 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bitdefender.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id E739484085; Wed, 6 Oct 2021 17:55:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1su2nR1EERhe; Wed, 6 Oct 2021 17:55:49 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 3EE4F83EE7; Wed, 6 Oct 2021 17:55:49 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 84F46C0023; Wed, 6 Oct 2021 17:55:48 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 3AC41C0011 for ; Wed, 6 Oct 2021 17:55:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id B824383BE4 for ; Wed, 6 Oct 2021 17:55:43 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q8L8eLsnHJTQ for ; Wed, 6 Oct 2021 17:55:42 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from mx01.bbu.dsd.mx.bitdefender.com (mx01.bbu.dsd.mx.bitdefender.com [91.199.104.161]) by smtp1.osuosl.org (Postfix) with ESMTPS id 688E983AB8 for ; Wed, 6 Oct 2021 17:55:42 +0000 (UTC) Received: from smtp.bitdefender.com (smtp01.buh.bitdefender.com [10.17.80.75]) by mx01.bbu.dsd.mx.bitdefender.com (Postfix) with ESMTPS id D3664307CAFA; Wed, 6 Oct 2021 20:31:09 +0300 (EEST) Received: from localhost (unknown [91.199.104.28]) by smtp.bitdefender.com (Postfix) with ESMTPSA id B66F5305FFA0; Wed, 6 Oct 2021 20:31:09 +0300 (EEST) X-Is-Junk-Enabled: fGZTSsP0qEJE2AIKtlSuFiRRwg9xyHmJ From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= To: kvm@vger.kernel.org Subject: [PATCH v12 39/77] KVM: introspection: add KVMI_VM_READ_PHYSICAL/KVMI_VM_WRITE_PHYSICAL Date: Wed, 6 Oct 2021 20:30:35 +0300 Message-Id: <20211006173113.26445-40-alazar@bitdefender.com> In-Reply-To: <20211006173113.26445-1-alazar@bitdefender.com> References: <20211006173113.26445-1-alazar@bitdefender.com> MIME-Version: 1.0 Cc: Tamas K Lengyel , Wanpeng Li , Sean Christopherson , Joerg Roedel , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Mathieu Tarral , Paolo Bonzini , =?UTF-8?q?Mihai=20Don=C8=9Bu?= , Jim Mattson X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlc2UgY29tbWFu ZHMgYWxsb3cgdGhlIGludHJvc3BlY3Rpb24gdG9vbCB0byByZWFkL3dyaXRlIGZyb20vdG8KdGhl IGd1ZXN0IG1lbW9yeS4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRl ZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRk ZWZlbmRlci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRl ZmVuZGVyLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0ICAgICAgICAg ICAgICAgfCAgNjggKysrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAg ICAgICAgICAgICAgIHwgIDE3ICsrKwogLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQv a3ZtaV90ZXN0LmMgIHwgMTI0ICsrKysrKysrKysrKysrKysrKwogdmlydC9rdm0vaW50cm9zcGVj dGlvbi9rdm1pLmMgICAgICAgICAgICAgICAgIHwgIDk4ICsrKysrKysrKysrKysrCiB2aXJ0L2t2 bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50LmggICAgICAgICAgICAgfCAgIDcgKwogdmlydC9rdm0v aW50cm9zcGVjdGlvbi9rdm1pX21zZy5jICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysKIDYgZmls ZXMgY2hhbmdlZCwgMzU4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L3ZpcnQva3ZtL2t2bWkucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9rdm1pLnJzdAppbmRl eCBlY2Y4MDlmNDA3NzEuLmM0MjRhY2YwMTc4NCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92 aXJ0L2t2bS9rdm1pLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0CkBA IC0zNjUsNiArMzY1LDc0IEBAIHRoZSBmb2xsb3dpbmcgZXZlbnRzOjoKICogLUtWTV9FSU5WQUwg LSB0aGUgZXZlbnQgSUQgaXMgdW5rbm93biAodXNlICpLVk1JX1ZNX0NIRUNLX0VWRU5UKiBmaXJz dCkKICogLUtWTV9FUEVSTSAtIHRoZSBhY2Nlc3MgaXMgZGlzYWxsb3dlZCAodXNlICpLVk1JX1ZN X0NIRUNLX0VWRU5UKiBmaXJzdCkKIAorNi4gS1ZNSV9WTV9SRUFEX1BIWVNJQ0FMCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IGFsbAorOlZlcnNpb25zOiA+PSAx Cis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX3ZtX3JlYWRfcGh5c2ljYWwgewor CQlfX3U2NCBncGE7CisJCV9fdTE2IHNpemU7CisJCV9fdTE2IHBhZGRpbmcxOworCQlfX3UzMiBw YWRkaW5nMjsKKwl9OworCis6UmV0dXJuczoKKworOjoKKworCXN0cnVjdCBrdm1pX2Vycm9yX2Nv ZGU7CisJX191OCBkYXRhWzBdOworCitSZWFkcyBmcm9tIHRoZSBndWVzdCBtZW1vcnkuCisKK0N1 cnJlbnRseSwgdGhlIHNpemUgbXVzdCBiZSBub24temVybyBhbmQgdGhlIHJlYWQgbXVzdCBiZSBy ZXN0cmljdGVkIHRvCitvbmUgcGFnZSAob2Zmc2V0ICsgc2l6ZSA8PSBQQUdFX1NJWkUpLgorCis6 RXJyb3JzOgorCisqIC1LVk1fRU5PRU5UIC0gdGhlIGd1ZXN0IHBhZ2UgZG9lc24ndCBleGlzdHMK KyogLUtWTV9FSU5WQUwgLSB0aGUgc3BlY2lmaWVkIGdwYS9zaXplIHBhaXIgaXMgaW52YWxpZAor KiAtS1ZNX0VJTlZBTCAtIHRoZSBwYWRkaW5nIGlzIG5vdCB6ZXJvCisKKzcuIEtWTUlfVk1fV1JJ VEVfUEhZU0lDQUwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6 IGFsbAorOlZlcnNpb25zOiA+PSAxCis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1p X3ZtX3dyaXRlX3BoeXNpY2FsIHsKKwkJX191NjQgZ3BhOworCQlfX3UxNiBzaXplOworCQlfX3Ux NiBwYWRkaW5nMTsKKwkJX191MzIgcGFkZGluZzI7CisJCV9fdTggIGRhdGFbMF07CisJfTsKKwor OlJldHVybnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlCisKK1dyaXRlcyBpbnRv IHRoZSBndWVzdCBtZW1vcnkuCisKK0N1cnJlbnRseSwgdGhlIHNpemUgbXVzdCBiZSBub24temVy byBhbmQgdGhlIHdyaXRlIG11c3QgYmUgcmVzdHJpY3RlZCB0bworb25lIHBhZ2UgKG9mZnNldCAr IHNpemUgPD0gUEFHRV9TSVpFKS4KKworOkVycm9yczoKKworKiAtS1ZNX0VOT0VOVCAtIHRoZSBn dWVzdCBwYWdlIGRvZXNuJ3QgZXhpc3RzCisqIC1LVk1fRUlOVkFMIC0gdGhlIHNwZWNpZmllZCBn cGEvc2l6ZSBwYWlyIGlzIGludmFsaWQKKyogLUtWTV9FSU5WQUwgLSB0aGUgcGFkZGluZyBpcyBu b3QgemVybworCiBFdmVudHMKID09PT09PQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGlu dXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRleCA5YTEwZWYyY2Q4OTAu LjA0OGFmYWQwMWJlNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAorKysg Yi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC0yNCw2ICsyNCw4IEBAIGVudW0gewogCUtW TUlfVk1fQ0hFQ0tfRVZFTlQgICAgPSBLVk1JX1ZNX01FU1NBR0VfSUQoMyksCiAJS1ZNSV9WTV9H RVRfSU5GTyAgICAgICA9IEtWTUlfVk1fTUVTU0FHRV9JRCg0KSwKIAlLVk1JX1ZNX0NPTlRST0xf RVZFTlRTID0gS1ZNSV9WTV9NRVNTQUdFX0lEKDUpLAorCUtWTUlfVk1fUkVBRF9QSFlTSUNBTCAg PSBLVk1JX1ZNX01FU1NBR0VfSUQoNiksCisJS1ZNSV9WTV9XUklURV9QSFlTSUNBTCA9IEtWTUlf Vk1fTUVTU0FHRV9JRCg3KSwKIAogCUtWTUlfTkVYVF9WTV9NRVNTQUdFCiB9OwpAQCAtOTAsNCAr OTIsMTkgQEAgc3RydWN0IGt2bWlfdm1fY29udHJvbF9ldmVudHMgewogCV9fdTMyIHBhZGRpbmcy OwogfTsKIAorc3RydWN0IGt2bWlfdm1fcmVhZF9waHlzaWNhbCB7CisJX191NjQgZ3BhOworCV9f dTE2IHNpemU7CisJX191MTYgcGFkZGluZzE7CisJX191MzIgcGFkZGluZzI7Cit9OworCitzdHJ1 Y3Qga3ZtaV92bV93cml0ZV9waHlzaWNhbCB7CisJX191NjQgZ3BhOworCV9fdTE2IHNpemU7CisJ X191MTYgcGFkZGluZzE7CisJX191MzIgcGFkZGluZzI7CisJX191OCAgZGF0YVswXTsKK307CisK ICNlbmRpZiAvKiBfVUFQSV9fTElOVVhfS1ZNSV9IICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYwppbmRleCBmNWZkYjA5YjliZTYuLjI4ZGQ2NDE0 YTdlOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1p X3Rlc3QuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVz dC5jCkBAIC04LDYgKzgsNyBAQAogI2RlZmluZSBfR05VX1NPVVJDRSAvKiBmb3IgcHJvZ3JhbV9p bnZvY2F0aW9uX3Nob3J0X25hbWUgKi8KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRl IDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8dGltZS5oPgogCiAjaW5jbHVkZSAidGVzdF91dGls LmgiCiAKQEAgLTI0LDYgKzI1LDEyIEBAIHN0YXRpYyBpbnQgc29ja2V0X3BhaXJbMl07CiAjZGVm aW5lIEt2bV9zb2NrZXQgICAgICAgc29ja2V0X3BhaXJbMF0KICNkZWZpbmUgVXNlcnNwYWNlX3Nv Y2tldCBzb2NrZXRfcGFpclsxXQogCitzdGF0aWMgdm1fdmFkZHJfdCB0ZXN0X2d2YTsKK3N0YXRp YyB2b2lkICp0ZXN0X2h2YTsKK3N0YXRpYyB2bV9wYWRkcl90IHRlc3RfZ3BhOworCitzdGF0aWMg aW50IHBhZ2Vfc2l6ZTsKKwogdm9pZCBzZXR1cF9zb2NrZXQodm9pZCkKIHsKIAlpbnQgcjsKQEAg LTQyNyw4ICs0MzQsMTEyIEBAIHN0YXRpYyB2b2lkIHRlc3RfY21kX3ZtX2NvbnRyb2xfZXZlbnRz KHN0cnVjdCBrdm1fdm0gKnZtKQogCWFsbG93X2V2ZW50KHZtLCBpZCk7CiB9CiAKK3N0YXRpYyB2 b2lkIGNtZF92bV93cml0ZV9wYWdlKF9fdTY0IGdwYSwgX191NjQgc2l6ZSwgdm9pZCAqcCwKKwkJ CSAgICAgIGludCBleHBlY3RlZF9lcnIpCit7CisJc3RydWN0IGt2bWlfdm1fd3JpdGVfcGh5c2lj YWwgKmNtZDsKKwlzdHJ1Y3Qga3ZtaV9tc2dfaGRyICpyZXE7CisJc2l6ZV90IHJlcV9zaXplOwor CisJcmVxX3NpemUgPSBzaXplb2YoKnJlcSkgKyBzaXplb2YoKmNtZCkgKyBzaXplOworCXJlcSA9 IGNhbGxvYygxLCByZXFfc2l6ZSk7CisKKwljbWQgPSAoc3RydWN0IGt2bWlfdm1fd3JpdGVfcGh5 c2ljYWwgKikocmVxICsgMSk7CisJY21kLT5ncGEgPSBncGE7CisJY21kLT5zaXplID0gc2l6ZTsK KworCW1lbWNweShjbWQgKyAxLCBwLCBzaXplKTsKKworCXRlc3Rfdm1fY29tbWFuZChLVk1JX1ZN X1dSSVRFX1BIWVNJQ0FMLCByZXEsIHJlcV9zaXplLCBOVUxMLCAwLAorCQkJZXhwZWN0ZWRfZXJy KTsKKworCWZyZWUocmVxKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfZ3Vlc3RfcGFnZShfX3U2 NCBncGEsIHZvaWQgKnApCit7CisJY21kX3ZtX3dyaXRlX3BhZ2UoZ3BhLCBwYWdlX3NpemUsIHAs IDApOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV93aXRoX2ludmFsaWRfYXJndW1lbnRzKF9fdTY0 IGdwYSwgX191NjQgc2l6ZSwgdm9pZCAqcCkKK3sKKwljbWRfdm1fd3JpdGVfcGFnZShncGEsIHNp emUsIHAsIC1LVk1fRUlOVkFMKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfaW52YWxpZF9ndWVz dF9wYWdlKHN0cnVjdCBrdm1fdm0gKnZtLCB2b2lkICpwKQoreworCV9fdTY0IGdwYSA9IHZtLT5t YXhfZ2ZuIDw8IHZtLT5wYWdlX3NoaWZ0OworCV9fdTY0IHNpemUgPSAxOworCisJY21kX3ZtX3dy aXRlX3BhZ2UoZ3BhLCBzaXplLCBwLCAtS1ZNX0VOT0VOVCk7Cit9CisKK3N0YXRpYyB2b2lkIGNt ZF92bV9yZWFkX3BhZ2UoX191NjQgZ3BhLCBfX3U2NCBzaXplLCB2b2lkICpwLAorCQkJICAgICBp bnQgZXhwZWN0ZWRfZXJyKQoreworCXN0cnVjdCB7CisJCXN0cnVjdCBrdm1pX21zZ19oZHIgaGRy OworCQlzdHJ1Y3Qga3ZtaV92bV9yZWFkX3BoeXNpY2FsIGNtZDsKKwl9IHJlcSA9IHsgfTsKKwor CXJlcS5jbWQuZ3BhID0gZ3BhOworCXJlcS5jbWQuc2l6ZSA9IHNpemU7CisKKwl0ZXN0X3ZtX2Nv bW1hbmQoS1ZNSV9WTV9SRUFEX1BIWVNJQ0FMLCAmcmVxLmhkciwgc2l6ZW9mKHJlcSksIHAsIHNp emUsCisJCQlleHBlY3RlZF9lcnIpOworfQorCitzdGF0aWMgdm9pZCByZWFkX2d1ZXN0X3BhZ2Uo X191NjQgZ3BhLCB2b2lkICpwKQoreworCWNtZF92bV9yZWFkX3BhZ2UoZ3BhLCBwYWdlX3NpemUs IHAsIDApOworfQorCitzdGF0aWMgdm9pZCByZWFkX3dpdGhfaW52YWxpZF9hcmd1bWVudHMoX191 NjQgZ3BhLCBfX3U2NCBzaXplLCB2b2lkICpwKQoreworCWNtZF92bV9yZWFkX3BhZ2UoZ3BhLCBz aXplLCBwLCAtS1ZNX0VJTlZBTCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRfaW52YWxpZF9ndWVz dF9wYWdlKHN0cnVjdCBrdm1fdm0gKnZtKQoreworCV9fdTY0IGdwYSA9IHZtLT5tYXhfZ2ZuIDw8 IHZtLT5wYWdlX3NoaWZ0OworCV9fdTY0IHNpemUgPSAxOworCisJY21kX3ZtX3JlYWRfcGFnZShn cGEsIHNpemUsIE5VTEwsIC1LVk1fRU5PRU5UKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9tZW1v cnlfYWNjZXNzKHN0cnVjdCBrdm1fdm0gKnZtKQoreworCXZvaWQgKnB3LCAqcHI7CisKKwlwdyA9 IG1hbGxvYyhwYWdlX3NpemUpOworCVRFU1RfQVNTRVJUKHB3LCAiSW5zdWZmaWNpZW50IE1lbW9y eVxuIik7CisKKwltZW1zZXQocHcsIDEsIHBhZ2Vfc2l6ZSk7CisKKwl3cml0ZV9ndWVzdF9wYWdl KHRlc3RfZ3BhLCBwdyk7CisJVEVTVF9BU1NFUlQobWVtY21wKHB3LCB0ZXN0X2h2YSwgcGFnZV9z aXplKSA9PSAwLAorCQkiV3JpdGUgcGFnZSB0ZXN0IGZhaWxlZCIpOworCisJcHIgPSBtYWxsb2Mo cGFnZV9zaXplKTsKKwlURVNUX0FTU0VSVChwciwgIkluc3VmZmljaWVudCBNZW1vcnlcbiIpOwor CisJcmVhZF9ndWVzdF9wYWdlKHRlc3RfZ3BhLCBwcik7CisJVEVTVF9BU1NFUlQobWVtY21wKHB3 LCBwciwgcGFnZV9zaXplKSA9PSAwLAorCQkiUmVhZCBwYWdlIHRlc3QgZmFpbGVkIik7CisKKwly ZWFkX3dpdGhfaW52YWxpZF9hcmd1bWVudHModGVzdF9ncGEsIDAsIHByKTsKKwl3cml0ZV93aXRo X2ludmFsaWRfYXJndW1lbnRzKHRlc3RfZ3BhLCAwLCBwdyk7CisJd3JpdGVfaW52YWxpZF9ndWVz dF9wYWdlKHZtLCBwdyk7CisKKwlmcmVlKHB3KTsKKwlmcmVlKHByKTsKKworCXJlYWRfaW52YWxp ZF9ndWVzdF9wYWdlKHZtKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdF9pbnRyb3NwZWN0aW9uKHN0 cnVjdCBrdm1fdm0gKnZtKQogeworCXNyYW5kb20odGltZSgwKSk7CiAJc2V0dXBfc29ja2V0KCk7 CiAJaG9va19pbnRyb3NwZWN0aW9uKHZtKTsKIApAQCAtNDM5LDEwICs1NTAsMjAgQEAgc3RhdGlj IHZvaWQgdGVzdF9pbnRyb3NwZWN0aW9uKHN0cnVjdCBrdm1fdm0gKnZtKQogCXRlc3RfY21kX3Zt X2dldF9pbmZvKCk7CiAJdGVzdF9ldmVudF91bmhvb2sodm0pOwogCXRlc3RfY21kX3ZtX2NvbnRy b2xfZXZlbnRzKHZtKTsKKwl0ZXN0X21lbW9yeV9hY2Nlc3Modm0pOwogCiAJdW5ob29rX2ludHJv c3BlY3Rpb24odm0pOwogfQogCitzdGF0aWMgdm9pZCBzZXR1cF90ZXN0X3BhZ2VzKHN0cnVjdCBr dm1fdm0gKnZtKQoreworCXRlc3RfZ3ZhID0gdm1fdmFkZHJfYWxsb2NfcGFnZSh2bSk7CisJc3lu Y19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHRlc3RfZ3ZhKTsKKworCXRlc3RfaHZhID0gYWRkcl9ndmEy aHZhKHZtLCB0ZXN0X2d2YSk7CisJdGVzdF9ncGEgPSBhZGRyX2d2YTJncGEodm0sIHRlc3RfZ3Zh KTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlzdHJ1Y3Qga3Zt X3ZtICp2bTsKQEAgLTQ1NSw2ICs1NzYsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCXZtID0gdm1fY3JlYXRlX2RlZmF1bHQoVkNQVV9JRCwgMCwgTlVMTCk7CiAJdmNwdV9z ZXRfY3B1aWQodm0sIFZDUFVfSUQsIGt2bV9nZXRfc3VwcG9ydGVkX2NwdWlkKCkpOwogCisJcGFn ZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKKwlzZXR1cF90ZXN0X3BhZ2VzKHZtKTsKKwogCXRlc3Rf aW50cm9zcGVjdGlvbih2bSk7CiAKIAlrdm1fdm1fZnJlZSh2bSk7CmRpZmYgLS1naXQgYS92aXJ0 L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaS5j CmluZGV4IDZhNTdkNDViNjZlYy4uMjA3ZGFiYjhiMDQwIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9p bnRyb3NwZWN0aW9uL2t2bWkuYworKysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYwpA QCAtNSw3ICs1LDkgQEAKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEJpdGRlZmVuZGVyIFMu Ui5MLgogICoKICAqLworI2luY2x1ZGUgPGxpbnV4L21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8 bGludXgva3RocmVhZC5oPgorI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4KICNpbmNsdWRlICJr dm1pX2ludC5oIgogCiAjZGVmaW5lIEtWTUlfTlVNX0NPTU1BTkRTIF9fY21wKChpbnQpS1ZNSV9O RVhUX1ZNX01FU1NBR0UsIFwKQEAgLTQ1MywzICs0NTUsOTkgQEAgaW50IGt2bWlfY21kX3ZtX2Nv bnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwKIAogCXJldHVybiAw OwogfQorCitzdGF0aWMgbG9uZworZ2V0X3VzZXJfcGFnZXNfcmVtb3RlX3VubG9ja2VkKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAorCQkJCXVuc2lnbmVkIGxvbmcg bnJfcGFnZXMsIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsCisJCQkJc3RydWN0IHBhZ2UgKipwYWdl cykKK3sKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzID0gTlVMTDsKKwlpbnQgbG9ja2Vk ID0gMTsKKwlsb25nIHI7CisKKwltbWFwX3JlYWRfbG9jayhtbSk7CisJciA9IGdldF91c2VyX3Bh Z2VzX3JlbW90ZShtbSwgc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsCisJCQkJICBwYWdlcywg dm1hcywgJmxvY2tlZCk7CisJaWYgKGxvY2tlZCkKKwkJbW1hcF9yZWFkX3VubG9jayhtbSk7CisK KwlyZXR1cm4gcjsKK30KKworc3RhdGljIHZvaWQgKmdldF9wYWdlX3B0cihzdHJ1Y3Qga3ZtICpr dm0sIGdwYV90IGdwYSwgc3RydWN0IHBhZ2UgKipwYWdlLAorCQkJICBib29sIHdyaXRlLCBpbnQg KnNyY3VfaWR4KQoreworCXVuc2lnbmVkIGludCBmbGFncyA9IHdyaXRlID8gRk9MTF9XUklURSA6 IDA7CisJdW5zaWduZWQgbG9uZyBodmE7CisKKwkqcGFnZSA9IE5VTEw7CisKKwkqc3JjdV9pZHgg PSBzcmN1X3JlYWRfbG9jaygma3ZtLT5zcmN1KTsKKwlodmEgPSBnZm5fdG9faHZhKGt2bSwgZ3Bh X3RvX2dmbihncGEpKTsKKworCWlmIChrdm1faXNfZXJyb3JfaHZhKGh2YSkpCisJCWdvdG8gb3V0 X2VycjsKKworCWlmIChnZXRfdXNlcl9wYWdlc19yZW1vdGVfdW5sb2NrZWQoa3ZtLT5tbSwgaHZh LCAxLCBmbGFncywgcGFnZSkgIT0gMSkKKwkJZ290byBvdXRfZXJyOworCisJcmV0dXJuIHdyaXRl ID8ga21hcF9hdG9taWMoKnBhZ2UpIDoga21hcCgqcGFnZSk7CitvdXRfZXJyOgorCXNyY3VfcmVh ZF91bmxvY2soJmt2bS0+c3JjdSwgKnNyY3VfaWR4KTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3Rh dGljIHZvaWQgcHV0X3BhZ2VfcHRyKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCAqcHRyLCBzdHJ1Y3Qg cGFnZSAqcGFnZSwKKwkJCSBib29sIHdyaXRlLCBpbnQgc3JjdV9pZHgpCit7CisJaWYgKHdyaXRl KQorCQlrdW5tYXBfYXRvbWljKHB0cik7CisJZWxzZQorCQlrdW5tYXAocHRyKTsKKworCXB1dF9w YWdlKHBhZ2UpOworCisJc3JjdV9yZWFkX3VubG9jaygma3ZtLT5zcmN1LCBzcmN1X2lkeCk7Cit9 CisKK2ludCBrdm1pX2NtZF9yZWFkX3BoeXNpY2FsKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdwYSwg c2l6ZV90IHNpemUsCisJCQkgICBpbnQgKCpzZW5kKShzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24g KiwKKwkJCQkJY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqLAorCQkJCQlpbnQgZXJyLCBjb25z dCB2b2lkICpidWYsIHNpemVfdCksCisJCQkgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICpj dHgpCit7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJdm9pZCAqcHRyX3BhZ2U7CisJaW50IHNyY3Vf aWR4OworCWludCBlcnI7CisKKwlwdHJfcGFnZSA9IGdldF9wYWdlX3B0cihrdm0sIGdwYSwgJnBh Z2UsIGZhbHNlLCAmc3JjdV9pZHgpOworCWlmICghcHRyX3BhZ2UpIHsKKwkJZXJyID0gc2VuZChL Vk1JKGt2bSksIGN0eCwgLUtWTV9FTk9FTlQsIE5VTEwsIDApOworCX0gZWxzZSB7CisJCWVyciA9 IHNlbmQoS1ZNSShrdm0pLCBjdHgsIDAsCisJCQkgICBwdHJfcGFnZSArIChncGEgJiB+UEFHRV9N QVNLKSwgc2l6ZSk7CisKKwkJcHV0X3BhZ2VfcHRyKGt2bSwgcHRyX3BhZ2UsIHBhZ2UsIGZhbHNl LCBzcmN1X2lkeCk7CisJfQorCisJcmV0dXJuIGVycjsKK30KKworaW50IGt2bWlfY21kX3dyaXRl X3BoeXNpY2FsKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdwYSwgc2l6ZV90IHNpemUsCisJCQkgICAg Y29uc3Qgdm9pZCAqYnVmKQoreworCWludCBlYyA9IC1LVk1fRU5PRU5UOworCXN0cnVjdCBwYWdl ICpwYWdlOworCWludCBzcmN1X2lkeDsKKwl2b2lkICpwdHI7CisKKwlwdHIgPSBnZXRfcGFnZV9w dHIoa3ZtLCBncGEsICZwYWdlLCB0cnVlLCAmc3JjdV9pZHgpOworCWlmIChwdHIpIHsKKwkJbWVt Y3B5KHB0ciArIChncGEgJiB+UEFHRV9NQVNLKSwgYnVmLCBzaXplKTsKKwkJcHV0X3BhZ2VfcHRy KGt2bSwgcHRyLCBwYWdlLCB0cnVlLCBzcmN1X2lkeCk7CisJCWVjID0gMDsKKwl9CisKKwlyZXR1 cm4gZWM7Cit9CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50Lmgg Yi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50LmgKaW5kZXggOTg3NTEzZDZjMWE3Li5i N2M4NzMwZTdlNmQgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQu aAorKysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50LmgKQEAgLTI5LDYgKzI5LDEz IEBAIGJvb2wga3ZtaV9pc19rbm93bl9ldmVudCh1MTYgaWQpOwogYm9vbCBrdm1pX2lzX2tub3du X3ZtX2V2ZW50KHUxNiBpZCk7CiBpbnQga3ZtaV9jbWRfdm1fY29udHJvbF9ldmVudHMoc3RydWN0 IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLAogCQkJICAgICAgIHUxNiBldmVudF9pZCwgYm9vbCBl bmFibGUpOworaW50IGt2bWlfY21kX3JlYWRfcGh5c2ljYWwoc3RydWN0IGt2bSAqa3ZtLCB1NjQg Z3BhLCBzaXplX3Qgc2l6ZSwKKwkJCSAgIGludCAoKnNlbmQpKHN0cnVjdCBrdm1faW50cm9zcGVj dGlvbiAqLAorCQkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyKiwKKwkJCQkJaW50IGVyciwg Y29uc3Qgdm9pZCAqYnVmLCBzaXplX3QpLAorCQkJICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hk ciAqY3R4KTsKK2ludCBrdm1pX2NtZF93cml0ZV9waHlzaWNhbChzdHJ1Y3Qga3ZtICprdm0sIHU2 NCBncGEsIHNpemVfdCBzaXplLAorCQkJICAgIGNvbnN0IHZvaWQgKmJ1Zik7CiAKIC8qIGFyY2gg Ki8KIHZvaWQga3ZtaV9hcmNoX2luaXRfdmNwdV9ldmVudHNfbWFzayh1bnNpZ25lZCBsb25nICpz dXBwb3J0ZWQpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5j IGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCmluZGV4IGIyYTVkZDNkMjE5YS4u Njk3YzMwN2VhNzQ1IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNn LmMKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCkBAIC0xODIsNiArMTgy LDQ4IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3ZtX2NvbnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1faW50 cm9zcGVjdGlvbiAqa3ZtaSwKIAlyZXR1cm4ga3ZtaV9tc2dfdm1fcmVwbHkoa3ZtaSwgbXNnLCBl YywgTlVMTCwgMCk7CiB9CiAKK3N0YXRpYyBib29sIGludmFsaWRfcGFnZV9hY2Nlc3ModTY0IGdw YSwgdTY0IHNpemUpCit7CisJdTY0IG9mZiA9IGdwYSAmIH5QQUdFX01BU0s7CisKKwlyZXR1cm4g KHNpemUgPT0gMCB8fCBzaXplID4gUEFHRV9TSVpFIHx8IG9mZiArIHNpemUgPiBQQUdFX1NJWkUp OworfQorCitzdGF0aWMgaW50IGhhbmRsZV92bV9yZWFkX3BoeXNpY2FsKHN0cnVjdCBrdm1faW50 cm9zcGVjdGlvbiAqa3ZtaSwKKwkJCQkgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2cs CisJCQkJICAgY29uc3Qgdm9pZCAqX3JlcSkKK3sKKwljb25zdCBzdHJ1Y3Qga3ZtaV92bV9yZWFk X3BoeXNpY2FsICpyZXEgPSBfcmVxOworCisJaWYgKGludmFsaWRfcGFnZV9hY2Nlc3MocmVxLT5n cGEsIHJlcS0+c2l6ZSkgfHwKKwkgICAgcmVxLT5wYWRkaW5nMSB8fCByZXEtPnBhZGRpbmcyKQor CQlyZXR1cm4ga3ZtaV9tc2dfdm1fcmVwbHkoa3ZtaSwgbXNnLCAtS1ZNX0VJTlZBTCwgTlVMTCwg MCk7CisKKwlyZXR1cm4ga3ZtaV9jbWRfcmVhZF9waHlzaWNhbChrdm1pLT5rdm0sIHJlcS0+Z3Bh LCByZXEtPnNpemUsCisJCQkJICAgICAga3ZtaV9tc2dfdm1fcmVwbHksIG1zZyk7Cit9CisKK3N0 YXRpYyBpbnQgaGFuZGxlX3ZtX3dyaXRlX3BoeXNpY2FsKHN0cnVjdCBrdm1faW50cm9zcGVjdGlv biAqa3ZtaSwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCSAg ICBjb25zdCB2b2lkICpfcmVxKQoreworCWNvbnN0IHN0cnVjdCBrdm1pX3ZtX3dyaXRlX3BoeXNp Y2FsICpyZXEgPSBfcmVxOworCWludCBlYzsKKworCWlmIChzdHJ1Y3Rfc2l6ZShyZXEsIGRhdGEs IHJlcS0+c2l6ZSkgPiBtc2ctPnNpemUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGludmFs aWRfcGFnZV9hY2Nlc3MocmVxLT5ncGEsIHJlcS0+c2l6ZSkpCisJCWVjID0gLUtWTV9FSU5WQUw7 CisJZWxzZSBpZiAocmVxLT5wYWRkaW5nMSB8fCByZXEtPnBhZGRpbmcyKQorCQllYyA9IC1LVk1f RUlOVkFMOworCWVsc2UKKwkJZWMgPSBrdm1pX2NtZF93cml0ZV9waHlzaWNhbChrdm1pLT5rdm0s IHJlcS0+Z3BhLAorCQkJCQkgICAgIHJlcS0+c2l6ZSwgcmVxLT5kYXRhKTsKKworCXJldHVybiBr dm1pX21zZ192bV9yZXBseShrdm1pLCBtc2csIGVjLCBOVUxMLCAwKTsKK30KKwogLyoKICAqIFRo ZXNlIGNvbW1hbmRzIGFyZSBleGVjdXRlZCBieSB0aGUgcmVjZWl2aW5nIHRocmVhZC4KICAqLwpA QCAtMTkxLDYgKzIzMyw4IEBAIHN0YXRpYyBjb25zdCBrdm1pX3ZtX21zZ19mY3QgbXNnX3ZtW10g PSB7CiAJW0tWTUlfVk1fQ0hFQ0tfRVZFTlRdICAgID0gaGFuZGxlX3ZtX2NoZWNrX2V2ZW50LAog CVtLVk1JX1ZNX0NPTlRST0xfRVZFTlRTXSA9IGhhbmRsZV92bV9jb250cm9sX2V2ZW50cywKIAlb S1ZNSV9WTV9HRVRfSU5GT10gICAgICAgPSBoYW5kbGVfdm1fZ2V0X2luZm8sCisJW0tWTUlfVk1f UkVBRF9QSFlTSUNBTF0gID0gaGFuZGxlX3ZtX3JlYWRfcGh5c2ljYWwsCisJW0tWTUlfVk1fV1JJ VEVfUEhZU0lDQUxdID0gaGFuZGxlX3ZtX3dyaXRlX3BoeXNpY2FsLAogfTsKIAogc3RhdGljIGt2 bWlfdm1fbXNnX2ZjdCBnZXRfdm1fbXNnX2hhbmRsZXIodTE2IGlkKQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxp c3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0 cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=