From: Sven Eckelmann Date: Sat, 18 Sep 2010 19:01:14 +0000 (+0200) Subject: Staging: batman-adv: wait for call_rcu before unloading module X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=67c3b705934af93a09a0f369346c2561499b73c4;p=deliverable%2Flinux.git Staging: batman-adv: wait for call_rcu before unloading module synchronize_rcu respective synchronize_net only waits for the rcu grace period to elapse and we may fail to finish the calls which were made to call_rcu in that time. In result the module could be unloaded during the execution of the RCU callbacks. rcu_barrier[1] will now wait for all outstanding RCU callbacks to finish before continuing. [1] Documentation/RCU/rcubarrier.txt Signed-off-by: Sven Eckelmann Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/batman-adv/main.c b/drivers/staging/batman-adv/main.c index 78ceebf75449..580ca02fc705 100644 --- a/drivers/staging/batman-adv/main.c +++ b/drivers/staging/batman-adv/main.c @@ -72,7 +72,7 @@ static void __exit batman_exit(void) destroy_workqueue(bat_event_workqueue); bat_event_workqueue = NULL; - synchronize_net(); + rcu_barrier(); } int mesh_init(struct net_device *soft_iface)