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 62C07C47080 for ; Wed, 6 Oct 2021 17:41:01 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 217F66113A for ; Wed, 6 Oct 2021 17:41:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 217F66113A 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 smtp3.osuosl.org (Postfix) with ESMTP id DDAC160EF0; Wed, 6 Oct 2021 17:40:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y9xnm__EUkam; Wed, 6 Oct 2021 17:40:58 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 800CB60F1E; Wed, 6 Oct 2021 17:40:57 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 526D9C003E; Wed, 6 Oct 2021 17:40:55 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1F124C0035 for ; Wed, 6 Oct 2021 17:40:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 199DD408D7 for ; Wed, 6 Oct 2021 17:40:47 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gJI85h9zqwza for ; Wed, 6 Oct 2021 17:40:45 +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 smtp4.osuosl.org (Postfix) with ESMTPS id 6DE4F408E0 for ; Wed, 6 Oct 2021 17:40:45 +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 3AE0E30827AC; Wed, 6 Oct 2021 20:31:19 +0300 (EEST) Received: from localhost (unknown [91.199.104.28]) by smtp.bitdefender.com (Postfix) with ESMTPSA id 1D1E0300F73A; Wed, 6 Oct 2021 20:31:19 +0300 (EEST) X-Is-Junk-Enabled: fGZTSsP0qEJE2AIKtlSuFiRRwg9xyHmJ From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= To: kvm@vger.kernel.org Subject: [PATCH v12 60/77] KVM: introspection: add KVMI_VCPU_INJECT_EXCEPTION + KVMI_VCPU_EVENT_TRAP Date: Wed, 6 Oct 2021 20:30:56 +0300 Message-Id: <20211006173113.26445-61-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 , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , 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" RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlIEtWTUlfVkNQ VV9JTkpFQ1RfRVhDRVBUSU9OIGNvbW1hbmQgaXMgdXNlZCBieSB0aGUgaW50cm9zcGVjdGlvbiB0 b29sCnRvIGluamVjdCBleGNlcHRpb25zLCBmb3IgZXhhbXBsZSwgdG8gZ2V0IGEgcGFnZSBmcm9t IHN3YXAuCgpUaGUgZXhjZXB0aW9uIGlzIGluamVjdGVkIHJpZ2h0IGJlZm9yZSBlbnRlcmluZyBp biBndWVzdCB1bmxlc3MgdGhlcmUgaXMKYWxyZWFkeSBhbiBleGNlcHRpb24gcGVuZGluZy4gVGhl IGludHJvc3BlY3Rpb24gdG9vbCBpcyBub3RpZmllZCB3aXRoCmFuIEtWTUlfVkNQVV9FVkVOVF9U UkFQIGV2ZW50IGFib3V0IHRoZSBzdWNjZXNzIG9mIHRoZSBpbmplY3Rpb24uIEluCmNhc2Ugb2Yg ZmFpbHVyZSwgdGhlIGludHJvc3BlY3Rpb24gdG9vbCBpcyBleHBlY3RlZCB0byB0cnkgYWdhaW4g bGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRkZWZlbmRlci5j b20+CkNvLWRldmVsb3BlZC1ieTogTmljdciZb3IgQ8OuyJt1IDxuaWN1LmNpdHVAaWNsb3VkLmNv bT4KU2lnbmVkLW9mZi1ieTogTmljdciZb3IgQ8OuyJt1IDxuaWN1LmNpdHVAaWNsb3VkLmNvbT4K Q28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+ ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4K LS0tCiBEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0ICAgICAgICAgICAgICAgfCAgNzYg KysrKysrKysrKysKIGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oICAgICAgICAgICAg ICB8ICAxMSArKwogYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmggICAgICAgICAgICAg IHwgIDE2ICsrKwogYXJjaC94ODYva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTEwICsrKysrKysrKysrKysrKysKIGFyY2gveDg2L2t2bS9rdm1pLmggICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMyArCiBhcmNoL3g4Ni9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTIgKysrKysrKy0KIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oICAgICAg ICAgICAgICAgICAgICAgfCAgMTQgKy0KIC4uLi90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0 L2t2bWlfdGVzdC5jICB8IDEyNCArKysrKysrKysrKysrKysrKysKIHZpcnQva3ZtL2ludHJvc3Bl Y3Rpb24va3ZtaS5jICAgICAgICAgICAgICAgICB8ICAgMiArCiB2aXJ0L2t2bS9pbnRyb3NwZWN0 aW9uL2t2bWlfaW50LmggICAgICAgICAgICAgfCAgIDQgKwogdmlydC9rdm0vaW50cm9zcGVjdGlv bi9rdm1pX21zZy5jICAgICAgICAgICAgIHwgIDE2ICsrLQogMTIgZmlsZXMgY2hhbmdlZCwgNDE2 IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vdmlydC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0Cmlu ZGV4IGE0NzA1YWNkZGViMi4uMWZiYzJhMDNmNWJkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9u L3ZpcnQva3ZtL2t2bWkucnN0CisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QK QEAgLTU1MCw2ICs1NTAsNyBAQCBiZWNhdXNlIHRoZXNlIGFyZSBzZW50IGFzIGEgcmVzdWx0IG9m IGNlcnRhaW4gY29tbWFuZHMgKGJ1dCB0aGV5IGNhbiBiZQogZGlzYWxsb3dlZCBieSB0aGUgZGV2 aWNlIG1hbmFnZXIpIDo6CiAKIAlLVk1JX1ZDUFVfRVZFTlRfUEFVU0UKKwlLVk1JX1ZDUFVfRVZF TlRfVFJBUAogCiBUaGUgVk0gZXZlbnRzIChlLmcuICpLVk1JX1ZNX0VWRU5UX1VOSE9PSyopIGFy ZSBjb250cm9sbGVkIHdpdGgKIHRoZSAqS1ZNSV9WTV9DT05UUk9MX0VWRU5UUyogY29tbWFuZC4K QEAgLTczNiw2ICs3MzcsNDYgQEAgSUQgc2V0LgogKiAtS1ZNX0VJTlZBTCAtIHRoZSBwYWRkaW5n IGlzIG5vdCB6ZXJvCiAqIC1LVk1fRUFHQUlOIC0gdGhlIHNlbGVjdGVkIHZDUFUgY2FuJ3QgYmUg aW50cm9zcGVjdGVkIHlldAogCisxNi4gS1ZNSV9WQ1BVX0lOSkVDVF9FWENFUFRJT04KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6QXJjaGl0ZWN0dXJlczogeDg2Cis6VmVyc2lv bnM6ID49IDEKKzpQYXJhbWV0ZXJzOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJ c3RydWN0IGt2bWlfdmNwdV9pbmplY3RfZXhjZXB0aW9uIHsKKwkJX191OCBucjsKKwkJX191OCBw YWRkaW5nMTsKKwkJX191MTYgcGFkZGluZzI7CisJCV9fdTMyIGVycm9yX2NvZGU7CisJCV9fdTY0 IGFkZHJlc3M7CisJfTsKKworOlJldHVybnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9j b2RlCisKK0luamVjdHMgYSB2Q1BVIGV4Y2VwdGlvbiAoYGBucmBgKSB3aXRoIG9yIHdpdGhvdXQg YW4gZXJyb3IgY29kZSAoYGBlcnJvcl9jb2RlYGApLgorRm9yIHBhZ2UgZmF1bHQgZXhjZXB0aW9u cywgdGhlIGd1ZXN0IHZpcnR1YWwgYWRkcmVzcyAoYGBhZGRyZXNzYGApCitoYXMgdG8gYmUgc3Bl Y2lmaWVkIHRvby4KKworVGhlICpLVk1JX1ZDUFVfRVZFTlRfVFJBUCogZXZlbnQgd2lsbCBiZSBz ZW50IHdpdGggdGhlIGVmZmVjdGl2ZSBpbmplY3RlZAorZXhjZXB0aW9uLgorCis6RXJyb3JzOgor CisqIC1LVk1fRVBFUk0gIC0gdGhlICpLVk1JX1ZDUFVfRVZFTlRfVFJBUCogZXZlbnQgaXMgZGlz YWxsb3dlZAorKiAtS1ZNX0VJTlZBTCAtIHRoZSBzZWxlY3RlZCB2Q1BVIGlzIGludmFsaWQKKyog LUtWTV9FSU5WQUwgLSB0aGUgcGFkZGluZyBpcyBub3QgemVybworKiAtS1ZNX0VBR0FJTiAtIHRo ZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKKyogLUtWTV9FQlVTWSAt IGFub3RoZXIgKktWTUlfVkNQVV9JTkpFQ1RfRVhDRVBUSU9OKi0qS1ZNSV9WQ1BVX0VWRU5UX1RS QVAqCisgICAgICAgICAgICAgICBwYWlyIGlzIGluIHByb2dyZXNzCisKIEV2ZW50cwogPT09PT09 CiAKQEAgLTk2NiwzICsxMDA3LDM4IEBAIHJlZ2lzdGVyIChzZWUgKipLVk1JX1ZDUFVfQ09OVFJP TF9FVkVOVFMqKikuCiAoYGBjcmBgKSwgdGhlIG9sZCB2YWx1ZSAoYGBvbGRfdmFsdWVgYCkgYW5k IHRoZSBuZXcgdmFsdWUgKGBgbmV3X3ZhbHVlYGApCiBhcmUgc2VudCB0byB0aGUgaW50cm9zcGVj dGlvbiB0b29sLiBUaGUgKkNPTlRJTlVFKiBhY3Rpb24gd2lsbCBzZXQgdGhlCiBgYG5ld192YWxg YC4KKworNi4gS1ZNSV9WQ1BVX0VWRU5UX1RSQVAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK KzpBcmNoaXRlY3R1cmVzOiB4ODYKKzpWZXJzaW9uczogPj0gMQorOkFjdGlvbnM6IENPTlRJTlVF LCBDUkFTSAorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2V2ZW50Owor CXN0cnVjdCBrdm1pX3ZjcHVfZXZlbnRfdHJhcCB7CisJCV9fdTggbnI7CisJCV9fdTggcGFkZGlu ZzE7CisJCV9fdTE2IHBhZGRpbmcyOworCQlfX3UzMiBlcnJvcl9jb2RlOworCQlfX3U2NCBhZGRy ZXNzOworCX07CisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJ c3RydWN0IGt2bWlfdmNwdV9ldmVudF9yZXBseTsKKworVGhpcyBldmVudCBpcyBzZW50IGlmIGEg cHJldmlvdXMgKktWTUlfVkNQVV9JTkpFQ1RfRVhDRVBUSU9OKiBjb21tYW5kCit0b29rIHBsYWNl LiBCZWNhdXNlIGl0IGhhcyBhIGhpZ2ggcHJpb3JpdHksIGl0IHdpbGwgYmUgc2VudCBiZWZvcmUg YW55CitvdGhlciB2Q1BVIGludHJvc3BlY3Rpb24gZXZlbnQuCisKK2Bga3ZtaV92Y3B1X2V2ZW50 YGAgKHdpdGggdGhlIHZDUFUgc3RhdGUpLCBleGNlcHRpb24vaW50ZXJydXB0IG51bWJlcgorKGBg bnJgYCksIGV4Y2VwdGlvbiBjb2RlIChgYGVycm9yX2NvZGVgYCkgYW5kIGBgYWRkcmVzc2BgIGFy ZSBzZW50IHRvCit0aGUgaW50cm9zcGVjdGlvbiB0b29sLCB3aGljaCBzaG91bGQgY2hlY2sgaWYg aXRzIGV4Y2VwdGlvbiBoYXMgYmVlbgoraW5qZWN0ZWQgb3Igb3ZlcnJpZGRlbi4KZGlmZiAtLWdp dCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9h c20va3ZtaV9ob3N0LmgKaW5kZXggZWRiZWRmMDMxNDY3Li45N2Y1YjFhMDFjOWUgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2t2bWlfaG9zdC5oCkBAIC0yNCw2ICsyNCwxNSBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfYXJj aF9pbnRyb3NwZWN0aW9uIHsKIAlib29sIGhhdmVfZGVsYXllZF9yZWdzOwogCiAJREVDTEFSRV9C SVRNQVAoY3JfbWFzaywgS1ZNSV9OVU1fQ1IpOworCisJc3RydWN0IHsKKwkJdTggbnI7CisJCXUz MiBlcnJvcl9jb2RlOworCQlib29sIGVycm9yX2NvZGVfdmFsaWQ7CisJCXU2NCBhZGRyZXNzOwor CQlib29sIHBlbmRpbmc7CisJCWJvb2wgc2VuZF9ldmVudDsKKwl9IGV4Y2VwdGlvbjsKIH07CiAK IHN0cnVjdCBrdm1fYXJjaF9pbnRyb3NwZWN0aW9uIHsKQEAgLTM2LDYgKzQ1LDcgQEAgYm9vbCBr dm1pX2NyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGNyLAogCQkg ICB1bnNpZ25lZCBsb25nIG9sZF92YWx1ZSwgdW5zaWduZWQgbG9uZyAqbmV3X3ZhbHVlKTsKIGJv b2wga3ZtaV9jcjNfaW50ZXJjZXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIGJvb2wga3Zt aV9tb25pdG9yX2NyM3dfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFi bGUpOwordm9pZCBrdm1pX2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKICNl bHNlIC8qIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTiAqLwogCkBAIC00OCw2ICs1OCw3IEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBrdm1pX2NyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5z aWduZWQgaW50IGNyLAogc3RhdGljIGlubGluZSBib29sIGt2bWlfY3IzX2ludGVyY2VwdGVkKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyByZXR1cm4gZmFsc2U7IH0KIHN0YXRpYyBpbmxpbmUgYm9v bCBrdm1pX21vbml0b3JfY3Izd19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJ CQkJYm9vbCBlbmFibGUpIHsgcmV0dXJuIGZhbHNlOyB9CitzdGF0aWMgaW5saW5lIHZvaWQga3Zt aV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQogCiAjZW5kaWYgLyogQ09O RklHX0tWTV9JTlRST1NQRUNUSU9OICovCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20va3ZtaS5oIGIvYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmgKaW5kZXgg MzJjZDE3NDg4MDU4Li5hYTk5MWZiYWI0NzMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20va3ZtaS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCkBA IC03OSw0ICs3OSwyMCBAQCBzdHJ1Y3Qga3ZtaV92Y3B1X2V2ZW50X2NyX3JlcGx5IHsKIAlfX3U2 NCBuZXdfdmFsOwogfTsKIAorc3RydWN0IGt2bWlfdmNwdV9ldmVudF90cmFwIHsKKwlfX3U4IG5y OworCV9fdTggcGFkZGluZzE7CisJX191MTYgcGFkZGluZzI7CisJX191MzIgZXJyb3JfY29kZTsK KwlfX3U2NCBhZGRyZXNzOworfTsKKworc3RydWN0IGt2bWlfdmNwdV9pbmplY3RfZXhjZXB0aW9u IHsKKwlfX3U4IG5yOworCV9fdTggcGFkZGluZzE7CisJX191MTYgcGFkZGluZzI7CisJX191MzIg ZXJyb3JfY29kZTsKKwlfX3U2NCBhZGRyZXNzOworfTsKKwogI2VuZGlmIC8qIF9VQVBJX0FTTV9Y ODZfS1ZNSV9IICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYv a3ZtL2t2bWkuYwppbmRleCBhY2Q2NTVhYjc3MGQuLjkzMTIzZDQ3NzUyYyAxMDA2NDQKLS0tIGEv YXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC0xNSw2ICsx NSw3IEBAIHZvaWQga3ZtaV9hcmNoX2luaXRfdmNwdV9ldmVudHNfbWFzayh1bnNpZ25lZCBsb25n ICpzdXBwb3J0ZWQpCiAJc2V0X2JpdChLVk1JX1ZDUFVfRVZFTlRfQlJFQUtQT0lOVCwgc3VwcG9y dGVkKTsKIAlzZXRfYml0KEtWTUlfVkNQVV9FVkVOVF9DUiwgc3VwcG9ydGVkKTsKIAlzZXRfYml0 KEtWTUlfVkNQVV9FVkVOVF9IWVBFUkNBTEwsIHN1cHBvcnRlZCk7CisJc2V0X2JpdChLVk1JX1ZD UFVfRVZFTlRfVFJBUCwgc3VwcG9ydGVkKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBrdm1p X3ZjcHVfbW9kZShjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCkBAIC00NTcsMyArNDU4LDEx MiBAQCBib29sIGt2bWlfY3IzX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAly ZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChrdm1pX2NyM19pbnRlcmNlcHRlZCk7CisKK2lu dCBrdm1pX2FyY2hfY21kX3ZjcHVfaW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCisJCQkJCWNvbnN0IHN0cnVjdCBrdm1pX3ZjcHVfaW5qZWN0X2V4Y2VwdGlvbiAqcmVxKQor eworCXN0cnVjdCBrdm1fdmNwdV9hcmNoX2ludHJvc3BlY3Rpb24gKmFyY2ggPSAmVkNQVUkodmNw dSktPmFyY2g7CisJYm9vbCBoYXNfZXJyb3I7CisKKwlhcmNoLT5leGNlcHRpb24ucGVuZGluZyA9 IHRydWU7CisKKwloYXNfZXJyb3IgPSB4ODZfZXhjZXB0aW9uX2hhc19lcnJvcl9jb2RlKHJlcS0+ bnIpOworCisJYXJjaC0+ZXhjZXB0aW9uLm5yID0gcmVxLT5ucjsKKwlhcmNoLT5leGNlcHRpb24u ZXJyb3JfY29kZSA9IGhhc19lcnJvciA/IHJlcS0+ZXJyb3JfY29kZSA6IDA7CisJYXJjaC0+ZXhj ZXB0aW9uLmVycm9yX2NvZGVfdmFsaWQgPSBoYXNfZXJyb3I7CisJYXJjaC0+ZXhjZXB0aW9uLmFk ZHJlc3MgPSByZXEtPmFkZHJlc3M7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQga3Zt aV9xdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1f dmNwdV9hcmNoX2ludHJvc3BlY3Rpb24gKmFyY2ggPSAmVkNQVUkodmNwdSktPmFyY2g7CisJc3Ry dWN0IHg4Nl9leGNlcHRpb24gZSA9IHsKKwkJLnZlY3RvciA9IGFyY2gtPmV4Y2VwdGlvbi5uciwK KwkJLmVycm9yX2NvZGVfdmFsaWQgPSBhcmNoLT5leGNlcHRpb24uZXJyb3JfY29kZV92YWxpZCwK KwkJLmVycm9yX2NvZGUgPSBhcmNoLT5leGNlcHRpb24uZXJyb3JfY29kZSwKKwkJLmFkZHJlc3Mg PSBhcmNoLT5leGNlcHRpb24uYWRkcmVzcywKKwl9OworCisJaWYgKGUudmVjdG9yID09IFBGX1ZF Q1RPUikKKwkJa3ZtX2luamVjdF9wYWdlX2ZhdWx0KHZjcHUsICZlKTsKKwllbHNlIGlmIChlLmVy cm9yX2NvZGVfdmFsaWQpCisJCWt2bV9xdWV1ZV9leGNlcHRpb25fZSh2Y3B1LCBlLnZlY3Rvciwg ZS5lcnJvcl9jb2RlKTsKKwllbHNlCisJCWt2bV9xdWV1ZV9leGNlcHRpb24odmNwdSwgZS52ZWN0 b3IpOworfQorCitzdGF0aWMgdm9pZCBrdm1pX3NhdmVfaW5qZWN0ZWRfZXZlbnQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fdmNwdV9pbnRyb3NwZWN0aW9uICp2Y3B1aSA9 IFZDUFVJKHZjcHUpOworCisJdmNwdWktPmFyY2guZXhjZXB0aW9uLmVycm9yX2NvZGUgPSAwOwor CXZjcHVpLT5hcmNoLmV4Y2VwdGlvbi5lcnJvcl9jb2RlX3ZhbGlkID0gZmFsc2U7CisKKwl2Y3B1 aS0+YXJjaC5leGNlcHRpb24uYWRkcmVzcyA9IHZjcHUtPmFyY2guY3IyOworCWlmICh2Y3B1LT5h cmNoLmV4Y2VwdGlvbi5pbmplY3RlZCkgeworCQl2Y3B1aS0+YXJjaC5leGNlcHRpb24ubnIgPSB2 Y3B1LT5hcmNoLmV4Y2VwdGlvbi5ucjsKKwkJdmNwdWktPmFyY2guZXhjZXB0aW9uLmVycm9yX2Nv ZGVfdmFsaWQgPQorCQkJeDg2X2V4Y2VwdGlvbl9oYXNfZXJyb3JfY29kZSh2Y3B1LT5hcmNoLmV4 Y2VwdGlvbi5ucik7CisJCXZjcHVpLT5hcmNoLmV4Y2VwdGlvbi5lcnJvcl9jb2RlID0gdmNwdS0+ YXJjaC5leGNlcHRpb24uZXJyb3JfY29kZTsKKwl9IGVsc2UgaWYgKHZjcHUtPmFyY2guaW50ZXJy dXB0LmluamVjdGVkKSB7CisJCXZjcHVpLT5hcmNoLmV4Y2VwdGlvbi5uciA9IHZjcHUtPmFyY2gu aW50ZXJydXB0Lm5yOworCX0KK30KKworc3RhdGljIHZvaWQga3ZtaV9pbmplY3RfcGVuZGluZ19l eGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fdmNwdV9pbnRy b3NwZWN0aW9uICp2Y3B1aSA9IFZDUFVJKHZjcHUpOworCisJaWYgKCFrdm1fZXZlbnRfbmVlZHNf cmVpbmplY3Rpb24odmNwdSkpIHsKKwkJa3ZtaV9xdWV1ZV9leGNlcHRpb24odmNwdSk7CisJCWt2 bV9pbmplY3RfcGVuZGluZ19leGNlcHRpb24odmNwdSk7CisJfQorCisJa3ZtaV9zYXZlX2luamVj dGVkX2V2ZW50KHZjcHUpOworCisJdmNwdWktPmFyY2guZXhjZXB0aW9uLnBlbmRpbmcgPSBmYWxz ZTsKKwl2Y3B1aS0+YXJjaC5leGNlcHRpb24uc2VuZF9ldmVudCA9IHRydWU7CisJa3ZtX21ha2Vf cmVxdWVzdChLVk1fUkVRX0lOVFJPU1BFQ1RJT04sIHZjcHUpOworfQorCit2b2lkIGt2bWlfZW50 ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fdmNwdV9pbnRy b3NwZWN0aW9uICp2Y3B1aTsKKwlzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWk7CisKKwlr dm1pID0ga3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAoa3ZtaSkgeworCQl2Y3B1aSA9IFZDUFVJ KHZjcHUpOworCisJCWlmICh2Y3B1aS0+YXJjaC5leGNlcHRpb24ucGVuZGluZykKKwkJCWt2bWlf aW5qZWN0X3BlbmRpbmdfZXhjZXB0aW9uKHZjcHUpOworCisJCWt2bWlfcHV0KHZjcHUtPmt2bSk7 CisJfQorfQorCitzdGF0aWMgdm9pZCBrdm1pX3NlbmRfdHJhcF9ldmVudChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpCit7CisJdTMyIGFjdGlvbjsKKworCWFjdGlvbiA9IGt2bWlfbXNnX3NlbmRfdmNw dV90cmFwKHZjcHUpOworCXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBLVk1JX0VWRU5UX0FDVElP Tl9DT05USU5VRToKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJa3ZtaV9oYW5kbGVfY29tbW9uX2V2 ZW50X2FjdGlvbnModmNwdSwgYWN0aW9uKTsKKwl9Cit9CisKK3ZvaWQga3ZtaV9hcmNoX3NlbmRf cGVuZGluZ19ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJc3RydWN0IGt2bV92Y3B1 X2ludHJvc3BlY3Rpb24gKnZjcHVpID0gVkNQVUkodmNwdSk7CisKKwlpZiAodmNwdWktPmFyY2gu ZXhjZXB0aW9uLnNlbmRfZXZlbnQpIHsKKwkJdmNwdWktPmFyY2guZXhjZXB0aW9uLnNlbmRfZXZl bnQgPSBmYWxzZTsKKwkJa3ZtaV9zZW5kX3RyYXBfZXZlbnQodmNwdSk7CisJfQorfQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL2t2bWkuaCBiL2FyY2gveDg2L2t2bS9rdm1pLmgKaW5kZXggNmE0 NDQ0MjhiODMxLi4yNjVmZWNlMTQ4ZDIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1pLmgK KysrIGIvYXJjaC94ODYva3ZtL2t2bWkuaApAQCAtOCw4ICs4LDExIEBAIGludCBrdm1pX2FyY2hf Y21kX3ZjcHVfZ2V0X3JlZ2lzdGVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiB2b2lkIGt2bWlf YXJjaF9jbWRfdmNwdV9zZXRfcmVnaXN0ZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCQkg ICAgICBjb25zdCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpOwogaW50IGt2bWlfYXJjaF9jbWRfdmNw dV9jb250cm9sX2NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNyLCBib29sIGVuYWJsZSk7 CitpbnQga3ZtaV9hcmNoX2NtZF92Y3B1X2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1 ICp2Y3B1LAorCQkJCWNvbnN0IHN0cnVjdCBrdm1pX3ZjcHVfaW5qZWN0X2V4Y2VwdGlvbiAqcmVx KTsKIAogdTMyIGt2bWlfbXNnX3NlbmRfdmNwdV9jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUz MiBjciwgdTY0IG9sZF92YWx1ZSwKIAkJCSAgdTY0IG5ld192YWx1ZSwgdTY0ICpyZXRfdmFsdWUp OwordTMyIGt2bWlfbXNnX3NlbmRfdmNwdV90cmFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bWlfbXNnLmMgYi9hcmNoL3g4Ni9r dm0va3ZtaV9tc2cuYwppbmRleCA0YTJkYmMzOGFlZjguLjM5Y2JhYjlmMjkzYSAxMDA2NDQKLS0t IGEvYXJjaC94ODYva3ZtL2t2bWlfbXNnLmMKKysrIGIvYXJjaC94ODYva3ZtL2t2bWlfbXNnLmMK QEAgLTE1MywxMiArMTUzLDM0IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3ZjcHVfY29udHJvbF9jcihj b25zdCBzdHJ1Y3Qga3ZtaV92Y3B1X21zZ19qb2IgKmpvYiwKIAlyZXR1cm4ga3ZtaV9tc2dfdmNw dV9yZXBseShqb2IsIG1zZywgZWMsIE5VTEwsIDApOwogfQogCitzdGF0aWMgaW50IGhhbmRsZV92 Y3B1X2luamVjdF9leGNlcHRpb24oY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9tc2dfam9iICpqb2Is CisJCQkJCWNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywKKwkJCQkJY29uc3Qgdm9pZCAq X3JlcSkKK3sKKwljb25zdCBzdHJ1Y3Qga3ZtaV92Y3B1X2luamVjdF9leGNlcHRpb24gKnJlcSA9 IF9yZXE7CisJc3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gam9iLT52Y3B1OworCWludCBlYzsKKwor CWlmICgha3ZtaV9pc19ldmVudF9hbGxvd2VkKEtWTUkodmNwdS0+a3ZtKSwgS1ZNSV9WQ1BVX0VW RU5UX1RSQVApKQorCQllYyA9IC1LVk1fRVBFUk07CisJZWxzZSBpZiAocmVxLT5wYWRkaW5nMSB8 fCByZXEtPnBhZGRpbmcyKQorCQllYyA9IC1LVk1fRUlOVkFMOworCWVsc2UgaWYgKFZDUFVJKHZj cHUpLT5hcmNoLmV4Y2VwdGlvbi5wZW5kaW5nIHx8CisJCQlWQ1BVSSh2Y3B1KS0+YXJjaC5leGNl cHRpb24uc2VuZF9ldmVudCkKKwkJZWMgPSAtS1ZNX0VCVVNZOworCWVsc2UKKwkJZWMgPSBrdm1p X2FyY2hfY21kX3ZjcHVfaW5qZWN0X2V4Y2VwdGlvbih2Y3B1LCByZXEpOworCisJcmV0dXJuIGt2 bWlfbXNnX3ZjcHVfcmVwbHkoam9iLCBtc2csIGVjLCBOVUxMLCAwKTsKK30KKwogc3RhdGljIGNv bnN0IGt2bWlfdmNwdV9tc2dfam9iX2ZjdCBtc2dfdmNwdVtdID0gewotCVtLVk1JX1ZDUFVfQ09O VFJPTF9DUl0gICAgPSBoYW5kbGVfdmNwdV9jb250cm9sX2NyLAotCVtLVk1JX1ZDUFVfR0VUX0NQ VUlEXSAgICAgPSBoYW5kbGVfdmNwdV9nZXRfY3B1aWQsCi0JW0tWTUlfVkNQVV9HRVRfSU5GT10g ICAgICA9IGhhbmRsZV92Y3B1X2dldF9pbmZvLAotCVtLVk1JX1ZDUFVfR0VUX1JFR0lTVEVSU10g PSBoYW5kbGVfdmNwdV9nZXRfcmVnaXN0ZXJzLAotCVtLVk1JX1ZDUFVfU0VUX1JFR0lTVEVSU10g PSBoYW5kbGVfdmNwdV9zZXRfcmVnaXN0ZXJzLAorCVtLVk1JX1ZDUFVfQ09OVFJPTF9DUl0gICAg ICAgPSBoYW5kbGVfdmNwdV9jb250cm9sX2NyLAorCVtLVk1JX1ZDUFVfR0VUX0NQVUlEXSAgICAg ICAgPSBoYW5kbGVfdmNwdV9nZXRfY3B1aWQsCisJW0tWTUlfVkNQVV9HRVRfSU5GT10gICAgICAg ICA9IGhhbmRsZV92Y3B1X2dldF9pbmZvLAorCVtLVk1JX1ZDUFVfR0VUX1JFR0lTVEVSU10gICAg PSBoYW5kbGVfdmNwdV9nZXRfcmVnaXN0ZXJzLAorCVtLVk1JX1ZDUFVfSU5KRUNUX0VYQ0VQVElP Tl0gPSBoYW5kbGVfdmNwdV9pbmplY3RfZXhjZXB0aW9uLAorCVtLVk1JX1ZDUFVfU0VUX1JFR0lT VEVSU10gICAgPSBoYW5kbGVfdmNwdV9zZXRfcmVnaXN0ZXJzLAogfTsKIAoga3ZtaV92Y3B1X21z Z19qb2JfZmN0IGt2bWlfYXJjaF92Y3B1X21zZ19oYW5kbGVyKHUxNiBpZCkKQEAgLTE5MCwzICsy MTIsMjMgQEAgdTMyIGt2bWlfbXNnX3NlbmRfdmNwdV9jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHUzMiBjciwgdTY0IG9sZF92YWx1ZSwKIAogCXJldHVybiBhY3Rpb247CiB9CisKK3UzMiBrdm1p X21zZ19zZW5kX3ZjcHVfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJc3RydWN0IGt2 bV92Y3B1X2ludHJvc3BlY3Rpb24gKnZjcHVpID0gVkNQVUkodmNwdSk7CisJc3RydWN0IGt2bWlf dmNwdV9ldmVudF90cmFwIGU7CisJdTMyIGFjdGlvbjsKKwlpbnQgZXJyOworCisJbWVtc2V0KCZl LCAwLCBzaXplb2YoZSkpOworCWUubnIgPSB2Y3B1aS0+YXJjaC5leGNlcHRpb24ubnI7CisJZS5l cnJvcl9jb2RlID0gdmNwdWktPmFyY2guZXhjZXB0aW9uLmVycm9yX2NvZGU7CisJZS5hZGRyZXNz ID0gdmNwdWktPmFyY2guZXhjZXB0aW9uLmFkZHJlc3M7CisKKwllcnIgPSBfX2t2bWlfc2VuZF92 Y3B1X2V2ZW50KHZjcHUsIEtWTUlfVkNQVV9FVkVOVF9UUkFQLAorCQkJCSAgICAgJmUsIHNpemVv ZihlKSwgTlVMTCwgMCwgJmFjdGlvbik7CisJaWYgKGVycikKKwkJYWN0aW9uID0gS1ZNSV9FVkVO VF9BQ1RJT05fQ09OVElOVUU7CisKKwlyZXR1cm4gYWN0aW9uOworfQpkaWZmIC0tZ2l0IGEvYXJj aC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDJjYWE2OTI5YTc4Zi4u YmMwMTdjMmJmN2JiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKKysrIGIvYXJjaC94 ODYva3ZtL3g4Ni5jCkBAIC05NjY4LDYgKzk2NjgsOCBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJf Z3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlnb3RvIGNhbmNlbF9pbmplY3Rpb247CiAJ fQogCisJa3ZtaV9lbnRlcl9ndWVzdCh2Y3B1KTsKKwogCWlmIChyZXFfaW1tZWRpYXRlX2V4aXQp IHsKIAkJa3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX0VWRU5ULCB2Y3B1KTsKIAkJc3RhdGljX2Nh bGwoa3ZtX3g4Nl9yZXF1ZXN0X2ltbWVkaWF0ZV9leGl0KSh2Y3B1KTsKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9saW51eC9rdm1pLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCmluZGV4 IGMxZDhjZjAyMDE4Yi4uMjYzZDk4YTU5MDNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGlu dXgva3ZtaS5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgKQEAgLTM2LDEyICszNiwx MyBAQCBlbnVtIHsKIGVudW0gewogCUtWTUlfVkNQVV9FVkVOVCA9IEtWTUlfVkNQVV9NRVNTQUdF X0lEKDApLAogCi0JS1ZNSV9WQ1BVX0dFVF9JTkZPICAgICAgID0gS1ZNSV9WQ1BVX01FU1NBR0Vf SUQoMSksCi0JS1ZNSV9WQ1BVX0NPTlRST0xfRVZFTlRTID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQo MiksCi0JS1ZNSV9WQ1BVX0dFVF9SRUdJU1RFUlMgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoMyks Ci0JS1ZNSV9WQ1BVX1NFVF9SRUdJU1RFUlMgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoNCksCi0J S1ZNSV9WQ1BVX0dFVF9DUFVJRCAgICAgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoNSksCi0JS1ZN SV9WQ1BVX0NPTlRST0xfQ1IgICAgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoNiksCisJS1ZNSV9W Q1BVX0dFVF9JTkZPICAgICAgICAgPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCgxKSwKKwlLVk1JX1ZD UFVfQ09OVFJPTF9FVkVOVFMgICA9IEtWTUlfVkNQVV9NRVNTQUdFX0lEKDIpLAorCUtWTUlfVkNQ VV9HRVRfUkVHSVNURVJTICAgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoMyksCisJS1ZNSV9WQ1BV X1NFVF9SRUdJU1RFUlMgICAgPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCg0KSwKKwlLVk1JX1ZDUFVf R0VUX0NQVUlEICAgICAgICA9IEtWTUlfVkNQVV9NRVNTQUdFX0lEKDUpLAorCUtWTUlfVkNQVV9D T05UUk9MX0NSICAgICAgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoNiksCisJS1ZNSV9WQ1BVX0lO SkVDVF9FWENFUFRJT04gPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCg3KSwKIAogCUtWTUlfTkVYVF9W Q1BVX01FU1NBR0UKIH07CkBAIC02MCw2ICs2MSw3IEBAIGVudW0gewogCUtWTUlfVkNQVV9FVkVO VF9IWVBFUkNBTEwgID0gS1ZNSV9WQ1BVX0VWRU5UX0lEKDEpLAogCUtWTUlfVkNQVV9FVkVOVF9C UkVBS1BPSU5UID0gS1ZNSV9WQ1BVX0VWRU5UX0lEKDIpLAogCUtWTUlfVkNQVV9FVkVOVF9DUiAg ICAgICAgID0gS1ZNSV9WQ1BVX0VWRU5UX0lEKDMpLAorCUtWTUlfVkNQVV9FVkVOVF9UUkFQICAg ICAgID0gS1ZNSV9WQ1BVX0VWRU5UX0lEKDQpLAogCiAJS1ZNSV9ORVhUX1ZDUFVfRVZFTlQKIH07 CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVz dC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYwppbmRl eCA4Njk3OGIyYWI2YzkuLjc4MTQ2MjZjYmE3NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCB2Y3B1 X3dvcmtlcl9kYXRhIHsKIAlzdHJ1Y3Qga3ZtX3ZtICp2bTsKIAlpbnQgdmNwdV9pZDsKIAlpbnQg dGVzdF9pZDsKKwlib29sIHJlc3RhcnRfb25fc2h1dGRvd247CiB9OwogCiBlbnVtIHsKQEAgLTYz Myw2ICs2MzQsMTAgQEAgc3RhdGljIHZvaWQgKnZjcHVfd29ya2VyKHZvaWQgKmRhdGEpCiAKIAkJ dmNwdV9ydW4oY3R4LT52bSwgY3R4LT52Y3B1X2lkKTsKIAorCQlpZiAocnVuLT5leGl0X3JlYXNv biA9PSBLVk1fRVhJVF9TSFVURE9XTiAmJgorCQkgICAgY3R4LT5yZXN0YXJ0X29uX3NodXRkb3du KQorCQkJY29udGludWU7CisKIAkJVEVTVF9BU1NFUlQocnVuLT5leGl0X3JlYXNvbiA9PSBLVk1f RVhJVF9JTywKIAkJCSJ2Y3B1X3J1bigpIGZhaWxlZCwgdGVzdF9pZCAlZCwgZXhpdCByZWFzb24g JXUgKCVzKVxuIiwKIAkJCWN0eC0+dGVzdF9pZCwgcnVuLT5leGl0X3JlYXNvbiwKQEAgLTExOTks NiArMTIwNCwxMjQgQEAgc3RhdGljIHZvaWQgdGVzdF9jbWRfdmNwdV9jb250cm9sX2NyKHN0cnVj dCBrdm1fdm0gKnZtKQogCXRlc3RfaW52YWxpZF92Y3B1X2NvbnRyb2xfY3Iodm0pOwogfQogCitz dGF0aWMgdm9pZCBfX2luamVjdF9leGNlcHRpb24oaW50IG5yKQoreworCXN0cnVjdCB7CisJCXN0 cnVjdCBrdm1pX21zZ19oZHIgaGRyOworCQlzdHJ1Y3Qga3ZtaV92Y3B1X2hkciB2Y3B1X2hkcjsK KwkJc3RydWN0IGt2bWlfdmNwdV9pbmplY3RfZXhjZXB0aW9uIGNtZDsKKwl9IHJlcSA9IHt9Owor CWludCByOworCisJcmVxLmNtZC5uciA9IG5yOworCisJciA9IF9fZG9fdmNwdTBfY29tbWFuZChL Vk1JX1ZDUFVfSU5KRUNUX0VYQ0VQVElPTiwKKwkJCSAgICAgICAmcmVxLmhkciwgc2l6ZW9mKHJl cSksIE5VTEwsIDApOworCVRFU1RfQVNTRVJUKHIgPT0gMCwKKwkJIktWTUlfVkNQVV9JTkpFQ1Rf RVhDRVBUSU9OIGZhaWxlZCwgZXJyb3IgJWQoJXMpXG4iLAorCQktciwga3ZtX3N0cmVycm9yKC1y KSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfZGlzYWxsb3dlZF90cmFwX2V2ZW50KHN0cnVjdCBr dm1fdm0gKnZtKQoreworCXN0cnVjdCB7CisJCXN0cnVjdCBrdm1pX21zZ19oZHIgaGRyOworCQlz dHJ1Y3Qga3ZtaV92Y3B1X2hkciB2Y3B1X2hkcjsKKwkJc3RydWN0IGt2bWlfdmNwdV9pbmplY3Rf ZXhjZXB0aW9uIGNtZDsKKwl9IHJlcSA9IHt9OworCisJZGlzYWxsb3dfZXZlbnQodm0sIEtWTUlf VkNQVV9FVkVOVF9UUkFQKTsKKwl0ZXN0X3ZjcHUwX2NvbW1hbmQodm0sIEtWTUlfVkNQVV9JTkpF Q1RfRVhDRVBUSU9OLAorCQkJICAgJnJlcS5oZHIsIHNpemVvZihyZXEpLCBOVUxMLCAwLCAtS1ZN X0VQRVJNKTsKKwlhbGxvd19ldmVudCh2bSwgS1ZNSV9WQ1BVX0VWRU5UX1RSQVApOworfQorCitz dGF0aWMgdm9pZCByZWNlaXZlX2V4Y2VwdGlvbl9ldmVudChpbnQgbnIpCit7CisJc3RydWN0IGt2 bWlfbXNnX2hkciBoZHI7CisJc3RydWN0IHsKKwkJc3RydWN0IHZjcHVfZXZlbnQgdmNwdV9ldjsK KwkJc3RydWN0IGt2bWlfdmNwdV9ldmVudF90cmFwIHRyYXA7CisJfSBldjsKKwlzdHJ1Y3QgdmNw dV9yZXBseSBycGwgPSB7fTsKKworCXJlY2VpdmVfdmNwdV9ldmVudCgmaGRyLCAmZXYudmNwdV9l diwgc2l6ZW9mKGV2KSwgS1ZNSV9WQ1BVX0VWRU5UX1RSQVApOworCisJcHJfZGVidWcoIkV4Y2Vw dGlvbiBldmVudDogdmVjdG9yICV1LCBlcnJvcl9jb2RlIDB4JXgsIGFkZHJlc3MgMHglbGx4XG4i LAorCQlldi50cmFwLm5yLCBldi50cmFwLmVycm9yX2NvZGUsIGV2LnRyYXAuYWRkcmVzcyk7CisK KwlURVNUX0FTU0VSVChldi50cmFwLm5yID09IG5yLAorCQkiSW5qZWN0ZWQgZXhjZXB0aW9uICV1 IGluc3RlYWQgb2YgJXVcbiIsCisJCWV2LnRyYXAubnIsIG5yKTsKKworCXJlcGx5X3RvX2V2ZW50 KCZoZHIsICZldi52Y3B1X2V2LCBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5VRSwKKwkJCSZycGws IHNpemVvZihycGwpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9zdWNjZWRlZF91ZF9pbmplY3Rp b24odm9pZCkKK3sKKwlfX3U4IHVkX3ZlY3RvciA9IDY7CisKKwlfX2luamVjdF9leGNlcHRpb24o dWRfdmVjdG9yKTsKKworCXJlY2VpdmVfZXhjZXB0aW9uX2V2ZW50KHVkX3ZlY3Rvcik7Cit9CisK K3N0YXRpYyB2b2lkIHRlc3RfZmFpbGVkX3VkX2luamVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSwK KwkJCQkgICAgIHN0cnVjdCB2Y3B1X3dvcmtlcl9kYXRhICpkYXRhKQoreworCXN0cnVjdCBrdm1p X21zZ19oZHIgaGRyOworCXN0cnVjdCB7CisJCXN0cnVjdCB2Y3B1X2V2ZW50IHZjcHVfZXY7CisJ CXN0cnVjdCBrdm1pX3ZjcHVfZXZlbnRfYnJlYWtwb2ludCBicDsKKwl9IGV2OworCXN0cnVjdCB2 Y3B1X3JlcGx5IHJwbCA9IHt9OworCV9fdTggdWRfdmVjdG9yID0gNiwgYnBfdmVjdG9yID0gMzsK KworCVdSSVRFX09OQ0UoZGF0YS0+dGVzdF9pZCwgR1VFU1RfVEVTVF9CUCk7CisKKwlyZWNlaXZl X3ZjcHVfZXZlbnQoJmhkciwgJmV2LnZjcHVfZXYsIHNpemVvZihldiksCisJCQkgICBLVk1JX1ZD UFVfRVZFTlRfQlJFQUtQT0lOVCk7CisKKwkvKiBza2lwIHRoZSBicmVha3BvaW50IGluc3RydWN0 aW9uLCBuZXh0IHRpbWUgZ3Vlc3RfYnBfdGVzdCgpIHJ1bnMgKi8KKwlldi52Y3B1X2V2LmNvbW1v bi5hcmNoLnJlZ3MucmlwICs9IGV2LmJwLmluc25fbGVuOworCV9fc2V0X3JlZ2lzdGVycyh2bSwg JmV2LnZjcHVfZXYuY29tbW9uLmFyY2gucmVncyk7CisKKwlfX2luamVjdF9leGNlcHRpb24odWRf dmVjdG9yKTsKKworCS8qIHJlaW5qZWN0IHRoZSAjQlAgZXhjZXB0aW9uIGJlY2F1c2Ugb2YgdGhl IGNvbnRpbnVlIGFjdGlvbiAqLworCXJlcGx5X3RvX2V2ZW50KCZoZHIsICZldi52Y3B1X2V2LCBL Vk1JX0VWRU5UX0FDVElPTl9DT05USU5VRSwKKwkJCSZycGwsIHNpemVvZihycGwpKTsKKworCXJl Y2VpdmVfZXhjZXB0aW9uX2V2ZW50KGJwX3ZlY3Rvcik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3Rf Y21kX3ZjcHVfaW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKK3sKKwlzdHJ1Y3Qg dmNwdV93b3JrZXJfZGF0YSBkYXRhID0geworCQkudm0gPSB2bSwKKwkJLnZjcHVfaWQgPSBWQ1BV X0lELAorCQkucmVzdGFydF9vbl9zaHV0ZG93biA9IHRydWUsCisJfTsKKwlwdGhyZWFkX3QgdmNw dV90aHJlYWQ7CisKKwlpZiAoIWlzX2ludGVsX2NwdSgpKSB7CisJCXByaW50X3NraXAoIlRPRE86 ICVzKCkgLSBtYWtlIGl0IHdvcmsgd2l0aCBBTUQiLCBfX2Z1bmNfXyk7CisJCXJldHVybjsKKwl9 CisKKwl0ZXN0X2Rpc2FsbG93ZWRfdHJhcF9ldmVudCh2bSk7CisKKwllbmFibGVfdmNwdV9ldmVu dCh2bSwgS1ZNSV9WQ1BVX0VWRU5UX0JSRUFLUE9JTlQpOworCXZjcHVfdGhyZWFkID0gc3RhcnRf dmNwdV93b3JrZXIoJmRhdGEpOworCisJdGVzdF9zdWNjZWRlZF91ZF9pbmplY3Rpb24oKTsKKwl0 ZXN0X2ZhaWxlZF91ZF9pbmplY3Rpb24odm0sICZkYXRhKTsKKworCXdhaXRfdmNwdV93b3JrZXIo dmNwdV90aHJlYWQpOworCWRpc2FibGVfdmNwdV9ldmVudCh2bSwgS1ZNSV9WQ1BVX0VWRU5UX0JS RUFLUE9JTlQpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0X2ludHJvc3BlY3Rpb24oc3RydWN0IGt2 bV92bSAqdm0pCiB7CiAJc3JhbmRvbSh0aW1lKDApKTsKQEAgLTEyMjMsNiArMTM0Niw3IEBAIHN0 YXRpYyB2b2lkIHRlc3RfaW50cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKIAl0ZXN0X2V2 ZW50X2JyZWFrcG9pbnQodm0pOwogCXRlc3RfY21kX3ZtX2NvbnRyb2xfY2xlYW51cCh2bSk7CiAJ dGVzdF9jbWRfdmNwdV9jb250cm9sX2NyKHZtKTsKKwl0ZXN0X2NtZF92Y3B1X2luamVjdF9leGNl cHRpb24odm0pOwogCiAJdW5ob29rX2ludHJvc3BlY3Rpb24odm0pOwogfQpkaWZmIC0tZ2l0IGEv dmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pLmMgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2 bWkuYwppbmRleCBiNWZjZDhhM2Q4YWUuLjVkNjUzMTRkYjdiOCAxMDA2NDQKLS0tIGEvdmlydC9r dm0vaW50cm9zcGVjdGlvbi9rdm1pLmMKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1p LmMKQEAgLTg0Niw2ICs4NDYsOCBAQCB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSkKIAlpZiAoIWt2bWkpCiAJCWdvdG8gb3V0OwogCisJa3ZtaV9hcmNoX3Nl bmRfcGVuZGluZ19ldmVudCh2Y3B1KTsKKwogCWZvciAoOzspIHsKIAkJa3ZtaV9ydW5fam9icyh2 Y3B1KTsKIApkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oIGIv dmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCmluZGV4IGIxODc3YTc3MGZjYi4uMGE3 YTgyODViOTgxIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfaW50LmgK KysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCkBAIC00OCw2ICs0OCw5IEBA IGludCBrdm1pX21zZ19zZW5kX3VuaG9vayhzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkp OwogaW50IGt2bWlfc2VuZF92Y3B1X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGV2 X2lkLAogCQkJIHZvaWQgKmV2LCBzaXplX3QgZXZfc2l6ZSwKIAkJCSB2b2lkICpycGwsIHNpemVf dCBycGxfc2l6ZSwgdTMyICphY3Rpb24pOworaW50IF9fa3ZtaV9zZW5kX3ZjcHVfZXZlbnQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZfaWQsCisJCQkgICB2b2lkICpldiwgc2l6ZV90IGV2 X3NpemUsCisJCQkgICB2b2lkICpycGwsIHNpemVfdCBycGxfc2l6ZSwgdTMyICphY3Rpb24pOwog aW50IGt2bWlfbXNnX3ZjcHVfcmVwbHkoY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9tc2dfam9iICpq b2IsCiAJCQljb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csIGludCBlcnIsCiAJCQljb25z dCB2b2lkICpycGwsIHNpemVfdCBycGxfc2l6ZSk7CkBAIC0xMDAsNSArMTAzLDYgQEAgYm9vbCBr dm1pX2FyY2hfaXNfYWdlbnRfaHlwZXJjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lk IGt2bWlfYXJjaF9icmVha3BvaW50X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGd2 YSwgdTggaW5zbl9sZW4pOwogaW50IGt2bWlfYXJjaF9jbWRfY29udHJvbF9pbnRlcmNlcHQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJCSAgICB1bnNpZ25lZCBpbnQgZXZlbnRfaWQsIGJvb2wg ZW5hYmxlKTsKK3ZvaWQga3ZtaV9hcmNoX3NlbmRfcGVuZGluZ19ldmVudChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24v a3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9tc2cuYwppbmRleCA3NDA2 MTMwNGNhODMuLjFmZWRmYTZkNDgxNCAxMDA2NDQKLS0tIGEvdmlydC9rdm0vaW50cm9zcGVjdGlv bi9rdm1pX21zZy5jCisrKyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9tc2cuYwpAQCAt NzE4LDkgKzcxOCw5IEBAIHN0YXRpYyBpbnQga3ZtaV9maWxsX2FuZF9zZW50X3ZjcHVfZXZlbnQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCXJldHVybiBrdm1pX3NvY2tfd3JpdGUoa3ZtaSwgdmVj LCBuLCBtc2dfc2l6ZSk7CiB9CiAKLWludCBrdm1pX3NlbmRfdmNwdV9ldmVudChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHUzMiBldl9pZCwKLQkJCSB2b2lkICpldiwgc2l6ZV90IGV2X3NpemUsCi0J CQkgdm9pZCAqcnBsLCBzaXplX3QgcnBsX3NpemUsIHUzMiAqYWN0aW9uKQoraW50IF9fa3ZtaV9z ZW5kX3ZjcHVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZfaWQsCisJCQkgICB2 b2lkICpldiwgc2l6ZV90IGV2X3NpemUsCisJCQkgICB2b2lkICpycGwsIHNpemVfdCBycGxfc2l6 ZSwgdTMyICphY3Rpb24pCiB7CiAJc3RydWN0IGt2bV92Y3B1X2ludHJvc3BlY3Rpb24gKnZjcHVp ID0gVkNQVUkodmNwdSk7CiAJc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pID0gS1ZNSSh2 Y3B1LT5rdm0pOwpAQCAtNzUwLDYgKzc1MCwxNiBAQCBpbnQga3ZtaV9zZW5kX3ZjcHVfZXZlbnQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZfaWQsCiAJcmV0dXJuIGVycjsKIH0KIAoraW50 IGt2bWlfc2VuZF92Y3B1X2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJCSB1MzIgZXZf aWQsIHZvaWQgKmV2LCBzaXplX3QgZXZfc2l6ZSwKKwkJCSB2b2lkICpycGwsIHNpemVfdCBycGxf c2l6ZSwgdTMyICphY3Rpb24pCit7CisJa3ZtaV9hcmNoX3NlbmRfcGVuZGluZ19ldmVudCh2Y3B1 KTsKKworCXJldHVybiBfX2t2bWlfc2VuZF92Y3B1X2V2ZW50KHZjcHUsIGV2X2lkLCBldiwgZXZf c2l6ZSwKKwkJCQkgICAgICBycGwsIHJwbF9zaXplLCBhY3Rpb24pOworfQorCiB1MzIga3ZtaV9t c2dfc2VuZF92Y3B1X3BhdXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAl1MzIgYWN0aW9u OwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFs aXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8v dmlydHVhbGl6YXRpb24=