On Mon, 2011-08-29 at 13:23 -0700, Javier Cardona wrote: > +static void mpp_path_flush(struct ieee80211_sub_if_data *sdata) > +{ > + struct mesh_table *tbl; > + struct mesh_path *mpath; > + struct mpath_node *node; > + struct hlist_node *p; > + int i; > + > + read_lock_bh(&pathtbl_resize_lock); > + tbl = rcu_dereference_protected(mpp_paths, > + lockdep_is_held(pathtbl_resize_lock)); > + for_each_mesh_entry(tbl, p, node, i) { > + mpath = node->mpath; > + if (mpath->sdata != sdata) > + continue; > + spin_lock_bh(&tbl->hashwlock[i]); > + spin_lock_bh(&mpath->state_lock); > + call_rcu(&node->rcu, mesh_path_node_reclaim); Why is read_lock sufficient? Why is this even a r/w lock? johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html