KernelScan.io

HIGH Introduced in 5.7

vhost VringNum OOB

CVE-2026-97994

CVSS 7.1 / 10.0 KernelScan AI

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: vhost/vdpa: reject VRING_NUM larger than device max vhost_vring_set_num() accepts any non-zero power-of-two queue size that fits in 16 bits. vhost-vdpa then passes that value to set_vq_num() without comparing it with get_vq_num_max(). A process with access to /dev/vhost-vdpa-* can therefore configure a queue larger than the device advertises. With vdpa_sim, the worker can walk descriptors beyond the mapped descriptor ring. KASAN reports a 16-byte out-of-bounds read, corresponding to one vring_desc, in the vringh IOTLB path: BUG: KASAN: out-of-bounds in _copy_from_iter Read of size 16 copy_from_iotlb copydesc_iotlb vringh_getdesc_iotlb vdpasim_net_work Cache get_vq_num_max() immediately after reset. Some backends derive it from writable queue-size state, so querying it after SET_NUM may return the current size instead of the device capability. Invalidate the cached value before reset so a failed reset leaves SET_NUM disabled. For VHOST_SET_VRING_NUM, copy the complete vring state once and use the same index and size for validation, vq->num, and set_vq_num(). This ensures that validation and use operate on the same copied values.

02

Engine v0.6.0

Risk summary

A local process with access to a vhost-vdpa character device can set a virtqueue size larger than the hardware or simulator supports, causing the kernel to read descriptor entries beyond the mapped ring buffer. This results in an out-of-bounds read from kernel heap and can crash the kernel when the worker processes garbage descriptors. Products using vDPA for virtualization or container networking are primarily affected.

Affecteddrivers/vhost/vdpa.c (vhost-vdpa)

Vulnerability analysis

The vhost-vdpa driver accepts a virtqueue size from userspace without checking it against the maximum size the underlying device actually supports. A process with access to the vhost-vdpa character device can therefore configure a queue larger than the device's real ring buffer, causing the kernel's virtio ring handler to read descriptor entries past the end of the mapped ring—a 16-byte out-of-bounds read from kernel heap per extra descriptor accessed. The fix caches the device's advertised maximum queue size immediately after reset and rejects any request that exceeds it, also ensuring the validated size is the same value passed to the backend. The vulnerable path is reachable locally by any process that can open the vhost-vdpa device node, which in practice means virtualization management processes such as QEMU or container runtimes granted access to the device.

03

BranchIntroducedFixed inPatch commit
6.125.76.12.1111d09201d81b7
6.185.76.18.5368232102f20f
6.65.76.6.1584875c65ca537
7.25.77.2.759522639a7d7
mainline5.77.3ccb1dc7c527f
cip/6.125.76.12.111-cip321d09201d81b7

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)