Re: [PATCH net v4 1/2] net: validate virtio checksum start after network header
From: David Ahern <dsahern@kernel.org>
Date: 2026-09-20 01:11:50
Also in:
lkml, virtualization
On 9/19/26 6:47 PM, Paulos Yibelo wrote:
__virtio_net_hdr_to_skb() rejects a CHECKSUM_PARTIAL start smaller than an
estimated minimum network-header length. The comparison currently uses the
offset from skb->data rather than the offset from skb_network_header().
For an AF_PACKET frame, skb->data can still point at the Ethernet header
while skb_network_header() points past nested link-layer headers. A
checksum start at the network header can therefore pass, then target byte
zero after those headers are removed.
This does not require a virtual-machine guest. A TUN device with
virtio-net header support can supply the same checksum metadata.
Keep the existing data-relative lower bound and also require checksum
start to follow the estimated minimum relative to skb_network_header().
Fixes: 49d14b54a527 ("net: test for not too small csum_start in virtio_net_hdr_to_skb()")
Reported-by: Paulos Yibelo <redacted>
Cc: stable@vger.kernel.org
Assisted-by: LLM
Signed-off-by: Paulos Yibelo <redacted>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
---
Changes in v4:
- State explicitly that a TUN device is sufficient and no guest is required,
as noted by Michael S. Tsirkin. No code changes.
Changes in v3:
- Keep the network-relative comparison on one line for readability, as
requested by David Ahern.
Changes in v2:
- Make nh_min_len an int and remove the casts, as suggested by Michael S.
Tsirkin.
include/linux/virtio_net.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)Reviewed-by: David Ahern <dsahern@kernel.org>