diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 98d1db9..2fcf253 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -494,6 +495,7 @@ static struct tun_struct *tun_get_by_name(const char *name) static int tun_set_iff(struct file *file, struct ifreq *ifr) { + struct net *net = get_exec_env()->ve_ns->net_ns; struct tun_struct *tun; struct net_device *dev; int err; @@ -512,7 +514,7 @@ static int tun_set_iff(struct file *file, struct ifreq *ifr) !capable(CAP_VE_NET_ADMIN)) return -EPERM; } - else if (__dev_get_by_name(&init_net, ifr->ifr_name)) + else if (__dev_get_by_name(net, ifr->ifr_name)) return -EINVAL; else { char *name; @@ -542,6 +544,7 @@ static int tun_set_iff(struct file *file, struct ifreq *ifr) tun_setup); if (!dev) return -ENOMEM; + dev->nd_net = net; tun = netdev_priv(dev); tun->dev = dev;