diff mbox

[net] ipv6: add mtu lock check in __ip6_rt_update_pmtu

Message ID 0726e9078aea71d7f6332b4639985565c5e6491b.1477649881.git.lucien.xin@gmail.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Xin Long Oct. 28, 2016, 10:18 a.m. UTC
Prior to this patch, ipv6 didn't do mtu lock check in ip6_update_pmtu.
It leaded to that mtu lock doesn't really work when receiving the pkt
of ICMPV6_PKT_TOOBIG.

This patch is to add mtu lock check in __ip6_rt_update_pmtu just as ipv4
did in __ip_rt_update_pmtu.

Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
 net/ipv6/route.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

David Miller Oct. 31, 2016, 6:25 p.m. UTC | #1
From: Xin Long <lucien.xin@gmail.com>
Date: Fri, 28 Oct 2016 18:18:01 +0800

> Prior to this patch, ipv6 didn't do mtu lock check in ip6_update_pmtu.
> It leaded to that mtu lock doesn't really work when receiving the pkt
> of ICMPV6_PKT_TOOBIG.
> 
> This patch is to add mtu lock check in __ip6_rt_update_pmtu just as ipv4
> did in __ip_rt_update_pmtu.
> 
> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>

Applied, thank you.
diff mbox

Patch

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 947ed1d..7403d90 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1364,6 +1364,9 @@  static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk,
 	if (rt6->rt6i_flags & RTF_LOCAL)
 		return;
 
+	if (dst_metric_locked(dst, RTAX_MTU))
+		return;
+
 	dst_confirm(dst);
 	mtu = max_t(u32, mtu, IPV6_MIN_MTU);
 	if (mtu >= dst_mtu(dst))