CVE-2026-90097: Drivers: hv: vmbus: Skip VMBus module cleanup for non-nested root partition
In the Linux kernel, the following vulnerability has been resolved:
Drivers: hv: vmbus: Skip VMBus module cleanup for non-nested root partition
The VMBus module initialization function, hvacpiinit(), currently does nothing when running in the root partition and root is not nested in another VM. But the initialization function reports success, so the VMBus module is indeed loaded. VMBus functionality is not actually needed, but the VMBus module must be loaded so that hvvmbusexists() can answer correctly. Furthermore, the mshvroot dependency on the VMBus module is needed as described in the commit message for 840b740a35bf ("mshv: Add conditional VMBus dependency").
Loading the VMBus module without actually initializing it causes failures if the module should later be unloaded. The module unload code tries to clean up things that were never initialized, resulting in memory faults and a panic.
Fix this by having VMBus module exit function perform the same check for non-nested root partition, and do nothing in such a case, just like hvacpiinit().
In the long run, the code that manages the Hyper-V provided SynIC should be refactored to better coordinate the requirements of root partition scenarios and normal VM scenarios, and to hopefully remove the hvvmbusexists() dependnecy between mshvroot and VMBus modules. Preventing the current unload failure scenario is an expediency until such a refactoring is done.
Event History
Frequently Asked Questions
Which systems are exposed to the unload failure?
The issue affects Linux systems running in the Hyper-V root partition when that root partition is not nested inside another VM, and where the VMBus module is loaded and later unloaded.
What action triggers the panic?
The failure occurs when the VMBus module is unloaded after having loaded without initialization in a non-nested root partition. Its cleanup path attempts to release resources that were never initialized, which can cause memory faults and a kernel panic.
Is VMBus functionality required for the affected setup?
VMBus functionality is not needed in the non-nested root-partition case described, but the module may still be loaded so hv_vmbus_exists() reports correctly and to satisfy the mshv_root dependency.
What does the fix change?
The VMBus module exit path now performs the same non-nested root-partition check as initialization and skips cleanup in that case.