batman-adv: wait for call_rcu before unloading module
Commit Message
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 <sven.eckelmann@gmx.de>
---
batman-adv/main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Comments
On Wednesday 15 September 2010 23:09:36 Sven Eckelmann wrote:
> 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
Applied in revision 1794.
Thanks,
Marek
@@ -74,7 +74,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)