Message ID | 20100306070739.GB14470@gondor.apana.org.au |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Herbert Xu <herbert@gondor.apana.org.au> Date: Sat, 6 Mar 2010 15:07:39 +0800 > On Sat, Mar 06, 2010 at 02:56:55PM +0800, Herbert Xu wrote: >> On Fri, Mar 05, 2010 at 09:06:56PM -0800, Paul E. McKenney wrote: >> >> > Shouldn't the br_mdb_get() code path be using hlist_for_each_entry_rcu() >> > in __br_mdb_ip_get(), then? Or is something else going on here? >> >> Indeed it should, I'll fix this up too. > > bridge: Use RCU list primitive in __br_mdb_ip_get > > As Paul McKenney correctly pointed out, __br_mdb_ip_get needs > to use the RCU list walking primitive in order to work correctly > on platforms where data-dependency ordering is not guaranteed. > > Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 2559fb5..ba30f41 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -38,7 +38,7 @@ static struct net_bridge_mdb_entry *__br_mdb_ip_get( struct net_bridge_mdb_entry *mp; struct hlist_node *p; - hlist_for_each_entry(mp, p, &mdb->mhash[hash], hlist[mdb->ver]) { + hlist_for_each_entry_rcu(mp, p, &mdb->mhash[hash], hlist[mdb->ver]) { if (dst == mp->addr) return mp; }