]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/core/sock.c
WE: Fix set events not propagated
[karo-tx-linux.git] / net / core / sock.c
index 5a51512f638a9259a6da4caa126889166a8dfb51..76ff58d43e261c34e630034571d7c48f34d16ffc 100644 (file)
@@ -417,17 +417,18 @@ static int sock_bindtodevice(struct sock *sk, char __user *optval, int optlen)
        if (copy_from_user(devname, optval, optlen))
                goto out;
 
-       if (devname[0] == '\0') {
-               index = 0;
-       } else {
-               struct net_device *dev = dev_get_by_name(net, devname);
-
+       index = 0;
+       if (devname[0] != '\0') {
+               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);