]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
treewide: Replace zero-length arrays with flexible-array members
authorGustavo A. R. Silva <gustavoars@kernel.org>
Tue, 15 Feb 2022 01:11:44 +0000 (19:11 -0600)
committerGustavo A. R. Silva <gustavoars@kernel.org>
Thu, 17 Feb 2022 13:00:39 +0000 (07:00 -0600)
There is a regular need in the kernel to provide a way to declare
having a dynamically sized set of trailing elements in a structure.
Kernel code should always use “flexible array members”[1] for these
cases. The older style of one-element or zero-length arrays should
no longer be used[2].

This code was transformed with the help of Coccinelle:
(next-20220214$ spatch --jobs $(getconf _NPROCESSORS_ONLN) --sp-file script.cocci --include-headers --dir . > output.patch)

@@
identifier S, member, array;
type T1, T2;
@@

struct S {
  ...
  T1 member;
  T2 array[
- 0
  ];
};

UAPI and wireless changes were intentionally excluded from this patch
and will be sent out separately.

[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/v5.16/process/deprecated.html#zero-length-and-one-element-arrays

Link: https://github.com/KSPP/linux/issues/78
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
66 files changed:
arch/alpha/include/asm/hwrpb.h
arch/ia64/include/asm/sal.h
arch/s390/include/asm/ccwgroup.h
arch/s390/include/asm/chsc.h
arch/s390/include/asm/eadm.h
arch/s390/include/asm/fcx.h
arch/s390/include/asm/idals.h
arch/s390/include/asm/sclp.h
arch/s390/include/asm/sysinfo.h
arch/sh/include/asm/thread_info.h
arch/sparc/include/asm/vio.h
arch/um/include/shared/net_kern.h
arch/x86/include/asm/microcode_amd.h
arch/x86/include/asm/microcode_intel.h
arch/x86/include/asm/pci.h
arch/x86/include/asm/pci_x86.h
arch/xtensa/include/asm/bootparam.h
drivers/crypto/caam/pdb.h
drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
drivers/gpu/drm/nouveau/include/nvfw/hs.h
drivers/hwtracing/coresight/coresight-config.h
drivers/misc/bcm-vk/bcm_vk.h
drivers/misc/habanalabs/include/common/cpucp_if.h
drivers/misc/habanalabs/include/gaudi/gaudi_packets.h
drivers/misc/habanalabs/include/goya/goya_packets.h
drivers/net/ethernet/freescale/enetc/enetc_hw.h
drivers/net/ethernet/i825xx/sun3_82586.h
drivers/net/ethernet/marvell/octeontx2/af/npc.h
drivers/net/ethernet/qlogic/qed/qed_mfw_hsi.h
drivers/net/ethernet/ti/davinci_mdio.c
drivers/scsi/dpt/dpti_i2o.h
drivers/scsi/elx/libefc_sli/sli4.h
drivers/scsi/mpi3mr/mpi3mr.h
drivers/scsi/qla2xxx/qla_bsg.h
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_edif_bsg.h
drivers/scsi/qla2xxx/qla_fw.h
drivers/scsi/qla4xxx/ql4_fw.h
drivers/staging/r8188eu/include/rtw_cmd.h
drivers/staging/rtl8712/rtl871x_cmd.h
drivers/staging/rtl8723bs/include/ieee80211.h
drivers/staging/rtl8723bs/include/rtw_cmd.h
drivers/staging/vc04_services/include/linux/raspberrypi/vchiq.h
drivers/visorbus/vbuschannel.h
fs/cifs/ntlmssp.h
fs/ext4/fast_commit.h
fs/ksmbd/ksmbd_netlink.h
fs/ksmbd/ntlmssp.h
fs/ksmbd/smb2pdu.h
fs/ksmbd/transport_rdma.c
fs/ksmbd/xattr.h
fs/xfs/scrub/attr.h
include/asm-generic/tlb.h
include/linux/greybus/greybus_manifest.h
include/linux/greybus/hd.h
include/linux/greybus/module.h
include/linux/i3c/ccc.h
include/linux/platform_data/brcmfmac.h
include/linux/platform_data/cros_ec_commands.h
include/net/bluetooth/mgmt.h
include/net/ioam6.h
include/sound/sof/channel_map.h
scripts/dtc/libfdt/fdt.h
sound/soc/intel/atom/sst-mfld-dsp.h
sound/soc/intel/skylake/skl-topology.h
tools/lib/perf/include/perf/event.h

index d8180e527a1e8f68de7164fcf7b954199bc06fbb..fc76f36265ad140f8858751ea67bcc50f5739f9c 100644 (file)
@@ -152,7 +152,7 @@ struct memdesc_struct {
        unsigned long chksum;
        unsigned long optional_pa;
        unsigned long numclusters;
-       struct memclust_struct cluster[0];
+       struct memclust_struct cluster[];
 };
 
 struct dsr_struct {
index 78f4f7b40435e5d3d6bfa975608005255b8506b4..22749a201e92af3bc5d8e1f53d5e7e2bd2aac740 100644 (file)
@@ -420,7 +420,7 @@ typedef struct sal_log_processor_info {
         * The rest of this structure consists of variable-length arrays, which can't be
         * expressed in C.
         */
-       sal_log_mod_error_info_t info[0];
+       sal_log_mod_error_info_t info[];
        /*
         * This is what the rest looked like if C supported variable-length arrays:
         *
index aa995d91cd1da451e2915ad29031f0141e171a5d..11d2fb3de4f5390e2600a10cd6a226bc34aaccaf 100644 (file)
@@ -25,7 +25,7 @@ struct ccwgroup_device {
        unsigned int count;
        struct device   dev;
        struct work_struct ungroup_work;
-       struct ccw_device *cdev[0];
+       struct ccw_device *cdev[];
 };
 
 /**
index ae4d2549cd671a34144eccfe0f973e9f4ba38dea..bb48ea380c0d1de30e534327abafa377c45fb8e5 100644 (file)
@@ -63,7 +63,7 @@ struct chsc_pnso_area {
        struct chsc_header response;
        u32:32;
        struct chsc_pnso_naihdr naihdr;
-       struct chsc_pnso_naid_l2 entries[0];
+       struct chsc_pnso_naid_l2 entries[];
 } __packed __aligned(PAGE_SIZE);
 
 #endif /* _ASM_S390_CHSC_H */
index 445fe4c8184a318ffe29c454053631b5dc9942c4..06f795855af787884d885d97525cae6eaea1a30d 100644 (file)
@@ -78,7 +78,7 @@ struct aob {
 
 struct aob_rq_header {
        struct scm_device *scmdev;
-       char data[0];
+       char data[];
 };
 
 struct scm_device {
index cff0749e9657215c1bc2d9455f9f0e9cad2d0646..b8a028a36173afc4aa93c0d5ce87bf602fd98d8a 100644 (file)
@@ -214,7 +214,7 @@ struct dcw_intrg_data {
        u32 :32;
        u64 time;
        u64 prog_id;
-       u8  prog_data[0];
+       u8  prog_data[];
 } __attribute__ ((packed));
 
 #define DCW_FLAGS_CC           (1 << (7 - 1))
@@ -241,7 +241,7 @@ struct dcw {
        u32 :8;
        u32 cd_count:8;
        u32 count;
-       u8 cd[0];
+       u8 cd[];
 } __attribute__ ((packed));
 
 #define TCCB_FORMAT_DEFAULT    0x7f
index 6fb7aced104ac295162cd1c9ad7dd1f53db63648..40eae2c08d6108a968ba72814ff691d36b3fb7c3 100644 (file)
@@ -108,7 +108,7 @@ clear_normalized_cda(struct ccw1 * ccw)
 struct idal_buffer {
        size_t size;
        size_t page_order;
-       void *data[0];
+       void *data[];
 };
 
 /*
index c68ea35de49861073ac765bd4e7a2609d0ddae31..22b3213c6c9d7210fd6eaaa3e66a30b300427373 100644 (file)
@@ -112,7 +112,7 @@ struct zpci_report_error_header {
                         *      (OpenCrypto Successful Diagnostics Execution)
                         */
        u16 length;     /* Length of Subsequent Data (up to 4K – SCLP header */
-       u8 data[0];     /* Subsequent Data passed verbatim to SCLP ET 24 */
+       u8 data[];      /* Subsequent Data passed verbatim to SCLP ET 24 */
 } __packed;
 
 extern char *sclp_early_sccb;
index fe7b3f8f0791328f54e5692a07dd252358fa23b2..ab1c6316055c20908aa1ca6bc8f7291df1b0fd50 100644 (file)
@@ -67,12 +67,12 @@ struct sysinfo_1_2_2 {
        unsigned short cpus_configured;
        unsigned short cpus_standby;
        unsigned short cpus_reserved;
-       unsigned short adjustment[0];
+       unsigned short adjustment[];
 };
 
 struct sysinfo_1_2_2_extension {
        unsigned int alt_capability;
-       unsigned short alt_adjustment[0];
+       unsigned short alt_adjustment[];
 };
 
 struct sysinfo_2_2_1 {
@@ -181,7 +181,7 @@ struct sysinfo_15_1_x {
        unsigned char reserved1;
        unsigned char mnest;
        unsigned char reserved2[4];
-       union topology_entry tle[0];
+       union topology_entry tle[];
 };
 
 int stsi(void *sysinfo, int fc, int sel1, int sel2);
index 598d0184ffeae3c0e713075d6096926d9e001fc0..3a2d50d61fc96c6304ff1a29bd911ceca98c820c 100644 (file)
@@ -33,7 +33,7 @@ struct thread_info {
        mm_segment_t            addr_limit;     /* thread address space */
        unsigned long           previous_sp;    /* sp of previous stack in case
                                                   of nested IRQ stacks */
-       __u8                    supervisor_stack[0];
+       __u8                    supervisor_stack[];
 };
 
 #endif
index 8a1a83bbb6d5514d5cb154f2c970382463c44024..2d7bdf665fd3b66132c3b18893aa4b407ec9c4c9 100644 (file)
@@ -70,7 +70,7 @@ struct vio_dring_register {
 #define VIO_RX_DRING_DATA      0x0004
        u16                     resv;
        u32                     num_cookies;
-       struct ldc_trans_cookie cookies[0];
+       struct ldc_trans_cookie cookies[];
 };
 
 struct vio_dring_unregister {
@@ -161,7 +161,7 @@ struct vio_disk_desc {
        u64                     size;
        u32                     ncookies;
        u32                     resv2;
-       struct ldc_trans_cookie cookies[0];
+       struct ldc_trans_cookie cookies[];
 };
 
 #define VIO_DISK_VNAME_LEN     8
@@ -200,13 +200,13 @@ struct vio_disk_devid {
        u16                     resv;
        u16                     type;
        u32                     len;
-       char                    id[0];
+       char                    id[];
 };
 
 struct vio_disk_efi {
        u64                     lba;
        u64                     len;
-       char                    data[0];
+       char                    data[];
 };
 
 /* VIO net specific structures and defines */
@@ -246,7 +246,7 @@ struct vio_net_desc {
        struct vio_dring_hdr    hdr;
        u32                     size;
        u32                     ncookies;
-       struct ldc_trans_cookie cookies[0];
+       struct ldc_trans_cookie cookies[];
 };
 
 struct vio_net_dext {
index 441a8a3093294f46927376b7ba9432652aa55d1e..67b2e9a1f2e59064c81705a500bdd8a4c302d3a8 100644 (file)
@@ -39,7 +39,7 @@ struct uml_net_private {
 
        void (*add_address)(unsigned char *, unsigned char *, void *);
        void (*delete_address)(unsigned char *, unsigned char *, void *);
-       char user[0];
+       char user[];
 };
 
 struct net_kern_info {
index 7063b5a43220a96a363f97e3567fabd0fbc8be70..ac31f9140d07d46763a84c46defc9218c9e96446 100644 (file)
@@ -38,7 +38,7 @@ struct microcode_header_amd {
 
 struct microcode_amd {
        struct microcode_header_amd     hdr;
-       unsigned int                    mpb[0];
+       unsigned int                    mpb[];
 };
 
 #define PATCH_MAX_SIZE (3 * PAGE_SIZE)
index d85a07d7154f38f2dd7506898bc155783af645ae..4c92cea7e4b54a6841b311621de87cf9673c711e 100644 (file)
@@ -19,7 +19,7 @@ struct microcode_header_intel {
 
 struct microcode_intel {
        struct microcode_header_intel hdr;
-       unsigned int            bits[0];
+       unsigned int            bits[];
 };
 
 /* microcode format is extended from prescott processors */
@@ -33,7 +33,7 @@ struct extended_sigtable {
        unsigned int            count;
        unsigned int            cksum;
        unsigned int            reserved[3];
-       struct extended_signature sigs[0];
+       struct extended_signature sigs[];
 };
 
 #define DEFAULT_UCODE_DATASIZE (2000)
index d2c76c8d8cfdc4c833be25593a1f05a260e04fa1..f3fd5928bcbb58d29ad1ad9fa02acf527669272f 100644 (file)
@@ -135,7 +135,7 @@ struct pci_setup_rom {
        unsigned long bus;
        unsigned long device;
        unsigned long function;
-       uint8_t romdata[0];
+       uint8_t romdata[];
 };
 
 #endif /* _ASM_X86_PCI_H */
index 490411dba438dcca53517ddc131d8b61242dc007..3fb6fc5960950d46ebfcef9cfbb33e2b0196e371 100644 (file)
@@ -87,7 +87,7 @@ struct irq_routing_table {
        u32 miniport_data;              /* Crap */
        u8 rfu[11];
        u8 checksum;                    /* Modulo 256 checksum must give 0 */
-       struct irq_info slots[0];
+       struct irq_info slots[];
 } __attribute__((packed));
 
 extern unsigned int pcibios_irq_mask;
index 892aab399ac873c885953e24430a3bc741aca6ed..6333bd1eb9d2a5f4b64f3a58d666f1477c1175ce 100644 (file)
@@ -34,7 +34,7 @@
 typedef struct bp_tag {
        unsigned short id;      /* tag id */
        unsigned short size;    /* size of this record excluding the structure*/
-       unsigned long data[0];  /* data */
+       unsigned long data[];   /* data */
 } bp_tag_t;
 
 struct bp_meminfo {
index 8ccc220750432e48b4d0295056c43ffa7ca02c83..4b1bcf53f7ac86eaee23b09ca60b4d88d89441bc 100644 (file)
@@ -144,7 +144,7 @@ struct ipsec_encap_pdb {
        };
        u32 spi;
        u32 ip_hdr_len;
-       u32 ip_hdr[0];
+       u32 ip_hdr[];
 };
 
 /**
index 1a1edae67e4e213be98c5caa098eef1fa7d413f8..3acee0060e23763b5e266b1337b5e8a8742e4774 100644 (file)
@@ -51,7 +51,7 @@ struct __guc_ads_blob {
        struct guc_gt_system_info system_info;
        struct guc_engine_usage engine_usage;
        /* From here on, location is dynamic! Refer to above diagram. */
-       struct guc_mmio_reg regset[0];
+       struct guc_mmio_reg regset[];
 } __packed;
 
 static u32 guc_ads_regset_size(struct intel_guc *guc)
index 64d0d32200c22597fda3d3f8852f1da945377706..b53bbc4cd130cfc56c95892ff4b84c2378966716 100644 (file)
@@ -23,7 +23,7 @@ struct nvfw_hs_load_header {
        u32 data_dma_base;
        u32 data_size;
        u32 num_apps;
-       u32 apps[0];
+       u32 apps[];
 };
 
 const struct nvfw_hs_load_header *
index 9bd44b940add3f35dd3e1ad31ac1b72db25317ae..2e1670523461c4b43118f881707db77e118dc26d 100644 (file)
@@ -231,7 +231,7 @@ struct cscfg_config_csdev {
        bool enabled;
        struct list_head node;
        int nr_feat;
-       struct cscfg_feature_csdev *feats_csdev[0];
+       struct cscfg_feature_csdev *feats_csdev[];
 };
 
 /**
index a1338f375589f48aa3006c6136114bec08495161..25d51222eedffe39105ae1c5102ad9563185b012 100644 (file)
@@ -311,7 +311,7 @@ struct bcm_vk_peer_log {
        u32 wr_idx;
        u32 buf_size;
        u32 mask;
-       char data[0];
+       char data[];
 };
 
 /* max buf size allowed */
index 737c39f33f05aab931b1701cbeb514e1b236e42e..f9c4acc9bf5a3f107f132caae9ba720415f313d8 100644 (file)
@@ -540,19 +540,19 @@ struct cpucp_packet {
 struct cpucp_unmask_irq_arr_packet {
        struct cpucp_packet cpucp_pkt;
        __le32 length;
-       __le32 irqs[0];
+       __le32 irqs[];
 };
 
 struct cpucp_nic_status_packet {
        struct cpucp_packet cpucp_pkt;
        __le32 length;
-       __le32 data[0];
+       __le32 data[];
 };
 
 struct cpucp_array_data_packet {
        struct cpucp_packet cpucp_pkt;
        __le32 length;
-       __le32 data[0];
+       __le32 data[];
 };
 
 enum cpucp_packet_rc {
index 6e097ace2e961422cb657261b064957c660b5c77..66fc083a7c6a430ff02dd7038568e93e0aaadac5 100644 (file)
@@ -54,7 +54,7 @@ struct gaudi_packet {
        /* The rest of the packet data follows. Use the corresponding
         * packet_XXX struct to deference the data, based on packet type
         */
-       u8 contents[0];
+       u8 contents[];
 };
 
 struct packet_nop {
@@ -75,7 +75,7 @@ struct packet_wreg32 {
 struct packet_wreg_bulk {
        __le32 size64;
        __le32 ctl;
-       __le64 values[0]; /* data starts here */
+       __le64 values[]; /* data starts here */
 };
 
 #define GAUDI_PKT_LONG_CTL_OP_SHIFT            20
index ef54bad2050991a2d863fb2c03afe2e52a42210f..50ce5175b63a6eb8efb75134d47a1102b5e28a2f 100644 (file)
@@ -62,7 +62,7 @@ struct goya_packet {
        /* The rest of the packet data follows. Use the corresponding
         * packet_XXX struct to deference the data, based on packet type
         */
-       u8 contents[0];
+       u8 contents[];
 };
 
 struct packet_nop {
@@ -86,7 +86,7 @@ struct packet_wreg32 {
 struct packet_wreg_bulk {
        __le32 size64;
        __le32 ctl;
-       __le64 values[0]; /* data starts here */
+       __le64 values[]; /* data starts here */
 };
 
 struct packet_msg_long {
index 1514e6a4a3ff780feb4e2e16cf8c02af98579995..ce5b677e8c2fcfa6caceca470a77ce6b567f4c9e 100644 (file)
@@ -881,7 +881,7 @@ struct sgcl_data {
        u32             bth;
        u32             ct;
        u32             cte;
-       struct sgce     sgcl[0];
+       struct sgce     sgcl[];
 };
 
 #define ENETC_CBDR_FMI_MR      BIT(0)
index 79aef681ac85db206d65f0a31944c7ee1a6a3374..451cb3d26cb5a06a8719919694ace4ecd086e230 100644 (file)
@@ -250,7 +250,7 @@ struct mcsetup_cmd_struct
   unsigned short cmd_cmd;
   unsigned short cmd_link;
   unsigned short mc_cnt;               /* number of bytes in the MC-List */
-  unsigned char  mc_list[0][6];        /* pointer to 6 bytes entries */
+  unsigned char  mc_list[][6];         /* pointer to 6 bytes entries */
 };
 
 /*
index 77fd39e2c8dbdefcc01cc465450b8dd392818f45..9b6e587e78b4c7c5b7a58af14cb70edba248f9bc 100644 (file)
@@ -455,7 +455,7 @@ struct npc_coalesced_kpu_prfl {
        u8 name[NPC_NAME_LEN]; /* KPU Profile name */
        u64 version; /* KPU firmware/profile version */
        u8 num_prfl; /* No of NPC profiles. */
-       u16 prfl_sz[0];
+       u16 prfl_sz[];
 };
 
 struct npc_mcam_kex {
@@ -482,7 +482,7 @@ struct npc_kpu_fwdata {
         * struct npc_kpu_profile_cam[entries];
         * struct npc_kpu_profile_action[entries];
         */
-       u8      data[0];
+       u8      data[];
 } __packed;
 
 struct npc_lt_def {
@@ -572,7 +572,7 @@ struct npc_kpu_profile_fwdata {
         *  Custom KPU CAM and ACTION configuration entries.
         * struct npc_kpu_fwdata kpu[kpus];
         */
-       u8      data[0];
+       u8      data[];
 } __packed;
 
 struct rvu_npc_mcam_rule {
index b70ee8200e15f1d82f4f72ed28e121e5b45e3849..6459dd3feb3778771bd5d6ec849e9cf0f1fd353b 100644 (file)
@@ -2470,6 +2470,6 @@ struct nvm_meta_bin_t {
        u32 version;
 #define NVM_META_BIN_VERSION 1
        u32 num_options;
-       u32 options[0];
+       u32 options[];
 };
 #endif
index a4efd5e3515847a3b484c4664084aec194ae400f..fce2626e34faf2cdae85edd9017403d2371bf5b0 100644 (file)
@@ -70,7 +70,7 @@ struct davinci_mdio_regs {
 #define USERACCESS_DATA                (0xffff)
 
                u32     physel;
-       }       user[0];
+       }       user[];
 };
 
 static const struct mdio_platform_data default_pdata = {
index bf0daeeb50a9fc717e9f8c01fd6cdca55c6e4114..e1fbbf55c09da46edb2ab6660df2b25f0e539dec 100644 (file)
@@ -123,7 +123,7 @@ struct i2o_sys_tbl
        u32     change_ind;
        u32     reserved2;
        u32     reserved3;
-       struct i2o_sys_tbl_entry iops[0];
+       struct i2o_sys_tbl_entry iops[];
 };
 
 /*
index ee2a9e65a88d8440ac19568a83311fd51964c677..38af166cc786016248b6b75de54d3df2ce0674cc 100644 (file)
@@ -609,7 +609,7 @@ struct sli4_rqst_cmn_create_cq_v2 {
        __le16                  cqe_count;
        __le16                  rsvd30;
        __le32                  rsvd32;
-       struct sli4_dmaaddr     page_phys_addr[0];
+       struct sli4_dmaaddr     page_phys_addr[];
 };
 
 enum sli4_create_cqset_e {
@@ -634,7 +634,7 @@ struct sli4_rqst_cmn_create_cq_set_v0 {
        __le16                  num_cq_req;
        __le16                  dw6w1_flags;
        __le16                  eq_id[16];
-       struct sli4_dmaaddr     page_phys_addr[0];
+       struct sli4_dmaaddr     page_phys_addr[];
 };
 
 /* CQE count */
@@ -764,7 +764,7 @@ struct sli4_rqst_cmn_create_mq_ext {
        __le32                  dw7_val;
        __le32                  dw8_flags;
        __le32                  rsvd36;
-       struct sli4_dmaaddr     page_phys_addr[0];
+       struct sli4_dmaaddr     page_phys_addr[];
 };
 
 struct sli4_rsp_cmn_create_mq_ext {
@@ -802,7 +802,7 @@ struct sli4_rqst_cmn_create_cq_v0 {
        __le32                  dw6_flags;
        __le32                  rsvd28;
        __le32                  rsvd32;
-       struct sli4_dmaaddr     page_phys_addr[0];
+       struct sli4_dmaaddr     page_phys_addr[];
 };
 
 enum sli4_create_rq_e {
@@ -887,7 +887,7 @@ struct sli4_rqst_rq_create_v2 {
        __le16                  base_cq_id;
        __le16                  rsvd26;
        __le32                  rsvd42;
-       struct sli4_dmaaddr     page_phys_addr[0];
+       struct sli4_dmaaddr     page_phys_addr[];
 };
 
 struct sli4_rsp_rq_create_v2 {
@@ -3168,7 +3168,7 @@ struct sli4_rqst_cmn_read_object {
        __le32                  read_offset;
        u8                      object_name[104];
        __le32                  host_buffer_descriptor_count;
-       struct sli4_bde         host_buffer_descriptor[0];
+       struct sli4_bde         host_buffer_descriptor[];
 };
 
 #define RSP_COM_READ_OBJ_EOF           0x80000000
@@ -3191,7 +3191,7 @@ struct sli4_rqst_cmn_write_object {
        __le32                  write_offset;
        u8                      object_name[104];
        __le32                  host_buffer_descriptor_count;
-       struct sli4_bde         host_buffer_descriptor[0];
+       struct sli4_bde         host_buffer_descriptor[];
 };
 
 #define        RSP_CHANGE_STATUS               0xff
@@ -3217,7 +3217,7 @@ struct sli4_rqst_cmn_read_object_list {
        __le32                  read_offset;
        u8                      object_name[104];
        __le32                  host_buffer_descriptor_count;
-       struct sli4_bde         host_buffer_descriptor[0];
+       struct sli4_bde         host_buffer_descriptor[];
 };
 
 enum sli4_rqst_set_dump_flags {
@@ -3342,7 +3342,7 @@ struct sli4_rspource_descriptor_v1 {
        u8              descriptor_type;
        u8              descriptor_length;
        __le16          rsvd16;
-       __le32          type_specific[0];
+       __le32          type_specific[];
 };
 
 enum sli4_pcie_desc_flags {
@@ -3474,7 +3474,7 @@ struct sli4_rqst_post_hdr_templates {
        struct sli4_rqst_hdr    hdr;
        __le16                  rpi_offset;
        __le16                  page_count;
-       struct sli4_dmaaddr     page_descriptor[0];
+       struct sli4_dmaaddr     page_descriptor[];
 };
 
 #define SLI4_HDR_TEMPLATE_SIZE         64
index fc4eaf6d1e47e355da0d30f81fd99679349925b7..fb7d8775c9f783fa389c4d98a7ce406795b09001 100644 (file)
@@ -878,7 +878,7 @@ struct mpi3mr_fwevt {
        bool process_evt;
        u32 evt_ctx;
        struct kref ref_count;
-       char event_data[0] __aligned(4);
+       char event_data[] __aligned(4);
 };
 
 
index 0f8a4c7e52a233b8a1c21da9fdefa0f406cf051f..6d2b0a7436c18d88775934785247d622cc925f0c 100644 (file)
@@ -157,7 +157,7 @@ struct qla84_msg_mgmt {
        uint16_t rsrvd;
        struct qla84_mgmt_param mgmtp;/* parameters for cmd */
        uint32_t len; /* bytes in payload following this struct */
-       uint8_t payload[0]; /* payload for cmd */
+       uint8_t payload[]; /* payload for cmd */
 };
 
 struct qla_bsg_a84_mgmt {
@@ -216,7 +216,7 @@ struct qla_image_version {
 
 struct qla_image_version_list {
        uint32_t count;
-       struct qla_image_version version[0];
+       struct qla_image_version version[];
 } __packed;
 
 struct qla_status_reg {
index 9ebf4a234d9a907a68135239cb800cf88647848c..b6434c72dee31a1de8f3bc48bd8ec36a582ae226 100644 (file)
@@ -5410,7 +5410,7 @@ struct ql_vnd_stat_entry {
 struct ql_vnd_stats {
        u64 entry_count; /* Num of entries */
        u64 rservd;
-       struct ql_vnd_stat_entry entry[0]; /* Place holder of entries */
+       struct ql_vnd_stat_entry entry[]; /* Place holder of entries */
 } __packed;
 
 struct ql_vnd_host_stats_resp {
index 53026d82ebffe3bbdb0a4abfa988f9412fcd493e..5a26c77157da2aeefdbdf743cee3ec6620ed8109 100644 (file)
@@ -121,7 +121,7 @@ struct app_pinfo {
 struct app_pinfo_reply {
        uint8_t         port_count;
        uint8_t         reserved[VND_CMD_APP_RESERVED_SIZE];
-       struct app_pinfo ports[0];
+       struct app_pinfo ports[];
 } __packed;
 
 struct app_sinfo_req {
@@ -140,7 +140,7 @@ struct app_sinfo {
 
 struct app_stats_reply {
        uint8_t         elem_count;
-       struct app_sinfo elem[0];
+       struct app_sinfo elem[];
 } __packed;
 
 struct qla_sa_update_frame {
index 073d06e88c58963626b4d88fe4cbaf53525ca99f..0bb1d562f0bfc6b7527a192c8b4603624701c244 100644 (file)
@@ -1706,7 +1706,7 @@ struct qla_flt_header {
        __le16  length;
        __le16  checksum;
        __le16  unused;
-       struct qla_flt_region region[0];
+       struct qla_flt_region region[];
 };
 
 #define FLT_REGION_SIZE                16
index 4e1764df0a731fcaae0cc474cd6b95869f2fa463..860ec61b51b903d31cb858858cf4d72346e751ea 100644 (file)
@@ -1028,7 +1028,7 @@ struct crash_record {
 
        uint8_t out_RISC_reg_dump[256]; /* 80 -17F */
        uint8_t in_RISC_reg_dump[256];  /*180 -27F */
-       uint8_t in_out_RISC_stack_dump[0];      /*280 - ??? */
+       uint8_t in_out_RISC_stack_dump[];       /*280 - ??? */
 };
 
 struct conn_event_log_entry {
index cf0945ae11c18303b028ed825f8541bbc8e8e704..f8991a0493d0a1666e24144b0d80bdb68028d239 100644 (file)
@@ -73,7 +73,7 @@ struct c2h_evt_hdr {
        u8 id:4;
        u8 plen:4;
        u8 seq;
-       u8 payload[0];
+       u8 payload[];
 };
 
 #define c2h_evt_exist(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen)
@@ -662,25 +662,25 @@ struct getcurtxpwrlevel_rspi {
 struct setprobereqextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setassocreqextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setproberspextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setassocrspextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct addBaReq_parm {
index ddd69c4ae2083d363a826b147d21f902499c45f9..95e9ea5b2d98a3e7c51f406e62b4218915e04fcd 100644 (file)
@@ -657,25 +657,25 @@ struct setra_parm {
 struct setprobereqextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setassocreqextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setproberspextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct setassocrspextraie_parm {
        unsigned char e_id;
        unsigned char ie_len;
-       unsigned char ie[0];
+       unsigned char ie[];
 };
 
 struct addBaReq_parm {
index c11d7e2d2347fa6757b9d2be5bbb19adef87f7cc..1e627dc0044d43343445b6fa14a2045180367037 100644 (file)
@@ -204,7 +204,7 @@ struct ieee_param {
 struct ieee_param_ex {
        u32 cmd;
        u8 sta_addr[ETH_ALEN];
-       u8 data[0];
+       u8 data[];
 };
 
 struct sta_data {
index 28d2d27323746dd5868988a61d106aa468eea495..1bf030cbbbbee1ba90d87cc83962dd8b392ef370 100644 (file)
@@ -94,7 +94,7 @@ struct c2h_evt_hdr {
        u8 id:4;
        u8 plen:4;
        u8 seq;
-       u8 payload[0];
+       u8 payload[];
 };
 
 struct c2h_evt_hdr_88xx {
index 81db7fb76d6db0514ec2d09890781f732818c5a3..c93f2f3e87bb3c7819608a465f42a1321e7f551e 100644 (file)
@@ -45,7 +45,7 @@ struct vchiq_header {
        /* Size of message data. */
        unsigned int size;
 
-       char data[0];           /* message */
+       char data[];           /* message */
 };
 
 struct vchiq_element {
index 4aaf6564eb9fd2f5812b6d8ac00bc9a1d3190ab3..98711fb6d66e3a818762a4f213ee17ee52c5dc76 100644 (file)
@@ -89,7 +89,7 @@ struct visor_vbus_channel {
        struct visor_vbus_headerinfo hdr_info;
        struct visor_vbus_deviceinfo chp_info;
        struct visor_vbus_deviceinfo bus_info;
-       struct visor_vbus_deviceinfo dev_info[0];
+       struct visor_vbus_deviceinfo dev_info[];
 } __packed;
 
 #endif
index 2984584042527a0a461472a1921ce3bde9d657b1..55758b9ec877ec71b48f29fc433270b73c2d03a8 100644 (file)
@@ -107,7 +107,7 @@ struct negotiate_message {
        SECURITY_BUFFER WorkstationName;        /* RFC 1001 and ASCII */
        struct  ntlmssp_version Version;
        /* SECURITY_BUFFER */
-       char DomainString[0];
+       char DomainString[];
        /* followed by WorkstationString */
 } __packed;
 
index 083ad1cb705a7430fcc07e900e6087d9f1838f6c..07e8b734c4fda1501a724897ada8fd6fae51d937 100644 (file)
@@ -55,13 +55,13 @@ struct ext4_fc_del_range {
 struct ext4_fc_dentry_info {
        __le32 fc_parent_ino;
        __le32 fc_ino;
-       __u8 fc_dname[0];
+       __u8 fc_dname[];
 };
 
 /* Value structure for EXT4_FC_TAG_INODE and EXT4_FC_TAG_INODE_PARTIAL. */
 struct ext4_fc_inode {
        __le32 fc_ino;
-       __u8 fc_raw_inode[0];
+       __u8 fc_raw_inode[];
 };
 
 /* Value structure for tag EXT4_FC_TAG_TAIL. */
index 71bfb7de44725d94bddea7b84b45e9481626656a..ebe6ca08467aca2e137e37cbfce262471c57d45e 100644 (file)
@@ -241,7 +241,7 @@ struct ksmbd_rpc_command {
 struct ksmbd_spnego_authen_request {
        __u32   handle;
        __u16   spnego_blob_len;        /* the length of spnego_blob */
-       __u8    spnego_blob[0];         /*
+       __u8    spnego_blob[];          /*
                                         * the GSS token from SecurityBuffer of
                                         * SMB2 SESSION SETUP request
                                         */
index adaf4c0cbe8fd76f1db7da6121224ec8d4d0bfca..f13153c18b4e9e736e0ee52a01258d55f48cfadd 100644 (file)
@@ -95,7 +95,7 @@ struct security_buffer {
 struct target_info {
        __le16 Type;
        __le16 Length;
-       __u8 Content[0];
+       __u8 Content[];
 } __packed;
 
 struct negotiate_message {
@@ -108,7 +108,7 @@ struct negotiate_message {
         * struct security_buffer for version info not present since we
         * do not set the version is present flag
         */
-       char DomainString[0];
+       char DomainString[];
        /* followed by WorkstationString */
 } __packed;
 
@@ -140,7 +140,7 @@ struct authenticate_message {
         * struct security_buffer for version info not present since we
         * do not set the version is present flag
         */
-       char UserString[0];
+       char UserString[];
 } __packed;
 
 struct ntlmv2_resp {
index 725b800c29c8a02a7abbd27f3565ad25dce91f36..d494684265761e92a506c5f7ab60dd0c21cb20bf 100644 (file)
@@ -759,7 +759,7 @@ struct smb2_file_rename_info { /* encoding of request for level 10 */
        __u8   Reserved[7];
        __u64  RootDirectory;  /* MBZ for network operations (why says spec?) */
        __le32 FileNameLength;
-       char   FileName[0];     /* New name to be assigned */
+       char   FileName[];     /* New name to be assigned */
 } __packed; /* level 10 Set */
 
 struct smb2_file_link_info { /* encoding of request for level 11 */
@@ -768,7 +768,7 @@ struct smb2_file_link_info { /* encoding of request for level 11 */
        __u8   Reserved[7];
        __u64  RootDirectory;  /* MBZ for network operations (why says spec?) */
        __le32 FileNameLength;
-       char   FileName[0];     /* Name to be assigned to new link */
+       char   FileName[];     /* Name to be assigned to new link */
 } __packed; /* level 11 Set */
 
 /*
@@ -810,7 +810,7 @@ struct smb2_file_basic_info { /* data block encoding of response to level 18 */
 
 struct smb2_file_alt_name_info {
        __le32 FileNameLength;
-       char FileName[0];
+       char FileName[];
 } __packed;
 
 struct smb2_file_stream_info {
@@ -818,7 +818,7 @@ struct smb2_file_stream_info {
        __le32  StreamNameLength;
        __le64 StreamSize;
        __le64 StreamAllocationSize;
-       char   StreamName[0];
+       char   StreamName[];
 } __packed;
 
 struct smb2_file_eof_info { /* encoding of request for level 10 */
index 3c1ec1ac0b27041cd15c4433ca1282c1c47051c8..9976d39c6ed8038c2430620df5559f1c0f84cc85 100644 (file)
@@ -211,7 +211,7 @@ struct smb_direct_rdma_rw_msg {
        struct completion       *completion;
        struct rdma_rw_ctx      rw_ctx;
        struct sg_table         sgt;
-       struct scatterlist      sg_list[0];
+       struct scatterlist      sg_list[];
 };
 
 static inline int get_buf_page_count(void *buf, int size)
index 8857c01093d92ac127eed78e96e756f6b94b08dd..16499ca5c82d366b29eb36ff2416b7b76835cc9b 100644 (file)
@@ -76,7 +76,7 @@ struct xattr_acl_entry {
 struct xattr_smb_acl {
        int count;
        int next;
-       struct xattr_acl_entry entries[0];
+       struct xattr_acl_entry entries[];
 };
 
 /* 64bytes hash in xattr_ntacl is computed with sha256 */
index 1719e1c4da59d856cedb566ed528379938f77cfd..3590e10e3e6283f1a1724b9350e70a52927aa6f0 100644 (file)
@@ -24,7 +24,7 @@ struct xchk_xattr_buf {
         * space bitmap follows immediately after; and we have a third buffer
         * for storing intermediate bitmap results.
         */
-       uint8_t                 buf[0];
+       uint8_t                 buf[];
 };
 
 /* A place to store attribute values. */
index 2c68a545ffa7d2a5c743da5f57e8e46367a910d2..fd7feb5c789485864f0e6a596eaa209f04819996 100644 (file)
@@ -180,7 +180,7 @@ struct mmu_table_batch {
        struct rcu_head         rcu;
 #endif
        unsigned int            nr;
-       void                    *tables[0];
+       void                    *tables[];
 };
 
 #define MAX_TABLE_BATCH                \
@@ -227,7 +227,7 @@ struct mmu_gather_batch {
        struct mmu_gather_batch *next;
        unsigned int            nr;
        unsigned int            max;
-       struct page             *pages[0];
+       struct page             *pages[];
 };
 
 #define MAX_GATHER_BATCH       \
index 6e62fe478712230698422175e55b237047633f0d..bef9eb2093e9f2710e22d6957d58f9afefaa0060 100644 (file)
@@ -100,7 +100,7 @@ enum {
 struct greybus_descriptor_string {
        __u8    length;
        __u8    id;
-       __u8    string[0];
+       __u8    string[];
 } __packed;
 
 /*
@@ -175,7 +175,7 @@ struct greybus_manifest_header {
 
 struct greybus_manifest {
        struct greybus_manifest_header          header;
-       struct greybus_descriptor               descriptors[0];
+       struct greybus_descriptor               descriptors[];
 } __packed;
 
 #endif /* __GREYBUS_MANIFEST_H */
index d3faf0c1a56965c961f3dd28253167ab29a69c7d..718e2857054ef6034696cfb565a67288969a621e 100644 (file)
@@ -58,7 +58,7 @@ struct gb_host_device {
 
        struct gb_svc *svc;
        /* Private data for the host driver */
-       unsigned long hd_priv[0] __aligned(sizeof(s64));
+       unsigned long hd_priv[] __aligned(sizeof(s64));
 };
 #define to_gb_host_device(d) container_of(d, struct gb_host_device, dev)
 
index 47b839af145d4d5e14ef323efef6bd4b89548e2b..3efe2133acfd2044931156bdf27b5c543f1999b2 100644 (file)
@@ -23,7 +23,7 @@ struct gb_module {
 
        bool disconnected;
 
-       struct gb_interface *interfaces[0];
+       struct gb_interface *interfaces[];
 };
 #define to_gb_module(d) container_of(d, struct gb_module, dev)
 
index 73b0982cc5193c2926fc733dd588195dfec57d9f..ad59a4ae60d12adfb50123118ddd7a601be9ca4b 100644 (file)
@@ -132,7 +132,7 @@ struct i3c_ccc_dev_desc {
 struct i3c_ccc_defslvs {
        u8 count;
        struct i3c_ccc_dev_desc master;
-       struct i3c_ccc_dev_desc slaves[0];
+       struct i3c_ccc_dev_desc slaves[];
 } __packed;
 
 /**
@@ -240,7 +240,7 @@ struct i3c_ccc_bridged_slave_desc {
  */
 struct i3c_ccc_setbrgtgt {
        u8 count;
-       struct i3c_ccc_bridged_slave_desc bslaves[0];
+       struct i3c_ccc_bridged_slave_desc bslaves[];
 } __packed;
 
 /**
@@ -318,7 +318,7 @@ enum i3c_ccc_setxtime_subcmd {
  */
 struct i3c_ccc_setxtime {
        u8 subcmd;
-       u8 data[0];
+       u8 data[];
 } __packed;
 
 #define I3C_CCC_GETXTIME_SYNC_MODE     BIT(0)
index 2b5676ff35bec713b079edf722aaacd3598c4dc0..f922a192fe58d60ab8e75007dd2cce3cc20995a7 100644 (file)
@@ -178,7 +178,7 @@ struct brcmfmac_platform_data {
        void    (*power_off)(void);
        char    *fw_alternative_path;
        int     device_count;
-       struct brcmfmac_pd_device devices[0];
+       struct brcmfmac_pd_device devices[];
 };
 
 
index 271bd87bff0a259ec94e87de0177eba5a07ae795..728735aed980b1cd85c001d690ef014c1e46d8ef 100644 (file)
@@ -5644,7 +5644,7 @@ struct ec_response_typec_discovery {
        uint8_t svid_count;        /* Number of SVIDs partner sent */
        uint16_t reserved;
        uint32_t discovery_vdo[6]; /* Max VDOs allowed after VDM header is 6 */
-       struct svid_mode_info svids[0];
+       struct svid_mode_info svids[];
 } __ec_align1;
 
 /* USB Type-C commands for AP-controlled device policy. */
index 107b25deae683e8ea4cdaaa3f45c600886c70bac..9607ec289fd042851b69a5459f1c72e663424d1b 100644 (file)
@@ -696,7 +696,7 @@ struct mgmt_cp_set_blocked_keys {
 #define MGMT_READ_CONTROLLER_CAP_SIZE  0
 struct mgmt_rp_read_controller_cap {
        __le16   cap_len;
-       __u8     cap[0];
+       __u8     cap[];
 } __packed;
 
 #define MGMT_OP_READ_EXP_FEATURES_INFO 0x0049
index 3f45ba37a2c69e266edc02f1e2b7c02fe6edf97f..781d2d8b2f29d96fc6614eb3ce19377533db13fb 100644 (file)
@@ -35,7 +35,7 @@ struct ioam6_schema {
        int len;
        __be32 hdr;
 
-       u8 data[0];
+       u8 data[];
 };
 
 struct ioam6_pernet_data {
index fd3a30fcf75665e7665965f2724fb24a448c2036..d363f0ca6979a11449f1e711d5d57a0b084e0e3d 100644 (file)
@@ -39,7 +39,7 @@ struct sof_ipc_channel_map {
        uint32_t ext_id;
        uint32_t ch_mask;
        uint32_t reserved;
-       int32_t ch_coeffs[0];
+       int32_t ch_coeffs[];
 } __packed;
 
 /**
@@ -55,7 +55,7 @@ struct sof_ipc_stream_map {
        struct sof_ipc_cmd_hdr hdr;
        uint32_t num_ch_map;
        uint32_t reserved[3];
-       struct sof_ipc_channel_map ch_map[0];
+       struct sof_ipc_channel_map ch_map[];
 } __packed;
 
 #endif /* __IPC_CHANNEL_MAP_H__ */
index f2e68807f277c5009641c54f5198bebb7cb1c28f..0c91aa7f67b5b7d75d94cef2c61e8f7ec2c973c0 100644 (file)
@@ -35,14 +35,14 @@ struct fdt_reserve_entry {
 
 struct fdt_node_header {
        fdt32_t tag;
-       char name[0];
+       char name[];
 };
 
 struct fdt_property {
        fdt32_t tag;
        fdt32_t len;
        fdt32_t nameoff;
-       char data[0];
+       char data[];
 };
 
 #endif /* !__ASSEMBLY */
index 8d9e29b16e57596527e039b4c6b1dd08148a96ca..c8f0816edb53eb880e6fd84a0c621d39d41ca1d7 100644 (file)
@@ -427,7 +427,7 @@ struct snd_sst_drop_response {
 
 struct snd_sst_async_msg {
        u32 msg_id; /* Async msg id */
-       u32 payload[0];
+       u32 payload[];
 };
 
 struct snd_sst_async_err_msg {
@@ -514,7 +514,7 @@ struct snd_sst_bytes_v2 {
        u8 pipe_id;
        u8 rsvd;
        u16 len;
-       char bytes[0];
+       char bytes[];
 };
 
 #define MAX_VTSV_FILES 2
index 22963634fbeab1434553430c7d7fcc0050afa127..a5bccf2fcd888ae4a60a8133c3c43e9cecb057b9 100644 (file)
@@ -164,7 +164,7 @@ struct skl_base_cfg_ext {
        u8 reserved[8];
        u32 priv_param_length;
        /* Input pin formats followed by output ones. */
-       struct skl_pin_format pins_fmt[0];
+       struct skl_pin_format pins_fmt[];
 } __packed;
 
 struct skl_algo_cfg {
index 75ee385fb07864d4000d3288e1ea8ac02d7ec60c..e7758707cadd6ab29da815c1b27a79b7acb2bc2a 100644 (file)
@@ -240,7 +240,7 @@ struct id_index_entry {
 struct perf_record_id_index {
        struct perf_event_header header;
        __u64                    nr;
-       struct id_index_entry    entries[0];
+       struct id_index_entry    entries[];
 };
 
 struct perf_record_auxtrace_info {