mac80211: airtime: Fix an off by one in ieee80211_calc_rx_airtime()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 26 Nov 2019 12:09:39 +0000 (15:09 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 13 Dec 2019 09:08:22 +0000 (10:08 +0100)
This code was copied from mt76 and inherited an off by one bug from
there.  The > should be >= so that we don't read one element beyond
the end of the array.

Fixes: db3e1c40cf2f ("mac80211: Import airtime calculation code from mt76")
Reported-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20191126120910.ftr4t7me3by32aiz@kili.mountain
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/airtime.c

index 63cb0028b02d2ba20879fd7bab3cbeae42a46ad1..9fc2968856c0bf9019972f21f9e67a3c3463f50c 100644 (file)
@@ -442,7 +442,7 @@ u32 ieee80211_calc_rx_airtime(struct ieee80211_hw *hw,
                        return 0;
 
                sband = 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];