]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
mt76: Off by one in mt76_calc_rx_airtime()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 26 Nov 2019 04:49:56 +0000 (07:49 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 18 Dec 2019 18:50:40 +0000 (20:50 +0200)
The sband->bitrates[] array has "sband->n_bitrates" elements so this
check needs to be >= instead of > or we could read beyond the end of the
array.

These values come from when we call mt76_register_device():

ret = mt76_register_device(&dev->mt76, true, mt7603_rates,
   ARRAY_SIZE(mt7603_rates));

Here sband->bitrates[] is mt7603_rates[] and ->n_bitrates is the
ARRAY_SIZE()

Fixes: 5ce09c1a7907 ("mt76: track rx airtime for airtime fairness and survey")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mediatek/mt76/airtime.c

index 55116f395f9acee8ab59712a1ff7434a8827512e..a4a785467748647d37657389edd382ab8ff2181b 100644 (file)
@@ -242,7 +242,7 @@ u32 mt76_calc_rx_airtime(struct mt76_dev *dev, struct mt76_rx_status *status,
                        return 0;
 
                sband = dev->hw->wiphy->bands[status->band];
-               if (!sband || status->rate_idx > sband->n_bitrates)
+               if (!sband || status->rate_idx >= sband->n_bitrates)
                        return 0;
 
                rate = &sband->bitrates[status->rate_idx];