From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 73/92] kvm: introspection: use remote mapping Date: Fri, 9 Aug 2019 19:00:28 +0300 Message-ID: <20190809160047.8319-74-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 , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , =?UTF-8?q?Mircea=20C=C3=AErjaliu?= , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWlyY2VhIEPDrnJqYWxpdSA8bWNpcmphbGl1QGJpdGRlZmVuZGVyLmNvbT4KClRoaXMg Y29tbWl0IGFkZHMgdGhlIG1pc3NpbmcgS1ZNSV9HRVRfTUFQX1RPS0VOIGNvbW1hbmQgYW5kIGhh bmRsZSB0aGUKaHlwZXJjYWxscyB1c2VkIHRvIG1hcC91bm1hcCBndWVzdCBwYWdlcy4KClN1Z2dl c3RlZC1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1i eTogTWlyY2VhIEPDrnJqYWxpdSA8bWNpcmphbGl1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9m Zi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3Vt ZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgfCAgMzkgKysrKwogYXJjaC94ODYva3ZtL01h a2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAg ICAgICAgICB8ICAgNiArCiBpbmNsdWRlL2xpbnV4L2t2bWkuaCAgICAgICAgICAgICAgIHwgICAz ICsKIHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHZpcnQva3Zt L2t2bWlfaW50LmggICAgICAgICAgICAgICAgfCAgMTAgKwogdmlydC9rdm0va3ZtaV9tZW0uYyAg ICAgICAgICAgICAgICB8IDMxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdmlydC9r dm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAgICB8ICAxNSArKwogOCBmaWxlcyBjaGFuZ2VkLCA0 MDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB2aXJ0 L2t2bS9rdm1pX21lbS5jCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9r dm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5kZXggNTcyYWJh YjFmNmVmLi5iMTJlMTRmMTRjMjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9r dm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAt MTE0NCw2ICsxMTQ0LDQ1IEBAIFJldHVybnMgdGhlIGd1ZXN0IG1lbW9yeSB0eXBlIGZvciBhIHNw ZWNpZmljIHBoeXNpY2FsIGFkZHJlc3MuCiAqIC1LVk1fRUlOVkFMIC0gcGFkZGluZyBpcyBub3Qg emVybwogKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3Bl Y3RlZCB5ZXQKIAorMjUuIEtWTUlfR0VUX01BUF9UT0tFTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCis6QXJjaGl0ZWN0dXJlOiBhbGwKKzpWZXJzaW9uczogPj0gMQorOlBhcmFtZXRlcnM6IG5v bmUKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfZXJyb3JfY29kZTsKKwlzdHJ1Y3Qg a3ZtaV9nZXRfbWFwX3Rva2VuX3JlcGx5IHsKKwkJc3RydWN0IGt2bWlfbWFwX21lbV90b2tlbiB0 b2tlbjsKKwl9OworCitXaGVyZTo6CisKKwlzdHJ1Y3Qga3ZtaV9tYXBfbWVtX3Rva2VuIHsKKwkJ X191NjQgdG9rZW5bNF07CisJfTsKKworUmVxdWVzdHMgYSB0b2tlbiBmb3IgYSBtZW1vcnkgbWFw IG9wZXJhdGlvbi4KKworT24gdGhpcyBjb21tYW5kLCB0aGUgaG9zdCBnZW5lcmF0ZXMgYSByYW5k b20gdG9rZW4gdG8gYmUgdXNlZCAob25jZSkKK3RvIG1hcCBhIHBoeXNpY2FsIHBhZ2UgZnJvbSB0 aGUgaW50cm9zcGVjdGVkIGd1ZXN0LiBUaGUgaW50cm9zcGVjdG9yCitjb3VsZCB1c2UgdGhlIHRv a2VuIHdpdGggdGhlIEtWTV9JTlRST19NRU1fTUFQIGlvY3RsIChvbiAvZGV2L2t2bW1lbSkKK3Rv IG1hcCBhIGd1ZXN0IHBoeXNpY2FsIHBhZ2UgdG8gb25lIG9mIGl0cyBtZW1vcnkgcGFnZXMuIFRo ZSBpb2N0bCwKK2luIHR1cm4sIHdpbGwgdXNlIHRoZSBLVk1fSENfTUVNX01BUCBoeXBlcmNhbGwg KHNlZSBoeXBlcmNhbGxzLnR4dCkuCisKK1RoZSBndWVzdCBrZXJuZWwgZXhwb3NpbmcgL2Rldi9r dm1tZW0ga2VlcHMgYSBsaXN0IHdpdGggYWxsIHRoZSBtYXBwaW5ncworKHRvIGFsbCB0aGUgZ3Vl c3RzIGludHJvc3BlY3RlZCBieSB0aGUgdG9vbCkgaW4gb3JkZXIgdG8gdW5tYXAgdGhlbQorKHVz aW5nIHRoZSBLVk1fSENfTUVNX1VOTUFQIGh5cGVyY2FsbCkgd2hlbiAvZGV2L2t2bW1lbSBpcyBj bG9zZWQgb3Igb24KK2RlbWFuZCAodXNpbmcgdGhlIEtWTV9JTlRST19NRU1fVU5NQVAgaW9jdGwp LgorCis6RXJyb3JzOgorCisqIC1LVk1fRUFHQUlOIC0gdG9vIG1hbnkgdG9rZW5zIGhhdmUgYWNj dW11bGF0ZWQKKyogLUtWTV9FTk9NRU0gLSBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBh IG5ldyB0b2tlbgorCiBFdmVudHMKID09PT09PQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v TWFrZWZpbGUgYi9hcmNoL3g4Ni9rdm0vTWFrZWZpbGUKaW5kZXggNjczY2YzN2MwNzQ3Li41YmVh NDQ2MjE5Y2EgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9NYWtlZmlsZQorKysgYi9hcmNoL3g4 Ni9rdm0vTWFrZWZpbGUKQEAgLTcsNyArNyw3IEBAIEtWTSA6PSAuLi8uLi8uLi92aXJ0L2t2bQog a3ZtLXkJCQkrPSAkKEtWTSkva3ZtX21haW4ubyAkKEtWTSkvY29hbGVzY2VkX21taW8ubyBcCiAJ CQkJJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvaXJxY2hpcC5vICQoS1ZNKS92ZmlvLm8KIGt2bS0k KENPTkZJR19LVk1fQVNZTkNfUEYpCSs9ICQoS1ZNKS9hc3luY19wZi5vCi1rdm0tJChDT05GSUdf S1ZNX0lOVFJPU1BFQ1RJT04pICs9ICQoS1ZNKS9rdm1pLm8gJChLVk0pL2t2bWlfbXNnLm8ga3Zt aS5vCitrdm0tJChDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04pICs9ICQoS1ZNKS9rdm1pLm8gJChL Vk0pL2t2bWlfbXNnLm8gJChLVk0pL2t2bWlfbWVtLm8ga3ZtaS5vCiAKIGt2bS15CQkJKz0geDg2 Lm8gbW11Lm8gZW11bGF0ZS5vIGk4MjU5Lm8gaXJxLm8gbGFwaWMubyBcCiAJCQkgICBpODI1NC5v IGlvYXBpYy5vIGlycV9jb21tLm8gY3B1aWQubyBwbXUubyBtdHJyLm8gXApkaWZmIC0tZ2l0IGEv YXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDA2ZjQ0Y2U4ZWQw Ny4uMDRiMWQyOTE2YTBhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKKysrIGIvYXJj aC94ODYva3ZtL3g4Ni5jCkBAIC03MzM3LDYgKzczMzcsMTIgQEAgaW50IGt2bV9lbXVsYXRlX2h5 cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJldCA9IGt2bV9wdl9zZW5kX2lwaSh2 Y3B1LT5rdm0sIGEwLCBhMSwgYTIsIGEzLCBvcF82NF9iaXQpOwogCQlicmVhazsKICNpZmRlZiBD T05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04KKwljYXNlIEtWTV9IQ19NRU1fTUFQOgorCQlyZXQgPSBr dm1pX2hvc3RfbWVtX21hcCh2Y3B1LCAoZ3ZhX3QpYTAsIChncGFfdClhMSwgKGdwYV90KWEyKTsK KwkJYnJlYWs7CisJY2FzZSBLVk1fSENfTUVNX1VOTUFQOgorCQlyZXQgPSBrdm1pX2hvc3RfbWVt X3VubWFwKHZjcHUsIChncGFfdClhMCk7CisJCWJyZWFrOwogCWNhc2UgS1ZNX0hDX1hFTl9IVk1f T1A6CiAJCXJldCA9IDA7CiAJCWlmICgha3ZtaV9oeXBlcmNhbGxfZXZlbnQodmNwdSkpCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvbGludXgva3ZtaS5oCmluZGV4 IDEwY2Q2YzY0MTJkMi4uZGQ5ODBmYjBlYmNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2t2 bWkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bWkuaApAQCAtMjQsNiArMjQsOSBAQCBib29sIGt2 bWlfZGVzY3JpcHRvcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGRlc2NyaXB0b3Is IHU4IHdyaXRlKTsKIGJvb2wga3ZtaV90cmFja2VkX2dmbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IGdmbl90IGdmbik7CiBib29sIGt2bWlfc2luZ2xlX3N0ZXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBncGFfdCBncGEsIGludCAqZW11bGF0aW9uX3R5cGUpOwogdm9pZCBrdm1pX2hhbmRsZV9yZXF1 ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOworaW50IGt2bWlfaG9zdF9tZW1fbWFwKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgZ3ZhX3QgdGtuX2d2YSwKKwkJCSAgICAgZ3BhX3QgcmVxX2dwYSwg Z3BhX3QgbWFwX2dwYSk7CitpbnQga3ZtaV9ob3N0X21lbV91bm1hcChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGdwYV90IG1hcF9ncGEpOwogdm9pZCBrdm1pX3N0b3Bfc3Moc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KTsKIGJvb2wga3ZtaV92Y3B1X2VuYWJsZWRfc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KTsKIHZvaWQga3ZtaV9pbml0X2VtdWxhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKZGlmZiAt LWdpdCBhL3ZpcnQva3ZtL2t2bWkuYyBiL3ZpcnQva3ZtL2t2bWkuYwppbmRleCBjYTE0NmZmZWMw NjEuLjE1N2YzYTQwMWQ2NCAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaS5jCisrKyBiL3ZpcnQv a3ZtL2t2bWkuYwpAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgImt2bWlfaW50LmgiCiAjaW5j bHVkZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1ZGUgPGxpbnV4L2JpdG1hcC5oPgorI2luY2x1 ZGUgPGxpbnV4L3JlbW90ZV9tYXBwaW5nLmg+CiAKICNkZWZpbmUgTUFYX1BBVVNFX1JFUVVFU1RT IDEwMDEKIApAQCAtMzIwLDExICszMjEsMTMgQEAgc3RhdGljIGludCBrdm1pX2NhY2hlX2NyZWF0 ZSh2b2lkKQogCiBpbnQga3ZtaV9pbml0KHZvaWQpCiB7CisJa3ZtaV9tZW1faW5pdCgpOwogCXJl dHVybiBrdm1pX2NhY2hlX2NyZWF0ZSgpOwogfQogCiB2b2lkIGt2bWlfdW5pbml0KHZvaWQpCiB7 CisJa3ZtaV9tZW1fZXhpdCgpOwogCWt2bWlfY2FjaGVfZGVzdHJveSgpOwogfQogCkBAIC0xNjQ3 LDYgKzE2NTAsMTEgQEAgaW50IGt2bWlfY21kX3dyaXRlX3BoeXNpY2FsKHN0cnVjdCBrdm0gKmt2 bSwgdTY0IGdwYSwgdTY0IHNpemUsIGNvbnN0IHZvaWQgKmJ1ZikKIAlyZXR1cm4gMDsKIH0KIAor aW50IGt2bWlfY21kX2FsbG9jX3Rva2VuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bWlfbWFw X21lbV90b2tlbiAqdG9rZW4pCit7CisJcmV0dXJuIGt2bWlfbWVtX2dlbmVyYXRlX3Rva2VuKGt2 bSwgdG9rZW4pOworfQorCiBpbnQga3ZtaV9jbWRfY29udHJvbF9ldmVudHMoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgZXZlbnRfaWQsCiAJCQkgICAgYm9vbCBlbmFibGUpCiB7 CkBAIC0yMDE1LDcgKzIwMjMsOSBAQCBpbnQga3ZtaV9pb2N0bF91bmhvb2soc3RydWN0IGt2bSAq a3ZtLCBib29sIGZvcmNlX3Jlc2V0KQogCWlmICghaWt2bSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAK LQlpZiAoIWZvcmNlX3Jlc2V0ICYmICFrdm1pX3VuaG9va19ldmVudChrdm0pKQorCWlmIChmb3Jj ZV9yZXNldCkKKwkJbW1fcmVtb3RlX3Jlc2V0KCk7CisJZWxzZSBpZiAoIWt2bWlfdW5ob29rX2V2 ZW50KGt2bSkpCiAJCWVyciA9IC1FTk9FTlQ7CiAKIAlrdm1pX3B1dChrdm0pOwpkaWZmIC0tZ2l0 IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKaW5kZXggYzk2ZmEy YjFlOWI3Li4yNDMyMzc3ZDYzNzEgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysr IGIvdmlydC9rdm0va3ZtaV9pbnQuaApAQCAtMTQ4LDYgKzE0OCw4IEBAIHN0cnVjdCBrdm1pIHsK IAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnJlY3Y7CiAJYXRvbWljX3QgZXZfc2VxOwogCisJYXRvbWlj X3QgbnVtX3Rva2VuczsKKwogCXV1aWRfdCB1dWlkOwogCiAJREVDTEFSRV9CSVRNQVAoY21kX2Fs bG93X21hc2ssIEtWTUlfTlVNX0NPTU1BTkRTKTsKQEAgLTIyOSw3ICsyMzEsOSBAQCBpbnQga3Zt aV9jbWRfY29udHJvbF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQg ZXZlbnRfaWQsCiAJCQkgICAgYm9vbCBlbmFibGUpOwogaW50IGt2bWlfY21kX2NvbnRyb2xfdm1f ZXZlbnRzKHN0cnVjdCBrdm1pICppa3ZtLCB1bnNpZ25lZCBpbnQgZXZlbnRfaWQsCiAJCQkgICAg ICAgYm9vbCBlbmFibGUpOworaW50IGt2bWlfY21kX2FsbG9jX3Rva2VuKHN0cnVjdCBrdm0gKmt2 bSwgc3RydWN0IGt2bWlfbWFwX21lbV90b2tlbiAqdG9rZW4pOwogaW50IGt2bWlfY21kX3BhdXNl X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHdhaXQpOwordW5zaWduZWQgbG9uZyBn Zm5fdG9faHZhX3NhZmUoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm4pOwogc3RydWN0IGt2bWkg KiBfX211c3RfY2hlY2sga3ZtaV9nZXQoc3RydWN0IGt2bSAqa3ZtKTsKIHZvaWQga3ZtaV9wdXQo c3RydWN0IGt2bSAqa3ZtKTsKIGludCBrdm1pX3J1bl9qb2JzX2FuZF93YWl0KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7CkBAIC0yOTgsNCArMzAyLDEwIEBAIGludCBrdm1pX2FyY2hfY21kX2NvbnRy b2xfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBrdm1p X2NvbnRyb2xfbXNyICpyZXEpOwogaW50IGt2bWlfYXJjaF9jbWRfZ2V0X210cnJfdHlwZShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBncGEsIHU4ICp0eXBlKTsKIAorLyoga3ZtaV9tZW0uYyAq Lwordm9pZCBrdm1pX21lbV9pbml0KHZvaWQpOwordm9pZCBrdm1pX21lbV9leGl0KHZvaWQpOwor aW50IGt2bWlfbWVtX2dlbmVyYXRlX3Rva2VuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bWlf bWFwX21lbV90b2tlbiAqdG9rZW4pOwordm9pZCBrdm1pX2NsZWFyX3ZtX3Rva2VucyhzdHJ1Y3Qg a3ZtICprdm0pOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfbWVtLmMgYi92 aXJ0L2t2bS9rdm1pX21lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNjI0NGFkZDYwMDYyCi0tLSAvZGV2L251bGwKKysrIGIvdmlydC9rdm0va3ZtaV9tZW0uYwpA QCAtMCwwICsxLDMxOSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8q CisgKiBLVk0gaW50cm9zcGVjdGlvbiBtZW1vcnkgbWFwcGluZyBpbXBsZW1lbnRhdGlvbgorICoK KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEJpdGRlZmVuZGVyIFMuUi5MLgorICoKKyAqIEF1 dGhvcjoKKyAqICAgTWlyY2VhIENpcmphbGl1IDxtY2lyamFsaXVAYml0ZGVmZW5kZXIuY29tPgor ICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9rdm1faG9z dC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cisj aW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cisj aW5jbHVkZSA8bGludXgvcHJpbnRrLmg+CisjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CisjaW5j bHVkZSA8bGludXgva3ZtaS5oPgorI2luY2x1ZGUgPGxpbnV4L2t0aW1lLmg+CisjaW5jbHVkZSA8 bGludXgvaHJ0aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2luY2x1ZGUg PGxpbnV4L3JlbW90ZV9tYXBwaW5nLmg+CisKKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2t2bWkuaD4K KworI2luY2x1ZGUgImt2bWlfaW50LmgiCisKKyNkZWZpbmUgS1ZNSV9NRU1fTUFYX1RPS0VOUyA4 CisjZGVmaW5lIEtWTUlfTUVNX1RPS0VOX1RJTUVPVVQgMworI2RlZmluZSBUT0tFTl9USU1FT1VU X05TRUMgKEtWTUlfTUVNX1RPS0VOX1RJTUVPVVQgKiBOU0VDX1BFUl9TRUMpCisKK3N0YXRpYyBz dHJ1Y3QgbGlzdF9oZWFkIHRva2VuX2xpc3Q7CitzdGF0aWMgc3BpbmxvY2tfdCB0b2tlbl9sb2Nr Oworc3RhdGljIHN0cnVjdCBocnRpbWVyIHRva2VuX3RpbWVyOworc3RhdGljIHN0cnVjdCB3b3Jr X3N0cnVjdCB0b2tlbl93b3JrOworCitzdHJ1Y3QgdG9rZW5fZW50cnkgeworCXN0cnVjdCBsaXN0 X2hlYWQgdG9rZW5fbGlzdDsKKwlzdHJ1Y3Qga3ZtaV9tYXBfbWVtX3Rva2VuIHRva2VuOworCXN0 cnVjdCBrdm0gKmt2bTsKKwlrdGltZV90IHRpbWVzdGFtcDsKK307CisKK3ZvaWQga3ZtaV9jbGVh cl92bV90b2tlbnMoc3RydWN0IGt2bSAqa3ZtKQoreworCXN0cnVjdCB0b2tlbl9lbnRyeSAqY3Vy LCAqbmV4dDsKKwlzdHJ1Y3Qga3ZtaSAqaWt2bSA9IElLVk0oa3ZtKTsKKwlzdHJ1Y3QgbGlzdF9o ZWFkIHRlbXA7CisKKwlJTklUX0xJU1RfSEVBRCgmdGVtcCk7CisKKwlzcGluX2xvY2soJnRva2Vu X2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIG5leHQsICZ0b2tlbl9saXN0 LCB0b2tlbl9saXN0KSB7CisJCWlmIChjdXItPmt2bSA9PSBrdm0pIHsKKwkJCWF0b21pY19kZWMo Jmlrdm0tPm51bV90b2tlbnMpOworCisJCQlsaXN0X2RlbCgmY3VyLT50b2tlbl9saXN0KTsKKwkJ CWxpc3RfYWRkKCZjdXItPnRva2VuX2xpc3QsICZ0ZW1wKTsKKwkJfQorCX0KKwlzcGluX3VubG9j aygmdG9rZW5fbG9jayk7CisKKwkvKiBmcmVlaW5nIGEgS1ZNIG1heSBzbGVlcCAqLworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIG5leHQsICZ0ZW1wLCB0b2tlbl9saXN0KSB7CisJCWt2 bV9wdXRfa3ZtKGN1ci0+a3ZtKTsKKwkJa2ZyZWUoY3VyKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk IHRva2VuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0 IHRva2VuX2VudHJ5ICpjdXIsICpuZXh0OworCWt0aW1lX3Qgbm93ID0ga3RpbWVfZ2V0KCk7CisJ c3RydWN0IGt2bWkgKmlrdm07CisJc3RydWN0IGxpc3RfaGVhZCB0ZW1wOworCisJSU5JVF9MSVNU X0hFQUQoJnRlbXApOworCisJc3Bpbl9sb2NrKCZ0b2tlbl9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoY3VyLCBuZXh0LCAmdG9rZW5fbGlzdCwgdG9rZW5fbGlzdCkKKwkJaWYgKGt0 aW1lX3N1Yihub3csIGN1ci0+dGltZXN0YW1wKSA+IFRPS0VOX1RJTUVPVVRfTlNFQykgeworCQkJ aWt2bSA9IGt2bWlfZ2V0KGN1ci0+a3ZtKTsKKwkJCWlmIChpa3ZtKSB7CisJCQkJYXRvbWljX2Rl YygmaWt2bS0+bnVtX3Rva2Vucyk7CisJCQkJa3ZtaV9wdXQoY3VyLT5rdm0pOworCQkJfQorCisJ CQlsaXN0X2RlbCgmY3VyLT50b2tlbl9saXN0KTsKKwkJCWxpc3RfYWRkKCZjdXItPnRva2VuX2xp c3QsICZ0ZW1wKTsKKwkJfQorCXNwaW5fdW5sb2NrKCZ0b2tlbl9sb2NrKTsKKworCWlmICghbGlz dF9lbXB0eSgmdGVtcCkpCisJCWt2bV9pbmZvKCJrdm1pOiB0b2tlbihzKSB0aW1lZCBvdXRcbiIp OworCisJLyogZnJlZWluZyBhIEtWTSBtYXkgc2xlZXAgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUoY3VyLCBuZXh0LCAmdGVtcCwgdG9rZW5fbGlzdCkgeworCQlrdm1fcHV0X2t2bShjdXIt Pmt2bSk7CisJCWtmcmVlKGN1cik7CisJfQorfQorCitzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3Rh cnQgdG9rZW5fdGltZXJfZm4oc3RydWN0IGhydGltZXIgKnRpbWVyKQoreworCXNjaGVkdWxlX3dv cmsoJnRva2VuX3dvcmspOworCisJaHJ0aW1lcl9hZGRfZXhwaXJlc19ucyh0aW1lciwgTlNFQ19Q RVJfU0VDKTsKKwlyZXR1cm4gSFJUSU1FUl9SRVNUQVJUOworfQorCitpbnQga3ZtaV9tZW1fZ2Vu ZXJhdGVfdG9rZW4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtaV9tYXBfbWVtX3Rva2VuICp0 b2tlbikKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlzdHJ1Y3QgdG9rZW5fZW50cnkgKnRlcDsK KworCS8qIHRvbyBtYW55IHRva2VucyBoYXZlIGFjY3VtdWxhdGVkLCByZXRyeSBsYXRlciAqLwor CWlrdm0gPSBJS1ZNKGt2bSk7CisJaWYgKGF0b21pY19yZWFkKCZpa3ZtLT5udW1fdG9rZW5zKSA+ IEtWTUlfTUVNX01BWF9UT0tFTlMpCisJCXJldHVybiAtS1ZNX0VBR0FJTjsKKworCXByaW50X2hl eF9kdW1wX2RlYnVnKCJrdm1pOiBuZXcgdG9rZW4gIiwgRFVNUF9QUkVGSVhfTk9ORSwKKwkJCSAg ICAgMzIsIDEsIHRva2VuLCBzaXplb2YoKnRva2VuKSwgZmFsc2UpOworCisJdGVwID0ga21hbGxv YyhzaXplb2YoKnRlcCksIEdGUF9LRVJORUwpOworCWlmICh0ZXAgPT0gTlVMTCkKKwkJcmV0dXJu IC1LVk1fRU5PTUVNOworCisJLyogcGluIEtWTSBzbyBpdCB3b24ndCBnbyBhd2F5IHdoaWxlIHdl IHdhaXQgZm9yIEhDICovCisJa3ZtX2dldF9rdm0oa3ZtKTsKKwlnZXRfcmFuZG9tX2J5dGVzKHRv a2VuLCBzaXplb2YoKnRva2VuKSk7CisJYXRvbWljX2luYygmaWt2bS0+bnVtX3Rva2Vucyk7CisK KwkvKiBpbml0IHRva2VuIGVudHJ5ICovCisJSU5JVF9MSVNUX0hFQUQoJnRlcC0+dG9rZW5fbGlz dCk7CisJbWVtY3B5KCZ0ZXAtPnRva2VuLCB0b2tlbiwgc2l6ZW9mKCp0b2tlbikpOworCXRlcC0+ a3ZtID0ga3ZtOworCXRlcC0+dGltZXN0YW1wID0ga3RpbWVfZ2V0KCk7CisKKwkvKiBhZGQgdG8g bGlzdCAqLworCXNwaW5fbG9jaygmdG9rZW5fbG9jayk7CisJbGlzdF9hZGRfdGFpbCgmdGVwLT50 b2tlbl9saXN0LCAmdG9rZW5fbGlzdCk7CisJc3Bpbl91bmxvY2soJnRva2VuX2xvY2spOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga3ZtICpmaW5kX21hY2hpbmVfYXQoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBndmFfdCB0a25fZ3ZhKQoreworCWxvbmcgcmVzdWx0OworCWdwYV90 IHRrbl9ncGE7CisJc3RydWN0IGt2bWlfbWFwX21lbV90b2tlbiB0b2tlbjsKKwlzdHJ1Y3QgbGlz dF9oZWFkICpjdXI7CisJc3RydWN0IHRva2VuX2VudHJ5ICp0ZXAsICpmb3VuZCA9IE5VTEw7CisJ c3RydWN0IGt2bSAqdGFyZ2V0X2t2bSA9IE5VTEw7CisJc3RydWN0IGt2bWkgKmlrdm07CisKKwkv KiBtYWNoaW5lIHRva2VuIGlzIHBhc3NlZCBhcyBwb2ludGVyICovCisJdGtuX2dwYSA9IGt2bV9t bXVfZ3ZhX3RvX2dwYV9zeXN0ZW0odmNwdSwgdGtuX2d2YSwgMCwgTlVMTCk7CisJaWYgKHRrbl9n cGEgPT0gVU5NQVBQRURfR1ZBKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIGNvcHkgdG9rZW4gdG8g bG9jYWwgYWRkcmVzcyBzcGFjZSAqLworCXJlc3VsdCA9IGt2bV9yZWFkX2d1ZXN0KHZjcHUtPmt2 bSwgdGtuX2dwYSwgJnRva2VuLCBzaXplb2YodG9rZW4pKTsKKwlpZiAoSVNfRVJSX1ZBTFVFKHJl c3VsdCkpIHsKKwkJa3ZtX2Vycigia3ZtaTogZmFpbGVkIGNvcHlpbmcgdG9rZW4gZnJvbSB1c2Vy XG4iKTsKKwkJcmV0dXJuIEVSUl9QVFIocmVzdWx0KTsKKwl9CisKKwkvKiBjb25zdW1lIHRva2Vu ICYgZmluZCB0aGUgVk0gKi8KKwlzcGluX2xvY2soJnRva2VuX2xvY2spOworCWxpc3RfZm9yX2Vh Y2goY3VyLCAmdG9rZW5fbGlzdCkgeworCQl0ZXAgPSBsaXN0X2VudHJ5KGN1ciwgc3RydWN0IHRv a2VuX2VudHJ5LCB0b2tlbl9saXN0KTsKKworCQlpZiAoIW1lbWNtcCgmdG9rZW4sICZ0ZXAtPnRv a2VuLCBzaXplb2YodG9rZW4pKSkgeworCQkJbGlzdF9kZWwoJnRlcC0+dG9rZW5fbGlzdCk7CisJ CQlmb3VuZCA9IHRlcDsKKwkJCWJyZWFrOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZ0b2tlbl9s b2NrKTsKKworCWlmIChmb3VuZCAhPSBOVUxMKSB7CisJCXRhcmdldF9rdm0gPSBmb3VuZC0+a3Zt OworCQlrZnJlZShmb3VuZCk7CisKKwkJaWt2bSA9IGt2bWlfZ2V0KHRhcmdldF9rdm0pOworCQlp ZiAoaWt2bSkgeworCQkJYXRvbWljX2RlYygmaWt2bS0+bnVtX3Rva2Vucyk7CisJCQlrdm1pX3B1 dCh0YXJnZXRfa3ZtKTsKKwkJfQorCX0KKworCXJldHVybiB0YXJnZXRfa3ZtOworfQorCisKK2lu dCBrdm1pX2hvc3RfbWVtX21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGd2YV90IHRrbl9ndmEs CisJCSAgICAgIGdwYV90IHJlcV9ncGEsIGdwYV90IG1hcF9ncGEpCit7CisJaW50IHJlc3VsdCA9 IDA7CisJc3RydWN0IGt2bSAqdGFyZ2V0X2t2bTsKKworCWdmbl90IHJlcV9nZm47CisJaHZhX3Qg cmVxX2h2YTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICpyZXFfbW07CisKKwlnZm5fdCBtYXBfZ2ZuOwor CWh2YV90IG1hcF9odmE7CisKKwlrdm1fZGVidWcoImt2bWk6IG1hcHBpbmcgcmVxdWVzdCByZXFf Z3BhICUwMTZsbHgsIG1hcF9ncGEgJTAxNmxseFxuIiwKKwkJICByZXFfZ3BhLCBtYXBfZ3BhKTsK KworCS8qIGdldCB0aGUgc3RydWN0IGt2bSAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRva2VuICov CisJdGFyZ2V0X2t2bSA9IGZpbmRfbWFjaGluZV9hdCh2Y3B1LCB0a25fZ3ZhKTsKKwlpZiAoSVNf RVJSX1ZBTFVFKHRhcmdldF9rdm0pKSB7CisJCXJldHVybiBQVFJfRVJSKHRhcmdldF9rdm0pOwor CX0gZWxzZSBpZiAodGFyZ2V0X2t2bSA9PSBOVUxMKSB7CisJCWt2bV9lcnIoImt2bWk6IHVuYWJs ZSB0byBmaW5kIHRhcmdldCBtYWNoaW5lXG4iKTsKKwkJcmV0dXJuIC1LVk1fRU5PRU5UOworCX0K KwlyZXFfbW0gPSB0YXJnZXRfa3ZtLT5tbTsKKworCS8qIHRyYW5zbGF0ZSBzb3VyY2UgYWRkcmVz c2VzICovCisJcmVxX2dmbiA9IGdwYV90b19nZm4ocmVxX2dwYSk7CisJcmVxX2h2YSA9IGdmbl90 b19odmFfc2FmZSh0YXJnZXRfa3ZtLCByZXFfZ2ZuKTsKKwlpZiAoa3ZtX2lzX2Vycm9yX2h2YShy ZXFfaHZhKSkgeworCQlrdm1fZXJyKCJrdm1pOiBpbnZhbGlkIHJlcV9ncGEgJTAxNmxseFxuIiwg cmVxX2dwYSk7CisJCXJlc3VsdCA9IC1LVk1fRUZBVUxUOworCQlnb3RvIG91dDsKKwl9CisKKwlr dm1fZGVidWcoImt2bWk6IHJlcV9ncGEgJTAxNmxseCAtPiByZXFfaHZhICUwMTZseFxuIiwKKwkJ ICByZXFfZ3BhLCByZXFfaHZhKTsKKworCS8qIHRyYW5zbGF0ZSBkZXN0aW5hdGlvbiBhZGRyZXNz ZXMgKi8KKwltYXBfZ2ZuID0gZ3BhX3RvX2dmbihtYXBfZ3BhKTsKKwltYXBfaHZhID0gZ2ZuX3Rv X2h2YV9zYWZlKHZjcHUtPmt2bSwgbWFwX2dmbik7CisJaWYgKGt2bV9pc19lcnJvcl9odmEobWFw X2h2YSkpIHsKKwkJa3ZtX2Vycigia3ZtaTogaW52YWxpZCBtYXBfZ3BhICUwMTZsbHhcbiIsIG1h cF9ncGEpOworCQlyZXN1bHQgPSAtS1ZNX0VGQVVMVDsKKwkJZ290byBvdXQ7CisJfQorCisJa3Zt X2RlYnVnKCJrdm1pOiBtYXBfZ3BhICUwMTZsbHggLT4gbWFwX2h2YSAlMDE2bHhcbiIsCisJCW1h cF9ncGEsIG1hcF9odmEpOworCisJLyogYWN0dWFsbHkgZG8gdGhlIG1hcHBpbmcgKi8KKwlyZXN1 bHQgPSBtbV9yZW1vdGVfbWFwKHJlcV9tbSwgcmVxX2h2YSwgbWFwX2h2YSk7CisJaWYgKElTX0VS Ul9WQUxVRSgobG9uZylyZXN1bHQpKSB7CisJCWlmIChyZXN1bHQgPT0gLUVCVVNZKQorCQkJa3Zt X2RlYnVnKCJrdm1pOiBtYXBwaW5nIG9mIHJlcV9ncGEgJTAxNmxseCBmYWlsZWQ6ICVkLlxuIiwK KwkJCQlyZXFfZ3BhLCByZXN1bHQpOworCQllbHNlCisJCQlrdm1fZXJyKCJrdm1pOiBtYXBwaW5n IG9mIHJlcV9ncGEgJTAxNmxseCBmYWlsZWQ6ICVkLlxuIiwKKwkJCQlyZXFfZ3BhLCByZXN1bHQp OworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBhbGwgZmluZSAqLworCWt2bV9kZWJ1Zygia3ZtaTog bWFwcGluZyBvZiByZXFfZ3BhICUwMTZsbHggc3VjY2Vzc2Z1bFxuIiwgcmVxX2dwYSk7CisKK291 dDoKKwlrdm1fcHV0X2t2bSh0YXJnZXRfa3ZtKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK2lu dCBrdm1pX2hvc3RfbWVtX3VubWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgbWFwX2dw YSkKK3sKKwlnZm5fdCBtYXBfZ2ZuOworCWh2YV90IG1hcF9odmE7CisJaW50IHJlc3VsdDsKKwor CWt2bV9kZWJ1Zygia3ZtaTogdW5tYXBwaW5nIHJlcXVlc3QgZm9yIG1hcF9ncGEgJTAxNmxseFxu IiwgbWFwX2dwYSk7CisKKwkvKiBjb252ZXJ0IEdQQSAtPiBIVkEgKi8KKwltYXBfZ2ZuID0gZ3Bh X3RvX2dmbihtYXBfZ3BhKTsKKwltYXBfaHZhID0gZ2ZuX3RvX2h2YV9zYWZlKHZjcHUtPmt2bSwg bWFwX2dmbik7CisJaWYgKGt2bV9pc19lcnJvcl9odmEobWFwX2h2YSkpIHsKKwkJcmVzdWx0ID0g LUtWTV9FRkFVTFQ7CisJCWt2bV9lcnIoImt2bWk6IGludmFsaWQgbWFwX2dwYSAlMDE2bGx4XG4i LCBtYXBfZ3BhKTsKKwkJZ290byBvdXQ7CisJfQorCisJa3ZtX2RlYnVnKCJrdm1pOiBtYXBfZ3Bh ICUwMTZsbHggLT4gbWFwX2h2YSAlMDE2bHhcbiIsCisJCW1hcF9ncGEsIG1hcF9odmEpOworCisJ LyogYWN0dWFsbHkgZG8gdGhlIHVubWFwcGluZyAqLworCXJlc3VsdCA9IG1tX3JlbW90ZV91bm1h cChtYXBfaHZhKTsKKwlpZiAoSVNfRVJSX1ZBTFVFKChsb25nKXJlc3VsdCkpCisJCWdvdG8gb3V0 OworCisJa3ZtX2RlYnVnKCJrdm1pOiB1bm1hcHBpbmcgb2YgbWFwX2dwYSAlMDE2bGx4IHN1Y2Nl c3NmdWxcbiIsIG1hcF9ncGEpOworCitvdXQ6CisJcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBr dm1pX21lbV9pbml0KHZvaWQpCit7CisJa3RpbWVfdCBleHBpcmU7CisKKwlJTklUX0xJU1RfSEVB RCgmdG9rZW5fbGlzdCk7CisJc3Bpbl9sb2NrX2luaXQoJnRva2VuX2xvY2spOworCUlOSVRfV09S SygmdG9rZW5fd29yaywgdG9rZW5fdGltZW91dF93b3JrKTsKKworCWhydGltZXJfaW5pdCgmdG9r ZW5fdGltZXIsIENMT0NLX01PTk9UT05JQywgSFJUSU1FUl9NT0RFX0FCUyk7CisJdG9rZW5fdGlt ZXIuZnVuY3Rpb24gPSB0b2tlbl90aW1lcl9mbjsKKwlleHBpcmUgPSBrdGltZV9hZGRfbnMoa3Rp bWVfZ2V0KCksIE5TRUNfUEVSX1NFQyk7CisJaHJ0aW1lcl9zdGFydCgmdG9rZW5fdGltZXIsIGV4 cGlyZSwgSFJUSU1FUl9NT0RFX0FCUyk7CisKKwlrdm1faW5mbygia3ZtaTogaW5pdGlhbGl6ZWQg aG9zdCBtZW1vcnkgaW50cm9zcGVjdGlvblxuIik7Cit9CisKK3ZvaWQga3ZtaV9tZW1fZXhpdCh2 b2lkKQoreworCWhydGltZXJfY2FuY2VsKCZ0b2tlbl90aW1lcik7Cit9CmRpZmYgLS1naXQgYS92 aXJ0L2t2bS9rdm1pX21zZy5jIGIvdmlydC9rdm0va3ZtaV9tc2cuYwppbmRleCAzZTM4MWY5NWI2 ODYuLmE1Zjg3YWFmYTIzNyAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92 aXJ0L2t2bS9rdm1pX21zZy5jCkBAIC0zMyw2ICszMyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBtc2dfSURzW10gPSB7CiAJW0tWTUlfRVZFTlRfUkVQTFldICAgICAgICAgICA9ICJLVk1J X0VWRU5UX1JFUExZIiwKIAlbS1ZNSV9HRVRfQ1BVSURdICAgICAgICAgICAgID0gIktWTUlfR0VU X0NQVUlEIiwKIAlbS1ZNSV9HRVRfR1VFU1RfSU5GT10gICAgICAgID0gIktWTUlfR0VUX0dVRVNU X0lORk8iLAorCVtLVk1JX0dFVF9NQVBfVE9LRU5dICAgICAgICAgPSAiS1ZNSV9HRVRfTUFQX1RP S0VOIiwKIAlbS1ZNSV9HRVRfTVRSUl9UWVBFXSAgICAgICAgID0gIktWTUlfR0VUX01UUlJfVFlQ RSIsCiAJW0tWTUlfR0VUX1BBR0VfQUNDRVNTXSAgICAgICA9ICJLVk1JX0dFVF9QQUdFX0FDQ0VT UyIsCiAJW0tWTUlfR0VUX1BBR0VfV1JJVEVfQklUTUFQXSA9ICJLVk1JX0dFVF9QQUdFX1dSSVRF X0JJVE1BUCIsCkBAIC0zNTIsNiArMzUzLDE5IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3dyaXRlX3Bo eXNpY2FsKHN0cnVjdCBrdm1pICppa3ZtLAogCXJldHVybiBrdm1pX21zZ192bV9tYXliZV9yZXBs eShpa3ZtLCBtc2csIGVjLCBOVUxMLCAwKTsKIH0KIAorc3RhdGljIGludCBoYW5kbGVfZ2V0X21h cF90b2tlbihzdHJ1Y3Qga3ZtaSAqaWt2bSwKKwkJCQljb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRy ICptc2csCisJCQkJY29uc3Qgdm9pZCAqX3JlcSkKK3sKKwlzdHJ1Y3Qga3ZtaV9nZXRfbWFwX3Rv a2VuX3JlcGx5IHJwbDsKKwlpbnQgZWM7CisKKwltZW1zZXQoJnJwbCwgMCwgc2l6ZW9mKHJwbCkp OworCWVjID0ga3ZtaV9jbWRfYWxsb2NfdG9rZW4oaWt2bS0+a3ZtLCAmcnBsLnRva2VuKTsKKwor CXJldHVybiBrdm1pX21zZ192bV9tYXliZV9yZXBseShpa3ZtLCBtc2csIGVjLCAmcnBsLCBzaXpl b2YocnBsKSk7Cit9CisKIHN0YXRpYyBib29sIGVuYWJsZV9zcHAoc3RydWN0IGt2bWkgKmlrdm0p CiB7CiAJaWYgKCFpa3ZtLT5zcHAuaW5pdGlhbGl6ZWQpIHsKQEAgLTUyNCw2ICs1MzgsNyBAQCBz dGF0aWMgaW50KCpjb25zdCBtc2dfdm1bXSkoc3RydWN0IGt2bWkgKiwgY29uc3Qgc3RydWN0IGt2 bWlfbXNnX2hkciAqLAogCVtLVk1JX0NPTlRST0xfU1BQXSAgICAgICAgICAgPSBoYW5kbGVfY29u dHJvbF9zcHAsCiAJW0tWTUlfQ09OVFJPTF9WTV9FVkVOVFNdICAgICA9IGhhbmRsZV9jb250cm9s X3ZtX2V2ZW50cywKIAlbS1ZNSV9HRVRfR1VFU1RfSU5GT10gICAgICAgID0gaGFuZGxlX2dldF9n dWVzdF9pbmZvLAorCVtLVk1JX0dFVF9NQVBfVE9LRU5dICAgICAgICAgPSBoYW5kbGVfZ2V0X21h cF90b2tlbiwKIAlbS1ZNSV9HRVRfUEFHRV9BQ0NFU1NdICAgICAgID0gaGFuZGxlX2dldF9wYWdl X2FjY2VzcywKIAlbS1ZNSV9HRVRfUEFHRV9XUklURV9CSVRNQVBdID0gaGFuZGxlX2dldF9wYWdl X3dyaXRlX2JpdG1hcCwKIAlbS1ZNSV9HRVRfVkVSU0lPTl0gICAgICAgICAgID0gaGFuZGxlX2dl dF92ZXJzaW9uLApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgt Zm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4v bGlzdGluZm8vdmlydHVhbGl6YXRpb24=