From fdb27efed3709820c5afb52317b9720717fca5a2 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Thu, 5 Nov 2009 21:03:39 -0800 Subject: [PATCH] --- yaml --- r: 171182 b: refs/heads/master c: bf8e56bfc4fcfcef9f08e6233dc619706807893a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/core/sock.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 24637fe91d30..003be13c087f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 69df9d5993bd7dd7499ad0e98fe824147fbe5667 +refs/heads/master: bf8e56bfc4fcfcef9f08e6233dc619706807893a diff --git a/trunk/net/core/sock.c b/trunk/net/core/sock.c index 5a51512f638a..38820eaecd43 100644 --- a/trunk/net/core/sock.c +++ b/trunk/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);