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 44986C43217 for ; Wed, 6 Oct 2021 17:55:53 +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 0AFBE610A1 for ; Wed, 6 Oct 2021 17:55:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0AFBE610A1 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 8A34860F0E; Wed, 6 Oct 2021 17:55:52 +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 uou0UM3mAL9P; Wed, 6 Oct 2021 17:55:51 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 61D0760F06; Wed, 6 Oct 2021 17:55:50 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 230D3C0024; Wed, 6 Oct 2021 17:55:49 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 292EAC0027 for ; Wed, 6 Oct 2021 17:55:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id C7DCC40885 for ; Wed, 6 Oct 2021 17:55:44 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oUviSuBgw3NI for ; Wed, 6 Oct 2021 17:55:43 +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 smtp2.osuosl.org (Postfix) with ESMTPS id EB72D407E4 for ; Wed, 6 Oct 2021 17:55:42 +0000 (UTC) Received: from smtp.bitdefender.com (smtp01.buh.bitdefender.com [10.17.80.75]) by mx01.bbu.dsd.mx.bitdefender.com (Postfix) with ESMTPS id B6123307CAF4; Wed, 6 Oct 2021 20:31:06 +0300 (EEST) Received: from localhost (unknown [91.199.104.28]) by smtp.bitdefender.com (Postfix) with ESMTPSA id 9AC51305FFA0; Wed, 6 Oct 2021 20:31:06 +0300 (EEST) X-Is-Junk-Enabled: fGZTSsP0qEJE2AIKtlSuFiRRwg9xyHmJ From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= To: kvm@vger.kernel.org Subject: [PATCH v12 32/77] KVM: introspection: add the read/dispatch message function Date: Wed, 6 Oct 2021 20:30:28 +0300 Message-Id: <20211006173113.26445-33-alazar@bitdefender.com> In-Reply-To: <20211006173113.26445-1-alazar@bitdefender.com> References: <20211006173113.26445-1-alazar@bitdefender.com> MIME-Version: 1.0 Cc: Tamas K Lengyel , Wanpeng Li , Sean Christopherson , Joerg Roedel , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Mathieu Tarral , Paolo Bonzini , 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" QmFzZWQgb24gdGhlIGNvbW1vbiBoZWFkZXIgKHN0cnVjdCBrdm1pX21zZ19oZHIpLCB0aGUgcmVj ZWl2aW5nIHRocmVhZAp3aWxsIHJlYWQvdmFsaWRhdGUgYWxsIG1lc3NhZ2VzLCBleGVjdXRlIHRo ZSBWTSBpbnRyb3NwZWN0aW9uIGNvbW1hbmRzCihlZy4gS1ZNSV9WTV9HRVRfSU5GTykgYW5kIGRp c3BhdGNoIHRoZSB2Q1BVIGludHJvc3BlY3Rpb24gY29tbWFuZHMKKGVnLiBLVk1JX1ZDUFVfR0VU X1JFR0lTVEVSUykgdG8gdGhlIHZDUFUgdGhyZWFkcy4KClRoZSB2Q1BVIHRocmVhZHMgd2lsbCBy ZXBseSB0byB2Q1BVIGludHJvc3BlY3Rpb24gY29tbWFuZHMgd2l0aG91dAp0aGUgaGVscCBvZiB0 aGUgcmVjZWl2aW5nIHRocmVhZC4gU2FtZSBmb3Igc2VuZGluZyB2Q1BVIGV2ZW50cywgYnV0CnRo ZSB2Q1BVIHRocmVhZCB3aWxsIHdhaXQgZm9yIHRoZSByZWNlaXZpbmcgdGhyZWFkIHRvIGdldCB0 aGUgZXZlbnQKcmVwbHkuIE1lYW53aGlsZSwgaXQgd2lsbCBleGVjdXRlIGFueSBxdWV1ZWQgdkNQ VSBpbnRyb3NwZWN0aW9uIGNvbW1hbmQuCgpUaGUgcmVjZWl2aW5nIHRocmVhZCB3aWxsIGVuZCB3 aGVuIHRoZSBzb2NrZXQgaXMgY2xvc2VkIG9yIG9uIHRoZSBmaXJzdApBUEkgZXJyb3IgKGVnLiB3 cm9uZyBtZXNzYWdlIHNpemUpLgoKU2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6 YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3Qg ICAgICAgICAgICAgICB8ICA3NSArKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAg ICAgICAgICAgICAgICAgICAgIHwgIDExICsrCiAuLi4vdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4 Nl82NC9rdm1pX3Rlc3QuYyAgfCAxMDAgKysrKysrKysrKysKIHZpcnQva3ZtL2ludHJvc3BlY3Rp b24va3ZtaS5jICAgICAgICAgICAgICAgICB8ICA0MyArKysrLQogdmlydC9rdm0vaW50cm9zcGVj dGlvbi9rdm1pX2ludC5oICAgICAgICAgICAgIHwgIDEwICsrCiB2aXJ0L2t2bS9pbnRyb3NwZWN0 aW9uL2t2bWlfbXNnLmMgICAgICAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysrKystCiA2IGZp bGVzIGNoYW5nZWQsIDM5OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQv a3ZtL2t2bWkucnN0CmluZGV4IDU5Y2MzM2EzOWY5Zi4uYWU2YmJmMzdhZWYzIDEwMDY0NAotLS0g YS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0CisrKyBiL0RvY3VtZW50YXRpb24vdmly dC9rdm0va3ZtaS5yc3QKQEAgLTY1LDYgKzY1LDc0IEBAIGJlZW4gdXNlZCBvbiB0aGF0IGd1ZXN0 IChpZiByZXF1ZXN0ZWQpLiBPYnZpb3VzbHksIHdoZXRoZXIgdGhlIGd1ZXN0IGNhbgogcmVhbGx5 IGNvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBpbnRyb3Nw ZWN0aW9uCiB0b29sIGhhcyBtYWRlIGFueSBtb2RpZmljYXRpb25zIHRoYXQgcmVxdWlyZSBhbiBh Y3RpdmUgS1ZNSSBjaGFubmVsLgogCitBbGwgbWVzc2FnZXMgKGNvbW1hbmRzIG9yIGV2ZW50cykg aGF2ZSBhIGNvbW1vbiBoZWFkZXI6OgorCisJc3RydWN0IGt2bWlfbXNnX2hkciB7CisJCV9fdTE2 IGlkOworCQlfX3UxNiBzaXplOworCQlfX3UzMiBzZXE7CisJfTsKKworVGhlIHJlcGxpZXMgaGF2 ZSB0aGUgc2FtZSBoZWFkZXIsIHdpdGggdGhlIHNlcXVlbmNlIG51bWJlciAoYGBzZXFgYCkKK2Fu ZCBtZXNzYWdlIGlkIChgYGlkYGApIG1hdGNoaW5nIHRoZSBjb21tYW5kL2V2ZW50LgorCitBZnRl ciBgYGt2bWlfbXNnX2hkcmBgLCBgYGlkYGAgc3BlY2lmaWMgZGF0YSBvZiBgYHNpemVgYCBieXRl cyB3aWxsCitmb2xsb3cuCisKK1RoZSBtZXNzYWdlIGhlYWRlciBhbmQgaXRzIGRhdGEgbXVzdCBi ZSBzZW50IHdpdGggb25lIGBgc2VuZG1zZygpYGAgY2FsbAordG8gdGhlIHNvY2tldC4gVGhpcyBz aW1wbGlmaWVzIHRoZSByZWNlaXZlciBsb29wIGFuZCBhdm9pZHMKK3RoZSByZWNvbnN0cnVjdGlv biBvZiBtZXNzYWdlcyBvbiB0aGUgb3RoZXIgc2lkZS4KKworVGhlIHdpcmUgcHJvdG9jb2wgdXNl cyB0aGUgaG9zdCBuYXRpdmUgYnl0ZS1vcmRlci4gVGhlIGludHJvc3BlY3Rpb24gdG9vbAorbXVz dCBjaGVjayB0aGlzIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFuZCBkbyB0aGUgbmVjZXNzYXJ5IGNv bnZlcnNpb24uCisKK0EgY29tbWFuZCByZXBseSBiZWdpbnMgd2l0aDo6CisKKwlzdHJ1Y3Qga3Zt aV9lcnJvcl9jb2RlIHsKKwkJX19zMzIgZXJyOworCQlfX3UzMiBwYWRkaW5nOworCX0KKworZm9s bG93ZWQgYnkgdGhlIGNvbW1hbmQgc3BlY2lmaWMgZGF0YSBpZiB0aGUgZXJyb3IgY29kZSBgYGVy cmBgIGlzIHplcm8uCisKK1RoZSBlcnJvciBjb2RlIC1LVk1fRU5PU1lTIGlzIHJldHVybmVkIGZv ciB1bnN1cHBvcnRlZCBjb21tYW5kcy4KKworVGhlIGVycm9yIGNvZGUgLUtWTV9FUEVSTSBpcyBy ZXR1cm5lZCBmb3IgZGlzYWxsb3dlZCBjb21tYW5kcyAoc2VlICoqSG9va2luZyoqKS4KKworT3Ro ZXIgZXJyb3IgY29kZXMgY2FuIGJlIHJldHVybmVkIGR1cmluZyBtZXNzYWdlIGhhbmRsaW5nLCBi dXQgZm9yCitzb21lIGVycm9ycyAoaW5jb21wbGV0ZSBtZXNzYWdlcywgd3Jvbmcgc2VxdWVuY2Ug bnVtYmVycywgc29ja2V0IGVycm9ycworZXRjLikgdGhlIHNvY2tldCB3aWxsIGJlIGNsb3NlZC4g VGhlIGRldmljZSBtYW5hZ2VyIHNob3VsZCByZWNvbm5lY3QuCisKK1doZW4gYSB2Q1BVIHRocmVh ZCBzZW5kcyBhbiBpbnRyb3NwZWN0aW9uIGV2ZW50LCBpdCB3aWxsIHdhaXQgKGFuZCBoYW5kbGUK K2FueSByZWxhdGVkIGludHJvc3BlY3Rpb24gY29tbWFuZCkgdW50aWwgaXQgZ2V0cyB0aGUgZXZl bnQgcmVwbHk6OgorCisgICBIb3N0IGtlcm5lbCAgICAgICAgICAgICAgIEludHJvc3BlY3Rpb24g dG9vbAorICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAg IGV2ZW50IDEgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gY29tbWFuZCAxCisg ICBjb21tYW5kIDEgcmVwbHkgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gY29t bWFuZCAyCisgICBjb21tYW5kIDIgcmVwbHkgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC0gZXZlbnQgMSByZXBseQorCitBcyBpdCBjYW4gYmUgc2VlbiBiZWxvdywgdGhlIHdpcmUg cHJvdG9jb2wgc3BlY2lmaWVzIG9jY2FzaW9uYWwgcGFkZGluZy4gVGhpcworaXMgdG8gcGVybWl0 IHdvcmtpbmcgd2l0aCB0aGUgZGF0YSBieSBkaXJlY3RseSB1c2luZyBDIHN0cnVjdHVyZXMgb3Ig dG8gcm91bmQKK3RoZSBzdHJ1Y3R1cmUgc2l6ZSB0byBhIG11bHRpcGxlIG9mIDggYnl0ZXMgKDY0 Yml0KSB0byBpbXByb3ZlIHRoZSBjb3B5CitvcGVyYXRpb25zIHRoYXQgaGFwcGVuIGR1cmluZyBg YHJlY3Ztc2coKWBgIG9yIGBgc2VuZG1zZygpYGAuIFRoZSBtZW1iZXJzCitzaG91bGQgaGF2ZSB0 aGUgbmF0aXZlIGFsaWdubWVudCBvZiB0aGUgaG9zdC4gQWxsIHBhZGRpbmcgbXVzdCBiZQoraW5p dGlhbGl6ZWQgd2l0aCB6ZXJvIG90aGVyd2lzZSB0aGUgcmVzcGVjdGl2ZSBjb21tYW5kIHdpbGwg ZmFpbCB3aXRoCistS1ZNX0VJTlZBTC4KKworVG8gZGVzY3JpYmUgdGhlIGNvbW1hbmRzL2V2ZW50 cywgd2UgcmV1c2Ugc29tZSBjb252ZW50aW9ucyBmcm9tIGFwaS5yc3Q6CisKKyAgLSBBcmNoaXRl Y3R1cmVzOiB3aGljaCBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlcyBwcm92aWRlIHRoaXMg Y29tbWFuZC9ldmVudAorCisgIC0gVmVyc2lvbnM6IHdoaWNoIHZlcnNpb25zIHByb3ZpZGUgdGhp cyBjb21tYW5kL2V2ZW50CisKKyAgLSBQYXJhbWV0ZXJzOiBpbmNvbWluZyBtZXNzYWdlIGRhdGEK KworICAtIFJldHVybnM6IG91dGdvaW5nL3JlcGx5IG1lc3NhZ2UgZGF0YQorCiBIYW5kc2hha2UK IC0tLS0tLS0tLQogCkBAIC05OSw2ICsxNjcsMTMgQEAgSW4gdGhlIGVuZCwgdGhlIGRldmljZSBt YW5hZ2VyIHdpbGwgcGFzcyB0aGUgZmlsZSBkZXNjcmlwdG9yIChwbHVzCiB0aGUgYWxsb3dlZCBj b21tYW5kcy9ldmVudHMpIHRvIEtWTS4gSXQgd2lsbCBkZXRlY3Qgd2hlbiB0aGUgc29ja2V0IGlz CiBzaHV0ZG93biBhbmQgaXQgd2lsbCByZWluaXRpYXRlIHRoZSBoYW5kc2hha2UuCiAKK09uY2Ug dGhlIGZpbGUgZGVzY3JpcHRvciByZWFjaGVzIEtWTSwgdGhlIGludHJvc3BlY3Rpb24gdG9vbCBz aG91bGQKK3VzZSB0aGUgKktWTUlfR0VUX1ZFUlNJT04qIGNvbW1hbmQgdG8gZ2V0IHRoZSBBUEkg dmVyc2lvbiBhbmQvb3IgdGhlCisqS1ZNSV9WTV9DSEVDS19DT01NQU5EKiBhbmQgKktWTUlfVk1f Q0hFQ0tfRVZFTlQqIGNvbW1hbmRzIHRvIHNlZSB3aGljaAorY29tbWFuZHMvZXZlbnRzIGFyZSBh bGxvd2VkIGZvciB0aGlzIGd1ZXN0LiBUaGUgZXJyb3IgY29kZSAtS1ZNX0VQRVJNCit3aWxsIGJl IHJldHVybmVkIGlmIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgdXNlcyBhIGNvbW1hbmQgb3IgdHJp ZXMgdG8KK2VuYWJsZSBhbiBldmVudCB3aGljaCBpcyBkaXNhbGxvd2VkLgorCiBVbmhvb2tpbmcK IC0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oIGIvaW5j bHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRleCA4NWY4NjIyZGRmOTUuLjJiMzdlZWU4MmM1MiAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAorKysgYi9pbmNsdWRlL3VhcGkv bGludXgva3ZtaS5oCkBAIC0zMiw0ICszMiwxNSBAQCBlbnVtIHsKIAlLVk1JX05FWFRfVkNQVV9F VkVOVAogfTsKIAorc3RydWN0IGt2bWlfbXNnX2hkciB7CisJX191MTYgaWQ7CisJX191MTYgc2l6 ZTsKKwlfX3UzMiBzZXE7Cit9OworCitzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlIHsKKwlfX3MzMiBl cnI7CisJX191MzIgcGFkZGluZzsKK307CisKICNlbmRpZiAvKiBfVUFQSV9fTElOVVhfS1ZNSV9I ICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlf dGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYwpp bmRleCAyNWJlZjIxNjQxODYuLjZkNzgwMjQwM2YxNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYworKysgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVk ZSAicHJvY2Vzc29yLmgiCiAjaW5jbHVkZSAiLi4vbGliL2t2bV91dGlsX2ludGVybmFsLmgiCiAK KyNpbmNsdWRlICJsaW51eC9rdm1fcGFyYS5oIgogI2luY2x1ZGUgImxpbnV4L2t2bWkuaCIKIAog I2RlZmluZSBWQ1BVX0lEIDEKQEAgLTExNywxMCArMTE4LDEwOSBAQCBzdGF0aWMgdm9pZCB1bmhv b2tfaW50cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKIAkJZXJybm8sIHN0cmVycm9yKGVy cm5vKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlY2VpdmVfZGF0YSh2b2lkICpkZXN0LCBzaXplX3Qg c2l6ZSkKK3sKKwlzc2l6ZV90IHI7CisKKwlyID0gcmVjdihVc2Vyc3BhY2Vfc29ja2V0LCBkZXN0 LCBzaXplLCBNU0dfV0FJVEFMTCk7CisJVEVTVF9BU1NFUlQociA9PSBzaXplLAorCQkicmVjdigp IGZhaWxlZCwgZXhwZWN0ZWQgJXpkLCByZXN1bHQgJXpkLCBlcnJubyAlZCAoJXMpXG4iLAorCQlz aXplLCByLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKK30KKworc3RhdGljIGludCByZWNlaXZl X2NtZF9yZXBseShzdHJ1Y3Qga3ZtaV9tc2dfaGRyICpyZXEsIHZvaWQgKnJwbCwKKwkJCSAgICAg c2l6ZV90IHJwbF9zaXplKQoreworCXN0cnVjdCBrdm1pX21zZ19oZHIgaGRyOworCXN0cnVjdCBr dm1pX2Vycm9yX2NvZGUgZWM7CisKKwlyZWNlaXZlX2RhdGEoJmhkciwgc2l6ZW9mKGhkcikpOwor CisJVEVTVF9BU1NFUlQoaGRyLnNlcSA9PSByZXEtPnNlcSwKKwkJIlVuZXhwZWN0ZWQgbWVzc2Fn ZXMgc2VxdWVuY2UgMHgleCwgZXhwZWN0ZWQgMHgleFxuIiwKKwkJaGRyLnNlcSwgcmVxLT5zZXEp OworCisJVEVTVF9BU1NFUlQoaGRyLnNpemUgPj0gc2l6ZW9mKGVjKSwKKwkJIkludmFsaWQgbWVz c2FnZSBzaXplICVkLCBleHBlY3RlZCAlemQgYnl0ZXMgKGF0IGxlYXN0KVxuIiwKKwkJaGRyLnNp emUsIHNpemVvZihlYykpOworCisJcmVjZWl2ZV9kYXRhKCZlYywgc2l6ZW9mKGVjKSk7CisKKwlp ZiAoZWMuZXJyKSB7CisJCVRFU1RfQVNTRVJUKGhkci5zaXplID09IHNpemVvZihlYyksCisJCQki SW52YWxpZCBjb21tYW5kIHJlcGx5IG9uIGVycm9yXG4iKTsKKwl9IGVsc2UgeworCQlURVNUX0FT U0VSVChoZHIuc2l6ZSA9PSBzaXplb2YoZWMpICsgcnBsX3NpemUsCisJCQkiSW52YWxpZCBjb21t YW5kIHJlcGx5XG4iKTsKKworCQlpZiAocnBsICYmIHJwbF9zaXplKQorCQkJcmVjZWl2ZV9kYXRh KHJwbCwgcnBsX3NpemUpOworCX0KKworCXJldHVybiBlYy5lcnI7Cit9CisKK3N0YXRpYyB1bnNp Z25lZCBpbnQgbmV3X3NlcSh2b2lkKQoreworCXN0YXRpYyB1bnNpZ25lZCBpbnQgc2VxOworCisJ cmV0dXJuIHNlcSsrOworfQorCitzdGF0aWMgdm9pZCBzZW5kX21lc3NhZ2UoaW50IG1zZ19pZCwg c3RydWN0IGt2bWlfbXNnX2hkciAqaGRyLCBzaXplX3Qgc2l6ZSkKK3sKKwlzc2l6ZV90IHI7CisK KwloZHItPmlkID0gbXNnX2lkOworCWhkci0+c2VxID0gbmV3X3NlcSgpOworCWhkci0+c2l6ZSA9 IHNpemUgLSBzaXplb2YoKmhkcik7CisKKwlyID0gc2VuZChVc2Vyc3BhY2Vfc29ja2V0LCBoZHIs IHNpemUsIDApOworCVRFU1RfQVNTRVJUKHIgPT0gc2l6ZSwKKwkJInNlbmQoKSBmYWlsZWQsIHNl bmRpbmcgJXpkLCByZXN1bHQgJXpkLCBlcnJubyAlZCAoJXMpXG4iLAorCQlzaXplLCByLCBlcnJu bywgc3RyZXJyb3IoZXJybm8pKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmt2bV9zdHJlcnJv cihpbnQgZXJyb3IpCit7CisJc3dpdGNoIChlcnJvcikgeworCWNhc2UgS1ZNX0VOT1NZUzoKKwkJ cmV0dXJuICJJbnZhbGlkIHN5c3RlbSBjYWxsIG51bWJlciI7CisJY2FzZSBLVk1fRU9QTk9UU1VQ UDoKKwkJcmV0dXJuICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0cmFuc3BvcnQgZW5kcG9p bnQiOworCWNhc2UgS1ZNX0VBR0FJTjoKKwkJcmV0dXJuICJUcnkgYWdhaW4iOworCWRlZmF1bHQ6 CisJCXJldHVybiBzdHJlcnJvcihlcnJvcik7CisJfQorfQorCitzdGF0aWMgaW50IGRvX2NvbW1h bmQoaW50IGNtZF9pZCwgc3RydWN0IGt2bWlfbXNnX2hkciAqcmVxLAorCQkgICAgICBzaXplX3Qg cmVxX3NpemUsIHZvaWQgKnJwbCwgc2l6ZV90IHJwbF9zaXplKQoreworCXNlbmRfbWVzc2FnZShj bWRfaWQsIHJlcSwgcmVxX3NpemUpOworCXJldHVybiByZWNlaXZlX2NtZF9yZXBseShyZXEsIHJw bCwgcnBsX3NpemUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2NtZF9pbnZhbGlkKHZvaWQpCit7 CisJaW50IGludmFsaWRfbXNnX2lkID0gMHhmZmZmOworCXN0cnVjdCBrdm1pX21zZ19oZHIgcmVx OworCWludCByOworCisJciA9IGRvX2NvbW1hbmQoaW52YWxpZF9tc2dfaWQsICZyZXEsIHNpemVv ZihyZXEpLCBOVUxMLCAwKTsKKwlURVNUX0FTU0VSVChyID09IC1LVk1fRU5PU1lTLAorCQkiSW52 YWxpZCBjb21tYW5kIGRpZG4ndCBmYWlsZWQgd2l0aCBLVk1fRU5PU1lTLCBlcnJvciAlZCAoJXMp XG4iLAorCQktciwga3ZtX3N0cmVycm9yKC1yKSk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RfaW50 cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKIHsKIAlzZXR1cF9zb2NrZXQoKTsKIAlob29r X2ludHJvc3BlY3Rpb24odm0pOworCisJdGVzdF9jbWRfaW52YWxpZCgpOworCiAJdW5ob29rX2lu dHJvc3BlY3Rpb24odm0pOwogfQogCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9u L2t2bWkuYyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaS5jCmluZGV4IDliNWYxYjY1NDEy NS4uM2M1MWE1ZjU5YWMyIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWku YworKysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYwpAQCAtMTMsMTEgKzEzLDUxIEBA CiAjZGVmaW5lIEtWTUlfTlVNX0VWRU5UUyAgIF9fY21wKChpbnQpS1ZNSV9ORVhUX1ZNX0VWRU5U LCBcCiAJCQkJKGludClLVk1JX05FWFRfVkNQVV9FVkVOVCwgPikKIAotaW50IGt2bWlfaW5pdCh2 b2lkKQorI2RlZmluZSBLVk1JX01TR19TSVpFX0FMTE9DIChzaXplb2Yoc3RydWN0IGt2bWlfbXNn X2hkcikgKyBLVk1JX01BWF9NU0dfU0laRSkKKworc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpt c2dfY2FjaGU7CisKK3ZvaWQgKmt2bWlfbXNnX2FsbG9jKHZvaWQpCit7CisJcmV0dXJuIGttZW1f Y2FjaGVfemFsbG9jKG1zZ19jYWNoZSwgR0ZQX0tFUk5FTCk7Cit9CisKK3ZvaWQga3ZtaV9tc2df ZnJlZSh2b2lkICphZGRyKQoreworCWlmIChhZGRyKQorCQlrbWVtX2NhY2hlX2ZyZWUobXNnX2Nh Y2hlLCBhZGRyKTsKK30KKworc3RhdGljIHZvaWQga3ZtaV9jYWNoZV9kZXN0cm95KHZvaWQpCit7 CisJa21lbV9jYWNoZV9kZXN0cm95KG1zZ19jYWNoZSk7CisJbXNnX2NhY2hlID0gTlVMTDsKK30K Kworc3RhdGljIGludCBrdm1pX2NhY2hlX2NyZWF0ZSh2b2lkKQogeworCW1zZ19jYWNoZSA9IGtt ZW1fY2FjaGVfY3JlYXRlKCJrdm1pX21zZyIsIEtWTUlfTVNHX1NJWkVfQUxMT0MsCisJCQkJICAg ICAgNDA5NiwgU0xBQl9BQ0NPVU5ULCBOVUxMKTsKKworCWlmICghbXNnX2NhY2hlKSB7CisJCWt2 bWlfY2FjaGVfZGVzdHJveSgpOworCisJCXJldHVybiAtMTsKKwl9CisKIAlyZXR1cm4gMDsKIH0K IAorYm9vbCBrdm1pX2lzX2NvbW1hbmRfYWxsb3dlZChzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24g Kmt2bWksIHUxNiBpZCkKK3sKKwlyZXR1cm4gaWQgPCBLVk1JX05VTV9DT01NQU5EUyAmJiB0ZXN0 X2JpdChpZCwga3ZtaS0+Y21kX2FsbG93X21hc2spOworfQorCitpbnQga3ZtaV9pbml0KHZvaWQp Cit7CisJcmV0dXJuIGt2bWlfY2FjaGVfY3JlYXRlKCk7Cit9CisKIGludCBrdm1pX3ZlcnNpb24o dm9pZCkKIHsKIAlyZXR1cm4gS1ZNSV9WRVJTSU9OOwpAQCAtMjUsNiArNjUsNyBAQCBpbnQga3Zt aV92ZXJzaW9uKHZvaWQpCiAKIHZvaWQga3ZtaV91bmluaXQodm9pZCkKIHsKKwlrdm1pX2NhY2hl X2Rlc3Ryb3koKTsKIH0KIAogc3RhdGljIHZvaWQga3ZtaV9mcmVlKHN0cnVjdCBrdm0gKmt2bSkK ZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaCBiL3ZpcnQva3Zt L2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaAppbmRleCBjODk4NzViZDJiYWMuLjIwNmFhZjkzZjhi YSAxMDA2NDQKLS0tIGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5oCisrKyBiL3Zp cnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9pbnQuaApAQCAtNyw2ICs3LDExIEBACiAjaW5jbHVk ZSA8dWFwaS9saW51eC9rdm1pLmg+CiAKICNkZWZpbmUgS1ZNSShrdm0pICgoa3ZtKS0+a3ZtaSkK Ky8qCisgKiBUaGlzIGxpbWl0IGlzIHVzZWQgdG8gYWNjb21tb2RhdGUgdGhlIGxhcmdlc3Qga25v d24gZml4ZWQtbGVuZ3RoCisgKiBtZXNzYWdlLgorICovCisjZGVmaW5lIEtWTUlfTUFYX01TR19T SVpFICg0MDk2ICogMiAtIHNpemVvZihzdHJ1Y3Qga3ZtaV9tc2dfaGRyKSkKIAogLyoga3ZtaV9t c2cuYyAqLwogYm9vbCBrdm1pX3NvY2tfZ2V0KHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3Zt aSwgaW50IGZkKTsKQEAgLTE0LDQgKzE5LDkgQEAgdm9pZCBrdm1pX3NvY2tfc2h1dGRvd24oc3Ry dWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pKTsKIHZvaWQga3ZtaV9zb2NrX3B1dChzdHJ1Y3Qg a3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkpOwogYm9vbCBrdm1pX21zZ19wcm9jZXNzKHN0cnVjdCBr dm1faW50cm9zcGVjdGlvbiAqa3ZtaSk7CiAKKy8qIGt2bWkuYyAqLwordm9pZCAqa3ZtaV9tc2df YWxsb2Modm9pZCk7Cit2b2lkIGt2bWlfbXNnX2ZyZWUodm9pZCAqYWRkcik7Citib29sIGt2bWlf aXNfY29tbWFuZF9hbGxvd2VkKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwgdTE2IGlk KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNn LmMgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMKaW5kZXggOTM4N2IxNDI3Y2Jl Li5iNzJkZjAwYWU4YTcgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaV9t c2cuYworKysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMKQEAgLTgsNiArOCwx MCBAQAogI2luY2x1ZGUgPGxpbnV4L25ldC5oPgogI2luY2x1ZGUgImt2bWlfaW50LmgiCiAKK3R5 cGVkZWYgaW50ICgqa3ZtaV92bV9tc2dfZmN0KShzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2 bWksCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJICAgICAg IGNvbnN0IHZvaWQgKnJlcSk7CisKIGJvb2wga3ZtaV9zb2NrX2dldChzdHJ1Y3Qga3ZtX2ludHJv c3BlY3Rpb24gKmt2bWksIGludCBmZCkKIHsKIAlzdHJ1Y3Qgc29ja2V0ICpzb2NrOwpAQCAtMzMs NyArMzcsMTYyIEBAIHZvaWQga3ZtaV9zb2NrX3NodXRkb3duKHN0cnVjdCBrdm1faW50cm9zcGVj dGlvbiAqa3ZtaSkKIAlrZXJuZWxfc29ja19zaHV0ZG93bihrdm1pLT5zb2NrLCBTSFVUX1JEV1Ip OwogfQogCitzdGF0aWMgaW50IGhhbmRsZV9zb2NrX3JjKGludCByYywgc2l6ZV90IHNpemUpCit7 CisJaWYgKHVubGlrZWx5KHJjIDwgMCkpCisJCXJldHVybiByYzsKKwlpZiAodW5saWtlbHkocmMg IT0gc2l6ZSkpCisJCXJldHVybiAtRVBJUEU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg a3ZtaV9zb2NrX3JlYWQoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLCB2b2lkICpidWYs CisJCQkgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBrdmVjIHZlYyA9IHsgLmlvdl9iYXNlID0g YnVmLCAuaW92X2xlbiA9IHNpemUsIH07CisJc3RydWN0IG1zZ2hkciBtID0geyB9OworCWludCBy YzsKKworCXJjID0ga2VybmVsX3JlY3Ztc2coa3ZtaS0+c29jaywgJm0sICZ2ZWMsIDEsIHNpemUs IE1TR19XQUlUQUxMKTsKKworCXJldHVybiBoYW5kbGVfc29ja19yYyhyYywgc2l6ZSk7Cit9CisK K3N0YXRpYyBpbnQga3ZtaV9zb2NrX3dyaXRlKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3Zt aSwgc3RydWN0IGt2ZWMgKnZlYywKKwkJCSAgIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSkKK3sKKwlz dHJ1Y3QgbXNnaGRyIG0gPSB7IH07CisJaW50IHJjOworCisJcmMgPSBrZXJuZWxfc2VuZG1zZyhr dm1pLT5zb2NrLCAmbSwgdmVjLCBuLCBzaXplKTsKKworCXJldHVybiBoYW5kbGVfc29ja19yYyhy Yywgc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQga3ZtaV9tc2dfcmVwbHkoc3RydWN0IGt2bV9pbnRy b3NwZWN0aW9uICprdm1pLAorCQkJICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csIGlu dCBlcnIsCisJCQkgIGNvbnN0IHZvaWQgKnJwbCwgc2l6ZV90IHJwbF9zaXplKQoreworCXN0cnVj dCBrdm1pX2Vycm9yX2NvZGUgZWM7CisJc3RydWN0IGt2bWlfbXNnX2hkciBoOworCXN0cnVjdCBr dmVjIHZlY1szXSA9IHsKKwkJeyAuaW92X2Jhc2UgPSAmaCwgLmlvdl9sZW4gPSBzaXplb2YoaCkg fSwKKwkJeyAuaW92X2Jhc2UgPSAmZWMsIC5pb3ZfbGVuID0gc2l6ZW9mKGVjKSB9LAorCQl7IC5p b3ZfYmFzZSA9ICh2b2lkICopcnBsLCAuaW92X2xlbiA9IHJwbF9zaXplIH0sCisJfTsKKwlzaXpl X3Qgc2l6ZSA9IHNpemVvZihoKSArIHNpemVvZihlYykgKyAoZXJyID8gMCA6IHJwbF9zaXplKTsK KwlzaXplX3QgbiA9IEFSUkFZX1NJWkUodmVjKSAtIChlcnIgPyAxIDogMCk7CisKKwltZW1zZXQo JmgsIDAsIHNpemVvZihoKSk7CisJaC5pZCA9IG1zZy0+aWQ7CisJaC5zZXEgPSBtc2ctPnNlcTsK KwloLnNpemUgPSBzaXplIC0gc2l6ZW9mKGgpOworCisJbWVtc2V0KCZlYywgMCwgc2l6ZW9mKGVj KSk7CisJZWMuZXJyID0gZXJyOworCisJcmV0dXJuIGt2bWlfc29ja193cml0ZShrdm1pLCB2ZWMs IG4sIHNpemUpOworfQorCitzdGF0aWMgaW50IGt2bWlfbXNnX3ZtX3JlcGx5KHN0cnVjdCBrdm1f aW50cm9zcGVjdGlvbiAqa3ZtaSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAq bXNnLAorCQkJICAgICBpbnQgZXJyLCBjb25zdCB2b2lkICpycGwsCisJCQkgICAgIHNpemVfdCBy cGxfc2l6ZSkKK3sKKwlyZXR1cm4ga3ZtaV9tc2dfcmVwbHkoa3ZtaSwgbXNnLCBlcnIsIHJwbCwg cnBsX3NpemUpOworfQorCisvKgorICogVGhlc2UgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIGJ5IHRo ZSByZWNlaXZpbmcgdGhyZWFkLgorICovCitzdGF0aWMgY29uc3Qga3ZtaV92bV9tc2dfZmN0IG1z Z192bVtdID0geworfTsKKworc3RhdGljIGt2bWlfdm1fbXNnX2ZjdCBnZXRfdm1fbXNnX2hhbmRs ZXIodTE2IGlkKQoreworCXJldHVybiBpZCA8IEFSUkFZX1NJWkUobXNnX3ZtKSA/IG1zZ192bVtp ZF0gOiBOVUxMOworfQorCitzdGF0aWMgYm9vbCBpc192bV9tZXNzYWdlKHUxNiBpZCkKK3sKKwli b29sIGlzX3ZtX21zZ19pZCA9IChpZCAmIDEpID09IDA7CisKKwlyZXR1cm4gaXNfdm1fbXNnX2lk ICYmICEhZ2V0X3ZtX21zZ19oYW5kbGVyKGlkKTsKK30KKworc3RhdGljIGJvb2wgaXNfdm1fY29t bWFuZCh1MTYgaWQpCit7CisJcmV0dXJuIGlzX3ZtX21lc3NhZ2UoaWQpOworfQorCitzdGF0aWMg c3RydWN0IGt2bWlfbXNnX2hkciAqa3ZtaV9tc2dfcmVjdihzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rp b24gKmt2bWkpCit7CisJc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnOworCWludCBlcnI7CisKKwlt c2cgPSBrdm1pX21zZ19hbGxvYygpOworCWlmICghbXNnKQorCQlnb3RvIG91dDsKKworCWVyciA9 IGt2bWlfc29ja19yZWFkKGt2bWksIG1zZywgc2l6ZW9mKCptc2cpKTsKKwlpZiAoZXJyKQorCQln b3RvIG91dF9lcnI7CisKKwlpZiAobXNnLT5zaXplKSB7CisJCWlmIChtc2ctPnNpemUgPiBLVk1J X01BWF9NU0dfU0laRSkKKwkJCWdvdG8gb3V0X2VycjsKKworCQllcnIgPSBrdm1pX3NvY2tfcmVh ZChrdm1pLCBtc2cgKyAxLCBtc2ctPnNpemUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfZXJy OworCX0KKworCXJldHVybiBtc2c7CisKK291dF9lcnI6CisJa3ZtaV9tc2dfZnJlZShtc2cpOwor b3V0OgorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGt2bWlfbXNnX2RvX3ZtX2NtZChz dHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWksCisJCQkgICAgICBjb25zdCBzdHJ1Y3Qga3Zt aV9tc2dfaGRyICptc2cpCit7CisJa3ZtaV92bV9tc2dfZmN0IGZjdCA9IGdldF92bV9tc2dfaGFu ZGxlcihtc2ctPmlkKTsKKworCXJldHVybiBmY3Qoa3ZtaSwgbXNnLCBtc2cgKyAxKTsKK30KKwor c3RhdGljIGludCBrdm1pX21zZ192bV9yZXBseV9lYyhzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24g Kmt2bWksCisJCQkJY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLCBpbnQgZWMpCit7CisJ cmV0dXJuIGt2bWlfbXNnX3ZtX3JlcGx5KGt2bWksIG1zZywgZWMsIE5VTEwsIDApOworfQorCitz dGF0aWMgaW50IGt2bWlfbXNnX2hhbmRsZV92bV9jbWQoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9u ICprdm1pLAorCQkJCSAgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnKQoreworCWlmICgha3ZtaV9p c19jb21tYW5kX2FsbG93ZWQoa3ZtaSwgbXNnLT5pZCkpCisJCXJldHVybiBrdm1pX21zZ192bV9y ZXBseV9lYyhrdm1pLCBtc2csIC1LVk1fRVBFUk0pOworCisJcmV0dXJuIGt2bWlfbXNnX2RvX3Zt X2NtZChrdm1pLCBtc2cpOworfQorCiBib29sIGt2bWlfbXNnX3Byb2Nlc3Moc3RydWN0IGt2bV9p bnRyb3NwZWN0aW9uICprdm1pKQogewotCXJldHVybiBmYWxzZTsKKwlzdHJ1Y3Qga3ZtaV9tc2df aGRyICptc2c7CisJaW50IGVyciA9IC0xOworCisJbXNnID0ga3ZtaV9tc2dfcmVjdihrdm1pKTsK KwlpZiAoIW1zZykKKwkJZ290byBvdXQ7CisKKwlpZiAoaXNfdm1fY29tbWFuZChtc2ctPmlkKSkK KwkJZXJyID0ga3ZtaV9tc2dfaGFuZGxlX3ZtX2NtZChrdm1pLCBtc2cpOworCWVsc2UKKwkJZXJy ID0ga3ZtaV9tc2dfdm1fcmVwbHlfZWMoa3ZtaSwgbXNnLCAtS1ZNX0VOT1NZUyk7CisKKwlrdm1p X21zZ19mcmVlKG1zZyk7CitvdXQ6CisJcmV0dXJuIGVyciA9PSAwOwogfQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5n IGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=