Repository : ssh://git@open-mesh.org/batman-adv
On branch : next
commit 675a59017340769c140e06e11ed2bd23d27b238e Merge: 3269ba9 763f413 Author: Marek Lindner lindner_marek@yahoo.de Date: Thu May 9 17:32:06 2013 +0800
Merge branch 'maint' into next
675a59017340769c140e06e11ed2bd23d27b238e main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
diff --cc main.c index 7dac212,1240f07..51aafd6 --- a/main.c +++ b/main.c @@@ -163,17 -163,24 +163,25 @@@ void batadv_mesh_free(struct net_devic batadv_vis_quit(bat_priv);
batadv_gw_node_purge(bat_priv); - batadv_originator_free(bat_priv); batadv_nc_free(bat_priv); + batadv_dat_free(bat_priv); + batadv_bla_free(bat_priv);
+ /* Free the TT and the originator tables only after having terminated + * all the other depending components which may use these structures for + * their purposes. + */ batadv_tt_free(bat_priv);
- batadv_bla_free(bat_priv); - - batadv_dat_free(bat_priv); + /* Since the originator table clean up routine is accessing the TT + * tables as well, it has to be invoked after the TT tables have been + * freed and marked as empty. This ensures that no cleanup RCU callbacks + * accessing the TT data are scheduled for later execution. + */ + batadv_originator_free(bat_priv);
free_percpu(bat_priv->bat_counters); + bat_priv->bat_counters = NULL;
atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); }