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 d8180e5..fc76f36 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 78f4f7b..22749a2 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 aa995d9..11d2fb3 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 ae4d254..bb48ea3 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 445fe4c..06f7958 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 cff0749..b8a028a 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 6fb7ace..40eae2c 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 c68ea35..22b3213 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 fe7b3f8..ab1c631 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 598d018..3a2d50d 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 8a1a83b..2d7bdf6 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 441a8a3..67b2e9a 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 7063b5a..ac31f91 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 d85a07d..4c92cea 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 d2c76c8..f3fd592 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 490411d..3fb6fc5 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 892aab3..6333bd1 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 8ccc220..4b1bcf5 100644 (file)
@@ -144,7 +144,7 @@ struct ipsec_encap_pdb {
        };
        u32 spi;
        u32 ip_hdr_len;
-       u32 ip_hdr[0];
+       u32 ip_hdr[];
 };
 
 /**
index 1a1edae..3acee00 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 64d0d32..b53bbc4 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 9bd44b9..2e16705 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 a1338f3..25d5122 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 737c39f..f9c4acc 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 6e097ac..66fc083 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 ef54bad..50ce517 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 1514e6a..ce5b677 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 79aef68..451cb3d 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 77fd39e..9b6e587 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 b70ee82..6459dd3 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 a4efd5e..fce2626 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 bf0daee..e1fbbf5 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 ee2a9e6..38af166 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 fc4eaf6..fb7d877 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 0f8a4c7..6d2b0a7 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 9ebf4a2..b6434c7 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 53026d8..5a26c77 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 073d06e..0bb1d56 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 4e1764d..860ec61 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 cf0945a..f8991a0 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 ddd69c4..95e9ea5 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 c11d7e2..1e627dc 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 28d2d27..1bf030c 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 81db7fb..c93f2f3 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 4aaf656..98711fb 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 2984584..55758b9 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 083ad1c..07e8b73 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 71bfb7d..ebe6ca0 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 adaf4c0..f13153c 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 725b800..d494684 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 3c1ec1a..9976d39 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 8857c01..16499ca 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 1719e1c..3590e10 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 2c68a54..fd7feb5 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 6e62fe4..bef9eb2 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 d3faf0c..718e285 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 47b839a..3efe213 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 73b0982..ad59a4a 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 2b5676f..f922a19 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 271bd87..728735a 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 107b25d..9607ec2 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 3f45ba3..781d2d8 100644 (file)
@@ -35,7 +35,7 @@ struct ioam6_schema {
        int len;
        __be32 hdr;
 
-       u8 data[0];
+       u8 data[];
 };
 
 struct ioam6_pernet_data {
index fd3a30f..d363f0c 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 f2e6880..0c91aa7 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 8d9e29b..c8f0816 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 2296363..a5bccf2 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 75ee385..e775870 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 {