|
|
@@ -0,0 +1,29 @@
|
|
|
+From: Felix Fietkau <[email protected]>
|
|
|
+Date: Wed, 3 Jul 2024 12:10:01 +0200
|
|
|
+Subject: [PATCH] wifi: mac80211: clear vif drv_priv after calling
|
|
|
+ remove_interface
|
|
|
+
|
|
|
+Avoid reusing stale driver data when an interface is brought down and up
|
|
|
+again. In order to avoid having to duplicate the memset in every single
|
|
|
+driver, do it here.
|
|
|
+
|
|
|
+Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
+---
|
|
|
+
|
|
|
+--- a/net/mac80211/iface.c
|
|
|
++++ b/net/mac80211/iface.c
|
|
|
+@@ -684,8 +684,12 @@ static void ieee80211_do_stop(struct iee
|
|
|
+
|
|
|
+ fallthrough;
|
|
|
+ default:
|
|
|
+- if (going_down)
|
|
|
+- drv_remove_interface(local, sdata);
|
|
|
++ if (!going_down)
|
|
|
++ break;
|
|
|
++ drv_remove_interface(local, sdata);
|
|
|
++
|
|
|
++ /* Clear private driver data to prevent reuse */
|
|
|
++ memset(sdata->vif.drv_priv, 0, local->hw.vif_data_size);
|
|
|
+ }
|
|
|
+
|
|
|
+ ieee80211_recalc_ps(local);
|