bridge: remove dev_put() in add_del_if()
authorEric Dumazet <eric.dumazet@gmail.com>
Fri, 6 Nov 2009 04:47:35 +0000 (20:47 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Nov 2009 06:34:16 +0000 (22:34 -0800)
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>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_ioctl.c

index 6a6433daaf2759170cf23411f4d35bff5227fd5c..2af6e4a902628ca8e1132e51bdeeee971f078a1d 100644 (file)
@@ -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;
 }