> > @@ -303,8 +300,8 @@ static void mesh_path_node_reclaim(struc > > struct mpath_node *node = container_of(rp, struct mpath_node, rcu); > > struct ieee80211_sub_if_data *sdata = > > IEEE80211_DEV_TO_SUB_IF(node->mpath->dev); > > - if (node->mpath->next_hop) > > - sta_info_put(node->mpath->next_hop); > > + > > + rcu_assign_pointer(node->mpath->next_hop, NULL); > > Is that necessary? If we are here nobody else should have access to this > path and we should just free it, right? Yeah I think you're right and we can just free it since access is gone already. > Also since now we can force deletion, the mesh path timer might be > running and we need a del_timer_sync() somewhere. After adding that, we > may as well always force the path deletion. I put a del_timer() into sta_info_unlink() and a del_timer_sync() into sta_info_destroy(). That should be enough afaict. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part