summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorKameron Carr <kameroncarr@linux.microsoft.com>2026-10-19 16:09:46 -0700
committerWei Liu <wei.liu@kernel.org>2026-10-21 00:00:29 -0700
commit1d287c17cc5bfd6386fe0770999be410b248d021 (patch)
treef44f3e2ef70040ab442b176ddd061792c15aa883 /include/linux
parentc03c1a14507dfaf8b856c2608f9ac216021fc222 (diff)
Drivers: hv: vmbus: Bounds check the shared ring buffer indices
In a CoCo VM the host is untrusted. Since the VMBus ring buffer read and write indices live in shared memory, the guest has to treat both as potentially malicious. hv_ringbuffer_write() copies into the ring at write_index with no bounds checking, so the host can make the guest write packet data at any offset up to 4 GiB past the start of the ring buffer. read_index matters too: the available space derived from both indices is the only bound on how much is copied, and an out-of-range index can make it far larger than the ring. The fix is to validate both indices before use and to use the validated snapshot instead of re-accessing. For invalid indices, hv_ringbuffer_write() logs and returns -EIO. One re-read of write_index is left unchecked in this patch: hv_get_ring_bufferindices() fetches it again for the prev_indices trailer. The value is only returned to the host and is not used as an offset or length for indexing. Since this is not a security issue, it is addressed later in the series. Open-coding the bytes available arithmetic keeps the fix free of prerequisites; a later patch refactors it into a helper function. Fixes: 3e7ee4902fe6 ("Staging: hv: add the Hyper-V virtual bus") Cc: stable@vger.kernel.org # 5.15.x Reviewed-by: Michael Kelley <mhklinux@outlook.com> Signed-off-by: Kameron Carr <kameroncarr@linux.microsoft.com> Signed-off-by: Wei Liu <wei.liu@kernel.org>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions