wifi: mt76: mt7996: Initialize hdr before passing to skb_put_data()
authorNathan Chancellor <nathan@kernel.org>
Tue, 15 Jul 2025 22:33:25 +0000 (15:33 -0700)
committerFelix Fietkau <nbd@nbd.name>
Wed, 27 Aug 2025 08:55:21 +0000 (10:55 +0200)
A new warning in clang [1] points out a couple of places where a hdr
variable is not initialized then passed along to skb_put_data().

  drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:1894:21: warning: variable 'hdr' is uninitialized when passed as a const pointer argument here [-Wuninitialized-const-pointer]
   1894 |         skb_put_data(skb, &hdr, sizeof(hdr));
        |                            ^~~
  drivers/net/wireless/mediatek/mt76/mt7996/mcu.c:3386:21: warning: variable 'hdr' is uninitialized when passed as a const pointer argument here [-Wuninitialized-const-pointer]
   3386 |         skb_put_data(skb, &hdr, sizeof(hdr));
        |                            ^~~

Zero initialize these headers as done in other places in the driver when
there is nothing stored in the header.

Cc: stable@vger.kernel.org
Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
Link: https://github.com/llvm/llvm-project/commit/00dacf8c22f065cb52efb14cd091d441f19b319e
Closes: https://github.com/ClangBuiltLinux/linux/issues/2104
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Link: https://patch.msgid.link/20250715-mt7996-fix-uninit-const-pointer-v1-1-b5d8d11d7b78@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index 3593fd40c51b6c5338f7756dc0b684ba859a86b7..fe1b34386de232fd9c5a0f3609baec1e46fe113c 100644 (file)
@@ -1879,8 +1879,8 @@ mt7996_mcu_get_mmps_mode(enum ieee80211_smps_mode smps)
 int mt7996_mcu_set_fixed_rate_ctrl(struct mt7996_dev *dev,
                                   void *data, u16 version)
 {
+       struct uni_header hdr = {};
        struct ra_fixed_rate *req;
-       struct uni_header hdr;
        struct sk_buff *skb;
        struct tlv *tlv;
        int len;
@@ -3372,7 +3372,7 @@ int mt7996_mcu_set_hdr_trans(struct mt7996_dev *dev, bool hdr_trans)
 {
        struct {
                u8 __rsv[4];
-       } __packed hdr;
+       } __packed hdr = {};
        struct hdr_trans_blacklist *req_blacklist;
        struct hdr_trans_en *req_en;
        struct sk_buff *skb;