From: Florian Westphal <f...@strlen.de> Date: Tue, 1 Mar 2016 16:15:16 +0100
> When ipv6_find_hdr is used to find a fragment header > (caller specifies target NEXTHDR_FRAGMENT) we erronously return > -ENOENT for all fragments with nonzero offset. > > Before commit 9195bb8e381d, when target was specified, we did not > enter the exthdr walk loop as nexthdr == target so this used to work. > > Now we do (so we can skip empty route headers). When we then stumble upon > a frag with nonzero frag_off we must return -ENOENT ("header not found") > only if the caller did not specifically request NEXTHDR_FRAGMENT. > > This allows nfables exthdr expression to match ipv6 fragments, e.g. via > > nft add rule ip6 filter input frag frag-off gt 0 > > Fixes: 9195bb8e381d ("ipv6: improve ipv6_find_hdr() to skip empty routing > headers") > Signed-off-by: Florian Westphal <f...@strlen.de> Applied and queued up for -stable, thanks Florian.