Skip to content

Commit

Permalink
mac80211: fix a crash triggered by sta disconnect with per-sta VLANs
Browse files Browse the repository at this point in the history
Reported-by: ranygh@riseup.net
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
nbd168 committed Mar 16, 2024
1 parent 503d26f commit dea42f6
Showing 1 changed file with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Sat, 16 Mar 2024 08:37:21 +0100
Subject: [PATCH] wifi: mac80211: check/clear fast rx for non-4addr sta VLAN
changes

When moving a station out of a VLAN and deleting the VLAN afterwards, the
fast_rx entry still holds a pointer to the VLAN's netdev, which can cause
use-after-free bugs. Fix this by immediately calling ieee80211_check_fast_rx
after the VLAN change.

Cc: stable@vger.kernel.org
Reported-by: ranygh@riseup.net
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---

--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2184,15 +2184,14 @@ static int ieee80211_change_station(stru
}

if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
- sta->sdata->u.vlan.sta) {
- ieee80211_clear_fast_rx(sta);
+ sta->sdata->u.vlan.sta)
RCU_INIT_POINTER(sta->sdata->u.vlan.sta, NULL);
- }

if (test_sta_flag(sta, WLAN_STA_AUTHORIZED))
ieee80211_vif_dec_num_mcast(sta->sdata);

sta->sdata = vlansdata;
+ ieee80211_check_fast_rx(sta);
ieee80211_check_fast_xmit(sta);

if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) {

0 comments on commit dea42f6

Please sign in to comment.