diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index c9c78c2..5bb44eb 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -593,6 +593,11 @@ void nf_ct_frag6_output(unsigned int hooknum, struct sk_buff *skb,
 {
 	struct sk_buff *s, *s2;
 
+	nf_conntrack_get_reasm(skb);
+
+	NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, skb, in, out, okfn,
+		       NF_IP6_PRI_CONNTRACK_DEFRAG + 1);
+
 	for (s = NFCT_FRAG6_CB(skb)->orig; s;) {
 		nf_conntrack_put_reasm(s->nfct_reasm);
 		nf_conntrack_get_reasm(skb);
@@ -601,8 +606,8 @@ void nf_ct_frag6_output(unsigned int hooknum, struct sk_buff *skb,
 		s2 = s->next;
 		s->next = NULL;
 
-		NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, s, in, out, okfn,
-			       NF_IP6_PRI_CONNTRACK_DEFRAG + 1);
+		nf_conntrack_put_reasm(s);
+
 		s = s2;
 	}
 	nf_conntrack_put_reasm(skb);
