Subject: [PATCH 6/6] IPv6: Fix infinite loop if no matching IPv6 tunnel found

From: Ville Nuorvala <[email-masked]>
Date: Thu, 02 Nov 2006 13:39:19 +0200

>>From d9ecea2b1d88bc8702f70fbbca7cde2afb8312ee Mon Sep 17 00:00:00 2001
From: Ville Nuorvala <[email-masked]>
Date: Thu, 2 Nov 2006 13:07:35 +0200
Subject: [PATCH 6/6] IPv6: Fix infinite loop if no matching IPv6 tunnel found

If no matching IPv6 tunnel was found ip6ip6_rcv() would cause
ip6_input_finish() to resubmit the same skb to ip6ip6_rcv().

Many thanks to Tero Kauppinen at Ericsson for reporting this issue.

Signed-off-by: Ville Nuorvala <[email-masked]>
---
 net/ipv6/ip6_tunnel.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index 4f64ed7..603ed0d 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -565,11 +565,11 @@ ip6ip6_rcv(struct sk_buff *skb)
 		return 0;
 	}
 	read_unlock(&ip6ip6_lock);
-	return 1;
-
+	icmpv6_send(skb, ICMPV6_DEST_UNREACH,
+		    ICMPV6_ADDR_UNREACH, 0, skb->dev);
 discard:
 	kfree_skb(skb);
-	return 0;
+	return -1;
 }
 
 struct ipv6_tel_txoption {
-- 
1.4.3.2