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 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 C5130C433DB for ; Thu, 4 Feb 2021 10:03:33 +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 5331864F4A for ; Thu, 4 Feb 2021 10:03:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5331864F4A 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]:49510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l7bU4-0006qm-8G for qemu-devel@archiver.kernel.org; Thu, 04 Feb 2021 05:03:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7bS4-0004jX-0W for qemu-devel@nongnu.org; Thu, 04 Feb 2021 05:01:28 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:48337) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l7bRy-0001Hb-FD for qemu-devel@nongnu.org; Thu, 04 Feb 2021 05:01:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612432881; 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=7KIJh9C/G8KjKsnarGz+nd5SDHU+dysHaKQlJVC/x8k=; b=TpTfJOhGScs3mTgwjatbOWIuxP4fOUBUhncyYcgaDZvXzxBA7dGuGDpzLQZI04OrVkX8L1 95EJcWDQJ+EgcqjouYdJY8EYtnzzq+FjEfjG7/X9wSKSK1ur2gQglENCTxTsDBr0jMuXuh a2hvTkToLto6kZaxJ6WflgwgMbGQnE4= 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-449-gPCjq_UzM4qBlthg08S_HQ-1; Thu, 04 Feb 2021 05:01:17 -0500 X-MC-Unique: gPCjq_UzM4qBlthg08S_HQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C23CA1020C21; Thu, 4 Feb 2021 10:01:15 +0000 (UTC) Received: from localhost (ovpn-115-89.ams2.redhat.com [10.36.115.89]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0F5DE1FBC7; Thu, 4 Feb 2021 10:01:05 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL 15/27] multi-process: define MPQemuMsg format and transmission functions Date: Thu, 4 Feb 2021 09:58:22 +0000 Message-Id: <20210204095834.345749-16-stefanha@redhat.com> In-Reply-To: <20210204095834.345749-1-stefanha@redhat.com> References: <20210204095834.345749-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 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: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.539, 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: Elena Ufimtseva , Fam Zheng , Thomas Huth , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, John G Johnson , "Denis V. Lunev" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Wainer dos Santos Moschetta , Stefan Hajnoczi , Paolo Bonzini , Igor Mammedov , Jagannathan Raman , =?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 LjE2MTE5MzgzMTkuZ2l0LmphZy5yYW1hbkBvcmFjbGUuY29tClNpZ25lZC1vZmYtYnk6IFN0ZWZh biBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAg ICAgICAgICAgICAgIHwgICAyICsKIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogaHcvcmVtb3RlL3RyYWNlLmggICAgICAgICAgICAgICB8ICAgMSArCiBpbmNsdWRlL2h3 L3JlbW90ZS9tcHFlbXUtbGluay5oIHwgIDYzICsrKysrKysrKysKIGluY2x1ZGUvc3lzZW11L2lv dGhyZWFkLmggICAgICAgfCAgIDYgKwogaHcvcmVtb3RlL21wcWVtdS1saW5rLmMgICAgICAgICB8 IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW90aHJlYWQuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAgNiArCiBody9yZW1vdGUvbWVzb24uYnVpbGQgICAgICAgICAgIHwg ICAxICsKIGh3L3JlbW90ZS90cmFjZS1ldmVudHMgICAgICAgICAgfCAgIDQgKwogOSBmaWxlcyBj aGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3JlbW90ZS90 cmFjZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3JlbW90ZS9tcHFlbXUtbGluay5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgaHcvcmVtb3RlL3RyYWNlLWV2ZW50cwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJT IGIvTUFJTlRBSU5FUlMKaW5kZXggNDU5Nzk0NTJlZC4uOTcxMzdmNjE3YiAxMDA2NDQKLS0tIGEv TUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTMyMDUsNiArMzIwNSw4IEBAIEY6IGh3 L3BjaS1ob3N0L3JlbW90ZS5jCiBGOiBpbmNsdWRlL2h3L3BjaS1ob3N0L3JlbW90ZS5oCiBGOiBo dy9yZW1vdGUvbWFjaGluZS5jCiBGOiBpbmNsdWRlL2h3L3JlbW90ZS9tYWNoaW5lLmgKK0Y6IGh3 L3JlbW90ZS9tcHFlbXUtbGluay5jCitGOiBpbmNsdWRlL2h3L3JlbW90ZS9tcHFlbXUtbGluay5o CiAKIEJ1aWxkIGFuZCB0ZXN0IGF1dG9tYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggN2E3MjgzYTk3ZC4u NDMyMTVjNzRlMyAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAg LTE4MDAsNiArMTgwMCw3IEBAIGlmIGhhdmVfc3lzdGVtCiAgICAgJ25ldCcsCiAgICAgJ3NvZnRt bXUnLAogICAgICd1aScsCisgICAgJ2h3L3JlbW90ZScsCiAgIF0KIGVuZGlmCiB0cmFjZV9ldmVu dHNfc3ViZGlycyArPSBbCmRpZmYgLS1naXQgYS9ody9yZW1vdGUvdHJhY2UuaCBiL2h3L3JlbW90 ZS90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkNWUzYWM3 MjAKLS0tIC9kZXYvbnVsbAorKysgYi9ody9yZW1vdGUvdHJhY2UuaApAQCAtMCwwICsxIEBACisj aW5jbHVkZSAidHJhY2UvdHJhY2UtaHdfcmVtb3RlLmgiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3 L3JlbW90ZS9tcHFlbXUtbGluay5oIGIvaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jYWM2OTljYjQyCi0tLSAvZGV2 L251bGwKKysrIGIvaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsuaApAQCAtMCwwICsxLDYz IEBACisvKgorICogQ29tbXVuaWNhdGlvbiBjaGFubmVsIGJldHdlZW4gUUVNVSBhbmQgcmVtb3Rl IGRldmljZSBwcm9jZXNzCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTgsIDIwMjEgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4KKyAqCisgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuCisgKiBTZWUgdGhl IENPUFlJTkcgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqCisgKi8KKworI2lm bmRlZiBNUFFFTVVfTElOS19ICisjZGVmaW5lIE1QUUVNVV9MSU5LX0gKKworI2luY2x1ZGUgInFv bS9vYmplY3QuaCIKKyNpbmNsdWRlICJxZW11L3RocmVhZC5oIgorI2luY2x1ZGUgImlvL2NoYW5u ZWwuaCIKKworI2RlZmluZSBSRU1PVEVfTUFYX0ZEUyA4CisKKyNkZWZpbmUgTVBRRU1VX01TR19I RFJfU0laRSBvZmZzZXRvZihNUFFlbXVNc2csIGRhdGEudTY0KQorCisvKioKKyAqIE1QUWVtdUNt ZDoKKyAqCisgKiBNUFFlbXVDbWQgZW51bSB0eXBlIHRvIHNwZWNpZnkgdGhlIGNvbW1hbmQgdG8g YmUgZXhlY3V0ZWQgb24gdGhlIHJlbW90ZQorICogZGV2aWNlLgorICoKKyAqIFRoaXMgdXNlcyBh IHByaXZhdGUgcHJvdG9jb2wgYmV0d2VlbiBRRU1VIGFuZCB0aGUgcmVtb3RlIHByb2Nlc3MuIHZm aW8tdXNlcgorICogcHJvdG9jb2wgd291bGQgc3VwZXJzZWRlIHRoaXMgaW4gdGhlIGZ1dHVyZS4K KyAqCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgTVBRRU1VX0NNRF9NQVgsCit9IE1QUWVtdUNt ZDsKKworLyoqCisgKiBNUFFlbXVNc2c6CisgKiBAY21kOiBUaGUgcmVtb3RlIGNvbW1hbmQKKyAq IEBzaXplOiBTaXplIG9mIHRoZSBkYXRhIHRvIGJlIHNoYXJlZAorICogQGRhdGE6IFN0cnVjdHVy ZWQgZGF0YQorICogQGZkczogRmlsZSBkZXNjcmlwdG9ycyB0byBiZSBzaGFyZWQgd2l0aCByZW1v dGUgZGV2aWNlCisgKgorICogTVBRZW11TXNnIEZvcm1hdCBvZiB0aGUgbWVzc2FnZSBzZW50IHRv IHRoZSByZW1vdGUgZGV2aWNlIGZyb20gUUVNVS4KKyAqCisgKi8KK3R5cGVkZWYgc3RydWN0IHsK KyAgICBpbnQgY21kOworICAgIHNpemVfdCBzaXplOworCisgICAgdW5pb24geworICAgICAgICB1 aW50NjRfdCB1NjQ7CisgICAgfSBkYXRhOworCisgICAgaW50IGZkc1tSRU1PVEVfTUFYX0ZEU107 CisgICAgaW50IG51bV9mZHM7Cit9IE1QUWVtdU1zZzsKKworYm9vbCBtcHFlbXVfbXNnX3NlbmQo TVBRZW11TXNnICptc2csIFFJT0NoYW5uZWwgKmlvYywgRXJyb3IgKiplcnJwKTsKK2Jvb2wgbXBx ZW11X21zZ19yZWN2KE1QUWVtdU1zZyAqbXNnLCBRSU9DaGFubmVsICppb2MsIEVycm9yICoqZXJy cCk7CisKK2Jvb2wgbXBxZW11X21zZ192YWxpZChNUFFlbXVNc2cgKm1zZyk7CisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUvaW90aHJlYWQuaCBiL2luY2x1ZGUvc3lzZW11L2lv dGhyZWFkLmgKaW5kZXggMGM1Mjg0ZGJiYy4uZjE3NzE0MmYxNiAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9zeXNlbXUvaW90aHJlYWQuaAorKysgYi9pbmNsdWRlL3N5c2VtdS9pb3RocmVhZC5oCkBAIC01 Nyw0ICs1NywxMCBAQCBJT1RocmVhZCAqaW90aHJlYWRfY3JlYXRlKGNvbnN0IGNoYXIgKmlkLCBF cnJvciAqKmVycnApOwogdm9pZCBpb3RocmVhZF9zdG9wKElPVGhyZWFkICppb3RocmVhZCk7CiB2 b2lkIGlvdGhyZWFkX2Rlc3Ryb3koSU9UaHJlYWQgKmlvdGhyZWFkKTsKIAorLyoKKyAqIFJldHVy bnMgdHJ1ZSBpZiBleGVjdXRpbmcgd2l0aGluZyBJT1RocmVhZCBjb250ZXh0LAorICogZmFsc2Ug b3RoZXJ3aXNlLgorICovCitib29sIHFlbXVfaW5faW90aHJlYWQodm9pZCk7CisKICNlbmRpZiAv KiBJT1RIUkVBRF9IICovCmRpZmYgLS1naXQgYS9ody9yZW1vdGUvbXBxZW11LWxpbmsuYyBiL2h3 L3JlbW90ZS9tcHFlbXUtbGluay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmIzZDM4MGU0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9ody9yZW1vdGUvbXBxZW11LWxpbmsu YwpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvbW11bmljYXRpb24gY2hhbm5lbCBiZXR3ZWVu IFFFTVUgYW5kIHJlbW90ZSBkZXZpY2UgcHJvY2VzcworICoKKyAqIENvcHlyaWdodCDCqSAyMDE4 LCAyMDIxIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuCisgKgorICogVGhpcyB3b3JrIGlz IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAyIG9yIGxh dGVyLgorICogU2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku CisgKgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAicWVtdS1jb21t b24uaCIKKworI2luY2x1ZGUgInFlbXUvbW9kdWxlLmgiCisjaW5jbHVkZSAiaHcvcmVtb3RlL21w cWVtdS1saW5rLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1ZGUgInFlbXUvaW92 LmgiCisjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKKyNpbmNsdWRlICJxZW11L21haW4t bG9vcC5oIgorI2luY2x1ZGUgImlvL2NoYW5uZWwuaCIKKyNpbmNsdWRlICJzeXNlbXUvaW90aHJl YWQuaCIKKyNpbmNsdWRlICJ0cmFjZS5oIgorCisvKgorICogU2VuZCBtZXNzYWdlIG92ZXIgdGhl IGlvYyBRSU9DaGFubmVsLgorICogVGhpcyBmdW5jdGlvbiBpcyBzYWZlIHRvIGNhbGwgZnJvbToK KyAqIC0gbWFpbiBsb29wIGluIGNvLXJvdXRpbmUgY29udGV4dC4gV2lsbCBibG9jayB0aGUgbWFp biBsb29wIGlmIG5vdCBpbgorICogICBjby1yb3V0aW5lIGNvbnRleHQ7CisgKiAtIHZDUFUgdGhy ZWFkIHdpdGggbm8gY28tcm91dGluZSBjb250ZXh0IGFuZCBpZiB0aGUgY2hhbm5lbCBpcyBub3Qg cGFydAorICogICBvZiB0aGUgbWFpbiBsb29wIGhhbmRsaW5nOworICogLSBJT1RocmVhZCB3aXRo aW4gY28tcm91dGluZSBjb250ZXh0LCBvdXRzaWRlIG9mIGNvLXJvdXRpbmUgY29udGV4dAorICog ICB3aWxsIGJsb2NrIElPVGhyZWFkOworICogUmV0dXJucyB0cnVlIGlmIG5vIGVycm9ycyB3ZXJl IGVuY291bnRlcmVkLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK2Jvb2wgbXBxZW11X21zZ19zZW5k KE1QUWVtdU1zZyAqbXNnLCBRSU9DaGFubmVsICppb2MsIEVycm9yICoqZXJycCkKK3sKKyAgICBF UlJQX0dVQVJEKCk7CisgICAgYm9vbCBpb2xvY2sgPSBxZW11X211dGV4X2lvdGhyZWFkX2xvY2tl ZCgpOworICAgIGJvb2wgaW90aHJlYWQgPSBxZW11X2luX2lvdGhyZWFkKCk7CisgICAgc3RydWN0 IGlvdmVjIHNlbmRbMl0gPSB7MH07CisgICAgaW50ICpmZHMgPSBOVUxMOworICAgIHNpemVfdCBu ZmRzID0gMDsKKyAgICBib29sIHJldCA9IGZhbHNlOworCisgICAgc2VuZFswXS5pb3ZfYmFzZSA9 IG1zZzsKKyAgICBzZW5kWzBdLmlvdl9sZW4gPSBNUFFFTVVfTVNHX0hEUl9TSVpFOworCisgICAg c2VuZFsxXS5pb3ZfYmFzZSA9ICh2b2lkICopJm1zZy0+ZGF0YTsKKyAgICBzZW5kWzFdLmlvdl9s ZW4gPSBtc2ctPnNpemU7CisKKyAgICBpZiAobXNnLT5udW1fZmRzKSB7CisgICAgICAgIG5mZHMg PSBtc2ctPm51bV9mZHM7CisgICAgICAgIGZkcyA9IG1zZy0+ZmRzOworICAgIH0KKworICAgIC8q CisgICAgICogRG9udCB1c2UgaW4gSU9UaHJlYWQgb3V0IG9mIGNvLXJvdXRpbmUgY29udGV4dCBh cworICAgICAqIGl0IHdpbGwgYmxvY2sgSU9UaHJlYWQuCisgICAgICovCisgICAgYXNzZXJ0KHFl bXVfaW5fY29yb3V0aW5lKCkgfHwgIWlvdGhyZWFkKTsKKworICAgIC8qCisgICAgICogU2tpcCB1 bmxvY2tpbmcvbG9ja2luZyBpb3RocmVhZCBsb2NrIHdoZW4gdGhlIElPVGhyZWFkIGlzIHJ1bm5p bmcKKyAgICAgKiBpbiBjby1yb3V0aW5lIGNvbnRleHQuIENvLXJvdXRpbmUgY29udGV4dCBpcyBh c3NlcnRlZCBhYm92ZQorICAgICAqIGZvciBJT1RocmVhZCBjYXNlLgorICAgICAqIEFsc28gc2tp cCBsb2NrIGhhbmRsaW5nIHdoaWxlIGluIGEgY28tcm91dGluZSBpbiB0aGUgbWFpbiBjb250ZXh0 LgorICAgICAqLworICAgIGlmIChpb2xvY2sgJiYgIWlvdGhyZWFkICYmICFxZW11X2luX2Nvcm91 dGluZSgpKSB7CisgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgfQor CisgICAgaWYgKCFxaW9fY2hhbm5lbF93cml0ZXZfZnVsbF9hbGwoaW9jLCBzZW5kLCBHX05fRUxF TUVOVFMoc2VuZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHMsIG5m ZHMsIGVycnApKSB7CisgICAgICAgIHJldCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAg dHJhY2VfbXBxZW11X3NlbmRfaW9fZXJyb3IobXNnLT5jbWQsIG1zZy0+c2l6ZSwgbmZkcyk7Cisg ICAgfQorCisgICAgaWYgKGlvbG9jayAmJiAhaW90aHJlYWQgJiYgIXFlbXVfaW5fY29yb3V0aW5l KCkpIHsKKyAgICAgICAgLyogU2VlIGFib3ZlIGNvbW1lbnQgd2h5IHNraXAgbG9ja2luZyBoZXJl LiAqLworICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKyAgICB9CisKKyAgICBy ZXR1cm4gcmV0OworfQorCisvKgorICogUmVhZCBtZXNzYWdlIGZyb20gdGhlIGlvYyBRSU9DaGFu bmVsLgorICogVGhpcyBmdW5jdGlvbiBpcyBzYWZlIHRvIGNhbGwgZnJvbToKKyAqIC0gRnJvbSBt YWluIGxvb3AgaW4gY28tcm91dGluZSBjb250ZXh0LiBXaWxsIGJsb2NrIHRoZSBtYWluIGxvb3Ag aWYgbm90IGluCisgKiAgIGNvLXJvdXRpbmUgY29udGV4dDsKKyAqIC0gRnJvbSB2Q1BVIHRocmVh ZCB3aXRoIG5vIGNvLXJvdXRpbmUgY29udGV4dCBhbmQgaWYgdGhlIGNoYW5uZWwgaXMgbm90IHBh cnQKKyAqICAgb2YgdGhlIG1haW4gbG9vcCBoYW5kbGluZzsKKyAqIC0gRnJvbSBJT1RocmVhZCB3 aXRoaW4gY28tcm91dGluZSBjb250ZXh0LCBvdXRzaWRlIG9mIGNvLXJvdXRpbmUgY29udGV4dAor ICogICB3aWxsIGJsb2NrIElPVGhyZWFkOworICovCitzdGF0aWMgc3NpemVfdCBtcHFlbXVfcmVh ZChRSU9DaGFubmVsICppb2MsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50ICoqZmRzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpuZmRzLCBFcnJvciAqKmVycnApCit7Cisg ICAgRVJSUF9HVUFSRCgpOworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7IC5pb3ZfYmFzZSA9IGJ1 ZiwgLmlvdl9sZW4gPSBsZW4gfTsKKyAgICBib29sIGlvbG9jayA9IHFlbXVfbXV0ZXhfaW90aHJl YWRfbG9ja2VkKCk7CisgICAgYm9vbCBpb3RocmVhZCA9IHFlbXVfaW5faW90aHJlYWQoKTsKKyAg ICBpbnQgcmV0ID0gLTE7CisKKyAgICAvKgorICAgICAqIERvbnQgdXNlIGluIElPVGhyZWFkIG91 dCBvZiBjby1yb3V0aW5lIGNvbnRleHQgYXMKKyAgICAgKiBpdCB3aWxsIGJsb2NrIElPVGhyZWFk LgorICAgICAqLworICAgIGFzc2VydChxZW11X2luX2Nvcm91dGluZSgpIHx8ICFpb3RocmVhZCk7 CisKKyAgICBpZiAoaW9sb2NrICYmICFpb3RocmVhZCAmJiAhcWVtdV9pbl9jb3JvdXRpbmUoKSkg eworICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOworICAgIH0KKworICAgIHJl dCA9IHFpb19jaGFubmVsX3JlYWR2X2Z1bGxfYWxsX2VvZihpb2MsICZpb3YsIDEsIGZkcywgbmZk cywgZXJycCk7CisKKyAgICBpZiAoaW9sb2NrICYmICFpb3RocmVhZCAmJiAhcWVtdV9pbl9jb3Jv dXRpbmUoKSkgeworICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKyAgICB9CisK KyAgICByZXR1cm4gKHJldCA8PSAwKSA/IHJldCA6IGlvdi5pb3ZfbGVuOworfQorCitib29sIG1w cWVtdV9tc2dfcmVjdihNUFFlbXVNc2cgKm1zZywgUUlPQ2hhbm5lbCAqaW9jLCBFcnJvciAqKmVy cnApCit7CisgICAgRVJSUF9HVUFSRCgpOworICAgIGdfYXV0b2ZyZWUgaW50ICpmZHMgPSBOVUxM OworICAgIHNpemVfdCBuZmRzID0gMDsKKyAgICBzc2l6ZV90IGxlbjsKKyAgICBib29sIHJldCA9 IGZhbHNlOworCisgICAgbGVuID0gbXBxZW11X3JlYWQoaW9jLCBtc2csIE1QUUVNVV9NU0dfSERS X1NJWkUsICZmZHMsICZuZmRzLCBlcnJwKTsKKyAgICBpZiAobGVuIDw9IDApIHsKKyAgICAgICAg Z290byBmYWlsOworICAgIH0gZWxzZSBpZiAobGVuICE9IE1QUUVNVV9NU0dfSERSX1NJWkUpIHsK KyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiTWVzc2FnZSBoZWFkZXIgY29ycnVwdGVkIik7Cisg ICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAobXNnLT5zaXplID4gc2l6ZW9mKG1z Zy0+ZGF0YSkpIHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiSW52YWxpZCBzaXplIGZvciBt ZXNzYWdlIik7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAoIW1zZy0+c2l6 ZSkgeworICAgICAgICBnb3RvIGNvcHlfZmRzOworICAgIH0KKworICAgIGxlbiA9IG1wcWVtdV9y ZWFkKGlvYywgJm1zZy0+ZGF0YSwgbXNnLT5zaXplLCBOVUxMLCBOVUxMLCBlcnJwKTsKKyAgICBp ZiAobGVuIDw9IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAobGVuICE9 IG1zZy0+c2l6ZSkgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJVbmFibGUgdG8gcmVhZCBm dWxsIG1lc3NhZ2UiKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworY29weV9mZHM6Cisg ICAgbXNnLT5udW1fZmRzID0gbmZkczsKKyAgICBpZiAobmZkcyA+IEdfTl9FTEVNRU5UUyhtc2ct PmZkcykpIHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLAorICAgICAgICAgICAgICAgICAgICJP dmVyZmxvdyBlcnJvcjogcmVjZWl2ZWQgJXp1IGZkcywgbW9yZSB0aGFuIG1heCBvZiAlZCBmZHMi LAorICAgICAgICAgICAgICAgICAgIG5mZHMsIFJFTU9URV9NQVhfRkRTKTsKKyAgICAgICAgZ290 byBmYWlsOworICAgIH0KKyAgICBpZiAobmZkcykgeworICAgICAgICBtZW1jcHkobXNnLT5mZHMs IGZkcywgbmZkcyAqIHNpemVvZihpbnQpKTsKKyAgICB9CisKKyAgICByZXQgPSB0cnVlOworCitm YWlsOgorICAgIGlmICgqZXJycCkgeworICAgICAgICB0cmFjZV9tcHFlbXVfcmVjdl9pb19lcnJv cihtc2ctPmNtZCwgbXNnLT5zaXplLCBuZmRzKTsKKyAgICB9CisgICAgd2hpbGUgKCplcnJwICYm IG5mZHMpIHsKKyAgICAgICAgY2xvc2UoZmRzW25mZHMgLSAxXSk7CisgICAgICAgIG5mZHMtLTsK KyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitib29sIG1wcWVtdV9tc2dfdmFsaWQoTVBR ZW11TXNnICptc2cpCit7CisgICAgaWYgKG1zZy0+Y21kID49IE1QUUVNVV9DTURfTUFYICYmIG1z Zy0+Y21kIDwgMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyogVmVy aWZ5IEZEcy4gKi8KKyAgICBpZiAobXNnLT5udW1fZmRzID49IFJFTU9URV9NQVhfRkRTKSB7Cisg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobXNnLT5udW1fZmRzID4gMCkg eworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1zZy0+bnVtX2ZkczsgaSsrKSB7CisgICAg ICAgICAgICBpZiAoZmNudGwobXNnLT5mZHNbaV0sIEZfR0VURkwpID09IC0xKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor CisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9pb3RocmVhZC5jIGIvaW90aHJlYWQu YwppbmRleCBiOWYyNzUxMzgyLi43ZjA4NjM4N2JlIDEwMDY0NAotLS0gYS9pb3RocmVhZC5jCisr KyBiL2lvdGhyZWFkLmMKQEAgLTM2OSwzICszNjksOSBAQCBJT1RocmVhZCAqaW90aHJlYWRfYnlf aWQoY29uc3QgY2hhciAqaWQpCiB7CiAgICAgcmV0dXJuIElPVEhSRUFEKG9iamVjdF9yZXNvbHZl X3BhdGhfdHlwZShpZCwgVFlQRV9JT1RIUkVBRCwgTlVMTCkpOwogfQorCitib29sIHFlbXVfaW5f aW90aHJlYWQodm9pZCkKK3sKKyAgICByZXR1cm4gcWVtdV9nZXRfY3VycmVudF9haW9fY29udGV4 dCgpID09IHFlbXVfZ2V0X2Fpb19jb250ZXh0KCkgPworICAgICAgICAgICAgICAgICAgICBmYWxz ZSA6IHRydWU7Cit9CmRpZmYgLS1naXQgYS9ody9yZW1vdGUvbWVzb24uYnVpbGQgYi9ody9yZW1v dGUvbWVzb24uYnVpbGQKaW5kZXggMTk3YjAzODY0Ni4uYTJiMmZjMGU1OSAxMDA2NDQKLS0tIGEv aHcvcmVtb3RlL21lc29uLmJ1aWxkCisrKyBiL2h3L3JlbW90ZS9tZXNvbi5idWlsZApAQCAtMSw1 ICsxLDYgQEAKIHJlbW90ZV9zcyA9IHNzLnNvdXJjZV9zZXQoKQogCiByZW1vdGVfc3MuYWRkKHdo ZW46ICdDT05GSUdfTVVMVElQUk9DRVNTJywgaWZfdHJ1ZTogZmlsZXMoJ21hY2hpbmUuYycpKQor cmVtb3RlX3NzLmFkZCh3aGVuOiAnQ09ORklHX01VTFRJUFJPQ0VTUycsIGlmX3RydWU6IGZpbGVz KCdtcHFlbXUtbGluay5jJykpCiAKIHNvZnRtbXVfc3MuYWRkX2FsbCh3aGVuOiAnQ09ORklHX01V TFRJUFJPQ0VTUycsIGlmX3RydWU6IHJlbW90ZV9zcykKZGlmZiAtLWdpdCBhL2h3L3JlbW90ZS90 cmFjZS1ldmVudHMgYi9ody9yZW1vdGUvdHJhY2UtZXZlbnRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjBiMjM5NzRmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9ody9yZW1v dGUvdHJhY2UtZXZlbnRzCkBAIC0wLDAgKzEsNCBAQAorIyBtdWx0aS1wcm9jZXNzIHRyYWNlIGV2 ZW50cworCittcHFlbXVfc2VuZF9pb19lcnJvcihpbnQgY21kLCBpbnQgc2l6ZSwgaW50IG5mZHMp ICJzZW5kIGNvbW1hbmQgJWQgc2l6ZSAlZCwgJWQgZmlsZSBkZXNjcmlwdG9ycyB0byByZW1vdGUg cHJvY2VzcyIKK21wcWVtdV9yZWN2X2lvX2Vycm9yKGludCBjbWQsIGludCBzaXplLCBpbnQgbmZk cykgImZhaWxlZCB0byByZWNlaXZlICVkIHNpemUgJWQsICVkIGZpbGUgZGVzY3JpcHRvcnMgdG8g cmVtb3RlIHByb2Nlc3MiCi0tIAoyLjI5LjIKCg==