Subject: Re: [PATCH] IPv6:Send an ICMPv6 "Fragment Reassembly Timeout" message when enabling connection track

From: Patrick McHardy <[email-masked]>
Date: Wed, 03 Feb 2010 17:42:02 +0100

Shan Wei wrote:
> @@ -349,17 +378,20 @@ static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
>  	else
>  		fq->q.fragments = skb;
>  
> -	skb->dev = NULL;
>  	fq->q.stamp = skb->tstamp;
>  	fq->q.meat += skb->len;
>  	atomic_add(skb->truesize, &nf_init_frags.mem);
>  
>  	/* The first fragment.
>  	 * nhoffset is obtained from the first fragment, of course.
> +	 * Reserve dev for sending an ICMP "Fragment Reassembly Timeout"
> +	 * message.
>  	 */
>  	if (offset == 0) {
>  		fq->nhoffset = nhoff;
>  		fq->q.last_in |= INET_FRAG_FIRST_IN;
> +	} else {
> +		skb->dev = NULL;
>  	}

We need to store the iif and perform a lookup later just as in IPv4
because the device is not reference counted and might disappear while
the fragments are queued.

Besides this, the patch looks good.