diff options
author | Martin Hundebøll <martin@hundeboll.net> | 2013-04-17 21:13:16 +0200 |
---|---|---|
committer | Antonio Quartulli <ordex@autistici.org> | 2013-05-21 21:34:36 +0200 |
commit | f69ae770e74df420fbcf93aae81b30a5dcc73b7d (patch) | |
tree | 366080c1947e6650815e56c45f6ba53fe12a1cad /net | |
parent | 3ccfc1b1d2fa78f8ece83646027982916fcc794b (diff) | |
download | linux-f69ae770e74df420fbcf93aae81b30a5dcc73b7d.tar.gz linux-f69ae770e74df420fbcf93aae81b30a5dcc73b7d.tar.bz2 linux-f69ae770e74df420fbcf93aae81b30a5dcc73b7d.zip |
batman-adv: Avoid double freeing of bat_counters
On errors in batadv_mesh_init(), bat_counters will be freed in both
batadv_mesh_free() and batadv_softif_init_late(). This patch fixes this
by returning earlier from batadv_softif_init_late() in case of errors in
batadv_mesh_init() and by setting bat_counters to NULL after freeing.
Signed-off-by: Martin Hundebøll <martin@hundeboll.net>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/batman-adv/main.c | 1 | ||||
-rw-r--r-- | net/batman-adv/soft-interface.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index 1240f07ad31d..51aafd669cbb 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -181,6 +181,7 @@ void batadv_mesh_free(struct net_device *soft_iface) 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); } diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c index 6f20d339e33a..819dfb006cdf 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c @@ -505,6 +505,7 @@ unreg_debugfs: batadv_debugfs_del_meshif(dev); free_bat_counters: free_percpu(bat_priv->bat_counters); + bat_priv->bat_counters = NULL; return ret; } |