From: Eric Dumazet Date: Fri, 6 Nov 2009 05:03:39 +0000 (-0800) Subject: net: sock_bindtodevice() RCU-ification X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=bf8e56bfc4fcfcef9f08e6233dc619706807893a;p=openwrt%2Fstaging%2Fblogic.git net: sock_bindtodevice() RCU-ification Avoid dev_hold()/dev_put() in sock_bindtodevice() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller --- diff --git a/net/core/sock.c b/net/core/sock.c index 5a51512f638a..38820eaecd43 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -420,14 +420,16 @@ static int sock_bindtodevice(struct sock *sk, char __user *optval, int optlen) if (devname[0] == '\0') { index = 0; } else { - struct net_device *dev = dev_get_by_name(net, devname); + struct net_device *dev; + rcu_read_lock(); + dev = dev_get_by_name_rcu(net, devname); + if (dev) + index = dev->ifindex; + rcu_read_unlock(); ret = -ENODEV; if (!dev) goto out; - - index = dev->ifindex; - dev_put(dev); } lock_sock(sk);