ipsec: Fix bogus bundle flowi

When I merged the bundle creation code, I introduced a bogus
flowi value in the bundle.  Instead of getting from the caller,
it was instead set to the flow in the route object, which is
totally different.

The end result is that the bundles we created never match, and
we instead end up with an ever growing bundle list.

Thanks to Jamal for find this problem.

Reported-by: Jamal Hadi Salim <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
Acked-by: Steffen Klassert <[email protected]>
Acked-by: Jamal Hadi Salim <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
Herbert Xu 2010-03-02 02:51:56 +00:00 • committed by David S. Miller
commit 87c1e12b5e
4 changed files with 11 additions and 7 deletions

View file

@ -91,11 +91,12 @@ static int xfrm4_init_path(struct xfrm_dst *path, struct dst_entry *dst,
return 0;
}
static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev)
static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
struct flowi *fl)
{
struct rtable *rt = (struct rtable *)xdst->route;
xdst->u.rt.fl = rt->fl;
xdst->u.rt.fl = *fl;
xdst->u.dst.dev = dev;
dev_hold(dev);