mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
geneve: should not call rt6_lookup() when ipv6 was disabled
[ Upstream commitc0a47e44c0] When we add a new GENEVE device with IPv6 remote, checking only for IS_ENABLED(CONFIG_IPV6) is not enough as we may disable IPv6 in the kernel command line (ipv6.disable=1), and calling rt6_lookup() would cause a NULL pointer dereference. v2: - don't mix declarations and code (reported by Stefano Brivio, Eric Dumazet) - there's no need to use in6_dev_get() as we only need to check that idev exists (reported by David Ahern). This is under RTNL, so we can simply use __in6_dev_get() instead (Stefano, Eric). Reported-by: Jianlin Shi <jishi@redhat.com> Fixes:c40e89fd35("geneve: configure MTU based on a lower device") Cc: Alexey Kodanev <alexey.kodanev@oracle.com> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Reviewed-by: Stefano Brivio <sbrivio@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7aab1e6d9e
commit
c647233ea0
@@ -1406,9 +1406,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;
|
||||
|
||||
Reference in New Issue
Block a user