summaryrefslogtreecommitdiffstats
path: root/net/mac80211/mesh_pathtbl.c
diff options
context:
space:
mode:
authorJavier Cardona <javier@cozybit.com>2011-08-10 01:45:05 +0200
committerJohn W. Linville <linville@tuxdriver.com>2011-08-24 19:59:42 +0200
commit86d7f9f35dcc686d57465798201e678040916979 (patch)
tree74f9606f497dac5b1c6a784a2fb04a5d308e0b92 /net/mac80211/mesh_pathtbl.c
parentmac80211: improve mpath debugging (diff)
downloadlinux-86d7f9f35dcc686d57465798201e678040916979.tar.xz
linux-86d7f9f35dcc686d57465798201e678040916979.zip
mac80211: fix mpath timer NULL function
If we have an mpath whose timer has not been initialized, don't try to delete it. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mesh_pathtbl.c')
-rw-r--r--net/mac80211/mesh_pathtbl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c
index bd6b8b3e873a..bfd7638e235f 100644
--- a/net/mac80211/mesh_pathtbl.c
+++ b/net/mac80211/mesh_pathtbl.c
@@ -619,7 +619,8 @@ static void mesh_path_node_reclaim(struct rcu_head *rp)
struct mpath_node *node = container_of(rp, struct mpath_node, rcu);
struct ieee80211_sub_if_data *sdata = node->mpath->sdata;
- del_timer_sync(&node->mpath->timer);
+ if (node->mpath->timer.function)
+ del_timer_sync(&node->mpath->timer);
atomic_dec(&sdata->u.mesh.mpaths);
kfree(node->mpath);
kfree(node);
@@ -768,7 +769,8 @@ static void mesh_path_node_free(struct hlist_node *p, bool free_leafs)
mpath = node->mpath;
hlist_del_rcu(p);
if (free_leafs) {
- del_timer_sync(&mpath->timer);
+ if (mpath->timer.function)
+ del_timer_sync(&mpath->timer);
kfree(mpath);
}
kfree(node);