In the Linux kernel, the following vulnerability has been resolved:
virtio-pci: Fix result size returned for the admin command completion
The result size returned by virtiopciadmindevpartsget() is 8 bytes larger than the actual result data size. This occurs because the resultsgsize field of the command is filled with the result length from virtqueueget_buf(), which includes both the data size and an additional 8 bytes of status.
This oversized result size causes two issues: 1. The state transferred to the destination includes 8 bytes of extra data at the end. 2. The allocated buffer in the kernel may be smaller than the returned size, leading to failures when reading beyond the allocated size.
The commit fixes this by subtracting the status size from the result of virtqueuegetbuf().
This fix has been tested through live migrations with virtio-net, virtio-net-transitional, and virtio-blk devices.