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 X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A87DDC433DB for ; Wed, 10 Feb 2021 09:38:51 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 2FAC164DEE for ; Wed, 10 Feb 2021 09:38:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2FAC164DEE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9lxS-0005Or-1t for qemu-devel@archiver.kernel.org; Wed, 10 Feb 2021 04:38:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l9loS-0005EA-2C for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:29:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:20885) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l9loO-0006yE-Pe for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:29:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612949368; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cYqP03dycTdexHbMdXnJ2LFdYO0TVBLQAPIGmu+1Tb8=; b=BWyq8U6vwQzYVmSsPcCwLnxeVG2k2LpyouqJlqioKhO0xNQPDvl1dKIJl6D1NrGaZjjTGG G8jPp2wJMKoJY7RU+CnCWJ/PqlKSbePDfTDXtUK9AmVilUG04wgVSaWAu+wdp3BzErLPwH HDY7NvpQh67X6xHlgCSMkZwQpMa4xh4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-29-aRFBbqI8M5enR1HXJK6_3g-1; Wed, 10 Feb 2021 04:29:26 -0500 X-MC-Unique: aRFBbqI8M5enR1HXJK6_3g-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4E8A41934102; Wed, 10 Feb 2021 09:29:24 +0000 (UTC) Received: from localhost (ovpn-115-120.ams2.redhat.com [10.36.115.120]) by smtp.corp.redhat.com (Postfix) with ESMTP id D698B60CCF; Wed, 10 Feb 2021 09:29:14 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v4 15/27] multi-process: define MPQemuMsg format and transmission functions Date: Wed, 10 Feb 2021 09:26:16 +0000 Message-Id: <20210210092628.193785-16-stefanha@redhat.com> In-Reply-To: <20210210092628.193785-1-stefanha@redhat.com> References: <20210210092628.193785-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.57, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , John G Johnson , thuth@redhat.com, Jagannathan Raman , Eduardo Habkost , qemu-block@nongnu.org, "Michael S. Tsirkin" , "Denis V. Lunev" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefan Hajnoczi , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Wainer dos Santos Moschetta , Elena Ufimtseva , Igor Mammedov , Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT4KCkRlZmlu ZXMgTVBRZW11TXNnLCB3aGljaCBpcyB0aGUgbWVzc2FnZSB0aGF0IGlzIHNlbnQgdG8gdGhlIHJl bW90ZQpwcm9jZXNzLiBUaGlzIG1lc3NhZ2UgaXMgc2VudCBvdmVyIFFJT0NoYW5uZWwgYW5kIGlz IHVzZWQgdG8KY29tbWFuZCB0aGUgcmVtb3RlIHByb2Nlc3MgdG8gcGVyZm9ybSB2YXJpb3VzIHRh c2tzLgpEZWZpbmUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9ucyB1c2VkIGJ5IHByb3h5IGFuZCBieSBy ZW1vdGUuCgpTaWduZWQtb2ZmLWJ5OiBKYWdhbm5hdGhhbiBSYW1hbiA8amFnLnJhbWFuQG9yYWNs ZS5jb20+ClNpZ25lZC1vZmYtYnk6IEpvaG4gRyBKb2huc29uIDxqb2huLmcuam9obnNvbkBvcmFj bGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFbGVuYSBVZmltdHNldmEgPGVsZW5hLnVmaW10c2V2YUBv cmFjbGUuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQu Y29tPgpNZXNzYWdlLWlkOiA1NmNhOGJjZjk1MTk1YjJiMTk1YjA4ZjZiOTU2NWI2ZDc0MTBiY2U1 LjE2MTE5MzgzMTkuZ2l0LmphZy5yYW1hbkBvcmFjbGUuY29tCgpbUmVwbGFjZSBzdHJ1Y3QgaW92 ZWMgc2VuZFsyXSA9IHswfSB3aXRoIHt9IHRvIG1ha2UgY2xhbmcgaGFwcHkgYXMKc3VnZ2VzdGVk IGJ5IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4uCi0tU3RlZmFuXQoK U2lnbmVkLW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgotLS0K IE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBody9yZW1vdGUvdHJhY2UuaCAgICAgICAgICAgICAg IHwgICAxICsKIGluY2x1ZGUvaHcvcmVtb3RlL21wcWVtdS1saW5rLmggfCAgNjMgKysrKysrKysr KwogaW5jbHVkZS9zeXNlbXUvaW90aHJlYWQuaCAgICAgICB8ICAgNiArCiBody9yZW1vdGUvbXBx ZW11LWxpbmsuYyAgICAgICAgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBpb3RocmVhZC5jICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGh3L3JlbW90ZS9tZXNv bi5idWlsZCAgICAgICAgICAgfCAgIDEgKwogaHcvcmVtb3RlL3RyYWNlLWV2ZW50cyAgICAgICAg ICB8ICAgNCArCiA5IGZpbGVzIGNoYW5nZWQsIDI4OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgaHcvcmVtb3RlL3RyYWNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3 L3JlbW90ZS9tcHFlbXUtbGluay5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaHcvcmVtb3RlL21wcWVt dS1saW5rLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBody9yZW1vdGUvdHJhY2UtZXZlbnRzCgpkaWZm IC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBhYWQ4NDkxOTZjLi4zODk2 OTNmNTlhIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzIx MSw2ICszMjExLDggQEAgRjogaHcvcGNpLWhvc3QvcmVtb3RlLmMKIEY6IGluY2x1ZGUvaHcvcGNp LWhvc3QvcmVtb3RlLmgKIEY6IGh3L3JlbW90ZS9tYWNoaW5lLmMKIEY6IGluY2x1ZGUvaHcvcmVt b3RlL21hY2hpbmUuaAorRjogaHcvcmVtb3RlL21wcWVtdS1saW5rLmMKK0Y6IGluY2x1ZGUvaHcv cmVtb3RlL21wcWVtdS1saW5rLmgKIAogQnVpbGQgYW5kIHRlc3QgYXV0b21hdGlvbgogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWls ZAppbmRleCBjOGMwN2RmNzM1Li5hOTIzZjI0OWQ4IDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAor KysgYi9tZXNvbi5idWlsZApAQCAtMTgxOCw2ICsxODE4LDcgQEAgaWYgaGF2ZV9zeXN0ZW0KICAg ICAnbmV0JywKICAgICAnc29mdG1tdScsCiAgICAgJ3VpJywKKyAgICAnaHcvcmVtb3RlJywKICAg XQogZW5kaWYKIGlmIGhhdmVfc3lzdGVtIG9yIGhhdmVfdXNlcgpkaWZmIC0tZ2l0IGEvaHcvcmVt b3RlL3RyYWNlLmggYi9ody9yZW1vdGUvdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi41ZDVlM2FjNzIwCi0tLSAvZGV2L251bGwKKysrIGIvaHcvcmVtb3RlL3Ry YWNlLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgInRyYWNlL3RyYWNlLWh3X3JlbW90ZS5oIgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsuaCBiL2luY2x1ZGUvaHcv cmVtb3RlL21wcWVtdS1saW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uY2FjNjk5Y2I0MgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvaHcvcmVtb3RlL21wcWVt dS1saW5rLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvbW11bmljYXRpb24gY2hhbm5lbCBi ZXR3ZWVuIFFFTVUgYW5kIHJlbW90ZSBkZXZpY2UgcHJvY2VzcworICoKKyAqIENvcHlyaWdodCDC qSAyMDE4LCAyMDIxIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuCisgKgorICogVGhpcyB3 b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAy IG9yIGxhdGVyLgorICogU2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJl Y3RvcnkuCisgKgorICovCisKKyNpZm5kZWYgTVBRRU1VX0xJTktfSAorI2RlZmluZSBNUFFFTVVf TElOS19ICisKKyNpbmNsdWRlICJxb20vb2JqZWN0LmgiCisjaW5jbHVkZSAicWVtdS90aHJlYWQu aCIKKyNpbmNsdWRlICJpby9jaGFubmVsLmgiCisKKyNkZWZpbmUgUkVNT1RFX01BWF9GRFMgOAor CisjZGVmaW5lIE1QUUVNVV9NU0dfSERSX1NJWkUgb2Zmc2V0b2YoTVBRZW11TXNnLCBkYXRhLnU2 NCkKKworLyoqCisgKiBNUFFlbXVDbWQ6CisgKgorICogTVBRZW11Q21kIGVudW0gdHlwZSB0byBz cGVjaWZ5IHRoZSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIG9uIHRoZSByZW1vdGUKKyAqIGRldmlj ZS4KKyAqCisgKiBUaGlzIHVzZXMgYSBwcml2YXRlIHByb3RvY29sIGJldHdlZW4gUUVNVSBhbmQg dGhlIHJlbW90ZSBwcm9jZXNzLiB2ZmlvLXVzZXIKKyAqIHByb3RvY29sIHdvdWxkIHN1cGVyc2Vk ZSB0aGlzIGluIHRoZSBmdXR1cmUuCisgKgorICovCit0eXBlZGVmIGVudW0geworICAgIE1QUUVN VV9DTURfTUFYLAorfSBNUFFlbXVDbWQ7CisKKy8qKgorICogTVBRZW11TXNnOgorICogQGNtZDog VGhlIHJlbW90ZSBjb21tYW5kCisgKiBAc2l6ZTogU2l6ZSBvZiB0aGUgZGF0YSB0byBiZSBzaGFy ZWQKKyAqIEBkYXRhOiBTdHJ1Y3R1cmVkIGRhdGEKKyAqIEBmZHM6IEZpbGUgZGVzY3JpcHRvcnMg dG8gYmUgc2hhcmVkIHdpdGggcmVtb3RlIGRldmljZQorICoKKyAqIE1QUWVtdU1zZyBGb3JtYXQg b2YgdGhlIG1lc3NhZ2Ugc2VudCB0byB0aGUgcmVtb3RlIGRldmljZSBmcm9tIFFFTVUuCisgKgor ICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGNtZDsKKyAgICBzaXplX3Qgc2l6ZTsKKwor ICAgIHVuaW9uIHsKKyAgICAgICAgdWludDY0X3QgdTY0OworICAgIH0gZGF0YTsKKworICAgIGlu dCBmZHNbUkVNT1RFX01BWF9GRFNdOworICAgIGludCBudW1fZmRzOworfSBNUFFlbXVNc2c7CisK K2Jvb2wgbXBxZW11X21zZ19zZW5kKE1QUWVtdU1zZyAqbXNnLCBRSU9DaGFubmVsICppb2MsIEVy cm9yICoqZXJycCk7Citib29sIG1wcWVtdV9tc2dfcmVjdihNUFFlbXVNc2cgKm1zZywgUUlPQ2hh bm5lbCAqaW9jLCBFcnJvciAqKmVycnApOworCitib29sIG1wcWVtdV9tc2dfdmFsaWQoTVBRZW11 TXNnICptc2cpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L2lvdGhyZWFk LmggYi9pbmNsdWRlL3N5c2VtdS9pb3RocmVhZC5oCmluZGV4IDBjNTI4NGRiYmMuLmYxNzcxNDJm MTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3lzZW11L2lvdGhyZWFkLmgKKysrIGIvaW5jbHVkZS9z eXNlbXUvaW90aHJlYWQuaApAQCAtNTcsNCArNTcsMTAgQEAgSU9UaHJlYWQgKmlvdGhyZWFkX2Ny ZWF0ZShjb25zdCBjaGFyICppZCwgRXJyb3IgKiplcnJwKTsKIHZvaWQgaW90aHJlYWRfc3RvcChJ T1RocmVhZCAqaW90aHJlYWQpOwogdm9pZCBpb3RocmVhZF9kZXN0cm95KElPVGhyZWFkICppb3Ro cmVhZCk7CiAKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgZXhlY3V0aW5nIHdpdGhpbmcgSU9UaHJl YWQgY29udGV4dCwKKyAqIGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbCBxZW11X2luX2lvdGhy ZWFkKHZvaWQpOworCiAjZW5kaWYgLyogSU9USFJFQURfSCAqLwpkaWZmIC0tZ2l0IGEvaHcvcmVt b3RlL21wcWVtdS1saW5rLmMgYi9ody9yZW1vdGUvbXBxZW11LWxpbmsuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZDE4OTlmZDk0Ci0tLSAvZGV2L251bGwKKysrIGIv aHcvcmVtb3RlL21wcWVtdS1saW5rLmMKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBDb21tdW5p Y2F0aW9uIGNoYW5uZWwgYmV0d2VlbiBRRU1VIGFuZCByZW1vdGUgZGV2aWNlIHByb2Nlc3MKKyAq CisgKiBDb3B5cmlnaHQgwqkgMjAxOCwgMjAyMSBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVz LgorICoKKyAqIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHUEwsIHZlcnNpb24gMiBvciBsYXRlci4KKyAqIFNlZSB0aGUgQ09QWUlORyBmaWxlIGluIHRo ZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICoKKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5o IgorI2luY2x1ZGUgInFlbXUtY29tbW9uLmgiCisKKyNpbmNsdWRlICJxZW11L21vZHVsZS5oIgor I2luY2x1ZGUgImh3L3JlbW90ZS9tcHFlbXUtbGluay5oIgorI2luY2x1ZGUgInFhcGkvZXJyb3Iu aCIKKyNpbmNsdWRlICJxZW11L2lvdi5oIgorI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0Lmgi CisjaW5jbHVkZSAicWVtdS9tYWluLWxvb3AuaCIKKyNpbmNsdWRlICJpby9jaGFubmVsLmgiCisj aW5jbHVkZSAic3lzZW11L2lvdGhyZWFkLmgiCisjaW5jbHVkZSAidHJhY2UuaCIKKworLyoKKyAq IFNlbmQgbWVzc2FnZSBvdmVyIHRoZSBpb2MgUUlPQ2hhbm5lbC4KKyAqIFRoaXMgZnVuY3Rpb24g aXMgc2FmZSB0byBjYWxsIGZyb206CisgKiAtIG1haW4gbG9vcCBpbiBjby1yb3V0aW5lIGNvbnRl eHQuIFdpbGwgYmxvY2sgdGhlIG1haW4gbG9vcCBpZiBub3QgaW4KKyAqICAgY28tcm91dGluZSBj b250ZXh0OworICogLSB2Q1BVIHRocmVhZCB3aXRoIG5vIGNvLXJvdXRpbmUgY29udGV4dCBhbmQg aWYgdGhlIGNoYW5uZWwgaXMgbm90IHBhcnQKKyAqICAgb2YgdGhlIG1haW4gbG9vcCBoYW5kbGlu ZzsKKyAqIC0gSU9UaHJlYWQgd2l0aGluIGNvLXJvdXRpbmUgY29udGV4dCwgb3V0c2lkZSBvZiBj by1yb3V0aW5lIGNvbnRleHQKKyAqICAgd2lsbCBibG9jayBJT1RocmVhZDsKKyAqIFJldHVybnMg dHJ1ZSBpZiBubyBlcnJvcnMgd2VyZSBlbmNvdW50ZXJlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICov Citib29sIG1wcWVtdV9tc2dfc2VuZChNUFFlbXVNc2cgKm1zZywgUUlPQ2hhbm5lbCAqaW9jLCBF cnJvciAqKmVycnApCit7CisgICAgRVJSUF9HVUFSRCgpOworICAgIGJvb2wgaW9sb2NrID0gcWVt dV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKTsKKyAgICBib29sIGlvdGhyZWFkID0gcWVtdV9pbl9p b3RocmVhZCgpOworICAgIHN0cnVjdCBpb3ZlYyBzZW5kWzJdID0ge307CisgICAgaW50ICpmZHMg PSBOVUxMOworICAgIHNpemVfdCBuZmRzID0gMDsKKyAgICBib29sIHJldCA9IGZhbHNlOworCisg ICAgc2VuZFswXS5pb3ZfYmFzZSA9IG1zZzsKKyAgICBzZW5kWzBdLmlvdl9sZW4gPSBNUFFFTVVf TVNHX0hEUl9TSVpFOworCisgICAgc2VuZFsxXS5pb3ZfYmFzZSA9ICh2b2lkICopJm1zZy0+ZGF0 YTsKKyAgICBzZW5kWzFdLmlvdl9sZW4gPSBtc2ctPnNpemU7CisKKyAgICBpZiAobXNnLT5udW1f ZmRzKSB7CisgICAgICAgIG5mZHMgPSBtc2ctPm51bV9mZHM7CisgICAgICAgIGZkcyA9IG1zZy0+ ZmRzOworICAgIH0KKworICAgIC8qCisgICAgICogRG9udCB1c2UgaW4gSU9UaHJlYWQgb3V0IG9m IGNvLXJvdXRpbmUgY29udGV4dCBhcworICAgICAqIGl0IHdpbGwgYmxvY2sgSU9UaHJlYWQuCisg ICAgICovCisgICAgYXNzZXJ0KHFlbXVfaW5fY29yb3V0aW5lKCkgfHwgIWlvdGhyZWFkKTsKKwor ICAgIC8qCisgICAgICogU2tpcCB1bmxvY2tpbmcvbG9ja2luZyBpb3RocmVhZCBsb2NrIHdoZW4g dGhlIElPVGhyZWFkIGlzIHJ1bm5pbmcKKyAgICAgKiBpbiBjby1yb3V0aW5lIGNvbnRleHQuIENv LXJvdXRpbmUgY29udGV4dCBpcyBhc3NlcnRlZCBhYm92ZQorICAgICAqIGZvciBJT1RocmVhZCBj YXNlLgorICAgICAqIEFsc28gc2tpcCBsb2NrIGhhbmRsaW5nIHdoaWxlIGluIGEgY28tcm91dGlu ZSBpbiB0aGUgbWFpbiBjb250ZXh0LgorICAgICAqLworICAgIGlmIChpb2xvY2sgJiYgIWlvdGhy ZWFkICYmICFxZW11X2luX2Nvcm91dGluZSgpKSB7CisgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2Nr X2lvdGhyZWFkKCk7CisgICAgfQorCisgICAgaWYgKCFxaW9fY2hhbm5lbF93cml0ZXZfZnVsbF9h bGwoaW9jLCBzZW5kLCBHX05fRUxFTUVOVFMoc2VuZCksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmZHMsIG5mZHMsIGVycnApKSB7CisgICAgICAgIHJldCA9IHRydWU7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgdHJhY2VfbXBxZW11X3NlbmRfaW9fZXJyb3IobXNnLT5jbWQs IG1zZy0+c2l6ZSwgbmZkcyk7CisgICAgfQorCisgICAgaWYgKGlvbG9jayAmJiAhaW90aHJlYWQg JiYgIXFlbXVfaW5fY29yb3V0aW5lKCkpIHsKKyAgICAgICAgLyogU2VlIGFib3ZlIGNvbW1lbnQg d2h5IHNraXAgbG9ja2luZyBoZXJlLiAqLworICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJl YWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKgorICogUmVhZCBtZXNzYWdl IGZyb20gdGhlIGlvYyBRSU9DaGFubmVsLgorICogVGhpcyBmdW5jdGlvbiBpcyBzYWZlIHRvIGNh bGwgZnJvbToKKyAqIC0gRnJvbSBtYWluIGxvb3AgaW4gY28tcm91dGluZSBjb250ZXh0LiBXaWxs IGJsb2NrIHRoZSBtYWluIGxvb3AgaWYgbm90IGluCisgKiAgIGNvLXJvdXRpbmUgY29udGV4dDsK KyAqIC0gRnJvbSB2Q1BVIHRocmVhZCB3aXRoIG5vIGNvLXJvdXRpbmUgY29udGV4dCBhbmQgaWYg dGhlIGNoYW5uZWwgaXMgbm90IHBhcnQKKyAqICAgb2YgdGhlIG1haW4gbG9vcCBoYW5kbGluZzsK KyAqIC0gRnJvbSBJT1RocmVhZCB3aXRoaW4gY28tcm91dGluZSBjb250ZXh0LCBvdXRzaWRlIG9m IGNvLXJvdXRpbmUgY29udGV4dAorICogICB3aWxsIGJsb2NrIElPVGhyZWFkOworICovCitzdGF0 aWMgc3NpemVfdCBtcHFlbXVfcmVhZChRSU9DaGFubmVsICppb2MsIHZvaWQgKmJ1Ziwgc2l6ZV90 IGxlbiwgaW50ICoqZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpuZmRz LCBFcnJvciAqKmVycnApCit7CisgICAgRVJSUF9HVUFSRCgpOworICAgIHN0cnVjdCBpb3ZlYyBp b3YgPSB7IC5pb3ZfYmFzZSA9IGJ1ZiwgLmlvdl9sZW4gPSBsZW4gfTsKKyAgICBib29sIGlvbG9j ayA9IHFlbXVfbXV0ZXhfaW90aHJlYWRfbG9ja2VkKCk7CisgICAgYm9vbCBpb3RocmVhZCA9IHFl bXVfaW5faW90aHJlYWQoKTsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICAvKgorICAgICAqIERv bnQgdXNlIGluIElPVGhyZWFkIG91dCBvZiBjby1yb3V0aW5lIGNvbnRleHQgYXMKKyAgICAgKiBp dCB3aWxsIGJsb2NrIElPVGhyZWFkLgorICAgICAqLworICAgIGFzc2VydChxZW11X2luX2Nvcm91 dGluZSgpIHx8ICFpb3RocmVhZCk7CisKKyAgICBpZiAoaW9sb2NrICYmICFpb3RocmVhZCAmJiAh cWVtdV9pbl9jb3JvdXRpbmUoKSkgeworICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVh ZCgpOworICAgIH0KKworICAgIHJldCA9IHFpb19jaGFubmVsX3JlYWR2X2Z1bGxfYWxsX2VvZihp b2MsICZpb3YsIDEsIGZkcywgbmZkcywgZXJycCk7CisKKyAgICBpZiAoaW9sb2NrICYmICFpb3Ro cmVhZCAmJiAhcWVtdV9pbl9jb3JvdXRpbmUoKSkgeworICAgICAgICBxZW11X211dGV4X2xvY2tf aW90aHJlYWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gKHJldCA8PSAwKSA/IHJldCA6IGlvdi5p b3ZfbGVuOworfQorCitib29sIG1wcWVtdV9tc2dfcmVjdihNUFFlbXVNc2cgKm1zZywgUUlPQ2hh bm5lbCAqaW9jLCBFcnJvciAqKmVycnApCit7CisgICAgRVJSUF9HVUFSRCgpOworICAgIGdfYXV0 b2ZyZWUgaW50ICpmZHMgPSBOVUxMOworICAgIHNpemVfdCBuZmRzID0gMDsKKyAgICBzc2l6ZV90 IGxlbjsKKyAgICBib29sIHJldCA9IGZhbHNlOworCisgICAgbGVuID0gbXBxZW11X3JlYWQoaW9j LCBtc2csIE1QUUVNVV9NU0dfSERSX1NJWkUsICZmZHMsICZuZmRzLCBlcnJwKTsKKyAgICBpZiAo bGVuIDw9IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0gZWxzZSBpZiAobGVuICE9IE1Q UUVNVV9NU0dfSERSX1NJWkUpIHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiTWVzc2FnZSBo ZWFkZXIgY29ycnVwdGVkIik7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAo bXNnLT5zaXplID4gc2l6ZW9mKG1zZy0+ZGF0YSkpIHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJw LCAiSW52YWxpZCBzaXplIGZvciBtZXNzYWdlIik7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9 CisKKyAgICBpZiAoIW1zZy0+c2l6ZSkgeworICAgICAgICBnb3RvIGNvcHlfZmRzOworICAgIH0K KworICAgIGxlbiA9IG1wcWVtdV9yZWFkKGlvYywgJm1zZy0+ZGF0YSwgbXNnLT5zaXplLCBOVUxM LCBOVUxMLCBlcnJwKTsKKyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgICAgZ290byBmYWlsOwor ICAgIH0KKyAgICBpZiAobGVuICE9IG1zZy0+c2l6ZSkgeworICAgICAgICBlcnJvcl9zZXRnKGVy cnAsICJVbmFibGUgdG8gcmVhZCBmdWxsIG1lc3NhZ2UiKTsKKyAgICAgICAgZ290byBmYWlsOwor ICAgIH0KKworY29weV9mZHM6CisgICAgbXNnLT5udW1fZmRzID0gbmZkczsKKyAgICBpZiAobmZk cyA+IEdfTl9FTEVNRU5UUyhtc2ctPmZkcykpIHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLAor ICAgICAgICAgICAgICAgICAgICJPdmVyZmxvdyBlcnJvcjogcmVjZWl2ZWQgJXp1IGZkcywgbW9y ZSB0aGFuIG1heCBvZiAlZCBmZHMiLAorICAgICAgICAgICAgICAgICAgIG5mZHMsIFJFTU9URV9N QVhfRkRTKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAobmZkcykgeworICAg ICAgICBtZW1jcHkobXNnLT5mZHMsIGZkcywgbmZkcyAqIHNpemVvZihpbnQpKTsKKyAgICB9CisK KyAgICByZXQgPSB0cnVlOworCitmYWlsOgorICAgIGlmICgqZXJycCkgeworICAgICAgICB0cmFj ZV9tcHFlbXVfcmVjdl9pb19lcnJvcihtc2ctPmNtZCwgbXNnLT5zaXplLCBuZmRzKTsKKyAgICB9 CisgICAgd2hpbGUgKCplcnJwICYmIG5mZHMpIHsKKyAgICAgICAgY2xvc2UoZmRzW25mZHMgLSAx XSk7CisgICAgICAgIG5mZHMtLTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitib29s IG1wcWVtdV9tc2dfdmFsaWQoTVBRZW11TXNnICptc2cpCit7CisgICAgaWYgKG1zZy0+Y21kID49 IE1QUUVNVV9DTURfTUFYICYmIG1zZy0+Y21kIDwgMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgfQorCisgICAgLyogVmVyaWZ5IEZEcy4gKi8KKyAgICBpZiAobXNnLT5udW1fZmRzID49 IFJFTU9URV9NQVhfRkRTKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp ZiAobXNnLT5udW1fZmRzID4gMCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1zZy0+ bnVtX2ZkczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZmNudGwobXNnLT5mZHNbaV0sIEZfR0VU RkwpID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9p b3RocmVhZC5jIGIvaW90aHJlYWQuYwppbmRleCBiOWYyNzUxMzgyLi43ZjA4NjM4N2JlIDEwMDY0 NAotLS0gYS9pb3RocmVhZC5jCisrKyBiL2lvdGhyZWFkLmMKQEAgLTM2OSwzICszNjksOSBAQCBJ T1RocmVhZCAqaW90aHJlYWRfYnlfaWQoY29uc3QgY2hhciAqaWQpCiB7CiAgICAgcmV0dXJuIElP VEhSRUFEKG9iamVjdF9yZXNvbHZlX3BhdGhfdHlwZShpZCwgVFlQRV9JT1RIUkVBRCwgTlVMTCkp OwogfQorCitib29sIHFlbXVfaW5faW90aHJlYWQodm9pZCkKK3sKKyAgICByZXR1cm4gcWVtdV9n ZXRfY3VycmVudF9haW9fY29udGV4dCgpID09IHFlbXVfZ2V0X2Fpb19jb250ZXh0KCkgPworICAg ICAgICAgICAgICAgICAgICBmYWxzZSA6IHRydWU7Cit9CmRpZmYgLS1naXQgYS9ody9yZW1vdGUv bWVzb24uYnVpbGQgYi9ody9yZW1vdGUvbWVzb24uYnVpbGQKaW5kZXggMTk3YjAzODY0Ni4uYTJi MmZjMGU1OSAxMDA2NDQKLS0tIGEvaHcvcmVtb3RlL21lc29uLmJ1aWxkCisrKyBiL2h3L3JlbW90 ZS9tZXNvbi5idWlsZApAQCAtMSw1ICsxLDYgQEAKIHJlbW90ZV9zcyA9IHNzLnNvdXJjZV9zZXQo KQogCiByZW1vdGVfc3MuYWRkKHdoZW46ICdDT05GSUdfTVVMVElQUk9DRVNTJywgaWZfdHJ1ZTog ZmlsZXMoJ21hY2hpbmUuYycpKQorcmVtb3RlX3NzLmFkZCh3aGVuOiAnQ09ORklHX01VTFRJUFJP Q0VTUycsIGlmX3RydWU6IGZpbGVzKCdtcHFlbXUtbGluay5jJykpCiAKIHNvZnRtbXVfc3MuYWRk X2FsbCh3aGVuOiAnQ09ORklHX01VTFRJUFJPQ0VTUycsIGlmX3RydWU6IHJlbW90ZV9zcykKZGlm ZiAtLWdpdCBhL2h3L3JlbW90ZS90cmFjZS1ldmVudHMgYi9ody9yZW1vdGUvdHJhY2UtZXZlbnRz Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBiMjM5NzRmOTAKLS0tIC9k ZXYvbnVsbAorKysgYi9ody9yZW1vdGUvdHJhY2UtZXZlbnRzCkBAIC0wLDAgKzEsNCBAQAorIyBt dWx0aS1wcm9jZXNzIHRyYWNlIGV2ZW50cworCittcHFlbXVfc2VuZF9pb19lcnJvcihpbnQgY21k LCBpbnQgc2l6ZSwgaW50IG5mZHMpICJzZW5kIGNvbW1hbmQgJWQgc2l6ZSAlZCwgJWQgZmlsZSBk ZXNjcmlwdG9ycyB0byByZW1vdGUgcHJvY2VzcyIKK21wcWVtdV9yZWN2X2lvX2Vycm9yKGludCBj bWQsIGludCBzaXplLCBpbnQgbmZkcykgImZhaWxlZCB0byByZWNlaXZlICVkIHNpemUgJWQsICVk IGZpbGUgZGVzY3JpcHRvcnMgdG8gcmVtb3RlIHByb2Nlc3MiCi0tIAoyLjI5LjIKCg==