Back

MEDIUM

vsock/virtio: fix empty payload in tap skb for non-linear buffers

Published May 28, 2026

Description

For non-linear skbs, virtio_transport_build_skb() goes through virtio_transport_copy_nonlinear_skb() to copy the original payload in the new skb to be delivered to the vsockmon tap device. This manually initializes an iov_iter but does not set iov_iter.count. Since the iov_iter is zero-initialized, the copy length is zero and no payload is actually copied to the monitor interface, leaving data un-initialized.

Fix this by removing the linear vs non-linear split and using skb_copy_datagram_iter() with iov_iter_kvec() for all cases, as vhost-vsock already does. This handles both linear and non-linear skbs, properly initializes the iov_iter, and removes the now unused virtio_transport_copy_nonlinear_skb().

While touching this code, let's also check the return value of skb_copy_datagram_iter(), even though it's unlikely to fail.

Affected products

Remediation

No remediation recorded yet.

Weaknesses (2)

References (10)

Change history (0)

No recorded changes yet.

Sources
CVE.org / MITRE
Status PUBLISHED
Assigner Linux
Published May 28, 2026
Updated Jun 14, 2026
Reserved May 13, 2026
NVD
Status Analyzed
Modified Jun 17, 2026
Red Hat
Severity Moderate
Public date May 28, 2026
ENISA EUVD
Assigner Linux
Published May 28, 2026
Updated Jun 14, 2026
Exploited since n/a
EUVD-2026-32834