lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0379/1039] netfilter: nft_payload: do not update layer 4 checksum when mangling fragments
    Date
    From: Pablo Neira Ayuso <pablo@netfilter.org>

    [ 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>
    ---
    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 bd689938a2e0c..58e96a0fe0b4c 100644
    --- a/net/netfilter/nft_payload.c
    +++ b/net/netfilter/nft_payload.c
    @@ -546,6 +546,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);
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 23:09    [W:4.058 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site