misc: Replace zero-length arrays with flexible array member (automatic)
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 7be41675). All these instances of code were found with the help of the following Coccinelle script: @@ identifier s, m, a; type t, T; @@ struct s { ... t m; - T a[0]; + T a[]; }; @@ identifier s, m, a; type t, T; @@ struct s { ... t m; - T a[0]; + T a[]; } QEMU_PACKED; [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>
Showing
- block/linux-aio.c 1 addition, 1 deletionblock/linux-aio.c
- bsd-user/qemu.h 1 addition, 1 deletionbsd-user/qemu.h
- contrib/libvhost-user/libvhost-user.h 1 addition, 1 deletioncontrib/libvhost-user/libvhost-user.h
- hw/acpi/nvdimm.c 3 additions, 3 deletionshw/acpi/nvdimm.c
- hw/dma/soc_dma.c 1 addition, 1 deletionhw/dma/soc_dma.c
- hw/i386/x86.c 1 addition, 1 deletionhw/i386/x86.c
- hw/m68k/bootinfo.h 1 addition, 1 deletionhw/m68k/bootinfo.h
- hw/misc/omap_l4.c 1 addition, 1 deletionhw/misc/omap_l4.c
- hw/nvram/eeprom93xx.c 1 addition, 1 deletionhw/nvram/eeprom93xx.c
- hw/rdma/vmw/pvrdma_qp_ops.c 2 additions, 2 deletionshw/rdma/vmw/pvrdma_qp_ops.c
- hw/usb/dev-network.c 1 addition, 1 deletionhw/usb/dev-network.c
- hw/usb/dev-smartcard-reader.c 2 additions, 2 deletionshw/usb/dev-smartcard-reader.c
- hw/virtio/virtio.c 2 additions, 2 deletionshw/virtio/virtio.c
- hw/xen/xen_pt.h 1 addition, 1 deletionhw/xen/xen_pt.h
- include/hw/acpi/acpi-defs.h 6 additions, 6 deletionsinclude/hw/acpi/acpi-defs.h
- include/hw/arm/smmu-common.h 1 addition, 1 deletioninclude/hw/arm/smmu-common.h
- include/hw/i386/intel_iommu.h 2 additions, 1 deletioninclude/hw/i386/intel_iommu.h
- include/hw/virtio/virtio-iommu.h 1 addition, 1 deletioninclude/hw/virtio/virtio-iommu.h
- include/sysemu/cryptodev.h 1 addition, 1 deletioninclude/sysemu/cryptodev.h
- include/tcg/tcg.h 1 addition, 1 deletioninclude/tcg/tcg.h
Loading
Please register or sign in to comment