|
@@ -423,7 +423,7 @@ int ieee80211_add_virtual_monitor(struct ieee80211_local *local)
|
|
|
mutex_unlock(&local->mtx);
|
|
mutex_unlock(&local->mtx);
|
|
|
if (ret) {
|
|
if (ret) {
|
|
|
mutex_lock(&local->iflist_mtx);
|
|
mutex_lock(&local->iflist_mtx);
|
|
|
- rcu_assign_pointer(local->monitor_sdata, NULL);
|
|
|
|
|
|
|
+ RCU_INIT_POINTER(local->monitor_sdata, NULL);
|
|
|
mutex_unlock(&local->iflist_mtx);
|
|
mutex_unlock(&local->iflist_mtx);
|
|
|
synchronize_net();
|
|
synchronize_net();
|
|
|
drv_remove_interface(local, sdata);
|
|
drv_remove_interface(local, sdata);
|
|
@@ -452,7 +452,7 @@ void ieee80211_del_virtual_monitor(struct ieee80211_local *local)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- rcu_assign_pointer(local->monitor_sdata, NULL);
|
|
|
|
|
|
|
+ RCU_INIT_POINTER(local->monitor_sdata, NULL);
|
|
|
mutex_unlock(&local->iflist_mtx);
|
|
mutex_unlock(&local->iflist_mtx);
|
|
|
|
|
|
|
|
synchronize_net();
|
|
synchronize_net();
|
|
@@ -876,7 +876,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
|
switch (sdata->vif.type) {
|
|
switch (sdata->vif.type) {
|
|
|
case NL80211_IFTYPE_AP_VLAN:
|
|
case NL80211_IFTYPE_AP_VLAN:
|
|
|
list_del(&sdata->u.vlan.list);
|
|
list_del(&sdata->u.vlan.list);
|
|
|
- rcu_assign_pointer(sdata->vif.chanctx_conf, NULL);
|
|
|
|
|
|
|
+ RCU_INIT_POINTER(sdata->vif.chanctx_conf, NULL);
|
|
|
/* no need to tell driver */
|
|
/* no need to tell driver */
|
|
|
break;
|
|
break;
|
|
|
case NL80211_IFTYPE_MONITOR:
|
|
case NL80211_IFTYPE_MONITOR:
|
|
@@ -895,7 +895,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
|
break;
|
|
break;
|
|
|
case NL80211_IFTYPE_P2P_DEVICE:
|
|
case NL80211_IFTYPE_P2P_DEVICE:
|
|
|
/* relies on synchronize_rcu() below */
|
|
/* relies on synchronize_rcu() below */
|
|
|
- rcu_assign_pointer(local->p2p_sdata, NULL);
|
|
|
|
|
|
|
+ RCU_INIT_POINTER(local->p2p_sdata, NULL);
|
|
|
/* fall through */
|
|
/* fall through */
|
|
|
default:
|
|
default:
|
|
|
cancel_work_sync(&sdata->work);
|
|
cancel_work_sync(&sdata->work);
|