Message ID | 4AF1D153.5040309@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, 04 Nov 2009 20:09:07 +0100 Eric Dumazet <eric.dumazet@gmail.com> wrote: > add_del_if() is called with RTNL, we can use __dev_get_by_index() > instead of [dev_get_by_index() + dev_put()] > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> > --- > net/bridge/br_ioctl.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c > index 6a6433d..2af6e4a 100644 > --- a/net/bridge/br_ioctl.c > +++ b/net/bridge/br_ioctl.c > @@ -81,6 +81,7 @@ static int get_fdb_entries(struct net_bridge *br, void __user *userbuf, > return num; > } > > +/* called with RTNL */ > static int add_del_if(struct net_bridge *br, int ifindex, int isadd) > { > struct net_device *dev; > @@ -89,7 +90,7 @@ static int add_del_if(struct net_bridge *br, int ifindex, int isadd) > if (!capable(CAP_NET_ADMIN)) > return -EPERM; > > - dev = dev_get_by_index(dev_net(br->dev), ifindex); > + dev = __dev_get_by_index(dev_net(br->dev), ifindex); > if (dev == NULL) > return -EINVAL; > > @@ -98,7 +99,6 @@ static int add_del_if(struct net_bridge *br, int ifindex, int isadd) > else > ret = br_del_if(br, dev); > > - dev_put(dev); > return ret; > } > As part of the general ref count purge sure. Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Stephen Hemminger a écrit : > > As part of the general ref count purge sure. > Acked-by: Stephen Hemminger <shemminger@vyatta.com> > Yes, sure... but nf_queue.c is such an abuser that I doubt we really can make dev_put() doing the atomic_dec_test() one day... -- 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
From: Stephen Hemminger <shemminger@vyatta.com> Date: Wed, 4 Nov 2009 11:40:20 -0800 > On Wed, 04 Nov 2009 20:09:07 +0100 > Eric Dumazet <eric.dumazet@gmail.com> wrote: > >> add_del_if() is called with RTNL, we can use __dev_get_by_index() >> instead of [dev_get_by_index() + dev_put()] >> >> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> ... > > As part of the general ref count purge sure. > Acked-by: Stephen Hemminger <shemminger@vyatta.com> Applied, thanks everyone. -- 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_ioctl.c b/net/bridge/br_ioctl.c index 6a6433d..2af6e4a 100644 --- a/net/bridge/br_ioctl.c +++ b/net/bridge/br_ioctl.c @@ -81,6 +81,7 @@ static int get_fdb_entries(struct net_bridge *br, void __user *userbuf, return num; } +/* called with RTNL */ static int add_del_if(struct net_bridge *br, int ifindex, int isadd) { struct net_device *dev; @@ -89,7 +90,7 @@ static int add_del_if(struct net_bridge *br, int ifindex, int isadd) if (!capable(CAP_NET_ADMIN)) return -EPERM; - dev = dev_get_by_index(dev_net(br->dev), ifindex); + dev = __dev_get_by_index(dev_net(br->dev), ifindex); if (dev == NULL) return -EINVAL; @@ -98,7 +99,6 @@ static int add_del_if(struct net_bridge *br, int ifindex, int isadd) else ret = br_del_if(br, dev); - dev_put(dev); return ret; }
add_del_if() is called with RTNL, we can use __dev_get_by_index() instead of [dev_get_by_index() + dev_put()] Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> --- net/bridge/br_ioctl.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) -- 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