From: Pablo Neira Ayuso pablo@netfilter.org
commit 4e1860a3863707e8177329c006d10f9e37e097a8 upstream.
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: Florian Westphal fw@strlen.de --- This is already in the 5.y branches but 4.19 needs a minor tweak as ->fragoff member resides in xt sub-struct.
net/netfilter/nft_payload.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c index b1a9f330a51f..fd87216bc0a9 100644 --- a/net/netfilter/nft_payload.c +++ b/net/netfilter/nft_payload.c @@ -194,6 +194,9 @@ static int nft_payload_l4csum_offset(const struct nft_pktinfo *pkt, struct sk_buff *skb, unsigned int *l4csum_offset) { + if (pkt->xt.fragoff) + return -1; + switch (pkt->tprot) { case IPPROTO_TCP: *l4csum_offset = offsetof(struct tcphdr, check);
On Fri, Jan 28, 2022 at 12:38:21PM +0100, Florian Westphal wrote:
From: Pablo Neira Ayuso pablo@netfilter.org
commit 4e1860a3863707e8177329c006d10f9e37e097a8 upstream.
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: Florian Westphal fw@strlen.de
This is already in the 5.y branches but 4.19 needs a minor tweak as ->fragoff member resides in xt sub-struct.
Thanks for taking care of this -stable submission.
net/netfilter/nft_payload.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c index b1a9f330a51f..fd87216bc0a9 100644 --- a/net/netfilter/nft_payload.c +++ b/net/netfilter/nft_payload.c @@ -194,6 +194,9 @@ static int nft_payload_l4csum_offset(const struct nft_pktinfo *pkt, struct sk_buff *skb, unsigned int *l4csum_offset) {
- if (pkt->xt.fragoff)
return -1;
- switch (pkt->tprot) { case IPPROTO_TCP: *l4csum_offset = offsetof(struct tcphdr, check);
-- 2.34.1
On Fri, Jan 28, 2022 at 12:38:21PM +0100, Florian Westphal wrote:
From: Pablo Neira Ayuso pablo@netfilter.org
commit 4e1860a3863707e8177329c006d10f9e37e097a8 upstream.
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: Florian Westphal fw@strlen.de
This is already in the 5.y branches but 4.19 needs a minor tweak as ->fragoff member resides in xt sub-struct.
I don't see this commit in the 5.10 or 5.4 branches, am I missing something?
confused,
greg k-h
Greg KH gregkh@linuxfoundation.org wrote:
On Fri, Jan 28, 2022 at 12:38:21PM +0100, Florian Westphal wrote:
From: Pablo Neira Ayuso pablo@netfilter.org
commit 4e1860a3863707e8177329c006d10f9e37e097a8 upstream.
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: Florian Westphal fw@strlen.de
This is already in the 5.y branches but 4.19 needs a minor tweak as ->fragoff member resides in xt sub-struct.
I don't see this commit in the 5.10 or 5.4 branches, am I missing something?
Oh, indeed. Can you place this patch in 5.4 and 5.10 too?
Releases >= v5.14 should be covered given upstream commit works as-is on those.
Thanks, Florian
On Sat, Jan 29, 2022 at 01:04:44PM +0100, Florian Westphal wrote:
Greg KH gregkh@linuxfoundation.org wrote:
On Fri, Jan 28, 2022 at 12:38:21PM +0100, Florian Westphal wrote:
From: Pablo Neira Ayuso pablo@netfilter.org
commit 4e1860a3863707e8177329c006d10f9e37e097a8 upstream.
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: Florian Westphal fw@strlen.de
This is already in the 5.y branches but 4.19 needs a minor tweak as ->fragoff member resides in xt sub-struct.
I don't see this commit in the 5.10 or 5.4 branches, am I missing something?
Oh, indeed. Can you place this patch in 5.4 and 5.10 too?
Now done, and it was needed for 4.14.y, so I added it there too, thanks!
greg k-h
linux-stable-mirror@lists.linaro.org