mirror of https://gitee.com/openkylin/linux.git
bridge: multicast flood
Fix unsafe usage of RCU. Would never work on Alpha SMP because of lack of rcu_dereference() Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7e80c12448
commit
168d40ee3d
|
@ -216,7 +216,7 @@ static void br_multicast_flood(struct net_bridge_mdb_entry *mdst,
|
|||
|
||||
prev = NULL;
|
||||
|
||||
rp = br->router_list.first;
|
||||
rp = rcu_dereference(br->router_list.first);
|
||||
p = mdst ? mdst->ports : NULL;
|
||||
while (p || rp) {
|
||||
lport = p ? p->port : NULL;
|
||||
|
@ -233,7 +233,7 @@ static void br_multicast_flood(struct net_bridge_mdb_entry *mdst,
|
|||
if ((unsigned long)lport >= (unsigned long)port)
|
||||
p = p->next;
|
||||
if ((unsigned long)rport >= (unsigned long)port)
|
||||
rp = rp->next;
|
||||
rp = rcu_dereference(rp->next);
|
||||
}
|
||||
|
||||
if (!prev)
|
||||
|
|
Loading…
Reference in New Issue