From: Florian Westphal <[email protected]>
Date: Mon, 13 Mar 2017 16:24:28 +0100

> ip6_fragment, in case skb has a fraglist, checks if the
> skb is cloned.  If it is, it will move to the 'slow path' and allocates
> new skbs for each fragment.
> 
> However, right before entering the slowpath loop, it updates the
> nexthdr value of the last ipv6 extension header to NEXTHDR_FRAGMENT,
> to account for the fragment header that will be inserted in the new
> ipv6-fragment skbs.
> 
> In case original skb is cloned this munges nexthdr value of another
> skb.  Avoid this by doing the nexthdr update for each of the new fragment
> skbs separately.
> 
> This was observed with tcpdump on a bridge device where netfilter ipv6
> reassembly is active:  tcpdump shows malformed fragment headers as
> the l4 header (icmpv6, tcp, etc). is decoded as a fragment header.
> 
> Cc: Hannes Frederic Sowa <[email protected]>
> Reported-by: Andreas Karis <[email protected]>
> Signed-off-by: Florian Westphal <[email protected]>

Great catch Florian, applied, thanks.

Reply via email to