CVE-2024-46864

x86/hyperv: fix kexec crash due to VP assist page corruption

published September 27, 2024

CVSS
—
EPSS
0%
Percentile
10.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

x86/hyperv: fix kexec crash due to VP assist page corruption

commit 9636be85cc5b ("x86/hyperv: Fix hyperv_pcpu_input_arg handling when

CPUs go online/offline") introduces a new cpuhp state for hyperv

initialization.

cpuhp_setup_state() returns the state number if state is

CPUHP_AP_ONLINE_DYN or CPUHP_BP_PREPARE_DYN and 0 for all other states.

For the hyperv case, since a new cpuhp state was introduced it would

return 0. However, in hv_machine_shutdown(), the cpuhp_remove_state() call

is conditioned upon "hyperv_init_cpuhp > 0". This will never be true and

so hv_cpu_die() won't be called on all CPUs. This means the VP assist page

won't be reset. When the kexec kernel tries to setup the VP assist page

again, the hypervisor corrupts the memory region of the old VP assist page

causing a panic in case the kexec kernel is using that memory elsewhere.

This was originally fixed in commit dfe94d4086e4 ("x86/hyperv: Fix kexec

panic/hang issues").

Get rid of hyperv_init_cpuhp entirely since we are no longer using a

dynamic cpuhp state and use CPUHP_AP_HYPERV_ONLINE directly with

cpuhp_remove_state().

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00206 · 10.1th percentile
Published
2024-09-27T12:42Z
EPSS history
Timeline
  • 27 SEP 12:42Z
    x86/hyperv: fix kexec crash due to VP assist page corruption
    cvelistv5