From nobody Thu Nov 13 23:27:31 2025 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1583336361; cv=none; d=zohomail.com; s=zohoarc; b=b82RuOPES5TmubyT4Ug6avdMAszC4nCLs2mygG5tGorha3q+QsaWR2dwrQVFDlxnTVrj7TkcG+BXro4UkiUdXI49oQOhui30d3Z1B1znygatOR2FTHW+V40i8gUG+/2QWKs1MHhV5c+vMagXjyjzs1tQXWae5g74YX7WlnLYqSQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583336361; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qI0fiIM3+p/aCCbRPIlYETEKpRO8l7BLy8Z7aU5UckY=; b=lXKUi5dkT7g6Ol+O/olvDpcvEYgE3bN1N+WcsEEdc7Oiiba8t6D4xjSbAww3ZlOcwMsx1e9I45V2MBLsKAl4w+W5+dbPtMTneC7IJFC7s2IuLQSf66Qz8wuRdWCXSNen8W9BYMVPEsMp3Q1nQ+gLEKkfPxXPXVruqUXs6B6IXUo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1583336361554909.8941168674619; Wed, 4 Mar 2020 07:39:21 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j9W6c-0003yc-VV; Wed, 04 Mar 2020 15:38:42 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j9W6b-0003y6-74 for xen-devel@lists.xenproject.org; Wed, 04 Mar 2020 15:38:41 +0000 Received: from us-smtp-delivery-1.mimecast.com (unknown [205.139.110.120]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 38c2b8ba-5e2e-11ea-a426-12813bfff9fa; Wed, 04 Mar 2020 15:38:40 +0000 (UTC) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-288-_Tvr5K9vOW6h-gjz8q7VQg-1; Wed, 04 Mar 2020 10:38:38 -0500 Received: by mail-wm1-f70.google.com with SMTP id q20so707076wmg.1 for ; Wed, 04 Mar 2020 07:38:38 -0800 (PST) Received: from localhost.localdomain (47.red-88-21-205.staticip.rima-tde.net. [88.21.205.47]) by smtp.gmail.com with ESMTPSA id e11sm38377995wrm.80.2020.03.04.07.38.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2020 07:38:34 -0800 (PST) X-Inumbo-ID: 38c2b8ba-5e2e-11ea-a426-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583336320; 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=kQOQfx06A1ie2SNHaflDW36So/UjUtM++P+T+HY6xSo=; b=Euy3NYOeEUGBz+eh+nP75d2O8osINgFTjcpJBxTfff58uwgVMKDnnzo3AlMS5YhSUUE+Ey nz/paVfjkcsJt2Ug+RVETXt3wBEV6QZnqUeuRJ2M9HsRjz7JQzkX37X6KGIfZTtqxoANXH fr/jawH95C2e/HDl0B+1aWGsuwDptcc= X-MC-Unique: _Tvr5K9vOW6h-gjz8q7VQg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vKf7x2e5mJnoKBehNULn5Enxe4/hEchqUW/qpjE2MWA=; b=V8Hf7TJ3UAYLEoJr9YjnCsS+0WImeiNqdq/entfmXf9RBkXm6B8YJMhnSYlAhRXk/q 5ZMEIX1IHvaZFGbTnJUYMVDsCuTxv/FEDZSj+kT8YqKCd6Piq/+WOjP+h3jShdacMaw+ cE/3+a6i0ZsllJQjSclIic8FjZkkZc7cWY7skP+3YKuwmAzHSoOzwDoI0N4g1riZsOlc oaxWpCOQZjKllTszy2MahO1HBuZHqL2oHZvSx6DDjdp3D6SSmhrBMkZKUN/t4ZHTMo0h 4TswInrmUV4YrU82L8DeuBT9gsThXrnNY967r6n0ba1gmc+Qrw24K6YxJypX/rD9mQX+ CnyQ== X-Gm-Message-State: ANhLgQ0RWq1yb6nkOEmTmvucld0HLq8M+aiWkeVO/UmnW1TwLwoVVx5c K3ZdNGV7H2w1QTLtjUWH9fatkgPjMo5Hz5jaV3BjUhjCg4l6H4Yx6GWGb/B/rtzYKqZtJnxkz2z gSt2LrMsDMK5E4+Vkga9rq87M/CE= X-Received: by 2002:a7b:c4cb:: with SMTP id g11mr4399092wmk.83.1583336314982; Wed, 04 Mar 2020 07:38:34 -0800 (PST) X-Google-Smtp-Source: ADFU+vsDOjmgcEVIZato5ZjdUrjxEY6XPbkE1/nQkF0KQXneBlngEd6/I93J523c3XqRNIFQT8xbGA== X-Received: by 2002:a7b:c4cb:: with SMTP id g11mr4399051wmk.83.1583336314606; Wed, 04 Mar 2020 07:38:34 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Date: Wed, 4 Mar 2020 16:38:16 +0100 Message-Id: <20200304153816.23636-3-philmd@redhat.com> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200304153816.23636-1-philmd@redhat.com> References: <20200304153816.23636-1-philmd@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [Xen-devel] [PATCH v2 2/2] misc: Replace zero-length arrays with flexible array member (manual) X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Peter Maydell , Paul Durrant , Jason Wang , David Hildenbrand , Yuval Shaia , Gerd Hoffmann , Stefano Stabellini , qemu-block@nongnu.org, "Michael S. Tsirkin" , "Gustavo A . R . Silva" , Halil Pasic , Christian Borntraeger , "Gonglei \(Arei\)" , Marcel Apfelbaum , Anthony Perard , xen-devel@lists.xenproject.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Eduardo Habkost , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Igor Mammedov , John Snow , Richard Henderson , Kevin Wolf , Xiao Guangrong , Eric Auger , Cornelia Huck , Laurent Vivier , Max Reitz , Paolo Bonzini Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Description copied from Linux kernel commit from Gustavo A. R. Silva (see [3]): --v-- description start --v-- The current codebase makes use of the zero-length array language extension to the C90 standard, but the preferred mechanism to declare variable-length types such as these ones is a flexible array member [1], introduced in C99: struct foo { int stuff; struct boo array[]; }; By making use of the mechanism above, we will get a compiler warning in case the flexible array does not occur last in the structure, which will help us prevent some kind of undefined behavior bugs from being unadvertenly introduced [2] to the Linux codebase from now on. --^-- description end --^-- Do the similar housekeeping in the QEMU codebase (which uses C99 since commit 7be41675f7cb). All these instances of code were found with the help of the following command (then manual analysis, without modifying structures only having a single flexible array member, such QEDTable in block/qed.h): git grep -F '[0];' [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/comm= it/?id=3D76497732932f [3] https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/co= mmit/?id=3D17642a2fbd2c1 Inspired-by: Gustavo A. R. Silva Reviewed-by: David Hildenbrand Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin --- v2: Do not modify block/qed.h: block/qed.h:106:14: error: flexible array member 'offsets' not allowed in= otherwise empty struct uint64_t offsets[]; /* in bytes */ ^ --- docs/interop/vhost-user.rst | 4 ++-- include/hw/acpi/acpi-defs.h | 4 ++-- include/hw/boards.h | 2 +- include/hw/s390x/event-facility.h | 2 +- include/hw/s390x/sclp.h | 8 ++++---- block/vmdk.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/s390x/virtio-ccw.c | 2 +- target/s390x/ioinst.c | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 401652397c..3b1b6602c7 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -568,7 +568,7 @@ For split virtqueue, queue region can be implemented as: uint16_t used_idx; =20 /* Used to track the state of each descriptor in descriptor table */ - DescStateSplit desc[0]; + DescStateSplit desc[]; } QueueRegionSplit; =20 To track inflight I/O, the queue region should be processed as follows: @@ -690,7 +690,7 @@ For packed virtqueue, queue region can be implemented a= s: uint8_t padding[7]; =20 /* Used to track the state of each descriptor fetched from descripto= r ring */ - DescStatePacked desc[0]; + DescStatePacked desc[]; } QueueRegionPacked; =20 To track inflight I/O, the queue region should be processed as follows: diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h index 19f7ba7b70..c13327fa78 100644 --- a/include/hw/acpi/acpi-defs.h +++ b/include/hw/acpi/acpi-defs.h @@ -152,7 +152,7 @@ typedef struct AcpiSerialPortConsoleRedirection */ struct AcpiRsdtDescriptorRev1 { ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint32_t table_offset_entry[0]; /* Array of pointers to other */ + uint32_t table_offset_entry[]; /* Array of pointers to other */ /* ACPI tables */ } QEMU_PACKED; typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescriptorRev1; @@ -162,7 +162,7 @@ typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescripto= rRev1; */ struct AcpiXsdtDescriptorRev2 { ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint64_t table_offset_entry[0]; /* Array of pointers to other */ + uint64_t table_offset_entry[]; /* Array of pointers to other */ /* ACPI tables */ } QEMU_PACKED; typedef struct AcpiXsdtDescriptorRev2 AcpiXsdtDescriptorRev2; diff --git a/include/hw/boards.h b/include/hw/boards.h index 9bc42dfb22..c96120d15f 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -71,7 +71,7 @@ typedef struct CPUArchId { */ typedef struct { int len; - CPUArchId cpus[0]; + CPUArchId cpus[]; } CPUArchIdList; =20 /** diff --git a/include/hw/s390x/event-facility.h b/include/hw/s390x/event-fac= ility.h index bdc32a3c09..700a610f33 100644 --- a/include/hw/s390x/event-facility.h +++ b/include/hw/s390x/event-facility.h @@ -122,7 +122,7 @@ typedef struct MDBO { =20 typedef struct MDB { MdbHeader header; - MDBO mdbo[0]; + MDBO mdbo[]; } QEMU_PACKED MDB; =20 typedef struct SclpMsg { diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h index c54413b78c..cd7b24359f 100644 --- a/include/hw/s390x/sclp.h +++ b/include/hw/s390x/sclp.h @@ -132,7 +132,7 @@ typedef struct ReadInfo { uint16_t highest_cpu; uint8_t _reserved5[124 - 122]; /* 122-123 */ uint32_t hmfai; - struct CPUEntry entries[0]; + struct CPUEntry entries[]; } QEMU_PACKED ReadInfo; =20 typedef struct ReadCpuInfo { @@ -142,7 +142,7 @@ typedef struct ReadCpuInfo { uint16_t nr_standby; /* 12-13 */ uint16_t offset_standby; /* 14-15 */ uint8_t reserved0[24-16]; /* 16-23 */ - struct CPUEntry entries[0]; + struct CPUEntry entries[]; } QEMU_PACKED ReadCpuInfo; =20 typedef struct ReadStorageElementInfo { @@ -151,7 +151,7 @@ typedef struct ReadStorageElementInfo { uint16_t assigned; uint16_t standby; uint8_t _reserved0[16 - 14]; /* 14-15 */ - uint32_t entries[0]; + uint32_t entries[]; } QEMU_PACKED ReadStorageElementInfo; =20 typedef struct AttachStorageElement { @@ -159,7 +159,7 @@ typedef struct AttachStorageElement { uint8_t _reserved0[10 - 8]; /* 8-9 */ uint16_t assigned; uint8_t _reserved1[16 - 12]; /* 12-15 */ - uint32_t entries[0]; + uint32_t entries[]; } QEMU_PACKED AttachStorageElement; =20 typedef struct AssignStorage { diff --git a/block/vmdk.c b/block/vmdk.c index 20e909d997..8466051bc9 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -187,7 +187,7 @@ typedef struct VmdkMetaData { typedef struct VmdkGrainMarker { uint64_t lba; uint32_t size; - uint8_t data[0]; + uint8_t data[]; } QEMU_PACKED VmdkGrainMarker; =20 enum { diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c index c420dc066e..2b5f37b6a2 100644 --- a/hw/char/sclpconsole-lm.c +++ b/hw/char/sclpconsole-lm.c @@ -31,7 +31,7 @@ typedef struct OprtnsCommand { EventBufferHeader header; MDMSU message_unit; - char data[0]; + char data[]; } QEMU_PACKED OprtnsCommand; =20 /* max size for line-mode data in 4K SCCB page */ diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c index 1fa124dab9..5c7664905e 100644 --- a/hw/char/sclpconsole.c +++ b/hw/char/sclpconsole.c @@ -25,7 +25,7 @@ =20 typedef struct ASCIIConsoleData { EventBufferHeader ebh; - char data[0]; + char data[]; } QEMU_PACKED ASCIIConsoleData; =20 /* max size for ASCII data in 4K SCCB page */ diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 50cf95b781..64f928fc7d 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -193,7 +193,7 @@ typedef struct VirtioThinintInfo { typedef struct VirtioRevInfo { uint16_t revision; uint16_t length; - uint8_t data[0]; + uint8_t data[]; } QEMU_PACKED VirtioRevInfo; =20 /* Specify where the virtqueues for the subchannel are in guest memory. */ diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c index c437a1d8c6..0e840cc579 100644 --- a/target/s390x/ioinst.c +++ b/target/s390x/ioinst.c @@ -347,7 +347,7 @@ typedef struct ChscResp { uint16_t len; uint16_t code; uint32_t param; - char data[0]; + char data[]; } QEMU_PACKED ChscResp; =20 #define CHSC_MIN_RESP_LEN 0x0008 --=20 2.21.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel