From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 63/92] kvm: introspection: add KVMI_EVENT_DESCRIPTOR Date: Fri, 9 Aug 2019 19:00:18 +0300 Message-ID: <20190809160047.8319-64-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 , =?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 RnJvbTogTmljdciZb3IgQ8OuyJt1IDxuY2l0dUBiaXRkZWZlbmRlci5jb20+CgpUaGlzIGV2ZW50 IGlzIHNlbnQgd2hlbiBJRFRSLCBHRFRSLCBMRFRSIG9yIFRSIGFyZSBhY2Nlc3NlZC4KClRoZXNl IGNvdWxkIGJlIHVzZWQgdG8gaW1wbGVtZW50IGEgdGlueSBhZ2VudCB3aGljaCBydW5zIGluIHRo ZSBjb250ZXh0Cm9mIGFuIGludHJvc3BlY3RlZCBndWVzdCBhbmQgdXNlcyB2aXJ0dWFsaXplZCBl eGNlcHRpb25zICgjVkUpIGFuZAphbHRlcm5hdGUgRVBUIHZpZXdzIChWTUZVTkMgIzApIHRvIGZp bHRlciBjb252ZXJ0ZWQgVk1FWElUUy4gVGhlIGV2ZW50cwpvZiBpbnRlcmVzdGVkIHdpbGwgYmUg c3VwcHJlc3NlZCAoYWZ0ZXIgc29tZSBhcHByb3ByaWF0ZSBndWVzdC1zaWRlCmhhbmRsaW5nKSB3 aGlsZSB0aGUgcmVzdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGludHJvc3BlY3RvciB2aWEgYSBWTUNB TEwuCgpTaWduZWQtb2ZmLWJ5OiBOaWN1yJlvciBDw67Im3UgPG5jaXR1QGJpdGRlZmVuZGVyLmNv bT4KQ28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5j b20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNv bT4KLS0tCiBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IHwgMzggKysrKysrKysr KysrKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgIHwgIDEgKwogYXJjaC94 ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmggICB8IDExICsrKysrCiBhcmNoL3g4Ni9rdm0va3Zt aS5jICAgICAgICAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJj aC94ODYva3ZtL3N2bS5jICAgICAgICAgICAgICAgICB8IDc0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogYXJjaC94ODYva3ZtL3ZteC92bXguYyAgICAgICAgICAgICB8IDU5ICsrKysr KysrKysrKysrKysrKysrKysrLQogYXJjaC94ODYva3ZtL3ZteC92bXguaCAgICAgICAgICAgICB8 ICAyICsKIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAgICAgICAgfCAgNiArKysKIGluY2x1 ZGUvbGludXgva3ZtX2hvc3QuaCAgICAgICAgICAgfCAgMSArCiBpbmNsdWRlL2xpbnV4L2t2bWku aCAgICAgICAgICAgICAgIHwgIDQgKysKIHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAgICAgICAgICB8ICAzICsrCiB2 aXJ0L2t2bS9rdm1pX21zZy5jICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKwogMTMgZmlsZXMg Y2hhbmdlZCwgMjg1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVh bC9rdm0va3ZtaS5yc3QKaW5kZXggMjYwMzgxM2QxZWU2Li44NzIxYTQ3MGRlODcgMTAwNjQ0Ci0t LSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlv bi92aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAtMTUzNiwzICsxNTM2LDQxIEBAIEl0IGlzIHVzZWQg YnkgdGhlIGNvZGUgcmVzaWRpbmcgaW5zaWRlIHRoZSBpbnRyb3NwZWN0ZWQgZ3Vlc3QgdG8gY2Fs bCB0aGUKIGludHJvc3BlY3Rpb24gdG9vbCBhbmQgdG8gcmVwb3J0IGNlcnRhaW4gZGV0YWlscyBh Ym91dCBpdHMgb3BlcmF0aW9uLiBGb3IKIGV4YW1wbGUsIGEgY2xhc3NpYyBhbnRpbWFsd2FyZSBy ZW1lZGlhdGlvbiB0b29sIGNhbiByZXBvcnQgd2hhdCBpdCBoYXMKIGZvdW5kIGR1cmluZyBhIHNj YW4uCisKKzExLiBLVk1JX0VWRU5UX0RFU0NSSVBUT1IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKworOkFyY2hpdGVjdHVyZTogeDg2Cis6VmVyc2lvbnM6ID49IDEKKzpBY3Rpb25zOiBDT05U SU5VRSwgUkVUUlksIENSQVNICis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX2V2 ZW50OworCXN0cnVjdCBrdm1pX2V2ZW50X2Rlc2NyaXB0b3IgeworCQlfX3U4IGRlc2NyaXB0b3I7 CisJCV9fdTggd3JpdGU7CisJCV9fdTggcGFkZGluZ1s2XTsKKwl9OworCis6UmV0dXJuczoKKwor OjoKKworCXN0cnVjdCBrdm1pX3ZjcHVfaGRyOworCXN0cnVjdCBrdm1pX2V2ZW50X3JlcGx5Owor CitUaGlzIGV2ZW50IGlzIHNlbnQgd2hlbiBhIGRlc2NyaXB0b3IgdGFibGUgcmVnaXN0ZXIgaXMg YWNjZXNzZWQgYW5kIHRoZQoraW50cm9zcGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIGZvciB0aGlz IGV2ZW50IChzZWUgKipLVk1JX0NPTlRST0xfRVZFTlRTKiopLgorCitgYGt2bWlfZXZlbnRgYCBh bmQgYGBrdm1pX2V2ZW50X2Rlc2NyaXB0b3JgYCBhcmUgc2VudCB0byB0aGUgaW50cm9zcGVjdG9y LgorCitgYGRlc2NyaXB0b3JgYCBjYW4gYmUgb25lIG9mOjoKKworCUtWTUlfREVTQ19JRFRSCisJ S1ZNSV9ERVNDX0dEVFIKKwlLVk1JX0RFU0NfTERUUgorCUtWTUlfREVTQ19UUgorCitgYHdyaXRl YGAgaXMgMSBpZiB0aGUgZGVzY3JpcHRvciB3YXMgd3JpdHRlbiwgMCBvdGhlcndpc2UuCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVk ZS9hc20va3ZtX2hvc3QuaAppbmRleCA5MWNkNDNhN2E3YmYuLmFkMzZhNWZjMjA0OCAxMDA2NDQK LS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9rdm1faG9zdC5oCkBAIC0xMDE1LDYgKzEwMTUsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9v cHMgewogCiAJdm9pZCAoKm1zcl9pbnRlcmNlcHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5z aWduZWQgaW50IG1zciwKIAkJCQlib29sIGVuYWJsZSk7CisJYm9vbCAoKmRlc2NfaW50ZXJjZXB0 KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5hYmxlKTsKIAl2b2lkICgqY3IzX3dyaXRl X2V4aXRpbmcpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUpOwogCWJvb2wgKCpu ZXN0ZWRfcGFnZWZhdWx0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCWJvb2wgKCpzcHRfZmF1 bHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL2t2bWkuaCBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCmluZGV4 IGMzYzk2ZTZlMmEyNi4uMGZhNGFjM2VkNWQxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL2t2bWkuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2t2bWkuaApA QCAtMTEwLDQgKzExMCwxNSBAQCBzdHJ1Y3Qga3ZtaV9nZXRfbXRycl90eXBlX3JlcGx5IHsKIAlf X3U4IHBhZGRpbmdbN107CiB9OwogCisjZGVmaW5lIEtWTUlfREVTQ19JRFRSCTEKKyNkZWZpbmUg S1ZNSV9ERVNDX0dEVFIJMgorI2RlZmluZSBLVk1JX0RFU0NfTERUUgkzCisjZGVmaW5lIEtWTUlf REVTQ19UUgk0CisKK3N0cnVjdCBrdm1pX2V2ZW50X2Rlc2NyaXB0b3IgeworCV9fdTggZGVzY3Jp cHRvcjsKKwlfX3U4IHdyaXRlOworCV9fdTggcGFkZGluZ1s2XTsKK307CisKICNlbmRpZiAvKiBf VUFQSV9BU01fWDg2X0tWTUlfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bWkuYyBi L2FyY2gveDg2L2t2bS9rdm1pLmMKaW5kZXggMDJlMDI2ZWY1ZWQ3Li4wNGNhYzViOGE0ZDAgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1pLmMKKysrIGIvYXJjaC94ODYva3ZtL2t2bWkuYwpA QCAtMTYxLDYgKzE2MSwzOCBAQCBib29sIGt2bWlfbW9uaXRvcmVkX21zcihzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHUzMiBtc3IpCiB9CiBFWFBPUlRfU1lNQk9MKGt2bWlfbW9uaXRvcmVkX21zcik7 CiAKK3N0YXRpYyBpbnQga3ZtaV9jb250cm9sX2V2ZW50X2Rlc2Moc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCBib29sIGVuYWJsZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChlbmFibGUpIHsKKwkJ aWYgKCFpc19ldmVudF9lbmFibGVkKHZjcHUsIEtWTUlfRVZFTlRfREVTQ1JJUFRPUikpCisJCQlp ZiAoIWt2bV9hcmNoX3ZjcHVfaW50ZXJjZXB0X2Rlc2ModmNwdSwgdHJ1ZSkpCisJCQkJZXJyID0g LUtWTV9FT1BOT1RTVVBQOworCX0gZWxzZSBpZiAoaXNfZXZlbnRfZW5hYmxlZCh2Y3B1LCBLVk1J X0VWRU5UX0RFU0NSSVBUT1IpKSB7CisJCWt2bV9hcmNoX3ZjcHVfaW50ZXJjZXB0X2Rlc2ModmNw dSwgZmFsc2UpOworCX0KKworCXJldHVybiBlcnI7Cit9CisKK2ludCBrdm1pX2FyY2hfY21kX2Nv bnRyb2xfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgZXZlbnRfaWQs CisJCQkJYm9vbCBlbmFibGUpCit7CisJaW50IGVycjsKKworCXN3aXRjaCAoZXZlbnRfaWQpIHsK KwljYXNlIEtWTUlfRVZFTlRfREVTQ1JJUFRPUjoKKwkJZXJyID0ga3ZtaV9jb250cm9sX2V2ZW50 X2Rlc2ModmNwdSwgZW5hYmxlKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZXJyID0gMDsKKwkJ YnJlYWs7CisJfQorCisJcmV0dXJuIGVycjsKK30KKwogc3RhdGljIHZvaWQgKmFsbG9jX2dldF9y ZWdpc3RlcnNfcmVwbHkoY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAogCQkJCSAgICAg ICBjb25zdCBzdHJ1Y3Qga3ZtaV9nZXRfcmVnaXN0ZXJzICpyZXEsCiAJCQkJICAgICAgIHNpemVf dCAqcnBsX3NpemUpCkBAIC02MDQsNiArNjM2LDQ0IEBAIHZvaWQga3ZtaV9hcmNoX3RyYXBfZXZl bnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCX0KIH0KIAorc3RhdGljIGJvb2wgX19rdm1pX2Rl c2NyaXB0b3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLAorCQkJ CSAgICB1OCB3cml0ZSkKK3sKKwl1MzIgYWN0aW9uOworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlh Y3Rpb24gPSBrdm1pX21zZ19zZW5kX2Rlc2NyaXB0b3IodmNwdSwgZGVzY3JpcHRvciwgd3JpdGUp OworCXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5VRToK KwkJcmV0ID0gdHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSBLVk1JX0VWRU5UX0FDVElPTl9SRVRSWToK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJa3ZtaV9oYW5kbGVfY29tbW9uX2V2ZW50X2FjdGlvbnMo dmNwdSwgYWN0aW9uLCAiREVTQyIpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK2Jvb2wga3Zt aV9kZXNjcmlwdG9yX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggZGVzY3JpcHRvciwg dTggd3JpdGUpCit7CisJc3RydWN0IGt2bWkgKmlrdm07CisJYm9vbCByZXQgPSB0cnVlOworCisJ aWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1cm4gdHJ1ZTsK KworCWlmIChpc19ldmVudF9lbmFibGVkKHZjcHUsIEtWTUlfRVZFTlRfREVTQ1JJUFRPUikpCisJ CXJldCA9IF9fa3ZtaV9kZXNjcmlwdG9yX2V2ZW50KHZjcHUsIGRlc2NyaXB0b3IsIHdyaXRlKTsK KworCWt2bWlfcHV0KHZjcHUtPmt2bSk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJP TChrdm1pX2Rlc2NyaXB0b3JfZXZlbnQpOworCiBpbnQga3ZtaV9hcmNoX2NtZF9nZXRfY3B1aWQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJICAgIGNvbnN0IHN0cnVjdCBrdm1pX2dldF9jcHVp ZCAqcmVxLAogCQkJICAgIHN0cnVjdCBrdm1pX2dldF9jcHVpZF9yZXBseSAqcnBsKQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS5jCmluZGV4IGI0ZTU5 ZWYwNDBiNy4uYjE3OGI4OTAwNjYwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtLmMKKysr IGIvYXJjaC94ODYva3ZtL3N2bS5jCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8YXNtL2t2 bV9wYXJhLmg+CiAjaW5jbHVkZSA8YXNtL2lycV9yZW1hcHBpbmcuaD4KICNpbmNsdWRlIDxhc20v c3BlYy1jdHJsLmg+CisjaW5jbHVkZSA8YXNtL2t2bWkuaD4KIAogI2luY2x1ZGUgPGFzbS92aXJ0 ZXh0Lmg+CiAjaW5jbHVkZSAidHJhY2UuaCIKQEAgLTQ3NTQsNiArNDc1NSw0MSBAQCBzdGF0aWMg aW50IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCB2Y3B1X3N2 bSAqc3ZtKQogCXJldHVybiByZXQ7CiB9CiAKKyNpZmRlZiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJ T04KK3N0YXRpYyBpbnQgZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uKHN0cnVjdCB2Y3B1 X3N2bSAqc3ZtKQoreworCXN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9ICZzdm0tPnZjcHU7CisJc3Ry dWN0IHZtY2JfY29udHJvbF9hcmVhICpjID0gJnN2bS0+dm1jYi0+Y29udHJvbDsKKworCXN3aXRj aCAoYy0+ZXhpdF9jb2RlKSB7CisJY2FzZSBTVk1fRVhJVF9JRFRSX1JFQUQ6CisJY2FzZSBTVk1f RVhJVF9JRFRSX1dSSVRFOgorCQlrdm1pX2Rlc2NyaXB0b3JfZXZlbnQodmNwdSwgS1ZNSV9ERVND X0lEVFIsCisJCQkJICAgICAgYy0+ZXhpdF9jb2RlID09IFNWTV9FWElUX0lEVFJfV1JJVEUpOwor CQlicmVhazsKKwljYXNlIFNWTV9FWElUX0dEVFJfUkVBRDoKKwljYXNlIFNWTV9FWElUX0dEVFJf V1JJVEU6CisJCWt2bWlfZGVzY3JpcHRvcl9ldmVudCh2Y3B1LCBLVk1JX0RFU0NfR0RUUiwKKwkJ CQkgICAgICBjLT5leGl0X2NvZGUgPT0gU1ZNX0VYSVRfR0RUUl9XUklURSk7CisJCWJyZWFrOwor CWNhc2UgU1ZNX0VYSVRfTERUUl9SRUFEOgorCWNhc2UgU1ZNX0VYSVRfTERUUl9XUklURToKKwkJ a3ZtaV9kZXNjcmlwdG9yX2V2ZW50KHZjcHUsIEtWTUlfREVTQ19MRFRSLAorCQkJCSAgICAgIGMt PmV4aXRfY29kZSA9PSBTVk1fRVhJVF9MRFRSX1dSSVRFKTsKKwkJYnJlYWs7CisJY2FzZSBTVk1f RVhJVF9UUl9SRUFEOgorCWNhc2UgU1ZNX0VYSVRfVFJfV1JJVEU6CisJCWt2bWlfZGVzY3JpcHRv cl9ldmVudCh2Y3B1LCBLVk1JX0RFU0NfVFIsCisJCQkJICAgICAgYy0+ZXhpdF9jb2RlID09IFNW TV9FWElUX1RSX1dSSVRFKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJ cmV0dXJuIDE7Cit9CisjZW5kaWYgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICovCisKIHN0 YXRpYyBpbnQgKCpjb25zdCBzdm1fZXhpdF9oYW5kbGVyc1tdKShzdHJ1Y3QgdmNwdV9zdm0gKnN2 bSkgPSB7CiAJW1NWTV9FWElUX1JFQURfQ1IwXQkJCT0gY3JfaW50ZXJjZXB0aW9uLAogCVtTVk1f RVhJVF9SRUFEX0NSM10JCQk9IGNyX2ludGVyY2VwdGlvbiwKQEAgLTQ4MTksNiArNDg1NSwxNiBA QCBzdGF0aWMgaW50ICgqY29uc3Qgc3ZtX2V4aXRfaGFuZGxlcnNbXSkoc3RydWN0IHZjcHVfc3Zt ICpzdm0pID0gewogCVtTVk1fRVhJVF9SU01dICAgICAgICAgICAgICAgICAgICAgICAgICA9IHJz bV9pbnRlcmNlcHRpb24sCiAJW1NWTV9FWElUX0FWSUNfSU5DT01QTEVURV9JUEldCQk9IGF2aWNf aW5jb21wbGV0ZV9pcGlfaW50ZXJjZXB0aW9uLAogCVtTVk1fRVhJVF9BVklDX1VOQUNDRUxFUkFU RURfQUNDRVNTXQk9IGF2aWNfdW5hY2NlbGVyYXRlZF9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorI2lm ZGVmIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTgorCVtTVk1fRVhJVF9JRFRSX1JFQURdCQkJPSBk ZXNjcmlwdG9yX2FjY2Vzc19pbnRlcmNlcHRpb24sCisJW1NWTV9FWElUX0dEVFJfUkVBRF0JCQk9 IGRlc2NyaXB0b3JfYWNjZXNzX2ludGVyY2VwdGlvbiwKKwlbU1ZNX0VYSVRfTERUUl9SRUFEXQkJ CT0gZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorCVtTVk1fRVhJVF9UUl9SRUFEXQkJ CT0gZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorCVtTVk1fRVhJVF9JRFRSX1dSSVRF XQkJCT0gZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorCVtTVk1fRVhJVF9HRFRSX1dS SVRFXQkJCT0gZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorCVtTVk1fRVhJVF9MRFRS X1dSSVRFXQkJCT0gZGVzY3JpcHRvcl9hY2Nlc3NfaW50ZXJjZXB0aW9uLAorCVtTVk1fRVhJVF9U Ul9XUklURV0JCQk9IGRlc2NyaXB0b3JfYWNjZXNzX2ludGVyY2VwdGlvbiwKKyNlbmRpZiAvKiBD T05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04gKi8KIH07CiAKIHN0YXRpYyB2b2lkIGR1bXBfdm1jYihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCkBAIC03MTQxLDYgKzcxODcsMzMgQEAgc3RhdGljIHZvaWQg c3ZtX2NyM193cml0ZV9leGl0aW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUp CiB7CiB9CiAKK3N0YXRpYyBib29sIHN2bV9kZXNjX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCB2Y3B1X3N2bSAqc3ZtID0gdG9fc3ZtKHZj cHUpOworCisJaWYgKGVuYWJsZSkgeworCQlzZXRfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1NU T1JFX0lEVFIpOworCQlzZXRfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JFX0dEVFIpOwor CQlzZXRfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JFX0xEVFIpOworCQlzZXRfaW50ZXJj ZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JFX1RSKTsKKwkJc2V0X2ludGVyY2VwdChzdm0sIElOVEVS Q0VQVF9MT0FEX0lEVFIpOworCQlzZXRfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX0xPQURfR0RU Uik7CisJCXNldF9pbnRlcmNlcHQoc3ZtLCBJTlRFUkNFUFRfTE9BRF9MRFRSKTsKKwkJc2V0X2lu dGVyY2VwdChzdm0sIElOVEVSQ0VQVF9MT0FEX1RSKTsKKwl9IGVsc2UgeworCQljbHJfaW50ZXJj ZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JFX0lEVFIpOworCQljbHJfaW50ZXJjZXB0KHN2bSwgSU5U RVJDRVBUX1NUT1JFX0dEVFIpOworCQljbHJfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JF X0xEVFIpOworCQljbHJfaW50ZXJjZXB0KHN2bSwgSU5URVJDRVBUX1NUT1JFX1RSKTsKKwkJY2xy X2ludGVyY2VwdChzdm0sIElOVEVSQ0VQVF9MT0FEX0lEVFIpOworCQljbHJfaW50ZXJjZXB0KHN2 bSwgSU5URVJDRVBUX0xPQURfR0RUUik7CisJCWNscl9pbnRlcmNlcHQoc3ZtLCBJTlRFUkNFUFRf TE9BRF9MRFRSKTsKKwkJY2xyX2ludGVyY2VwdChzdm0sIElOVEVSQ0VQVF9MT0FEX1RSKTsKKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2 X29wcyBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLmNwdV9oYXNfa3ZtX3N1cHBvcnQgPSBoYXNfc3Zt LAogCS5kaXNhYmxlZF9ieV9iaW9zID0gaXNfZGlzYWJsZWQsCkBAIC03MTU0LDYgKzcyMjcsNyBA QCBzdGF0aWMgc3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9fcm9fYWZ0ZXJfaW5pdCA9 IHsKIAogCS5jcjNfd3JpdGVfZXhpdGluZyA9IHN2bV9jcjNfd3JpdGVfZXhpdGluZywKIAkubXNy X2ludGVyY2VwdCA9IHN2bV9tc3JfaW50ZXJjZXB0LAorCS5kZXNjX2ludGVyY2VwdCA9IHN2bV9k ZXNjX2ludGVyY2VwdCwKIAkubmVzdGVkX3BhZ2VmYXVsdCA9IHN2bV9uZXN0ZWRfcGFnZWZhdWx0 LAogCS5zcHRfZmF1bHQgPSBzdm1fc3B0X2ZhdWx0LAogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9r dm0vdm14L3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC92bXguYwppbmRleCBkNTYwYjU4M2JmMzAu LjdkMWUzNDFiNTFhZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXguYworKysgYi9h cmNoL3g4Ni9rdm0vdm14L3ZteC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgva3ZtX2hvc3QuaD4KICNpbmNsdWRlIDxhc20va3Zt aV9ob3N0Lmg+CisjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1pLmg+CiAjaW5jbHVkZSA8bGludXgv a3ZtaS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVs ZXBhcmFtLmg+CkBAIC0yOTIyLDggKzI5MjMsOSBAQCBpbnQgdm14X3NldF9jcjQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCkKIAkJCWh3X2NyNCAmPSB+WDg2X0NSNF9V TUlQOwogCQl9IGVsc2UgaWYgKCFpc19ndWVzdF9tb2RlKHZjcHUpIHx8CiAJCQkhbmVzdGVkX2Nw dV9oYXMyKGdldF92bWNzMTIodmNwdSksIFNFQ09OREFSWV9FWEVDX0RFU0MpKQotCQkJdm1jc19j bGVhcl9iaXRzKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wsCi0JCQkJCVNFQ09OREFSWV9FWEVD X0RFU0MpOworCQkJaWYgKCF0b192bXgodmNwdSktPnRyYWNraW5nX2Rlc2MpCisJCQkJdm1jc19j bGVhcl9iaXRzKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wsCisJCQkJCQlTRUNPTkRBUllfRVhF Q19ERVNDKTsKIAl9CiAKIAlpZiAoY3I0ICYgWDg2X0NSNF9WTVhFKSB7CkBAIC00NjkxLDcgKzQ2 OTMsNDMgQEAgc3RhdGljIGludCBoYW5kbGVfc2V0X2NyNChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHVuc2lnbmVkIGxvbmcgdmFsKQogCiBzdGF0aWMgaW50IGhhbmRsZV9kZXNjKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSkKIHsKKyNpZmRlZiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04KKwlzdHJ1Y3Qg dmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTsKKwl1MzIgZXhpdF9yZWFzb24gPSB2bXgtPmV4 aXRfcmVhc29uOworCXUzMiB2bXhfaW5zdHJ1Y3Rpb25faW5mbyA9IHZtY3NfcmVhZDMyKFZNWF9J TlNUUlVDVElPTl9JTkZPKTsKKwl1OCBzdG9yZSA9ICh2bXhfaW5zdHJ1Y3Rpb25faW5mbyA+PiAy OSkgJiAweDE7CisJdTggZGVzY3JpcHRvciA9IDA7CisKKwlpZiAoIXZteC0+dHJhY2tpbmdfZGVz YykKKwkJZ290byBlbXVsYXRlOworCisJaWYgKGV4aXRfcmVhc29uID09IEVYSVRfUkVBU09OX0dE VFJfSURUUikgeworCQlpZiAoKHZteF9pbnN0cnVjdGlvbl9pbmZvID4+IDI4KSAmIDB4MSkKKwkJ CWRlc2NyaXB0b3IgPSBLVk1JX0RFU0NfSURUUjsKKwkJZWxzZQorCQkJZGVzY3JpcHRvciA9IEtW TUlfREVTQ19HRFRSOworCX0gZWxzZSB7CisJCWlmICgodm14X2luc3RydWN0aW9uX2luZm8gPj4g MjgpICYgMHgxKQorCQkJZGVzY3JpcHRvciA9IEtWTUlfREVTQ19UUjsKKwkJZWxzZQorCQkJZGVz Y3JpcHRvciA9IEtWTUlfREVTQ19MRFRSOworCX0KKworCS8qCisJICogRm9yIG5vdywgdGhpcyBm dW5jdGlvbiByZXR1cm5zIGZhbHNlIG9ubHkgd2hlbiB0aGUgZ3Vlc3QKKwkgKiBpcyB1bmdyYWNl ZnVsbHkgc3RvcHBlZCAoY3Jhc2hlZCkgb3IgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24KKwkgKiBp cyBza2lwcGVkIGJ5IHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wuCisJICovCisJaWYgKCFrdm1pX2Rl c2NyaXB0b3JfZXZlbnQodmNwdSwgZGVzY3JpcHRvciwgc3RvcmUpKQorCQlyZXR1cm4gMTsKK2Vt dWxhdGU6CisJLyoKKwkgKiBXZSBhcmUgaGVyZSBiZWNhdXNlIFg4Nl9DUjRfVU1JUCB3YXMgc2V0 IG9yCisJICogS1ZNSSBlbmFibGVkIHRoZSBpbnRlcmNlcHRpb24uCisJICovCisjZWxzZQogCVdB Uk5fT04oISh2Y3B1LT5hcmNoLmNyNCAmIFg4Nl9DUjRfVU1JUCkpOworI2VuZGlmIC8qIENPTkZJ R19LVk1fSU5UUk9TUEVDVElPTiAqLwogCXJldHVybiBrdm1fZW11bGF0ZV9pbnN0cnVjdGlvbih2 Y3B1LCAwKSA9PSBFTVVMQVRFX0RPTkU7CiB9CiAKQEAgLTc4NDAsNiArNzg3OCwyMiBAQCBzdGF0 aWMgYm9vbCB2bXhfc3B0X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlyZXR1cm4gKHZt eC0+ZXhpdF9yZWFzb24gPT0gRVhJVF9SRUFTT05fRVBUX1ZJT0xBVElPTik7CiB9CiAKK3N0YXRp YyBib29sIHZteF9kZXNjX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5h YmxlKQoreworCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOworCisJaWYgKCFj cHVfaGFzX3NlY29uZGFyeV9leGVjX2N0cmxzKCkpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChl bmFibGUpCisJCXZtY3Nfc2V0X2JpdHMoU0VDT05EQVJZX1ZNX0VYRUNfQ09OVFJPTCwgU0VDT05E QVJZX0VYRUNfREVTQyk7CisJZWxzZQorCQl2bWNzX2NsZWFyX2JpdHMoU0VDT05EQVJZX1ZNX0VY RUNfQ09OVFJPTCwgU0VDT05EQVJZX0VYRUNfREVTQyk7CisKKwl2bXgtPnRyYWNraW5nX2Rlc2Mg PSBlbmFibGU7CisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sIHZteF9nZXRfc3BwX3N0 YXR1cyh2b2lkKQogewogCXJldHVybiBzcHBfc3VwcG9ydGVkOwpAQCAtNzg3NSw2ICs3OTI5LDcg QEAgc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyB2bXhfeDg2X29wcyBfX3JvX2FmdGVyX2luaXQg PSB7CiAKIAkubXNyX2ludGVyY2VwdCA9IHZteF9tc3JfaW50ZXJjZXB0LAogCS5jcjNfd3JpdGVf ZXhpdGluZyA9IHZteF9jcjNfd3JpdGVfZXhpdGluZywKKwkuZGVzY19pbnRlcmNlcHQgPSB2bXhf ZGVzY19pbnRlcmNlcHQsCiAJLm5lc3RlZF9wYWdlZmF1bHQgPSB2bXhfbmVzdGVkX3BhZ2VmYXVs dCwKIAkuc3B0X2ZhdWx0ID0gdm14X3NwdF9mYXVsdCwKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYv a3ZtL3ZteC92bXguaCBiL2FyY2gveDg2L2t2bS92bXgvdm14LmgKaW5kZXggMGFjMGE2NGM3Nzkw Li41ODBiMDJmODYwMTEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14LmgKKysrIGIv YXJjaC94ODYva3ZtL3ZteC92bXguaApAQCAtMjY4LDYgKzI2OCw4IEBAIHN0cnVjdCB2Y3B1X3Zt eCB7CiAJdTY0IG1zcl9pYTMyX2ZlYXR1cmVfY29udHJvbF92YWxpZF9iaXRzOwogCXU2NCBlcHRf cG9pbnRlcjsKIAorCWJvb2wgdHJhY2tpbmdfZGVzYzsKKwogCXN0cnVjdCBwdF9kZXNjIHB0X2Rl c2M7CiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0v eDg2LmMKaW5kZXggZDU2OGU2MGFlNTY4Li4zOGFhZGRhZGI5M2EgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTEwMTQwLDYgKzEwMTQw LDEyIEBAIGJvb2wga3ZtX3NwdF9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB9CiBFWFBP UlRfU1lNQk9MKGt2bV9zcHRfZmF1bHQpOwogCitib29sIGt2bV9hcmNoX3ZjcHVfaW50ZXJjZXB0 X2Rlc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSkKK3sKKwlyZXR1cm4ga3Zt X3g4Nl9vcHMtPmRlc2NfaW50ZXJjZXB0KHZjcHUsIGVuYWJsZSk7Cit9CitFWFBPUlRfU1lNQk9M KGt2bV9hcmNoX3ZjcHVfaW50ZXJjZXB0X2Rlc2MpOworCiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1C T0xfR1BMKGt2bV9leGl0KTsKIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwoa3ZtX2Zhc3Rf bW1pbyk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKGt2bV9pbmpfdmlycSk7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0 LmgKaW5kZXggYjc3OTE0ZTk0NGE0Li42YzU3MjkxNDE0ZDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgva3ZtX2hvc3QuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTgwNiw2 ICs4MDYsNyBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LAogCQkJCQlzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpOwogaW50 IGt2bV9hcmNoX3ZjcHVfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJ CQkgIHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZyk7Citib29sIGt2bV9hcmNoX3ZjcHVfaW50 ZXJjZXB0X2Rlc2Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSk7CiBpbnQga3Zt X2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1 biAqa3ZtX3J1bik7CiB2b2lkIGt2bV92Y3B1X2lvY3RsX3g4Nl9nZXRfeHNhdmUoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LAogCQkJCSAgc3RydWN0IGt2bV94c2F2ZSAqZ3Vlc3RfeHNhdmUpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1pLmggYi9pbmNsdWRlL2xpbnV4L2t2bWkuaAppbmRl eCA1OWQ4M2QyZDBjY2EuLjVkMTYyYjllNjdmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9r dm1pLmgKKysrIGIvaW5jbHVkZS9saW51eC9rdm1pLmgKQEAgLTIwLDYgKzIwLDcgQEAgYm9vbCBr dm1pX2JyZWFrcG9pbnRfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3ZhLCB1OCBp bnNuX2xlbik7CiBib29sIGt2bWlfaHlwZXJjYWxsX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNw dSk7CiBib29sIGt2bWlfcXVldWVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2 b2lkIGt2bWlfdHJhcF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOworYm9vbCBrdm1pX2Rl c2NyaXB0b3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLCB1OCB3 cml0ZSk7CiB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7 CiB2b2lkIGt2bWlfaW5pdF9lbXVsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2 bWlfYWN0aXZhdGVfcmVwX2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CkBAIC0zNSw2 ICszNiw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGt2bWlfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkgeyByZXR1cm4gMDsgfQogc3RhdGljIGlubGluZSBib29sIGt2bWlfYnJlYWtwb2lu dF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBndmEsCiAJCQkJCSB1OCBpbnNuX2xl bikKIAkJCXsgcmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBrdm1pX2Rlc2NyaXB0 b3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLAorCQkJCQkgdTgg d3JpdGUpCisJCQl7IHJldHVybiB0cnVlOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtaV92Y3B1 X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGt2 bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyB9CiBzdGF0aWMgaW5s aW5lIGJvb2wga3ZtaV9oeXBlcmNhbGxfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7IHJl dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaS5jIGIvdmlydC9rdm0va3Zt aS5jCmluZGV4IGQwNGUxM2EwYjI0NC4uZDQ3YTcyNWE0MDQ1IDEwMDY0NAotLS0gYS92aXJ0L2t2 bS9rdm1pLmMKKysrIGIvdmlydC9rdm0va3ZtaS5jCkBAIC0xNTI5LDcgKzE1MjksNyBAQCBpbnQg a3ZtaV9jbWRfY29udHJvbF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBp bnQgZXZlbnRfaWQsCiAJCWVyciA9IGt2bWlfY29udHJvbF9ldmVudF9icmVha3BvaW50KHZjcHUs IGVuYWJsZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWVyciA9IDA7CisJCWVyciA9IGt2bWlf YXJjaF9jbWRfY29udHJvbF9ldmVudCh2Y3B1LCBldmVudF9pZCwgZW5hYmxlKTsKIAkJYnJlYWs7 CiAJfQogCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pX2ludC5oIGIvdmlydC9rdm0va3ZtaV9p bnQuaAppbmRleCA3OTNlYzI2OWI5ZmEuLmQ3Zjk4NThkM2U5NyAxMDA2NDQKLS0tIGEvdmlydC9r dm0va3ZtaV9pbnQuaAorKysgYi92aXJ0L2t2bS9rdm1pX2ludC5oCkBAIC0xODksNiArMTg5LDcg QEAgdTMyIGt2bWlfbXNnX3NlbmRfaHlwZXJjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB1 MzIga3ZtaV9tc2dfc2VuZF9wZihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBncGEsIHU2NCBn dmEsIHU4IGFjY2VzcywKIAkJICAgICBib29sICpzaW5nbGVzdGVwLCBib29sICpyZXBfY29tcGxl dGUsCiAJCSAgICAgdTY0ICpjdHhfYWRkciwgdTggKmN0eCwgdTMyICpjdHhfc2l6ZSk7Cit1MzIg a3ZtaV9tc2dfc2VuZF9kZXNjcmlwdG9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggZGVzY3Jp cHRvciwgdTggd3JpdGUpOwogdTMyIGt2bWlfbXNnX3NlbmRfY3JlYXRlX3ZjcHUoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KTsKIHUzMiBrdm1pX21zZ19zZW5kX3BhdXNlX3ZjcHUoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1KTsKIGludCBrdm1pX21zZ19zZW5kX3VuaG9vayhzdHJ1Y3Qga3ZtaSAqaWt2bSk7 CkBAIC0yMjgsNiArMjI5LDggQEAgdm9pZCBrdm1pX2hhbmRsZV9jb21tb25fZXZlbnRfYWN0aW9u cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBhY3Rpb24sCiB2b2lkIGt2bWlfYXJjaF91cGRh dGVfcGFnZV90cmFja2luZyhzdHJ1Y3Qga3ZtICprdm0sCiAJCQkJICAgIHN0cnVjdCBrdm1fbWVt b3J5X3Nsb3QgKnNsb3QsCiAJCQkJICAgIHN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm0pOworaW50 IGt2bWlfYXJjaF9jbWRfY29udHJvbF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2ln bmVkIGludCBldmVudF9pZCwKKwkJCQlib29sIGVuYWJsZSk7CiBpbnQga3ZtaV9hcmNoX2NtZF9n ZXRfcmVnaXN0ZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCQljb25zdCBzdHJ1Y3Qga3Zt aV9tc2dfaGRyICptc2csCiAJCQkJY29uc3Qgc3RydWN0IGt2bWlfZ2V0X3JlZ2lzdGVycyAqcmVx LApkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2t2bWlfbXNnLmMK aW5kZXggODlmNjNmNDBmNWNjLi4zZTM4MWY5NWI2ODYgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2 bWlfbXNnLmMKKysrIGIvdmlydC9rdm0va3ZtaV9tc2cuYwpAQCAtMTE2Myw2ICsxMTYzLDIzIEBA IHUzMiBrdm1pX21zZ19zZW5kX3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTY0 IGd2YSwgdTggYWNjZXNzLAogCXJldHVybiBhY3Rpb247CiB9CiAKK3UzMiBrdm1pX21zZ19zZW5k X2Rlc2NyaXB0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLCB1OCB3cml0 ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9kZXNjcmlwdG9yIGU7CisJaW50IGVyciwgYWN0aW9u OworCisJbWVtc2V0KCZlLCAwLCBzaXplb2YoZSkpOworCWUuZGVzY3JpcHRvciA9IGRlc2NyaXB0 b3I7CisJZS53cml0ZSA9IHdyaXRlOworCisJZXJyID0ga3ZtaV9zZW5kX2V2ZW50KHZjcHUsIEtW TUlfRVZFTlRfREVTQ1JJUFRPUiwgJmUsIHNpemVvZihlKSwKKwkJCSAgICAgIE5VTEwsIDAsICZh Y3Rpb24pOworCWlmIChlcnIpCisJCXJldHVybiBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5VRTsK KworCXJldHVybiBhY3Rpb247Cit9CisKIHUzMiBrdm1pX21zZ19zZW5kX2NyZWF0ZV92Y3B1KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpbnQgZXJyLCBhY3Rpb247Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcg bGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xp c3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==