diff options
Diffstat (limited to 'net/ipv6/sit.c')
| -rw-r--r-- | net/ipv6/sit.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 1e03305c0549..09e440e8dfae 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -546,7 +546,8 @@ static int ipip6_err(struct sk_buff *skb, u32 info)  	}  	err = 0; -	if (!ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len)) +	if (__in6_dev_get(skb->dev) && +	    !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len))  		goto out;  	if (t->parms.iph.daddr == 0) @@ -1872,6 +1873,7 @@ static int __net_init sit_init_net(struct net *net)  err_reg_dev:  	ipip6_dev_free(sitn->fb_tunnel_dev); +	free_netdev(sitn->fb_tunnel_dev);  err_alloc_dev:  	return err;  }  |