Re: 2.6.17rc1 PANIC related to IP masquerading

From: Patrick McHardy
Date: Wed Apr 12 2006 - 11:45:11 EST


jlt_lk@xxxxxxxxxxxxxxxxxxx wrote:
> Kernel 2.6.17-rc1 panics as soon as IP packets are forwarded using the
> below config. ICMP packets seem to be forwarded fine.
>
> A photograph of the panic can be found at:
> http://shamrock.dyndns.org/~ln/kernel/2.6.17rc1_panic.jpg .

This is already fixed in Linus' current tree by this patch.

commit 8bf4b8a1083694d5aac292f92705ddd3aec29be6
tree a8bbf0bb32b7e286659eae12326c54671430560f
parent 67644726317a8274be4a3d0ef85b9ccebaa90304
author Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Wed, 05 Apr 2006 02:51:05 -0700
committer David S. Miller <davem@xxxxxxxxxxxxxxxxxxxx> Mon, 10 Apr 2006 12:25:22 -0700

[IPSEC]: Check x->encap before dereferencing it

We need to dereference x->encap before dereferencing it for encap_type.
If it's absent then the encap_type is zero.

Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

net/ipv4/xfrm4_input.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ipv4/xfrm4_input.c b/net/ipv4/xfrm4_input.c
index e1b8f4b..7a0b952 100644
--- a/net/ipv4/xfrm4_input.c
+++ b/net/ipv4/xfrm4_input.c
@@ -90,7 +90,7 @@ int xfrm4_rcv_encap(struct sk_buff *skb,
if (unlikely(x->km.state != XFRM_STATE_VALID))
goto drop_unlock;

- if (x->encap->encap_type != encap_type)
+ if ((x->encap ? x->encap->encap_type : 0) != encap_type)
goto drop_unlock;

if (x->props.replay_window && xfrm_replay_check(x, seq))