Transform zero-length arrays `rate`, `adm_stat` and `msdu_cnt` into
proper flexible-array members in anonymous union in `struct
mt7996_mcu_all_sta_info_event` via the DECLARE_FLEX_ARRAY()
helper; and fix multiple -Warray-bounds warnings:

drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:544:61: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:551:58: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:553:58: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:530:61: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:538:66: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:540:66: warning: array 
subscript <unknown> is outside array bounds of 'struct <anonymous>[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:520:57: warning: array 
subscript <unknown> is outside array bounds of 'struct all_sta_trx_rate[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:526:76: warning: array 
subscript <unknown> is outside array bounds of 'struct all_sta_trx_rate[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:526:76: warning: array 
subscript <unknown> is outside array bounds of 'struct all_sta_trx_rate[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:526:76: warning: array 
subscript <unknown> is outside array bounds of 'struct all_sta_trx_rate[0]' 
[-Warray-bounds=]
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:526:76: warning: array 
subscript <unknown> is outside array bounds of 'struct all_sta_trx_rate[0]' 
[-Warray-bounds=]

This results in no differences in binary output, helps with the ongoing
efforts to globally enable -Warray-bounds.

Reviewed-by: Kees Cook <keesc...@chromium.org>
Signed-off-by: Gustavo A. R. Silva <gustavo...@kernel.org>
---
Changes in v2:
 - Add Kees' RB tag.
 - Transform zero-length array `rate` into flex-array member.
 - Address five more -Warray-bounds warnings introduced by fake
   flexible array `rate`

 drivers/net/wireless/mediatek/mt76/mt7996/mcu.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h 
b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
index 3e013b20ee5e..36cacc495c75 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
@@ -206,20 +206,20 @@ struct mt7996_mcu_all_sta_info_event {
        u8 rsv3[4];
 
        union {
-               struct all_sta_trx_rate rate[0];
-               struct {
+               DECLARE_FLEX_ARRAY(struct all_sta_trx_rate, rate);
+               DECLARE_FLEX_ARRAY(struct {
                        __le16 wlan_idx;
                        u8 rsv[2];
                        __le32 tx_bytes[IEEE80211_NUM_ACS];
                        __le32 rx_bytes[IEEE80211_NUM_ACS];
-               } adm_stat[0] __packed;
+               } __packed, adm_stat);
 
-               struct {
+               DECLARE_FLEX_ARRAY(struct {
                        __le16 wlan_idx;
                        u8 rsv[2];
                        __le32 tx_msdu_cnt;
                        __le32 rx_msdu_cnt;
-               } msdu_cnt[0] __packed;
+               } __packed, msdu_cnt);
        } __packed;
 } __packed;
 
-- 
2.34.1


Reply via email to