On Tue, 2009-06-23 at 17:04 +0200, Jesper Dangaard Brouer wrote:
quoted hunk ↗ jump to hunk
The mac80211 module uses rcu_call() thus it should use rcu_barrier()
on module unload.
I'm having a hardtime verifying that no more call_rcu() callbacks can
be schedules in the module unload path. Could a maintainer please
look into this?
Signed-off-by: Jesper Dangaard Brouer <redacted>
---
net/mac80211/main.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 092a017..e9f70ce 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1100,6 +1100,8 @@ static void __exit ieee80211_exit(void)
ieee80211s_stop();
ieee80211_debugfs_netdev_exit();
+
+ rcu_barrier(); /* Wait for completion of call_rcu()'s */
}
I don't think this is correct at all -- note that call_rcu() is done in
some of the mesh code, so I would think you need to do this in
ieee80211_stop() since the call_rcu() code requires the interface to
still be around. And when it's stopped everything should be idle.
I can fix it later, but I'm deep in some other stuff right now.
johannes