]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Thu, 6 Jan 2011 23:07:55 +0000 (18:07 -0500)
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>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
drivers/net/tun.c

index 43265207d46370c97789a4ac264acc2d4238dbad..7b4a88b2f696099d26f17da987cfe35c9a05bbe8 100644 (file)
@@ -1061,7 +1061,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");