Message ID | 1300227411.2565.7.camel@edumazet-laptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 15 Mar 2011 23:16:51 +0100 > Could you try following patch ? > > [PATCH] xfrm: fix __xfrm_route_forward() > > This function should return 0 in case of error, 1 if OK > commit 452edd598f60522 (xfrm: Return dst directly from xfrm_lookup()) > got it wrong. > > Reported-and-bisected-by: Michael Smith <msmith@cbnco.com> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Thanks so much for fixing this Eric, sheesh you are so awesome that you don't even give me enough time to fix my own bugs. :-)))) Applied, and indeed thanks to Michael for the excellent report. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le mardi 15 mars 2011 à 15:28 -0700, David Miller a écrit : > Thanks so much for fixing this Eric, sheesh you are so awesome that > you don't even give me enough time to fix my own bugs. :-)))) > Well, I know you must be pretty busy now linux-2.6.38 is released ;) > Applied, and indeed thanks to Michael for the excellent report. > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 15 Mar 2011, Eric Dumazet wrote: > Could you try following patch ? > > [PATCH] xfrm: fix __xfrm_route_forward() > > This function should return 0 in case of error, 1 if OK > commit 452edd598f60522 (xfrm: Return dst directly from xfrm_lookup()) > got it wrong. That does the trick, thanks! Nice catch. Mike -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 1ba0258..027e3c6 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -2175,7 +2175,7 @@ int __xfrm_route_forward(struct sk_buff *skb, unsigned short family) struct net *net = dev_net(skb->dev); struct flowi fl; struct dst_entry *dst; - int res = 0; + int res = 1; if (xfrm_decode_session(skb, &fl, family) < 0) { XFRM_INC_STATS(net, LINUX_MIB_XFRMFWDHDRERROR); @@ -2186,7 +2186,7 @@ int __xfrm_route_forward(struct sk_buff *skb, unsigned short family) dst = xfrm_lookup(net, skb_dst(skb), &fl, NULL, 0); if (IS_ERR(dst)) { - res = 1; + res = 0; dst = NULL; } skb_dst_set(skb, dst);