[PATCH] net/virtio: fix checksum offset check in Rx path
Maxime Coquelin
maxime.coquelin at redhat.com
Tue Oct 20 11:38:20 CEST 2026
On Mon, Oct 19, 2026 at 3:57 PM Morten Brørup <mb at smartsharesystems.com> wrote:
>
> Writing the checksum in the packet needs room for 2 bytes, not 1 byte.
>
> Fixes: 96cb6711939e ("net/virtio: support Rx checksum offload")
> Fixes: 0eaf7fc2fe8e ("net/virtio: separate AVX Rx/Tx")
> Cc: stable at dpdk.org
>
> Signed-off-by: Morten Brørup <mb at smartsharesystems.com>
> ---
> drivers/net/virtio/virtio_rxtx.c | 2 +-
> drivers/net/virtio/virtio_rxtx_packed.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
> index edecd2011f..1afb68bc69 100644
> --- a/drivers/net/virtio/virtio_rxtx.c
> +++ b/drivers/net/virtio/virtio_rxtx.c
> @@ -955,7 +955,7 @@ virtio_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr *hdr)
> if (likely(csum != 0xffff))
> csum = ~csum;
> off = hdr->csum_offset + hdr->csum_start;
> - if (rte_pktmbuf_data_len(m) >= off + 1)
> + if (rte_pktmbuf_data_len(m) >= off + sizeof(uint16_t))
> *rte_pktmbuf_mtod_offset(m, uint16_t *,
> off) = csum;
> }
> diff --git a/drivers/net/virtio/virtio_rxtx_packed.h b/drivers/net/virtio/virtio_rxtx_packed.h
> index f7cc60bb51..6501ede3f0 100644
> --- a/drivers/net/virtio/virtio_rxtx_packed.h
> +++ b/drivers/net/virtio/virtio_rxtx_packed.h
> @@ -185,7 +185,7 @@ virtio_vec_rx_offload(struct rte_mbuf *m, struct virtio_net_hdr *hdr)
> if (likely(csum != 0xffff))
> csum = ~csum;
> off = hdr->csum_offset + hdr->csum_start;
> - if (rte_pktmbuf_data_len(m) >= off + 1)
> + if (rte_pktmbuf_data_len(m) >= off + sizeof(uint16_t))
> *rte_pktmbuf_mtod_offset(m, uint16_t *,
> off) = csum;
> }
> --
> 2.43.0
>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
More information about the dev
mailing list