From: Jakub Kicinski <kuba@kernel.org>
To: Mohammad Heib <mheib@redhat.com>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH net] net: Clear old fragment checksum value in napi_get_frags
Date: Mon, 24 Feb 2025 14:34:30 -0800 [thread overview]
Message-ID: <20250224143430.5fa61a68@kernel.org> (raw)
In-Reply-To: <20250221161405.1921296-1-mheib@redhat.com>
On Fri, 21 Feb 2025 18:14:05 +0200 Mohammad Heib wrote:
> In certain cases, napi_get_frags() returns an skb that points to an old
> received fragment, This skb may have its skb->ip_summed, csum, and other
> fields set from previous fragment handling.
>
> Some network drivers set skb->ip_summed to either CHECKSUM_COMPLETE or
> CHECKSUM_UNNECESSARY when getting skb from napi_get_frags(), while
> others only set skb->ip_summed when RX checksum offload is enabled on
> the device, and do not set any value for skb->ip_summed when hardware
> checksum offload is disabled, assuming that the skb->ip_summed
> initiated to zero by napi_get_frags.
>
> This inconsistency sometimes leads to checksum validation issues in the
> upper layers of the network stack.
>
> To resolve this, this patch clears the skb->ip_summed value for each skb
> returned by napi_get_frags(), ensuring that the caller is responsible
> for setting the correct checksum status. This eliminates potential
> checksum validation issues caused by improper handling of
> skb->ip_summed.
Could you give an example of a driver where this may happen?
Otherwise the commit message reads too hypothetical.
> Fixes: 76620aafd66f ("gro: New frags interface to avoid copying shinfo")
> Signed-off-by: Mohammad Heib <mheib@redhat.com>
> ---
> net/core/gro.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/core/gro.c b/net/core/gro.c
> index 78b320b63174..e98007d8f26f 100644
> --- a/net/core/gro.c
> +++ b/net/core/gro.c
> @@ -675,6 +675,8 @@ struct sk_buff *napi_get_frags(struct napi_struct *napi)
> napi->skb = skb;
> skb_mark_napi_id(skb, napi);
> }
> + } else {
> + skb->ip_summed = CHECKSUM_NONE;
> }
> return skb;
> }
I think this belongs in napi_reuse_skb(), doesn't it ?
Please make sure you CC maintainers on v2, especially Eric.
--
pw-bot: cr
next prev parent reply other threads:[~2025-02-24 22:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-21 16:14 [PATCH net] net: Clear old fragment checksum value in napi_get_frags Mohammad Heib
2025-02-24 22:34 ` Jakub Kicinski [this message]
2025-02-25 11:50 ` Mohammad Heib
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250224143430.5fa61a68@kernel.org \
--to=kuba@kernel.org \
--cc=mheib@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.