netfilter: ipv6: nf_defrag: Kill frag queue on RFC2460 failure
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Wed, 31 Jan 2018 11:50:01 +0000 (04:50 -0700)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 2 Feb 2018 11:45:17 +0000 (12:45 +0100)
Failures were seen in ICMPv6 fragmentation timeout tests if they were
run after the RFC2460 failure tests. Kernel was not sending out the
ICMPv6 fragment reassembly time exceeded packet after the fragmentation
reassembly timeout of 1 minute had elapsed.

This happened because the frag queue was not released if an error in
IPv6 fragmentation header was detected by RFC2460.

Fixes: 83f1999caeb1 ("netfilter: ipv6: nf_defrag: Pass on packets to stack per RFC2460")
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv6/netfilter/nf_conntrack_reasm.c

index ce53dcfda88a16db7d7c8aaf67054839fa42bb2f..b84ce3e6d728a5b8af65b91faf42ec640ff03910 100644 (file)
@@ -264,6 +264,7 @@ static int nf_ct_frag6_queue(struct frag_queue *fq, struct sk_buff *skb,
                         * this case. -DaveM
                         */
                        pr_debug("end of fragment not rounded to 8 bytes.\n");
+                       inet_frag_kill(&fq->q, &nf_frags);
                        return -EPROTO;
                }
                if (end > fq->q.len) {