On Tue, 2016-01-26 at 16:22 -0500, Bob Copeland wrote:
> 
> void mesh_path_flush_by_nexthop(struct sta_info *sta)
> {
>     [...]
>       rhashtable_walk_start(&iter);

It seems you need to check the return value here?

>       while ((mpath = rhashtable_walk_next(&iter))) {
>               if (IS_ERR(mpath) && PTR_ERR(mpath) == -EAGAIN)
>                       continue;
>               if (IS_ERR(mpath))
>                       break;
> 
>               if (rcu_access_pointer(mpath->next_hop) == sta)
>                       __mesh_path_del(tbl, mpath);
>       }
>       rhashtable_walk_stop(&iter);
>     [...]
> }
> 
> ...this still relies on the rcu read lock inside _walk_start and
> _walk_stop, though.

At least that's kinda hidden in walk_start/stop though ;-)

johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to