mt76: mt7615: Fix a dereference of pointer sta before it is null checked
authorColin Ian King <colin.king@canonical.com>
Mon, 19 Apr 2021 13:20:32 +0000 (14:20 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 21 Apr 2021 18:55:54 +0000 (20:55 +0200)
Currently the assignment of idx dereferences pointer sta before
sta is null checked, leading to a potential null pointer dereference.
Fix this by assigning idx when it is required after the null check on
pointer sta.

Addresses-Coverity: ("Dereference before null check")
Fixes: a4a5a430b076 ("mt76: mt7615: fix TSF configuration")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c

index 4a370b9f7a17504a9970d563b7e83969ee0567d6..f8d3673c2cae807140251852305a666ae8f1752b 100644 (file)
@@ -67,7 +67,7 @@ static int mt7663_usb_sdio_set_rates(struct mt7615_dev *dev,
        struct mt7615_rate_desc *rate = &wrd->rate;
        struct mt7615_sta *sta = wrd->sta;
        u32 w5, w27, addr, val;
-       u16 idx = sta->vif->mt76.omac_idx;
+       u16 idx;
 
        lockdep_assert_held(&dev->mt76.mutex);
 
@@ -119,6 +119,7 @@ static int mt7663_usb_sdio_set_rates(struct mt7615_dev *dev,
 
        sta->rate_probe = sta->rateset[rate->rateset].probe_rate.idx != -1;
 
+       idx = sta->vif->mt76.omac_idx;
        idx = idx > HW_BSSID_MAX ? HW_BSSID_0 : idx;
        addr = idx > 1 ? MT_LPON_TCR2(idx): MT_LPON_TCR0(idx);