diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-01-05 18:09:57 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-01-27 13:03:51 +0300 |
commit | 500193142a20346e7be674a59b674e4c5e8dc1ae (patch) | |
tree | 4312707859d93526588c90e706b63da8168c2cce | |
parent | 2db60bb564056e87a9985ce866f250b7847efd81 (diff) | |
download | linux-500193142a20346e7be674a59b674e4c5e8dc1ae.tar.xz |
netfilter: nft_payload: do not update layer 4 checksum when mangling fragments
[ Upstream commit 4e1860a3863707e8177329c006d10f9e37e097a8 ]
IP fragments do not come with the transport header, hence skip bogus
layer 4 checksum updates.
Fixes: 1814096980bb ("netfilter: nft_payload: layer 4 checksum adjustment for pseudoheader fields")
Reported-and-tested-by: Steffen Weinreich <steve@weinreich.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r-- | net/netfilter/nft_payload.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c index a44b14f6c0dc..132875cd7fff 100644 --- a/net/netfilter/nft_payload.c +++ b/net/netfilter/nft_payload.c @@ -502,6 +502,9 @@ static int nft_payload_l4csum_offset(const struct nft_pktinfo *pkt, struct sk_buff *skb, unsigned int *l4csum_offset) { + if (pkt->fragoff) + return -1; + switch (pkt->tprot) { case IPPROTO_TCP: *l4csum_offset = offsetof(struct tcphdr, check); |