net: ipv6: send pkttoobig immediately if orig frag size > mtu
authorFlorian Westphal <fw@strlen.de>
Sun, 4 May 2014 22:03:34 +0000 (00:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 May 2014 20:20:37 +0000 (13:20 -0700)
commit8eb6ded767268d02e88155b4ced544cebe2ba495
treedd4e158d5ddb438e45ffe04794cf9e5d632645e2
parent1f68835d92bbfe3a14d369d3dce123c94521b105
net: ipv6: send pkttoobig immediately if orig frag size > mtu

[ Upstream commit 418a31561d594a2b636c1e2fa94ecd9e1245abb1 ]

If conntrack defragments incoming ipv6 frags it stores largest original
frag size in ip6cb and sets ->local_df.

We must thus first test the largest original frag size vs. mtu, and not
vice versa.

Without this patch PKTTOOBIG is still generated in ip6_fragment() later
in the stack, but

1) IPSTATS_MIB_INTOOBIGERRORS won't increment
2) packet did (needlessly) traverse netfilter postrouting hook.

Fixes: fe6cc55f3a9 ("net: ip, ipv6: handle gso skbs in forwarding path")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv6/ip6_output.c