diff options
| author | Enrico Zanda <enrico.zanda@arm.com> | 2026-07-08 16:22:42 +0100 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2026-07-21 13:25:34 +0200 |
| commit | 3c0d10f233f19153f81fef685b5c6716776a5af3 (patch) | |
| tree | 2b396dc7e09c143ed308d3d376196ddb8fb3771f /include/linux/timerqueue.h | |
| parent | 91957b89da995607cb654b1f9a3c126ddbaee10f (diff) | |
vhost-net: fix TX stall when vhost owns virtio-net header
When vhost owns the virtio-net header, i.e. when
VHOST_NET_F_VIRTIO_NET_HDR is negotiated, sock_hlen is 0,
meaning that no header will be forwarded to the TAP device.
In the current vhost_net_build_xdp() implementation,
when sock_hlen == 0, the gso pointer can point at the start of the
Ethernet frame instead of a virtio-net header.
This results in a wrong interpretation of the destination MAC address
bytes as struct virtio_net_hdr fields.
This can, for some MAC addresses, trigger -EINVAL and return early
before the TX descriptor is completed, which can stall vhost-net TX.
Before 97b2409f28e0, the gso pointer was set to the zeroed padding area,
using it as a synthetic virtio-net header. Restore that behavior.
Fixes: 97b2409f28e0 ("vhost-net: reduce one userspace copy when building XDP buff")
Signed-off-by: Enrico Zanda <enrico.zanda@arm.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Link: https://patch.msgid.link/20260708152242.2268848-1-enrico.zanda@arm.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions
