From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 27/92] kvm: introspection: use page track Date: Fri, 9 Aug 2019 18:59:42 +0300 Message-ID: <20190809160047.8319-28-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 , Marian Rotariu , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKRnJvbSBwcmVyZWFk LCBwcmV3cml0ZSBhbmQgcHJlZXhlYyBjYWxsYmFja3Mgd2Ugd2lsbCBzZW5kIHRoZQpLVk1JX0VW RU5UX1BGIGV2ZW50cyBjYXVzZWQgYnkgYWNjZXNzIHJpZ2h0cyBlbmZvcmNlZCBieSB0aGUgaW50 cm9zcGVjdGlvbgp0b29sLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0 ZGVmZW5kZXIuY29tPgpDby1kZXZlbG9wZWQtYnk6IE5pY3XImW9yIEPDrsibdSA8bmNpdHVAYml0 ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBOaWN1yJlvciBDw67Im3UgPG5jaXR1QGJpdGRl ZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBNYXJpYW4gUm90YXJpdSA8bWFyaWFuLmMucm90 YXJpdUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hcmlhbiBSb3Rhcml1IDxtYXJpYW4uYy5y b3Rhcml1QGdtYWlsLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXph ckBiaXRkZWZlbmRlci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFy QGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaCB8 ICAxMiArKwogYXJjaC94ODYva3ZtL2t2bWkuYyAgICAgICAgICAgICAgfCAgNDUgKysrKysKIGlu Y2x1ZGUvdWFwaS9saW51eC9rdm1pLmggICAgICAgIHwgICA0ICsKIHZpcnQva3ZtL2t2bWkuYyAg ICAgICAgICAgICAgICAgIHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHZp cnQva3ZtL2t2bWlfaW50LmggICAgICAgICAgICAgIHwgIDIxICsrKwogNSBmaWxlcyBjaGFuZ2Vk LCAzNzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5j bHVkZS9hc20va3ZtaV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhYjZkZDcxYTBjMgotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCkBAIC0wLDAg KzEsMTIgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisjaWZuZGVm IF9BU01fWDg2X0tWTUlfSE9TVF9ICisjZGVmaW5lIF9BU01fWDg2X0tWTUlfSE9TVF9ICisKKyNp bmNsdWRlIDxhc20va3ZtX2hvc3QuaD4KKyNpbmNsdWRlIDxhc20va3ZtX3BhZ2VfdHJhY2suaD4K Kworc3RydWN0IGt2bWlfYXJjaF9tZW1fYWNjZXNzIHsKKwl1bnNpZ25lZCBsb25nIGFjdGl2ZVtL Vk1fUEFHRV9UUkFDS19NQVhdW0JJVFNfVE9fTE9OR1MoS1ZNX01FTV9TTE9UU19OVU0pXTsKK307 CisKKyNlbmRpZiAvKiBfQVNNX1g4Nl9LVk1JX0hPU1RfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYva3ZtL2t2bWkuYyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKaW5kZXggOTdjNzJjZGM2ZmIwLi5k N2I5MjAxNTgyYjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1pLmMKKysrIGIvYXJjaC94 ODYva3ZtL2t2bWkuYwpAQCAtOTEsNiArOTEsMTIgQEAgdm9pZCBrdm1pX2FyY2hfc2V0dXBfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtaV9ldmVudCAqZXYpCiAJa3ZtaV9n ZXRfbXNycyh2Y3B1LCBldmVudCk7CiB9CiAKK2Jvb2wga3ZtaV9hcmNoX3BmX2V2ZW50KHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJCQl1OCBhY2Nlc3MpCit7 CisJcmV0dXJuIEtWTUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOyAvKiBUT0RPICovCit9CisKIGlu dCBrdm1pX2FyY2hfY21kX2dldF92Y3B1X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJ CXN0cnVjdCBrdm1pX2dldF92Y3B1X2luZm9fcmVwbHkgKnJwbCkKIHsKQEAgLTEwMiwzICsxMDgs NDIgQEAgaW50IGt2bWlfYXJjaF9jbWRfZ2V0X3ZjcHVfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCXVuc2lnbmVkIGlu dCBhbGxvd19iaXQ7CisJZW51bSBrdm1fcGFnZV90cmFja19tb2RlIHRyYWNrX21vZGU7Cit9IHRy YWNrX21vZGVzW10gPSB7CisJeyBLVk1JX1BBR0VfQUNDRVNTX1IsIEtWTV9QQUdFX1RSQUNLX1BS RVJFQUQgfSwKKwl7IEtWTUlfUEFHRV9BQ0NFU1NfVywgS1ZNX1BBR0VfVFJBQ0tfUFJFV1JJVEUg fSwKKwl7IEtWTUlfUEFHRV9BQ0NFU1NfWCwgS1ZNX1BBR0VfVFJBQ0tfUFJFRVhFQyB9LAorfTsK Kwordm9pZCBrdm1pX2FyY2hfdXBkYXRlX3BhZ2VfdHJhY2tpbmcoc3RydWN0IGt2bSAqa3ZtLAor CQkJCSAgICBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LAorCQkJCSAgICBzdHJ1Y3Qga3Zt aV9tZW1fYWNjZXNzICptKQoreworCXN0cnVjdCBrdm1pX2FyY2hfbWVtX2FjY2VzcyAqYXJjaCA9 ICZtLT5hcmNoOworCWludCBpOworCisJaWYgKCFzbG90KSB7CisJCXNsb3QgPSBnZm5fdG9fbWVt c2xvdChrdm0sIG0tPmdmbik7CisJCWlmICghc2xvdCkKKwkJCXJldHVybjsKKwl9CisKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0cmFja19tb2Rlcyk7IGkrKykgeworCQl1bnNpZ25lZCBp bnQgYWxsb3dfYml0ID0gdHJhY2tfbW9kZXNbaV0uYWxsb3dfYml0OworCQllbnVtIGt2bV9wYWdl X3RyYWNrX21vZGUgbW9kZSA9IHRyYWNrX21vZGVzW2ldLnRyYWNrX21vZGU7CisJCWJvb2wgc2xv dF90cmFja2VkID0gdGVzdF9iaXQoc2xvdC0+aWQsIGFyY2gtPmFjdGl2ZVttb2RlXSk7CisKKwkJ aWYgKG0tPmFjY2VzcyAmIGFsbG93X2JpdCkgeworCQkJaWYgKHNsb3RfdHJhY2tlZCkgeworCQkJ CWt2bV9zbG90X3BhZ2VfdHJhY2tfcmVtb3ZlX3BhZ2Uoa3ZtLCBzbG90LAorCQkJCQkJCQltLT5n Zm4sIG1vZGUpOworCQkJCWNsZWFyX2JpdChzbG90LT5pZCwgYXJjaC0+YWN0aXZlW21vZGVdKTsK KwkJCX0KKwkJfSBlbHNlIGlmICghc2xvdF90cmFja2VkKSB7CisJCQlrdm1fc2xvdF9wYWdlX3Ry YWNrX2FkZF9wYWdlKGt2bSwgc2xvdCwgbS0+Z2ZuLCBtb2RlKTsKKwkJCXNldF9iaXQoc2xvdC0+ aWQsIGFyY2gtPmFjdGl2ZVttb2RlXSk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRl L3VhcGkvbGludXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRleCBhYTVi YzkwOWUyNzguLmM1NmU2NzZkZGIyYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2 bWkuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC03MCw2ICs3MCwxMCBAQCBl bnVtIHsKICNkZWZpbmUgS1ZNSV9FVkVOVF9BQ1RJT05fUkVUUlkgICAgICAgICAxCiAjZGVmaW5l IEtWTUlfRVZFTlRfQUNUSU9OX0NSQVNIICAgICAgICAgMgogCisjZGVmaW5lIEtWTUlfUEFHRV9B Q0NFU1NfUiAoMSA8PCAwKQorI2RlZmluZSBLVk1JX1BBR0VfQUNDRVNTX1cgKDEgPDwgMSkKKyNk ZWZpbmUgS1ZNSV9QQUdFX0FDQ0VTU19YICgxIDw8IDIpCisKICNkZWZpbmUgS1ZNSV9NU0dfU0la RSAoNDA5NiAtIHNpemVvZihzdHJ1Y3Qga3ZtaV9tc2dfaGRyKSkKIAogc3RydWN0IGt2bWlfbXNn X2hkciB7CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5k ZXggZDBkOWFkZjViNmVkLi41Y2JjODJiMjg0ZjQgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWku YworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTExLDEwICsxMSwyNyBAQAogI2luY2x1ZGUgPGxp bnV4L2JpdG1hcC5oPgogCiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKm1zZ19jYWNoZTsKK3N0 YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqcmFkaXhfY2FjaGU7CiBzdGF0aWMgc3RydWN0IGttZW1f Y2FjaGUgKmpvYl9jYWNoZTsKIAogc3RhdGljIGJvb2wga3ZtaV9jcmVhdGVfdmNwdV9ldmVudChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogc3RhdGljIHZvaWQga3ZtaV9hYm9ydF9ldmVudHMoc3Ry dWN0IGt2bSAqa3ZtKTsKK3N0YXRpYyBib29sIGt2bWlfdHJhY2tfcHJlcmVhZChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAorCXU4ICpuZXcsIGludCBieXRlcywg c3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUgKm5vZGUsCisJYm9vbCAqZGF0YV9y ZWFkeSk7CitzdGF0aWMgYm9vbCBrdm1pX3RyYWNrX3ByZXdyaXRlKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJY29uc3QgdTggKm5ldywgaW50IGJ5dGVzLCBz dHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSk7CitzdGF0aWMgYm9vbCBr dm1pX3RyYWNrX3ByZWV4ZWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90 IGd2YSwKKwlzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSk7CitzdGF0 aWMgdm9pZCBrdm1pX3RyYWNrX2NyZWF0ZV9zbG90KHN0cnVjdCBrdm0gKmt2bSwKKwlzdHJ1Y3Qg a3ZtX21lbW9yeV9zbG90ICpzbG90LCB1bnNpZ25lZCBsb25nIG5wYWdlcywKKwlzdHJ1Y3Qga3Zt X3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBrdm1pX3RyYWNr X2ZsdXNoX3Nsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90 LAorCXN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2RlICpub2RlKTsKKworc3RhdGlj IGNvbnN0IHU4IGZ1bGxfYWNjZXNzICA9CUtWTUlfUEFHRV9BQ0NFU1NfUiB8CisJCQkJS1ZNSV9Q QUdFX0FDQ0VTU19XIHwKKwkJCQlLVk1JX1BBR0VfQUNDRVNTX1g7CiAKIHZvaWQgKmt2bWlfbXNn X2FsbG9jKHZvaWQpCiB7CkBAIC0zNCwyMyArNTEsOTYgQEAgdm9pZCBrdm1pX21zZ19mcmVlKHZv aWQgKmFkZHIpCiAJCWttZW1fY2FjaGVfZnJlZShtc2dfY2FjaGUsIGFkZHIpOwogfQogCitzdGF0 aWMgc3RydWN0IGt2bWlfbWVtX2FjY2VzcyAqX19rdm1pX2dldF9nZm5fYWNjZXNzKHN0cnVjdCBr dm1pICppa3ZtLAorCQkJCQkJICAgICBjb25zdCBnZm5fdCBnZm4pCit7CisJcmV0dXJuIHJhZGl4 X3RyZWVfbG9va3VwKCZpa3ZtLT5hY2Nlc3NfdHJlZSwgZ2ZuKTsKK30KKworc3RhdGljIGludCBr dm1pX2dldF9nZm5fYWNjZXNzKHN0cnVjdCBrdm1pICppa3ZtLCBjb25zdCBnZm5fdCBnZm4sCisJ CQkgICAgICAgdTggKmFjY2VzcykKK3sKKwlzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICptOworCisJ KmFjY2VzcyA9IGZ1bGxfYWNjZXNzOworCisJcmVhZF9sb2NrKCZpa3ZtLT5hY2Nlc3NfdHJlZV9s b2NrKTsKKwltID0gX19rdm1pX2dldF9nZm5fYWNjZXNzKGlrdm0sIGdmbik7CisJaWYgKG0pCisJ CSphY2Nlc3MgPSBtLT5hY2Nlc3M7CisJcmVhZF91bmxvY2soJmlrdm0tPmFjY2Vzc190cmVlX2xv Y2spOworCisJcmV0dXJuIG0gPyAwIDogLTE7Cit9CisKK3N0YXRpYyBib29sIGt2bWlfcmVzdHJp Y3RlZF9hY2Nlc3Moc3RydWN0IGt2bWkgKmlrdm0sIGdwYV90IGdwYSwgdTggYWNjZXNzKQorewor CXU4IGFsbG93ZWRfYWNjZXNzOworCWludCBlcnI7CisKKwllcnIgPSBrdm1pX2dldF9nZm5fYWNj ZXNzKGlrdm0sIGdwYV90b19nZm4oZ3BhKSwgJmFsbG93ZWRfYWNjZXNzKTsKKworCWlmIChlcnIp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogV2Ugd2FudCB0byBiZSBub3RpZmllZCBvbmx5 IGZvciB2aW9sYXRpb25zIGludm9sdmluZyBhY2Nlc3MKKwkgKiBiaXRzIHRoYXQgd2UndmUgc3Bl Y2lmaWNhbGx5IGNsZWFyZWQKKwkgKi8KKwlpZiAoKH5hbGxvd2VkX2FjY2VzcykgJiBhY2Nlc3Mp CisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBrdm1p X2NsZWFyX21lbV9hY2Nlc3Moc3RydWN0IGt2bSAqa3ZtKQoreworCXZvaWQgKipzbG90OworCXN0 cnVjdCByYWRpeF90cmVlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3Qga3ZtaSAqaWt2bSA9IElLVk0oa3Zt KTsKKwlpbnQgaWR4OworCisJaWR4ID0gc3JjdV9yZWFkX2xvY2soJmt2bS0+c3JjdSk7CisJc3Bp bl9sb2NrKCZrdm0tPm1tdV9sb2NrKTsKKwl3cml0ZV9sb2NrKCZpa3ZtLT5hY2Nlc3NfdHJlZV9s b2NrKTsKKworCXJhZGl4X3RyZWVfZm9yX2VhY2hfc2xvdChzbG90LCAmaWt2bS0+YWNjZXNzX3Ry ZWUsICZpdGVyLCAwKSB7CisJCXN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm0gPSAqc2xvdDsKKwor CQltLT5hY2Nlc3MgPSBmdWxsX2FjY2VzczsKKwkJa3ZtaV9hcmNoX3VwZGF0ZV9wYWdlX3RyYWNr aW5nKGt2bSwgTlVMTCwgbSk7CisKKwkJcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZSgmaWt2bS0+YWNj ZXNzX3RyZWUsICZpdGVyLCBzbG90KTsKKwkJa21lbV9jYWNoZV9mcmVlKHJhZGl4X2NhY2hlLCBt KTsKKwl9CisKKwl3cml0ZV91bmxvY2soJmlrdm0tPmFjY2Vzc190cmVlX2xvY2spOworCXNwaW5f dW5sb2NrKCZrdm0tPm1tdV9sb2NrKTsKKwlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlk eCk7Cit9CisKIHN0YXRpYyB2b2lkIGt2bWlfY2FjaGVfZGVzdHJveSh2b2lkKQogewogCWttZW1f Y2FjaGVfZGVzdHJveShtc2dfY2FjaGUpOwogCW1zZ19jYWNoZSA9IE5VTEw7CisJa21lbV9jYWNo ZV9kZXN0cm95KHJhZGl4X2NhY2hlKTsKKwlyYWRpeF9jYWNoZSA9IE5VTEw7CiAJa21lbV9jYWNo ZV9kZXN0cm95KGpvYl9jYWNoZSk7CiAJam9iX2NhY2hlID0gTlVMTDsKIH0KIAogc3RhdGljIGlu dCBrdm1pX2NhY2hlX2NyZWF0ZSh2b2lkKQogeworCXJhZGl4X2NhY2hlID0ga21lbV9jYWNoZV9j cmVhdGUoImt2bWlfcmFkaXhfdHJlZSIsCisJCQkJCXNpemVvZihzdHJ1Y3Qga3ZtaV9tZW1fYWNj ZXNzKSwKKwkJCQkJMCwgU0xBQl9BQ0NPVU5ULCBOVUxMKTsKIAlqb2JfY2FjaGUgPSBrbWVtX2Nh Y2hlX2NyZWF0ZSgia3ZtaV9qb2IiLAogCQkJCSAgICAgIHNpemVvZihzdHJ1Y3Qga3ZtaV9qb2Ip LAogCQkJCSAgICAgIDAsIFNMQUJfQUNDT1VOVCwgTlVMTCk7CiAJbXNnX2NhY2hlID0ga21lbV9j YWNoZV9jcmVhdGUoImt2bWlfbXNnIiwgS1ZNSV9NU0dfU0laRV9BTExPQywKIAkJCQkgICAgICA0 MDk2LCBTTEFCX0FDQ09VTlQsIE5VTEwpOwogCi0JaWYgKCFtc2dfY2FjaGUgfHwgIWpvYl9jYWNo ZSkgeworCWlmICghbXNnX2NhY2hlIHx8ICFyYWRpeF9jYWNoZSB8fCAham9iX2NhY2hlKSB7CiAJ CWt2bWlfY2FjaGVfZGVzdHJveSgpOwogCiAJCXJldHVybiAtMTsKQEAgLTc3LDYgKzE2NywxMCBA QCBzdGF0aWMgYm9vbCBhbGxvY19rdm1pKHN0cnVjdCBrdm0gKmt2bSwgY29uc3Qgc3RydWN0IGt2 bV9pbnRyb3NwZWN0aW9uICpxZW11KQogCWlmICghaWt2bSkKIAkJcmV0dXJuIGZhbHNlOwogCisJ Lyogc2VlIGNvbW1lbnRzIG9mIHJhZGl4X3RyZWVfcHJlbG9hZCgpIC0gbm8gZGlyZWN0IHJlY2xh aW0gKi8KKwlJTklUX1JBRElYX1RSRUUoJmlrdm0tPmFjY2Vzc190cmVlLCBHRlBfS0VSTkVMICYg fl9fR0ZQX0RJUkVDVF9SRUNMQUlNKTsKKwlyd2xvY2tfaW5pdCgmaWt2bS0+YWNjZXNzX3RyZWVf bG9jayk7CisKIAlhdG9taWNfc2V0KCZpa3ZtLT5ldl9zZXEsIDApOwogCiAJc2V0X2JpdChLVk1J X0dFVF9WRVJTSU9OLCBpa3ZtLT5jbWRfYWxsb3dfbWFzayk7CkBAIC04NSw2ICsxNzksMTIgQEAg c3RhdGljIGJvb2wgYWxsb2Nfa3ZtaShzdHJ1Y3Qga3ZtICprdm0sIGNvbnN0IHN0cnVjdCBrdm1f aW50cm9zcGVjdGlvbiAqcWVtdSkKIAogCW1lbWNweSgmaWt2bS0+dXVpZCwgJnFlbXUtPnV1aWQs IHNpemVvZihpa3ZtLT51dWlkKSk7CiAKKwlpa3ZtLT5rcHRuX25vZGUudHJhY2tfcHJlcmVhZCA9 IGt2bWlfdHJhY2tfcHJlcmVhZDsKKwlpa3ZtLT5rcHRuX25vZGUudHJhY2tfcHJld3JpdGUgPSBr dm1pX3RyYWNrX3ByZXdyaXRlOworCWlrdm0tPmtwdG5fbm9kZS50cmFja19wcmVleGVjID0ga3Zt aV90cmFja19wcmVleGVjOworCWlrdm0tPmtwdG5fbm9kZS50cmFja19jcmVhdGVfc2xvdCA9IGt2 bWlfdHJhY2tfY3JlYXRlX3Nsb3Q7CisJaWt2bS0+a3B0bl9ub2RlLnRyYWNrX2ZsdXNoX3Nsb3Qg PSBrdm1pX3RyYWNrX2ZsdXNoX3Nsb3Q7CisKIAlpa3ZtLT5rdm0gPSBrdm07CiAJa3ZtLT5rdm1p ID0gaWt2bTsKIApAQCAtMjc2LDYgKzM3NiwxNzkgQEAgdm9pZCBrdm1pX3ZjcHVfdW5pbml0KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAl2Y3B1LT5rdm1pID0gTlVMTDsKIH0KIAorc3RhdGljIGJv b2wgaXNfcGZfb2ZfaW50ZXJlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIHU4 IGFjY2VzcykKK3sKKwlzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LT5rdm07CisKKwlpZiAoa3ZtX21t dV9uZXN0ZWRfcGFnZWZhdWx0KHZjcHUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBIYXZlIHdl IHNob3duIGludGVyZXN0IGluIHRoaXMgcGFnZT8gKi8KKwlyZXR1cm4ga3ZtaV9yZXN0cmljdGVk X2FjY2VzcyhJS1ZNKGt2bSksIGdwYSwgYWNjZXNzKTsKK30KKworc3RhdGljIGJvb2wgX19rdm1p X3RyYWNrX3ByZXJlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2 YSwKKwl1OCAqbmV3LCBpbnQgYnl0ZXMsIHN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9u b2RlICpub2RlLAorCWJvb2wgKmRhdGFfcmVhZHkpCit7CisJYm9vbCByZXQ7CisKKwlpZiAoIWlz X3BmX29mX2ludGVyZXN0KHZjcHUsIGdwYSwgS1ZNSV9QQUdFX0FDQ0VTU19SKSkKKwkJcmV0dXJu IHRydWU7CisKKwlyZXQgPSBrdm1pX2FyY2hfcGZfZXZlbnQodmNwdSwgZ3BhLCBndmEsIEtWTUlf UEFHRV9BQ0NFU1NfUik7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgYm9vbCBrdm1pX3Ry YWNrX3ByZXJlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwK Kwl1OCAqbmV3LCBpbnQgYnl0ZXMsIHN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2Rl ICpub2RlLAorCWJvb2wgKmRhdGFfcmVhZHkpCit7CisJc3RydWN0IGt2bWkgKmlrdm07CisJYm9v bCByZXQgPSB0cnVlOworCisJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3Zt KQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChpc19ldmVudF9lbmFibGVkKHZjcHUsIEtWTUlfRVZF TlRfUEYpKQorCQlyZXQgPSBfX2t2bWlfdHJhY2tfcHJlcmVhZCh2Y3B1LCBncGEsIGd2YSwgbmV3 LCBieXRlcywgbm9kZSwKKwkJCQkJICAgZGF0YV9yZWFkeSk7CisKKwlrdm1pX3B1dCh2Y3B1LT5r dm0pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGJvb2wgX19rdm1pX3RyYWNrX3ByZXdy aXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJY29uc3Qg dTggKm5ldywgaW50IGJ5dGVzLAorCXN0cnVjdCBrdm1fcGFnZV90cmFja19ub3RpZmllcl9ub2Rl ICpub2RlKQoreworCWlmICghaXNfcGZfb2ZfaW50ZXJlc3QodmNwdSwgZ3BhLCBLVk1JX1BBR0Vf QUNDRVNTX1cpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBrdm1pX2FyY2hfcGZfZXZlbnQo dmNwdSwgZ3BhLCBndmEsIEtWTUlfUEFHRV9BQ0NFU1NfVyk7Cit9CisKK3N0YXRpYyBib29sIGt2 bWlfdHJhY2tfcHJld3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90 IGd2YSwKKwljb25zdCB1OCAqbmV3LCBpbnQgYnl0ZXMsCisJc3RydWN0IGt2bV9wYWdlX3RyYWNr X25vdGlmaWVyX25vZGUgKm5vZGUpCit7CisJc3RydWN0IGt2bWkgKmlrdm07CisJYm9vbCByZXQg PSB0cnVlOworCisJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQly ZXR1cm4gdHJ1ZTsKKworCWlmIChpc19ldmVudF9lbmFibGVkKHZjcHUsIEtWTUlfRVZFTlRfUEYp KQorCQlyZXQgPSBfX2t2bWlfdHJhY2tfcHJld3JpdGUodmNwdSwgZ3BhLCBndmEsIG5ldywgYnl0 ZXMsIG5vZGUpOworCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBib29sIF9fa3ZtaV90cmFja19wcmVleGVjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg Z3BhX3QgZ3BhLCBndmFfdCBndmEsCisJc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25v ZGUgKm5vZGUpCit7CisJaWYgKCFpc19wZl9vZl9pbnRlcmVzdCh2Y3B1LCBncGEsIEtWTUlfUEFH RV9BQ0NFU1NfWCkpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGt2bWlfYXJjaF9wZl9ldmVu dCh2Y3B1LCBncGEsIGd2YSwgS1ZNSV9QQUdFX0FDQ0VTU19YKTsKK30KKworc3RhdGljIGJvb2wg a3ZtaV90cmFja19wcmVleGVjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFf dCBndmEsCisJc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUgKm5vZGUpCit7CisJ c3RydWN0IGt2bWkgKmlrdm07CisJYm9vbCByZXQgPSB0cnVlOworCisJaWt2bSA9IGt2bWlfZ2V0 KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChpc19ldmVu dF9lbmFibGVkKHZjcHUsIEtWTUlfRVZFTlRfUEYpKQorCQlyZXQgPSBfX2t2bWlfdHJhY2tfcHJl ZXhlYyh2Y3B1LCBncGEsIGd2YSwgbm9kZSk7CisKKwlrdm1pX3B1dCh2Y3B1LT5rdm0pOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQga3ZtaV90cmFja19jcmVhdGVfc2xvdChzdHJ1 Y3Qga3ZtICprdm0sCisJc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwKKwl1bnNpZ25lZCBs b25nIG5wYWdlcywKKwlzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAqbm9kZSkK K3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlnZm5fdCBzdGFydCA9IHNsb3QtPmJhc2VfZ2ZuOwor CWNvbnN0IGdmbl90IGVuZCA9IHN0YXJ0ICsgbnBhZ2VzOworCWludCBpZHg7CisKKwlpa3ZtID0g a3ZtaV9nZXQoa3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVybjsKKworCWlkeCA9IHNyY3VfcmVh ZF9sb2NrKCZrdm0tPnNyY3UpOworCXNwaW5fbG9jaygma3ZtLT5tbXVfbG9jayk7CisJcmVhZF9s b2NrKCZpa3ZtLT5hY2Nlc3NfdHJlZV9sb2NrKTsKKworCXdoaWxlIChzdGFydCA8IGVuZCkgewor CQlzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICptOworCisJCW0gPSBfX2t2bWlfZ2V0X2dmbl9hY2Nl c3MoaWt2bSwgc3RhcnQpOworCQlpZiAobSkKKwkJCWt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFj a2luZyhrdm0sIHNsb3QsIG0pOworCQlzdGFydCsrOworCX0KKworCXJlYWRfdW5sb2NrKCZpa3Zt LT5hY2Nlc3NfdHJlZV9sb2NrKTsKKwlzcGluX3VubG9jaygma3ZtLT5tbXVfbG9jayk7CisJc3Jj dV9yZWFkX3VubG9jaygma3ZtLT5zcmN1LCBpZHgpOworCisJa3ZtaV9wdXQoa3ZtKTsKK30KKwor c3RhdGljIHZvaWQga3ZtaV90cmFja19mbHVzaF9zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0 IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwKKwlzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJf bm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlnZm5fdCBzdGFydCA9IHNsb3Qt PmJhc2VfZ2ZuOworCWNvbnN0IGdmbl90IGVuZCA9IHN0YXJ0ICsgc2xvdC0+bnBhZ2VzOworCWlu dCBpZHg7CisKKwlpa3ZtID0ga3ZtaV9nZXQoa3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVybjsK KworCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZrdm0tPnNyY3UpOworCXNwaW5fbG9jaygma3ZtLT5t bXVfbG9jayk7CisJd3JpdGVfbG9jaygmaWt2bS0+YWNjZXNzX3RyZWVfbG9jayk7CisKKwl3aGls ZSAoc3RhcnQgPCBlbmQpIHsKKwkJc3RydWN0IGt2bWlfbWVtX2FjY2VzcyAqbTsKKworCQltID0g X19rdm1pX2dldF9nZm5fYWNjZXNzKGlrdm0sIHN0YXJ0KTsKKwkJaWYgKG0pIHsKKwkJCXU4IHBy ZXZfYWNjZXNzID0gbS0+YWNjZXNzOworCisJCQltLT5hY2Nlc3MgPSBmdWxsX2FjY2VzczsKKwkJ CWt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2luZyhrdm0sIHNsb3QsIG0pOworCQkJbS0+YWNj ZXNzID0gcHJldl9hY2Nlc3M7CisJCX0KKworCQlzdGFydCsrOworCX0KKworCXdyaXRlX3VubG9j aygmaWt2bS0+YWNjZXNzX3RyZWVfbG9jayk7CisJc3Bpbl91bmxvY2soJmt2bS0+bW11X2xvY2sp OworCXNyY3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKKworCWt2bWlfcHV0KGt2bSk7 Cit9CisKIHN0YXRpYyB2b2lkIGt2bWlfZW5kX2ludHJvc3BlY3Rpb24oc3RydWN0IGt2bWkgKmlr dm0pCiB7CiAJc3RydWN0IGt2bSAqa3ZtID0gaWt2bS0+a3ZtOwpAQCAtMjkwLDYgKzU2MywyMiBA QCBzdGF0aWMgdm9pZCBrdm1pX2VuZF9pbnRyb3NwZWN0aW9uKHN0cnVjdCBrdm1pICppa3ZtKQog CSAqLwogCWt2bWlfYWJvcnRfZXZlbnRzKGt2bSk7CiAKKwkvKgorCSAqIFRoaXMgbWF5IHNsZWVw IG9uIHN5bmNocm9uaXplX3NyY3UoKSBzbyBpdCdzIG5vdCBhbGxvd2VkIHRvIGJlCisJICogY2Fs bGVkIHVuZGVyIGt2bWlfcHV0KCkuCisJICogQWxzbyBzeW5jaHJvbml6ZV9zcmN1KCkgbWF5IGRl YWRsb2NrIG9uIChwYWdlIHRyYWNraW5nKSByZWFkLXNpZGUKKwkgKiByZWdpb25zIHRoYXQgYXJl IHdhaXRpbmcgZm9yIHJlcGx5IHRvIGV2ZW50cywgc28gbXVzdCBiZSBjYWxsZWQKKwkgKiBhZnRl ciBrdm1pX2Fib3J0X2V2ZW50cygpLgorCSAqLworCWt2bV9wYWdlX3RyYWNrX3VucmVnaXN0ZXJf bm90aWZpZXIoa3ZtLCAmaWt2bS0+a3B0bl9ub2RlKTsKKworCS8qCisJICogVGhpcyBmdW5jdGlv biB1c2VzIGt2bS0+bW11X2xvY2sgc28gaXQncyBub3QgYWxsb3dlZCB0byBiZQorCSAqIGNhbGxl ZCB1bmRlciBrdm1pX3B1dCgpLiBJdCBjYW4gcmVhY2ggYSBkZWFkbG9jayBpZiBjYWxsZWQKKwkg KiBmcm9tIGt2bV9tbXVfbG9hZCAtPiBrdm1pX3RyYWNrZWRfZ2ZuIC0+IGt2bWlfcHV0LgorCSAq LworCWt2bWlfY2xlYXJfbWVtX2FjY2Vzcyhrdm0pOworCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVu dCB0aGUgc29ja2V0IGlzIHNodXQgZG93biwgbm8gbW9yZSBjb21tYW5kcyB3aWxsIGNvbWUKIAkg KiBmcm9tIHRoZSBpbnRyb3NwZWN0b3IsIGFuZCB0aGUgb25seSB3YXkgaW50byB0aGUgaW50cm9z cGVjdGlvbiBpcwpAQCAtMzUxLDYgKzY0MCw4IEBAIGludCBrdm1pX2hvb2soc3RydWN0IGt2bSAq a3ZtLCBjb25zdCBzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKnFlbXUpCiAJCWdvdG8gZXJyX2Fs bG9jOwogCX0KIAorCWt2bV9wYWdlX3RyYWNrX3JlZ2lzdGVyX25vdGlmaWVyKGt2bSwgJmlrdm0t PmtwdG5fbm9kZSk7CisKIAkvKgogCSAqIE1ha2Ugc3VyZSBhbGwgdGhlIEtWTS9LVk1JIHN0cnVj dHVyZXMgYXJlIGxpbmtlZCBhbmQgbm8gcG9pbnRlcgogCSAqIGlzIHJlYWQgYXMgTlVMTCBhZnRl ciB0aGUgcmVmZXJlbmNlIGNvdW50IGhhcyBiZWVuIHNldC4KZGlmZiAtLWdpdCBhL3ZpcnQva3Zt L2t2bWlfaW50LmggYi92aXJ0L2t2bS9rdm1pX2ludC5oCmluZGV4IDdjZmY5MWJjMWFjYy4uZDc5 ODkwOGQwZjcwIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3Zt L2t2bWlfaW50LmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8bGludXgva3ZtX2hvc3QuaD4K IAogI2luY2x1ZGUgPHVhcGkvbGludXgva3ZtaS5oPgorI2luY2x1ZGUgPGFzbS9rdm1pX2hvc3Qu aD4KIAogI2RlZmluZSBrdm1pX2RlYnVnKGlrdm0sIGZtdCwgLi4uKSBcCiAJa3ZtX2RlYnVnKCIl cFUgIiBmbXQsICZpa3ZtLT51dWlkLCAjIyBfX1ZBX0FSR1NfXykKQEAgLTEwNCw2ICsxMDUsMTAg QEAgc3RydWN0IGt2bWlfdmNwdSB7CiAKIHN0cnVjdCBrdm1pIHsKIAlzdHJ1Y3Qga3ZtICprdm07 CisJc3RydWN0IGt2bV9wYWdlX3RyYWNrX25vdGlmaWVyX25vZGUga3B0bl9ub2RlOworCisJc3Ry dWN0IHJhZGl4X3RyZWVfcm9vdCBhY2Nlc3NfdHJlZTsKKwlyd2xvY2tfdCBhY2Nlc3NfdHJlZV9s b2NrOwogCiAJc3RydWN0IHNvY2tldCAqc29jazsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnJlY3Y7 CkBAIC0xMTgsNiArMTIzLDE3IEBAIHN0cnVjdCBrdm1pIHsKIAlib29sIGNtZF9yZXBseV9kaXNh YmxlZDsKIH07CiAKK3N0cnVjdCBrdm1pX21lbV9hY2Nlc3MgeworCWdmbl90IGdmbjsKKwl1OCBh Y2Nlc3M7CisJc3RydWN0IGt2bWlfYXJjaF9tZW1fYWNjZXNzIGFyY2g7Cit9OworCitzdGF0aWMg aW5saW5lIGJvb2wgaXNfZXZlbnRfZW5hYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBl dmVudCkKK3sKKwlyZXR1cm4gZmFsc2U7IC8qIFRPRE8gKi8KK30KKwogLyoga3ZtaV9tc2cuYyAq LwogYm9vbCBrdm1pX3NvY2tfZ2V0KHN0cnVjdCBrdm1pICppa3ZtLCBpbnQgZmQpOwogdm9pZCBr dm1pX3NvY2tfc2h1dGRvd24oc3RydWN0IGt2bWkgKmlrdm0pOwpAQCAtMTM4LDcgKzE1NCwxMiBA QCBpbnQga3ZtaV9hZGRfam9iKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJIHZvaWQgKmN0eCwg dm9pZCAoKmZyZWVfZmN0KSh2b2lkICpjdHgpKTsKIAogLyogYXJjaCAqLwordm9pZCBrdm1pX2Fy Y2hfdXBkYXRlX3BhZ2VfdHJhY2tpbmcoc3RydWN0IGt2bSAqa3ZtLAorCQkJCSAgICBzdHJ1Y3Qg a3ZtX21lbW9yeV9zbG90ICpzbG90LAorCQkJCSAgICBzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICpt KTsKIHZvaWQga3ZtaV9hcmNoX3NldHVwX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3Ry dWN0IGt2bWlfZXZlbnQgKmV2KTsKK2Jvb2wga3ZtaV9hcmNoX3BmX2V2ZW50KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCisJCQl1OCBhY2Nlc3MpOwogaW50IGt2 bWlfYXJjaF9jbWRfZ2V0X3ZjcHVfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJc3Ry dWN0IGt2bWlfZ2V0X3ZjcHVfaW5mb19yZXBseSAqcnBsKTsKIApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QK VmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5s aW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=