From: Colin Date: Mon, 26 May 2008 16:04:43 +0000 (+0800) Subject: [IPV6] TUNNEL6: Fix incoming packet length check for inter-protocol tunnel. X-Git-Tag: v2.6.26-rc5~1^2~12^2~9 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82836372311a5cbf9cc5f4f47f9b56cb9edfe90d;p=linux-2.6 [IPV6] TUNNEL6: Fix incoming packet length check for inter-protocol tunnel. I discover a strange behavior in [ipv4 in ipv6] tunnel. When IPv6 tunnel payload is less than 40(0x28), packet can be sent to network, received in physical interface, but not seen in IP tunnel interface. No counter increase in tunnel interface. Signed-off-by: YOSHIFUJI Hideaki --- diff --git a/net/ipv6/tunnel6.c b/net/ipv6/tunnel6.c index 6323921b40..669f280989 100644 --- a/net/ipv6/tunnel6.c +++ b/net/ipv6/tunnel6.c @@ -109,7 +109,7 @@ static int tunnel46_rcv(struct sk_buff *skb) { struct xfrm6_tunnel *handler; - if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) + if (!pskb_may_pull(skb, sizeof(struct iphdr))) goto drop; for (handler = tunnel46_handlers; handler; handler = handler->next)