mt76: mt76x02: add check for invalid vif idx
authorMarkus Theil <markus.theil@tu-ilmenau.de>
Wed, 18 Dec 2019 16:07:51 +0000 (17:07 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 14 Feb 2020 09:06:01 +0000 (10:06 +0100)
On adding vifs the idx can become 1 + (7 & 7) = 8 for APs.
Check against that, as only AP vif idx 0-7 is possible.

Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x02_util.c

index ab717d8..cb79819 100644 (file)
@@ -325,7 +325,9 @@ mt76x02_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
        if (vif->type == NL80211_IFTYPE_STATION)
                idx += 8;
 
-       if (dev->vif_mask & BIT(idx))
+       /* vif is already set or idx is 8 for AP/Mesh/... */
+       if (dev->vif_mask & BIT(idx) ||
+           (vif->type != NL80211_IFTYPE_STATION && idx > 7))
                return -EBUSY;
 
        dev->vif_mask |= BIT(idx);