Takashi Iwai 93454c
From 03dd0d49de7db680a856fa566963bb8421f46368 Mon Sep 17 00:00:00 2001
Takashi Iwai 93454c
From: Deren Wu <deren.wu@mediatek.com>
Takashi Iwai 93454c
Date: Sun, 27 Nov 2022 10:35:37 +0800
Takashi Iwai 93454c
Subject: [PATCH] wifi: mt76: fix coverity overrun-call in mt76_get_txpower()
Takashi Iwai 93454c
Git-commit: 03dd0d49de7db680a856fa566963bb8421f46368
Takashi Iwai 93454c
Patch-mainline: v6.2-rc1
Takashi Iwai 93454c
References: git-fixes
Takashi Iwai 93454c
Takashi Iwai 93454c
Make sure the nss is valid for nss_delta array. Return zero
Takashi Iwai 93454c
if the index is invalid.
Takashi Iwai 93454c
Takashi Iwai 93454c
Coverity message:
Takashi Iwai 93454c
Event overrun-call: Overrunning callee's array of size 4 by passing
Takashi Iwai 93454c
argument "n_chains" (which evaluates to 15) in call to
Takashi Iwai 93454c
"mt76_tx_power_nss_delta".
Takashi Iwai 93454c
int delta = mt76_tx_power_nss_delta(n_chains);
Takashi Iwai 93454c
Takashi Iwai 93454c
Fixes: 07cda406308b ("mt76: fix rounding issues on converting per-chain and combined txpower")
Takashi Iwai 93454c
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Takashi Iwai 93454c
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Takashi Iwai 93454c
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 93454c
Takashi Iwai 93454c
---
Takashi Iwai 93454c
 drivers/net/wireless/mediatek/mt76/mt76.h | 3 ++-
Takashi Iwai 93454c
 1 file changed, 2 insertions(+), 1 deletion(-)
Takashi Iwai 93454c
Takashi Iwai 93454c
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
Takashi Iwai 93454c
index 33f87e518d68..32a77a0ae9da 100644
Takashi Iwai 93454c
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
Takashi Iwai 93454c
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
Takashi Iwai 93454c
@@ -1110,8 +1110,9 @@ static inline bool mt76_is_skb_pktid(u8 pktid)
Takashi Iwai 93454c
 static inline u8 mt76_tx_power_nss_delta(u8 nss)
Takashi Iwai 93454c
 {
Takashi Iwai 93454c
 	static const u8 nss_delta[4] = { 0, 6, 9, 12 };
Takashi Iwai 93454c
+	u8 idx = nss - 1;
Takashi Iwai 93454c
 
Takashi Iwai 93454c
-	return nss_delta[nss - 1];
Takashi Iwai 93454c
+	return (idx < ARRAY_SIZE(nss_delta)) ? nss_delta[idx] : 0;
Takashi Iwai 93454c
 }
Takashi Iwai 93454c
 
Takashi Iwai 93454c
 static inline bool mt76_testmode_enabled(struct mt76_phy *phy)
Takashi Iwai 93454c
-- 
Takashi Iwai 93454c
2.35.3
Takashi Iwai 93454c