GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel vhost: missing task reference lets vhost_task_wake() touch a freed task_struct

CVSS 7.8CVE-2025-40024Kernel, userspace & hypervisorcurated

Impact

vhost_task_create() stored a pointer to the worker task_struct without taking a reference. If that task exited early on a signal, its task_struct was freed while vhost still held the pointer, and a later vhost_task_wake() dereferenced freed memory. This is the kernel-side worker behind vhost-net and vhost-scsi, so it is in the path of every KVM guest on a node that does virtio offload - the common shape for GPU clouds that hand out whole or partitioned GPUs inside VMs. A use-after-free in host kernel context is a host-integrity problem: at minimum it panics the hypervisor and takes every co-resident VM with it.

Who can reach it

Local on the host: a process that can create vhost workers (the VMM, typically QEMU with access to /dev/vhost-net or /dev/vhost-scsi) and get the worker task killed by a signal during setup. Authentication is required - this is not reachable from a guest or from the network per the record.

What to do

Update to a stable kernel that holds a reference on the task for the lifetime of struct vhost_task (commits in the record) and reboot the hypervisor hosts. Live migration of guests off each host first keeps the window cheap; there is no module reload path for this, since vhost is in use by running VMs.

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.