| From 0d3d3ede6f6f45686e154f6d13685e03f6eba721 Mon Sep 17 00:00:00 2001 |
| From: "Yan, Zheng" <zheng.z.yan@intel.com> |
| Date: Sat, 22 Oct 2011 21:58:20 +0000 |
| Subject: ipv4: fix ipsec forward performance regression |
| |
| |
| From: "Yan, Zheng" <zheng.z.yan@intel.com> |
| |
| [ Upstream commit b73233960a59ee66e09d642f13d0592b13651e94 ] |
| |
| There is bug in commit 5e2b61f(ipv4: Remove flowi from struct rtable). |
| It makes xfrm4_fill_dst() modify wrong data structure. |
| |
| Signed-off-by: Zheng Yan <zheng.z.yan@intel.com> |
| Reported-by: Kim Phillips <kim.phillips@freescale.com> |
| Acked-by: Eric Dumazet <eric.dumazet@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| net/ipv4/xfrm4_policy.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/net/ipv4/xfrm4_policy.c |
| +++ b/net/ipv4/xfrm4_policy.c |
| @@ -79,13 +79,13 @@ static int xfrm4_fill_dst(struct xfrm_ds |
| struct rtable *rt = (struct rtable *)xdst->route; |
| const struct flowi4 *fl4 = &fl->u.ip4; |
| |
| - rt->rt_key_dst = fl4->daddr; |
| - rt->rt_key_src = fl4->saddr; |
| - rt->rt_key_tos = fl4->flowi4_tos; |
| - rt->rt_route_iif = fl4->flowi4_iif; |
| - rt->rt_iif = fl4->flowi4_iif; |
| - rt->rt_oif = fl4->flowi4_oif; |
| - rt->rt_mark = fl4->flowi4_mark; |
| + xdst->u.rt.rt_key_dst = fl4->daddr; |
| + xdst->u.rt.rt_key_src = fl4->saddr; |
| + xdst->u.rt.rt_key_tos = fl4->flowi4_tos; |
| + xdst->u.rt.rt_route_iif = fl4->flowi4_iif; |
| + xdst->u.rt.rt_iif = fl4->flowi4_iif; |
| + xdst->u.rt.rt_oif = fl4->flowi4_oif; |
| + xdst->u.rt.rt_mark = fl4->flowi4_mark; |
| |
| xdst->u.dst.dev = dev; |
| dev_hold(dev); |