diff options
author | Hangbin Liu <liuhangbin@gmail.com> | 2018-05-09 18:06:44 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-10 15:40:52 -0400 |
commit | 0e8411e426e277f55bd21e287ec89fab6f8eacae (patch) | |
tree | 3f99a701754cefcf8e0952ca78de9d9291fd5184 /net/ipv4 | |
parent | 55be9f25be1ca5bda75c39808fc77e42691bc07f (diff) | |
download | linux-stable-0e8411e426e277f55bd21e287ec89fab6f8eacae.tar.gz linux-stable-0e8411e426e277f55bd21e287ec89fab6f8eacae.tar.bz2 linux-stable-0e8411e426e277f55bd21e287ec89fab6f8eacae.zip |
ipv4: reset fnhe_mtu_locked after cache route flushed
After route cache is flushed via ipv4_sysctl_rtcache_flush(), we forget
to reset fnhe_mtu_locked in rt_bind_exception(). When pmtu is updated
in __ip_rt_update_pmtu(), it will return directly since the pmtu is
still locked. e.g.
+ ip netns exec client ping 10.10.1.1 -c 1 -s 1400 -M do
PING 10.10.1.1 (10.10.1.1) 1400(1428) bytes of data.
>From 10.10.0.254 icmp_seq=1 Frag needed and DF set (mtu = 0)
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/route.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 1412a7baf0b9..29268efad247 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -1375,6 +1375,7 @@ static bool rt_bind_exception(struct rtable *rt, struct fib_nh_exception *fnhe, fnhe->fnhe_gw = 0; fnhe->fnhe_pmtu = 0; fnhe->fnhe_expires = 0; + fnhe->fnhe_mtu_locked = false; fnhe_flush_routes(fnhe); orig = NULL; } |