]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
tun: Don't add sysfs attributes to devices without sysfs directories
authorBen Hutchings <ben@decadent.org.uk>
Thu, 9 Sep 2010 04:21:16 +0000 (05:21 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Sep 2010 20:17:50 +0000 (13:17 -0700)
This applies to 2.6.32 *only*.  It has not been applied upstream since
the limitation no longer exists.

Prior to Linux 2.6.35, net devices outside the initial net namespace
did not have sysfs directories.  Attempting to add attributes to
them will trigger a BUG().

Reported-and-tested-by: Russell Stuart <russell-debian@stuart.id.au>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/tun.c

index 4fdfa2ae5418e6c030be80b5568e3c12dcbbf3f9..0f77aca7280a2f1a7d780a910a9758853a6cb9ce 100644 (file)
@@ -1006,7 +1006,8 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
                if (err < 0)
                        goto err_free_sk;
 
-               if (device_create_file(&tun->dev->dev, &dev_attr_tun_flags) ||
+               if (!net_eq(dev_net(tun->dev), &init_net) ||
+                   device_create_file(&tun->dev->dev, &dev_attr_tun_flags) ||
                    device_create_file(&tun->dev->dev, &dev_attr_owner) ||
                    device_create_file(&tun->dev->dev, &dev_attr_group))
                        printk(KERN_ERR "Failed to create tun sysfs files\n");