Patchwork [net-next] bridge: add some missing __rcu marks

login
register
mail settings
Submitter Amerigo Wang
Date Feb. 14, 2013, 6:12 a.m.
Message ID <1360822350-26882-1-git-send-email-amwang@redhat.com>
Download mbox | patch
Permalink /patch/220367/
State Changes Requested
Delegated to: David Miller
Headers show

Comments

Amerigo Wang - Feb. 14, 2013, 6:12 a.m.
From: Cong Wang <amwang@redhat.com>


Cc: Vlad Yasevich <vyasevic@redhat.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Cong Wang <amwang@redhat.com>

---
--
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
stephen hemminger - Feb. 14, 2013, 6:39 a.m.
On Thu, 14 Feb 2013 14:12:30 +0800
Cong Wang <amwang@redhat.com> wrote:

> From: Cong Wang <amwang@redhat.com>
> 
> 
> Cc: Vlad Yasevich <vyasevic@redhat.com>
> Cc: Stephen Hemminger <stephen@networkplumber.org>
> Cc: David S. Miller <davem@davemloft.net>
> Signed-off-by: Cong Wang <amwang@redhat.com>
> 
> ---
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index 6d314c4..0f115ba 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -328,7 +328,7 @@ extern void br_dev_delete(struct net_device *dev, struct list_head *list);
>  extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
>  			       struct net_device *dev);
>  #ifdef CONFIG_NET_POLL_CONTROLLER
> -static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
> +static inline struct netpoll_info __rcu *br_netpoll_info(struct net_bridge *br)
>  {
>  	return br->dev->npinfo;
>  }


This doesn't seem right since there is no rcu_dereference() here.
--
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
Amerigo Wang - Feb. 14, 2013, 8:23 a.m.
On Wed, 2013-02-13 at 22:39 -0800, Stephen Hemminger wrote:
> On Thu, 14 Feb 2013 14:12:30 +0800
> Cong Wang <amwang@redhat.com> wrote:
> >  #ifdef CONFIG_NET_POLL_CONTROLLER
> > -static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
> > +static inline struct netpoll_info __rcu *br_netpoll_info(struct net_bridge *br)
> >  {
> >  	return br->dev->npinfo;
> >  }
> 
> 
> This doesn't seem right since there is no rcu_dereference() here.

But we don't dereference ->npinfo here, we only check if it is NULL.


--
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

Patch

diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 6d314c4..0f115ba 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -328,7 +328,7 @@  extern void br_dev_delete(struct net_device *dev, struct list_head *list);
 extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
 			       struct net_device *dev);
 #ifdef CONFIG_NET_POLL_CONTROLLER
-static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
+static inline struct netpoll_info __rcu *br_netpoll_info(struct net_bridge *br)
 {
 	return br->dev->npinfo;
 }
@@ -345,7 +345,7 @@  static inline void br_netpoll_send_skb(const struct net_bridge_port *p,
 extern int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp);
 extern void br_netpoll_disable(struct net_bridge_port *p);
 #else
-static inline struct netpoll_info *br_netpoll_info(struct net_bridge *br)
+static inline struct netpoll_info __rcu *br_netpoll_info(struct net_bridge *br)
 {
 	return NULL;
 }
@@ -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);