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: [email protected]

Signed-off-by: Morten Brørup <[email protected]>
---
 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

Reply via email to