From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: [PULL 04/61] misc: Replace zero-length arrays with flexible array member (manual)
Date: Mon, 16 Mar 2020 22:26:31 +0100 [thread overview]
Message-ID: <1584394048-44994-5-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1584394048-44994-1-git-send-email-pbonzini@redhat.com>
From: Philippe Mathieu-Daudé <philmd@redhat.com>
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/commit/?id=76497732932f
[3] https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=17642a2fbd2c1
Inspired-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
block/vmdk.c | 2 +-
docs/interop/vhost-user.rst | 4 ++--
hw/char/sclpconsole-lm.c | 2 +-
hw/char/sclpconsole.c | 2 +-
hw/s390x/virtio-ccw.c | 2 +-
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 ++++----
target/s390x/ioinst.c | 2 +-
10 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/block/vmdk.c b/block/vmdk.c
index 20e909d..8466051 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;
enum {
diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst
index 4016523..3b1b660 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;
/* Used to track the state of each descriptor in descriptor table */
- DescStateSplit desc[0];
+ DescStateSplit desc[];
} QueueRegionSplit;
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 as:
uint8_t padding[7];
/* Used to track the state of each descriptor fetched from descriptor ring */
- DescStatePacked desc[0];
+ DescStatePacked desc[];
} QueueRegionPacked;
To track inflight I/O, the queue region should be processed as follows:
diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
index c420dc0..2b5f37b 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;
/* max size for line-mode data in 4K SCCB page */
diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
index 1fa124d..5c76649 100644
--- a/hw/char/sclpconsole.c
+++ b/hw/char/sclpconsole.c
@@ -25,7 +25,7 @@
typedef struct ASCIIConsoleData {
EventBufferHeader ebh;
- char data[0];
+ char data[];
} QEMU_PACKED ASCIIConsoleData;
/* max size for ASCII data in 4K SCCB page */
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 50cf95b..64f928f 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;
/* Specify where the virtqueues for the subchannel are in guest memory. */
diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
index 19f7ba7..c13327f 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 AcpiRsdtDescriptorRev1;
*/
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 9bc42df..c96120d 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;
/**
diff --git a/include/hw/s390x/event-facility.h b/include/hw/s390x/event-facility.h
index bdc32a3..700a610 100644
--- a/include/hw/s390x/event-facility.h
+++ b/include/hw/s390x/event-facility.h
@@ -122,7 +122,7 @@ typedef struct MDBO {
typedef struct MDB {
MdbHeader header;
- MDBO mdbo[0];
+ MDBO mdbo[];
} QEMU_PACKED MDB;
typedef struct SclpMsg {
diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
index c54413b..cd7b243 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;
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;
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;
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;
typedef struct AssignStorage {
diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c
index c437a1d..0e840cc 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;
#define CHSC_MIN_RESP_LEN 0x0008
--
1.8.3.1
next prev parent reply other threads:[~2020-03-16 21:32 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-16 21:26 [PULL 00/61] Misc patches for soft freeze Paolo Bonzini
2020-03-16 21:26 ` [PULL 01/61] scsi/qemu-pr-helper: Fix out-of-bounds access to trnptid_list[] Paolo Bonzini
2020-03-16 21:26 ` [PULL 02/61] optionrom/pvh: scan entire RSDP Area Paolo Bonzini
2020-03-16 21:26 ` [PULL 03/61] misc: Replace zero-length arrays with flexible array member (automatic) Paolo Bonzini
2020-03-16 21:26 ` Paolo Bonzini [this message]
2020-03-16 21:26 ` [PULL 05/61] configure: add configure option avx512f_opt Paolo Bonzini
2020-03-16 21:26 ` [PULL 06/61] util: add util function buffer_zero_avx512() Paolo Bonzini
2020-03-16 22:02 ` Paolo Bonzini
2020-03-16 21:26 ` [PULL 07/61] WHPX: TSC get and set should be dependent on VM state Paolo Bonzini
2020-03-16 21:26 ` [PULL 08/61] WHPX: Use QEMU values for trapped CPUID Paolo Bonzini
2020-03-16 21:26 ` [PULL 09/61] MAINTAINERS: Add entry for Guest X86 HAXM CPUs Paolo Bonzini
2020-03-17 7:46 ` Colin Xu
2020-03-17 8:26 ` Paolo Bonzini
2020-03-17 8:55 ` Colin Xu
2020-03-17 10:27 ` Paolo Bonzini
2020-03-18 0:23 ` Colin Xu
2020-03-16 21:26 ` [PULL 10/61] hw/i386/intel_iommu: Fix out-of-bounds access on guest IRT Paolo Bonzini
2020-03-16 21:26 ` [PULL 11/61] oslib-posix: initialize mutex and condition variable Paolo Bonzini
2020-03-16 21:26 ` [PULL 12/61] build-sys: do not make qemu-ga link with pixman Paolo Bonzini
2020-03-16 21:26 ` [PULL 13/61] modules: load modules from versioned /var/run dir Paolo Bonzini
2020-03-16 21:26 ` [PULL 14/61] configure: Fix building with SASL on Windows Paolo Bonzini
2020-03-16 21:26 ` [PULL 15/61] tests/docker: Install SASL library to extend code coverage on amd64 Paolo Bonzini
2020-03-16 21:26 ` [PULL 16/61] memory: Fix start offset for bitmap log_clear hook Paolo Bonzini
2020-03-16 21:26 ` [PULL 17/61] qom/object: enable setter for uint types Paolo Bonzini
2020-03-16 21:26 ` [PULL 18/61] ich9: fix getter type for sci_int property Paolo Bonzini
2020-03-16 21:26 ` [PULL 19/61] ich9: Simplify ich9_lpc_initfn Paolo Bonzini
2020-03-16 21:26 ` [PULL 20/61] qom/object: Use common get/set uint helpers Paolo Bonzini
2020-03-16 21:26 ` [PULL 21/61] i386: Fix GCC warning with snprintf when HAX is enabled Paolo Bonzini
2020-03-16 21:26 ` [PULL 22/61] WHPX: Use proper synchronization primitives while processing Paolo Bonzini
2020-03-16 21:26 ` [PULL 23/61] Makefile: Align 'help' target output Paolo Bonzini
2020-03-16 21:26 ` [PULL 24/61] Makefile: Let the 'help' target list the tools targets Paolo Bonzini
2020-03-16 21:26 ` [PULL 25/61] hw/audio/fmopl: Move ENV_CURVE to .heap to save 32KiB of .bss Paolo Bonzini
2020-03-16 21:26 ` [PULL 26/61] hw/audio/intel-hda: Use memory region alias to reduce .rodata by 4.34MB Paolo Bonzini
2020-03-16 21:26 ` [PULL 27/61] hw/usb/quirks: Use smaller types to reduce .rodata by 10KiB Paolo Bonzini
2020-03-16 21:26 ` [PULL 28/61] ui/curses: Make control_characters[] array const Paolo Bonzini
2020-03-16 21:26 ` [PULL 29/61] ui/curses: Move arrays to .heap to save 74KiB of .bss Paolo Bonzini
2020-03-16 21:26 ` [PULL 30/61] qemu-cpu-models.rst: Document -noTSX, mds-no, taa-no, and tsx-ctrl Paolo Bonzini
2020-03-16 21:26 ` [PULL 31/61] softmmu/vl.c: Handle '-cpu help' and '-device help' before 'no default machine' Paolo Bonzini
2020-03-16 21:26 ` [PULL 32/61] Use -isystem for linux-headers dir Paolo Bonzini
2020-03-16 21:27 ` [PULL 33/61] exec/rom_reset: Free rom data during inmigrate skip Paolo Bonzini
2020-03-16 21:27 ` [PULL 34/61] cpus: avoid pause_all_vcpus getting stuck due to race Paolo Bonzini
2020-03-16 21:27 ` [PULL 35/61] lockable: add lock guards Paolo Bonzini
2020-03-16 21:27 ` [PULL 36/61] lockable: add QemuRecMutex support Paolo Bonzini
2020-03-16 21:27 ` [PULL 37/61] memory: Correctly return alias region type Paolo Bonzini
2020-03-16 21:27 ` [PULL 38/61] memory: Simplify memory_region_init_rom_nomigrate() to ease review Paolo Bonzini
2020-03-16 21:27 ` [PULL 39/61] scripts/cocci: Rename memory-region-{init-ram -> housekeeping} Paolo Bonzini
2020-03-16 21:27 ` [PULL 40/61] scripts/cocci: Patch to replace memory_region_init_{ram, readonly -> rom} Paolo Bonzini
2020-03-16 21:27 ` [PULL 41/61] hw/arm: Use memory_region_init_rom() with read-only regions Paolo Bonzini
2020-03-16 21:27 ` [PULL 42/61] hw/display: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 43/61] hw/m68k: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 44/61] hw/net: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 45/61] hw/pci-host: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 46/61] hw/ppc: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 47/61] hw/riscv: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 48/61] hw/sh4: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 49/61] hw/sparc: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 50/61] scripts/cocci: Patch to detect potential use of memory_region_init_rom Paolo Bonzini
2020-03-16 21:27 ` [PULL 51/61] scripts/cocci: Patch to remove unnecessary memory_region_set_readonly() Paolo Bonzini
2020-03-16 21:27 ` [PULL 52/61] scripts/cocci: Patch to let devices own their MemoryRegions Paolo Bonzini
2020-03-16 21:27 ` [PULL 53/61] hw/core: Let devices own the MemoryRegion they create Paolo Bonzini
2020-03-16 21:27 ` [PULL 54/61] hw/display: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 55/61] hw/dma: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 56/61] hw/riscv: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 57/61] hw/char: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 58/61] hw/arm/stm32: Use memory_region_init_rom() with read-only regions Paolo Bonzini
2020-03-16 21:27 ` [PULL 59/61] hw/ppc/ppc405: " Paolo Bonzini
2020-03-16 21:27 ` [PULL 60/61] hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias Paolo Bonzini
2020-03-16 21:27 ` [PULL 61/61] hw/arm: Let devices own the MemoryRegion they create Paolo Bonzini
2020-03-16 23:58 ` [PULL 00/61] Misc patches for soft freeze no-reply
2020-03-17 0:27 ` no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1584394048-44994-5-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).