diff options
Diffstat (limited to 'net/ipv4/ipip.c')
| -rw-r--r-- | net/ipv4/ipip.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index 94906908a41..413ed1ba7a5 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c @@ -285,6 +285,8 @@ static struct ip_tunnel * ipip_tunnel_locate(struct net *net,  	if (register_netdevice(dev) < 0)  		goto failed_free; +	strcpy(nt->parms.name, dev->name); +  	dev_hold(dev);  	ipip_tunnel_link(ipn, nt);  	return nt; @@ -759,7 +761,6 @@ static int ipip_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); @@ -825,6 +826,7 @@ static void ipip_destroy_tunnels(struct ipip_net *ipn, struct list_head *head)  static int __net_init ipip_init_net(struct net *net)  {  	struct ipip_net *ipn = net_generic(net, ipip_net_id); +	struct ip_tunnel *t;  	int err;  	ipn->tunnels[0] = ipn->tunnels_wc; @@ -848,6 +850,9 @@ static int __net_init ipip_init_net(struct net *net)  	if ((err = register_netdev(ipn->fb_tunnel_dev)))  		goto err_reg_dev; +	t = netdev_priv(ipn->fb_tunnel_dev); + +	strcpy(t->parms.name, ipn->fb_tunnel_dev->name);  	return 0;  err_reg_dev:  |