@@ -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);