Hi,
This patch fixes a soft lockup when encapsulated packets reach
ip6ip6_rcv() and there is no tunnel associated with it. The error
path returns a positive value (1) which will trigger ip6_input to
re-submit the packet for processing. As no skb parameters have been
changed, ip6ip6_rcv() will continue to be called on the exact same
context. Also, ip6ip6_rcv() should free the skb when discarding it.
Signed-off-by: Hugo Santos <[EMAIL PROTECTED]>
--- linux-2.6.16/net/ipv6/ip6_tunnel.c.orig 2006-03-23 16:19:19.000000000
+0000
+++ linux-2.6.16/net/ipv6/ip6_tunnel.c 2006-03-23 16:32:07.000000000 +0000
@@ -557,7 +557,8 @@ ip6ip6_rcv(struct sk_buff **pskb)
read_unlock(&ip6ip6_lock);
icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_ADDR_UNREACH, 0, skb->dev);
discard:
- return 1;
+ kfree_skb(skb);
+ return -1;
}
static inline struct ipv6_txoptions *create_tel(__u8 encap_limit)