struct {
                        __le32 addr;
                        __le32 len;
-                       u8 payload[0];
+                       u8 payload[];
                } write_mem;
                struct {
                        __le32 addr;
                } rompatch_uninstall;
                struct {
                        __le32 count;
-                       __le32 patch_ids[0]; /* length of @count */
+                       __le32 patch_ids[]; /* length of @count */
                } rompatch_activate;
                struct {
                        __le32 count;
-                       __le32 patch_ids[0]; /* length of @count */
+                       __le32 patch_ids[]; /* length of @count */
                } rompatch_deactivate;
                struct {
                        __le32 addr;
                } lz_start;
                struct {
                        __le32 len; /* max BMI_MAX_DATA_SIZE */
-                       u8 payload[0]; /* length of @len */
+                       u8 payload[]; /* length of @len */
                } lz_data;
                struct {
                        u8 name[BMI_NVRAM_SEG_NAME_SZ];
 
 union bmi_resp {
        struct {
-               u8 payload[0];
+               DECLARE_FLEX_ARRAY(u8, payload);
        } read_mem;
        struct {
                __le32 result;
 
                        __le16 auth_transaction;
                        __le16 status_code;
                        /* possibly followed by Challenge text */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed auth;
                struct {
                        __le16 reason_code;
                        __le16 capab_info;
                        __le16 listen_interval;
                        /* followed by SSID and Supported rates */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed assoc_req;
                struct {
                        __le16 capab_info;
                        __le16 status_code;
                        __le16 aid;
                        /* followed by Supported rates */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed assoc_resp, reassoc_resp;
                struct {
                        __le16 capab_info;
                        __le16 status_code;
-                       u8 variable[0];
+                       u8 variable[];
                } __packed s1g_assoc_resp, s1g_reassoc_resp;
                struct {
                        __le16 capab_info;
                        __le16 listen_interval;
                        u8 current_ap[ETH_ALEN];
                        /* followed by SSID and Supported rates */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed reassoc_req;
                struct {
                        __le16 reason_code;
                        __le16 capab_info;
                        /* followed by some of SSID, Supported rates,
                         * FH Params, DS Params, CF Params, IBSS Params, TIM */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed beacon;
                struct {
                        /* only variable items: SSID, Supported rates */
-                       u8 variable[0];
+                       DECLARE_FLEX_ARRAY(u8, variable);
                } __packed probe_req;
                struct {
                        __le64 timestamp;
                        __le16 capab_info;
                        /* followed by some of SSID, Supported rates,
                         * FH Params, DS Params, CF Params, IBSS Params */
-                       u8 variable[0];
+                       u8 variable[];
                } __packed probe_resp;
                struct {
                        u8 category;
                                        u8 action_code;
                                        u8 dialog_token;
                                        u8 status_code;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed wme_action;
                                struct{
                                        u8 action_code;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed chan_switch;
                                struct{
                                        u8 action_code;
                                        struct ieee80211_ext_chansw_ie data;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed ext_chan_switch;
                                struct{
                                        u8 action_code;
                                        __le16 timeout;
                                        __le16 start_seq_num;
                                        /* followed by BA Extension */
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed addba_req;
                                struct{
                                        u8 action_code;
                                } __packed delba;
                                struct {
                                        u8 action_code;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed self_prot;
                                struct{
                                        u8 action_code;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed mesh_action;
                                struct {
                                        u8 action;
                                        u8 toa[6];
                                        __le16 tod_error;
                                        __le16 toa_error;
-                                       u8 variable[0];
+                                       u8 variable[];
                                } __packed ftm;
                                struct {
                                        u8 action_code;
 
        void __user *bastaddr;
        struct dlm_lksb __user *lksb;
        char lvb[DLM_USER_LVB_LEN];
-       char name[0];
+       char name[];
 };
 
 struct dlm_lspace_params {
        __u32 flags;
        __u32 minor;
-       char name[0];
+       char name[];
 };
 
 struct dlm_purge_params {