ath9k: fix ath_get_rate_txpower() to respect the rate list end tag
authorPeter Seiderer <ps.report@gmx.net>
Sat, 2 Apr 2022 15:30:13 +0000 (17:30 +0200)
committerKalle Valo <quic_kvalo@quicinc.com>
Tue, 12 Apr 2022 13:11:47 +0000 (16:11 +0300)
Stop reading (and copying) from ieee80211_tx_rate to ath_tx_info.rates
after list end tag (count == 0, idx < 0), prevents copying of garbage
to card registers.

Note: no need to write to the remaining ath_tx_info.rates entries
as the complete ath_tx_info struct is already initialized to zero from
both call sites.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20220402153014.31332-1-ps.report@gmx.net
drivers/net/wireless/ath/ath9k/xmit.c

index d0caf1d..ec9bad2 100644 (file)
@@ -1271,7 +1271,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
                int phy;
 
                if (!rates[i].count || (rates[i].idx < 0))
-                       continue;
+                       break;
 
                rix = rates[i].idx;
                info->rates[i].Tries = rates[i].count;