On Tue, Oct 27, 2026 at 02:14:40PM +0100, Maciej Fijalkowski wrote:
> On Tue, Oct 27, 2026 at 02:56:07PM +0200, Magnus Karlsson wrote:
> > On Tue, 27 Oct 2026 at 14:43, Eric Dumazet <[email protected]> wrote:
> > >
> > > Le mar. 27 oct. 2026 à 13:15, Magnus Karlsson
> > > <[email protected]> a écrit :
> > > >
> > > > That USO works for 64-bit systems is just pure luck. Currently, the
> > > > computation of the UDP segmentation header is performed using sizeof()
> > > > a pointer instead of the sizeof() the UDP header that the pointer
> > > > points to. Since the UDP header happens to be 8 bytes long and a
> > > > pointer is 8 bytes long on a 64-bit system, this works on all those
> > > > systems. But no such luck for anyone using a 32-bit system as 8 bytes
> > > > != 4 bytes. So fix this by using sizeof() the UDP header that the
> > > > pointer points to instead.
> > > >
> > > > This was found by an LLM while implementing something else that used 
> > > > USO.
> > > >
> > > > Fixes: c91a4f9feb67a199c2 ("add support for UDP Segmentation Offload")
> > >
> > > Missing prefix? This was really:
> > >
> > > Fixes: c91a4f9feb67 ("iavf: add support for UDP Segmentation Offload")
> > 
> > You are correct on both accounts/patches. Do not know why I missed this, 
> > sorry.
> > 
> > Do you want a v2 with this added?
> 
> Current policy is that you need to wait 24h with posting next revisions.
> Eric marked it as 'changes requested' so yes, you need a v2.
> 
> You can add my review tag as well, thanks for auditing intel drivers
> against this bug.

Also I believe currently we should not CC netdev on iwl submissions.
Przemek, Tony, correct me if I'm wrong.

> 
> MF
> 
> > 
> > > Other than this,
> > > Reviewed-by: Eric Dumazet <[email protected]>
> > >
> > > > Signed-off-by: Magnus Karlsson <[email protected]>
> > > > ---
> > > >  drivers/net/ethernet/intel/iavf/iavf_txrx.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c 
> > > > b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > > > index 8982cf75466f..2c290d7788d2 100644
> > > > --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > > > +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > > > @@ -1807,7 +1807,7 @@ static int iavf_tso(struct iavf_tx_buffer *first, 
> > > > u8 *hdr_len,
> > > >                 csum_replace_by_diff(&l4.udp->check,
> > > >                                      (__force __wsum)htonl(paylen));
> > > >                 /* compute length of UDP segmentation header */
> > > > -               *hdr_len = (u8)sizeof(l4.udp) + l4_offset;
> > > > +               *hdr_len = sizeof(*l4.udp) + l4_offset;
> > > >         } else {
> > > >                 csum_replace_by_diff(&l4.tcp->check,
> > > >                                      (__force __wsum)htonl(paylen));
> > > > --
> > > > 2.38.1
> > > >

Reply via email to