mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
Merge branch 'ipv6-fixes'
Hangbin Liu says: ==================== fix two kernel panics when disabled IPv6 on boot up When disabled IPv6 on boot up, since there is no ipv6 route tables, we should not call rt6_lookup. Fix them by checking if we have inet6_dev pointer on netdevice. v2: Fix idev reference leak, declarations and code mixing as Stefano, Eric pointed. Since we only want to check if idev exists and not reference it, use __in6_dev_get() insteand of in6_dev_get(). ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ec7fd009e8
@ -1512,9 +1512,13 @@ static void geneve_link_config(struct net_device *dev,
|
||||
}
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case AF_INET6: {
|
||||
struct rt6_info *rt = rt6_lookup(geneve->net,
|
||||
&info->key.u.ipv6.dst, NULL, 0,
|
||||
NULL, 0);
|
||||
struct rt6_info *rt;
|
||||
|
||||
if (!__in6_dev_get(dev))
|
||||
break;
|
||||
|
||||
rt = rt6_lookup(geneve->net, &info->key.u.ipv6.dst, NULL, 0,
|
||||
NULL, 0);
|
||||
|
||||
if (rt && rt->dst.dev)
|
||||
ldev_mtu = rt->dst.dev->mtu - GENEVE_IPV6_HLEN;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user