diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
index f1a8217a42452ccfb9c6c4fdebf4349aaa8d7a38..a8269ef01e60dc94d92f9fd93cc1bae93507fe33 100644
--- a/net/ipv6/ip6_input.c
+++ b/net/ipv6/ip6_input.c
@@ -80,8 +80,10 @@ static void ip6_sublist_rcv_finish(struct list_head *head)
 {
 	struct sk_buff *skb, *next;
 
-	list_for_each_entry_safe(skb, next, head, list)
+	list_for_each_entry_safe(skb, next, head, list) {
+		skb_list_del_init(skb);
 		dst_input(skb);
+	}
 }
 
 static void ip6_list_rcv_finish(struct net *net, struct sock *sk,