mac80211: fix mesh_path and sta_info get_by_idx functions
PATCH 10/10 mac80211: fix mesh_path and sta_info get_by_idx functions
Skip properly entries whose dev does not match.
Signed-off-by Luis Carlos Cobo <[email protected]>
--- net/mac80211/mesh_pathtbl.c | 7 +++++-- net/mac80211/sta_info.c | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-)
net/mac80211/mesh_pathtbl.c +5 -2
@@ -98,7 +98,7 @@ struct mesh_path *mesh_path_lookup(u8 *dst, struct net_device *dev)/** * mesh_path_lookup_by_idx - look up a path in the mesh path table by its index * @idx: index -* @dev: local interface +* @dev: local interface, or NULL for all entries * * Returns: pointer to the mesh path structure, or NULL if not found. *
@@ -111,7 +111,9 @@ struct mesh_path *mesh_path_lookup_by_idx(int idx, struct net_device *dev)int i;int j =0 ; -for_each_mesh_entry (mesh_paths, p, node, i) +for_each_mesh_entry (mesh_paths, p, node, i) { +if (dev && node->mpath->dev != dev) +continue ;if (j++ == idx) {if (MPATH_EXPIRED (node->mpath)) {spin_lock_bh (&node->mpath->state_lock);
@@ -121,6 +123,7 @@ struct mesh_path *mesh_path_lookup_by_idx(int idx, struct net_device *dev) }return node->mpath; } + }return NULL ; }
net/mac80211/sta_info.c +3 -2
@@ -115,12 +115,13 @@ struct sta_info *sta_info_get_by_idx(struct ieee80211_local *local, int idx,int i =0 ;list_for_each_entry_rcu (sta, &local->sta_list, list) { +if (dev && dev != sta->sdata->dev) +continue ;if (i < idx) { ++i;continue ; - }else if (!dev || dev == sta->sdata->dev) { -return sta; } +return sta; }return NULL ;
Signature · 1 line
1.5.2.5