]> git.baikalelectronics.ru Git - kernel.git/commit
ipv4: check rt_genid in dst_check
authorTimo Teräs <timo.teras@iki.fi>
Thu, 18 Mar 2010 23:20:20 +0000 (23:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 20 Mar 2010 04:00:41 +0000 (21:00 -0700)
commitd8fe8a0fe1b4b3bdd749e2e3155183ede7cdbc83
tree654f7abdf27e1aeca25505896ead0e07664ee9fa
parentb0bb02902c2db6af11b51d559f0989078ab26885
ipv4: check rt_genid in dst_check

Xfrm_dst keeps a reference to ipv4 rtable entries on each
cached bundle. The only way to renew xfrm_dst when the underlying
route has changed, is to implement dst_check for this. This is
what ipv6 side does too.

The problems started after dc886272296ec0e2950cf1bed997808d650d7482
("ipsec: Fix bogus bundle flowi") which fixed a bug causing xfrm_dst
to not get reused, until that all lookups always generated new
xfrm_dst with new route reference and path mtu worked. But after the
fix, the old routes started to get reused even after they were expired
causing pmtu to break (well it would occationally work if the rtable
gc had run recently and marked the route obsolete causing dst_check to
get called).

Signed-off-by: Timo Teras <timo.teras@iki.fi>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c