From a344ad6c05d98a5f59438f965fb2692ee47c7680 Mon Sep 17 00:00:00 2001 From: Andrey Vagin Date: Sat, 11 Dec 2010 15:20:11 +0000 Subject: [PATCH] --- yaml --- r: 223623 b: refs/heads/master c: d3052b557a1c94c21f50465702fa886753ce6b43 h: refs/heads/master i: 223621: f35d2b4e778a69de86c2dd860391dfc8e56675a7 223619: bf31114120840c9cad9bbf03a8c46b30a29ca5f9 223615: 9ad19a9daaafe95740817284479c083db44f7999 v: v3 --- [refs] | 2 +- trunk/net/ipv6/route.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index dee95646e604..3981e60df17f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: af3e5bd5f650163c2e12297f572910a1af1b8236 +refs/heads/master: d3052b557a1c94c21f50465702fa886753ce6b43 diff --git a/trunk/net/ipv6/route.c b/trunk/net/ipv6/route.c index 96455ffb76fb..7659d6f16e6b 100644 --- a/trunk/net/ipv6/route.c +++ b/trunk/net/ipv6/route.c @@ -1565,11 +1565,16 @@ static void rt6_do_pmtu_disc(struct in6_addr *daddr, struct in6_addr *saddr, { struct rt6_info *rt, *nrt; int allfrag = 0; - +again: rt = rt6_lookup(net, daddr, saddr, ifindex, 0); if (rt == NULL) return; + if (rt6_check_expired(rt)) { + ip6_del_rt(rt); + goto again; + } + if (pmtu >= dst_mtu(&rt->dst)) goto out;