struct virtchnl2_queue_reg_chunks {
        __le16 num_chunks;
        u8 pad[6];
-       struct virtchnl2_queue_reg_chunk chunks[];
+       struct virtchnl2_queue_reg_chunk chunks[] __counted_by_le(num_chunks);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_queue_reg_chunks);
 
        __le32 vport_id;
        __le16 num_qinfo;
        u8 pad[10];
-       struct virtchnl2_txq_info qinfo[];
+       struct virtchnl2_txq_info qinfo[] __counted_by_le(num_qinfo);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_config_tx_queues);
 
        __le32 vport_id;
        __le16 num_qinfo;
        u8 pad[18];
-       struct virtchnl2_rxq_info qinfo[];
+       struct virtchnl2_rxq_info qinfo[] __counted_by_le(num_qinfo);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(24, virtchnl2_config_rx_queues);
 
 struct virtchnl2_vector_chunks {
        __le16 num_vchunks;
        u8 pad[14];
-       struct virtchnl2_vector_chunk vchunks[];
+       struct virtchnl2_vector_chunk vchunks[] __counted_by_le(num_vchunks);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_vector_chunks);
 
        __le16 lut_entries_start;
        __le16 lut_entries;
        u8 pad[4];
-       __le32 lut[];
+       __le32 lut[] __counted_by_le(lut_entries);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(12, virtchnl2_rss_lut);
 
        u8 ptype_id_8;
        u8 proto_id_count;
        __le16 pad;
-       __le16 proto_id[];
+       __le16 proto_id[] __counted_by(proto_id_count);
 } __packed __aligned(2);
 VIRTCHNL2_CHECK_STRUCT_LEN(6, virtchnl2_ptype);
 
        __le32 vport_id;
        __le16 key_len;
        u8 pad;
-       u8 key_flex[];
+       u8 key_flex[] __counted_by_le(key_len);
 } __packed;
 VIRTCHNL2_CHECK_STRUCT_LEN(7, virtchnl2_rss_key);
 
 struct virtchnl2_queue_chunks {
        __le16 num_chunks;
        u8 pad[6];
-       struct virtchnl2_queue_chunk chunks[];
+       struct virtchnl2_queue_chunk chunks[] __counted_by_le(num_chunks);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_queue_chunks);
 
        __le32 vport_id;
        __le16 num_qv_maps;
        u8 pad[10];
-       struct virtchnl2_queue_vector qv_maps[];
+       struct virtchnl2_queue_vector qv_maps[] __counted_by_le(num_qv_maps);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_queue_vector_maps);
 
        __le32 vport_id;
        __le16 num_mac_addr;
        u8 pad[2];
-       struct virtchnl2_mac_addr mac_addr_list[];
+       struct virtchnl2_mac_addr mac_addr_list[] __counted_by_le(num_mac_addr);
 };
 VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_mac_addr_list);