blob: d518186fc5af46b40e4e9bf0aa09d49bcf9d33de [file] [log] [blame]
From 35ad781ef0a247b2b8c603b91c1836da9471d211 Mon Sep 17 00:00:00 2001
From: Hangbin Liu <>
Date: Sun, 22 Dec 2019 10:51:10 +0800
Subject: [PATCH] ip6_gre: do not confirm neighbor when do pmtu update
commit 675d76ad0ad5bf41c9a129772ef0aba8f57ea9a7 upstream.
When we do ipv6 gre pmtu update, we will also do neigh confirm currently.
This will cause the neigh cache be refreshed and set to REACHABLE before
But if the remote mac address changed, e.g. device is deleted and recreated,
we will not able to notice this and still use the old mac address as the neigh
cache is REACHABLE.
Fix this by disable neigh confirm when do pmtu update
v5: No change.
v4: No change.
v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
dst_ops.update_pmtu to control whether we should do neighbor confirm.
Also split the big patch to small ones for each area.
v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
Reported-by: Jianlin Shi <>
Reviewed-by: Guillaume Nault <>
Acked-by: David Ahern <>
Signed-off-by: Hangbin Liu <>
Signed-off-by: David S. Miller <>
Signed-off-by: Paul Gortmaker <>
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
index 5a4143d9ba27..2d218973a219 100644
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -1040,7 +1040,7 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,
/* TooBig packet may have updated dst->dev's mtu */
if (!t->parms.collect_md && dst && dst_mtu(dst) > dst->dev->mtu)
- dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu, true);
+ dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu, false);
err = ip6_tnl_xmit(skb, dev, dsfield, &fl6, encap_limit, &mtu,