summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstephen hemminger <stephen@networkplumber.org>2013-08-04 17:19:38 -0700
committerDavid S. Miller <davem@davemloft.net>2013-08-04 18:41:52 -0700
commit762a3d89ebf5873f71b3839449ac6562049ef1ce (patch)
treeb5a7874456d199ac69492ca3be6a4cb638ce73f7
parentf27070158d6754765f2f5fd1617e8e42a0ea2318 (diff)
downloadlinux-stable-762a3d89ebf5873f71b3839449ac6562049ef1ce.tar.gz
linux-stable-762a3d89ebf5873f71b3839449ac6562049ef1ce.tar.bz2
linux-stable-762a3d89ebf5873f71b3839449ac6562049ef1ce.zip
bridge: fix rcu check warning in multicast port group
Use of RCU here with out marked pointer and function doesn't match prototype with sparse. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/bridge/br_mdb.c3
-rw-r--r--net/bridge/br_private.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c
index 0daae3ec2355..e4d5cd43b7fb 100644
--- a/net/bridge/br_mdb.c
+++ b/net/bridge/br_mdb.c
@@ -61,7 +61,8 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
for (i = 0; i < mdb->max; i++) {
struct net_bridge_mdb_entry *mp;
- struct net_bridge_port_group *p, **pp;
+ struct net_bridge_port_group *p;
+ struct net_bridge_port_group __rcu **pp;
struct net_bridge_port *port;
hlist_for_each_entry_rcu(mp, &mdb->mhash[i], hlist[mdb->ver]) {
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 1514c9f4f102..d41283c57952 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -466,7 +466,7 @@ extern void br_multicast_free_pg(struct rcu_head *head);
extern struct net_bridge_port_group *br_multicast_new_port_group(
struct net_bridge_port *port,
struct br_ip *group,
- struct net_bridge_port_group *next,
+ struct net_bridge_port_group __rcu *next,
unsigned char state);
extern void br_mdb_init(void);
extern void br_mdb_uninit(void);