diff options
Diffstat (limited to 'net/ipv6/sit.c')
| -rw-r--r-- | net/ipv6/sit.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index a7a18602a04..96f3623618e 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -263,6 +263,8 @@ static struct ip_tunnel *ipip6_tunnel_locate(struct net *net,  	if (register_netdevice(dev) < 0)  		goto failed_free; +	strcpy(nt->parms.name, dev->name); +  	dev_hold(dev);  	ipip6_tunnel_link(sitn, nt); @@ -1144,7 +1146,6 @@ static int ipip6_tunnel_init(struct net_device *dev)  	struct ip_tunnel *tunnel = netdev_priv(dev);  	tunnel->dev = dev; -	strcpy(tunnel->parms.name, dev->name);  	memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4);  	memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -1207,6 +1208,7 @@ static void __net_exit sit_destroy_tunnels(struct sit_net *sitn, struct list_hea  static int __net_init sit_init_net(struct net *net)  {  	struct sit_net *sitn = net_generic(net, sit_net_id); +	struct ip_tunnel *t;  	int err;  	sitn->tunnels[0] = sitn->tunnels_wc; @@ -1231,6 +1233,9 @@ static int __net_init sit_init_net(struct net *net)  	if ((err = register_netdev(sitn->fb_tunnel_dev)))  		goto err_reg_dev; +	t = netdev_priv(sitn->fb_tunnel_dev); + +	strcpy(t->parms.name, sitn->fb_tunnel_dev->name);  	return 0;  err_reg_dev:  |