wifi: mac80211: clear vif drv_priv after remove_interface when stopping

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 <nbd@nbd.name>
Link: https://patch.msgid.link/20240704130947.48609-1-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Felix Fietkau 2024-07-04 15:09:47 +02:00 committed by Johannes Berg
parent 34ce9c8b8a
commit 574e609c4e

View File

@ -689,8 +689,12 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
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);