aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mesh_pathtbl.c
diff options
context:
space:
mode:
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)
619 struct mpath_node *node = container_of(rp, struct mpath_node, rcu); 619 struct mpath_node *node = container_of(rp, struct mpath_node, rcu);
620 struct ieee80211_sub_if_data *sdata = node->mpath->sdata; 620 struct ieee80211_sub_if_data *sdata = node->mpath->sdata;
621 621
622 del_timer_sync(&node->mpath->timer); 622 if (node->mpath->timer.function)
623 del_timer_sync(&node->mpath->timer);
623 atomic_dec(&sdata->u.mesh.mpaths); 624 atomic_dec(&sdata->u.mesh.mpaths);
624 kfree(node->mpath); 625 kfree(node->mpath);
625 kfree(node); 626 kfree(node);
@@ -768,7 +769,8 @@ static void mesh_path_node_free(struct hlist_node *p, bool free_leafs)
768 mpath = node->mpath; 769 mpath = node->mpath;
769 hlist_del_rcu(p); 770 hlist_del_rcu(p);
770 if (free_leafs) { 771 if (free_leafs) {
771 del_timer_sync(&mpath->timer); 772 if (mpath->timer.function)
773 del_timer_sync(&mpath->timer);
772 kfree(mpath); 774 kfree(mpath);
773 } 775 }
774 kfree(node); 776 kfree(node);