Message ID | 1360993680-7992-1-git-send-email-amwang@redhat.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Sat, 2013-02-16 at 13:48 +0800, Cong Wang wrote: > From: Cong Wang <amwang@redhat.com> > > This fixes sparse warnings like the one below: > static inline void br_netpoll_send_skb(const struct net_bridge_port *p, > @@ -469,7 +469,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); This part is wrong, please remove the __rcu annotation in function definition. To perform " rcu_assign_pointer(p->next, next); ", there is no need to annotate "next" with __rcu -- 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
On Fri, 2013-02-15 at 22:23 -0800, Eric Dumazet wrote: > On Sat, 2013-02-16 at 13:48 +0800, Cong Wang wrote: > > From: Cong Wang <amwang@redhat.com> > > > > This fixes sparse warnings like the one below: > > > static inline void br_netpoll_send_skb(const struct net_bridge_port *p, > > @@ -469,7 +469,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); > > This part is wrong, please remove the __rcu annotation in function > definition. > > To perform " rcu_assign_pointer(p->next, next); ", there is no need to > annotate "next" with __rcu > This will introduce more warnings, enjoy. ;) So I will leave this to Vlad. Thanks. -- 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/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 94c1534..71ad0f2 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1302,7 +1302,7 @@ static int bond_netpoll_setup(struct net_device *dev, struct netpoll_info *ni, g static struct netpoll_info *bond_netpoll_info(struct bonding *bond) { - return bond->dev->npinfo; + return rcu_access_pointer(bond->dev->npinfo); } #else diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 05c5efe..03e5949 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c @@ -950,7 +950,7 @@ static void team_port_disable_netpoll(struct team_port *port) static struct netpoll_info *team_netpoll_info(struct team *team) { - return team->dev->npinfo; + return rcu_access_pointer(team->dev->npinfo); } #else diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 6d314c4..0aa1b84 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -330,7 +330,7 @@ extern netdev_tx_t br_dev_xmit(struct sk_buff *skb, #ifdef CONFIG_NET_POLL_CONTROLLER static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br) { - return br->dev->npinfo; + return rcu_access_pointer(br->dev->npinfo); } static inline void br_netpoll_send_skb(const struct net_bridge_port *p, @@ -469,7 +469,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);