summaryrefslogtreecommitdiffstats
path: root/net/mac80211/mesh.c
diff options
context:
space:
mode:
authorJesper Dangaard Brouer2009-06-26 12:45:53 +0200
committerDavid S. Miller2009-06-26 22:51:36 +0200
commit4a27096bbe2cad4c6e78802a0d9dfe0e598a1129 (patch)
treec2d230e74d2b43c88bf3e651592d9baa622875da /net/mac80211/mesh.c
parentsunrpc: Use rcu_barrier() on unload. (diff)
downloadkernel-qcow2-linux-4a27096bbe2cad4c6e78802a0d9dfe0e598a1129.tar.gz
kernel-qcow2-linux-4a27096bbe2cad4c6e78802a0d9dfe0e598a1129.tar.xz
kernel-qcow2-linux-4a27096bbe2cad4c6e78802a0d9dfe0e598a1129.zip
mac80211: Use rcu_barrier() on unload.
The mac80211 module uses rcu_call() thus it should use rcu_barrier() on module unload. The rcu_barrier() is placed in mech.c ieee80211_stop_mesh() which is invoked from ieee80211_stop() in case vif.type == NL80211_IFTYPE_MESH_POINT. Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/mesh.c')
-rw-r--r--net/mac80211/mesh.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index fc712e60705d..11cf45bce38a 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -494,7 +494,7 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata)
* should it be using the interface and enqueuing
* frames at this very time on another CPU.
*/
- synchronize_rcu();
+ rcu_barrier(); /* Wait for RX path and call_rcu()'s */
skb_queue_purge(&sdata->u.mesh.skb_queue);
}