aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/tun.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 607a3a5981c6..71f6874d8048 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -493,9 +493,6 @@ static int tun_attach(struct tun_struct *tun, struct file *file)
493 493
494 tun_set_real_num_queues(tun); 494 tun_set_real_num_queues(tun);
495 495
496 if (tun->numqueues == 1)
497 netif_carrier_on(tun->dev);
498
499 /* device is allowed to go away first, so no need to hold extra 496 /* device is allowed to go away first, so no need to hold extra
500 * refcnt. 497 * refcnt.
501 */ 498 */
@@ -1612,6 +1609,10 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
1612 TUN_USER_FEATURES; 1609 TUN_USER_FEATURES;
1613 dev->features = dev->hw_features; 1610 dev->features = dev->hw_features;
1614 1611
1612 err = tun_attach(tun, file);
1613 if (err < 0)
1614 goto err_free_dev;
1615
1615 err = register_netdevice(tun->dev); 1616 err = register_netdevice(tun->dev);
1616 if (err < 0) 1617 if (err < 0)
1617 goto err_free_dev; 1618 goto err_free_dev;
@@ -1621,9 +1622,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
1621 device_create_file(&tun->dev->dev, &dev_attr_group)) 1622 device_create_file(&tun->dev->dev, &dev_attr_group))
1622 pr_err("Failed to create tun sysfs files\n"); 1623 pr_err("Failed to create tun sysfs files\n");
1623 1624
1624 err = tun_attach(tun, file); 1625 netif_carrier_on(tun->dev);
1625 if (err < 0)
1626 goto err_free_dev;
1627 } 1626 }
1628 1627
1629 tun_debug(KERN_INFO, tun, "tun_set_iff\n"); 1628 tun_debug(KERN_INFO, tun, "tun_set_iff\n");