Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec7fd009 authored by David S. Miller's avatar David S. Miller
Browse files

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: default avatarDavid S. Miller <davem@davemloft.net>
parents e8c32c32 173656ac
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1512,8 +1512,12 @@ 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,
		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)
+2 −1
Original line number Diff line number Diff line
@@ -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)