On Tue, 2011-08-30 at 05:19 +0200, Johannes Berg wrote: > 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? n/m, I thought about this again and also saw the explanation in patch 9, definitely seems fine. It's just a little unusual to me to have per-bucket locks as well :) 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