diff options
author | Patrick McHardy <kaber@trash.net> | 2005-08-20 17:40:41 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-08-20 17:40:41 -0700 |
commit | 7e71af49d46e4c25f17a2c8f53d62ffd14f01007 (patch) | |
tree | a7724eb37fff88f707ebd3e59cc86b8e2b582f4e /net | |
parent | f93592ff4fa4a55aa7640d435fa93338e190294d (diff) | |
download | linux-3.10-7e71af49d46e4c25f17a2c8f53d62ffd14f01007.tar.gz linux-3.10-7e71af49d46e4c25f17a2c8f53d62ffd14f01007.tar.bz2 linux-3.10-7e71af49d46e4c25f17a2c8f53d62ffd14f01007.zip |
[NETFILTER]: Fix HW checksum handling in TCPMSS target
Most importantly, remove bogus BUG() in receive path.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/netfilter/ipt_TCPMSS.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/netfilter/ipt_TCPMSS.c b/net/ipv4/netfilter/ipt_TCPMSS.c index 1049050b2bf..7b84a254440 100644 --- a/net/ipv4/netfilter/ipt_TCPMSS.c +++ b/net/ipv4/netfilter/ipt_TCPMSS.c @@ -61,6 +61,10 @@ ipt_tcpmss_target(struct sk_buff **pskb, if (!skb_ip_make_writable(pskb, (*pskb)->len)) return NF_DROP; + if ((*pskb)->ip_summed == CHECKSUM_HW && + skb_checksum_help(*pskb, out == NULL)) + return NF_DROP; + iph = (*pskb)->nh.iph; tcplen = (*pskb)->len - iph->ihl*4; @@ -186,9 +190,6 @@ ipt_tcpmss_target(struct sk_buff **pskb, newmss); retmodified: - /* We never hw checksum SYN packets. */ - BUG_ON((*pskb)->ip_summed == CHECKSUM_HW); - (*pskb)->nfcache |= NFC_UNKNOWN | NFC_ALTERED; return IPT_CONTINUE; } |