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.
