2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-25 13:43:55 +08:00
linux-next/arch/x86/kvm
Sean Christopherson f958bd2314 KVM: x86: Fix potential put_fpu() w/o load_fpu() on MPX platform
Unlike most state managed by XSAVE, MPX is initialized to zero on INIT.
Because INITs are usually recognized in the context of a VCPU_RUN call,
kvm_vcpu_reset() puts the guest's FPU so that the FPU state is resident
in memory, zeros the MPX state, and reloads FPU state to hardware.  But,
in the unlikely event that an INIT is recognized during
kvm_arch_vcpu_ioctl_get_mpstate() via kvm_apic_accept_events(),
kvm_vcpu_reset() will call kvm_put_guest_fpu() without a preceding
kvm_load_guest_fpu() and corrupt the guest's FPU state (and possibly
userspace's FPU state as well).

Given that MPX is being removed from the kernel[*], fix the bug with the
simple-but-ugly approach of loading the guest's FPU during
KVM_GET_MP_STATE.

[*] See commit f240652b60 ("x86/mpx: Remove MPX APIs").

Fixes: f775b13eed ("x86,kvm: move qemu/guest FPU switching out to vcpu_run")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-01-08 18:16:01 +01:00
..
mmu KVM: x86: Fix some comment typos 2020-01-08 18:15:58 +01:00
vmx kvm: nVMX: Aesthetic cleanup of handle_vmread and handle_vmwrite 2020-01-08 18:16:00 +01:00
cpuid.c PPC KVM fix for 5.5 2019-12-22 13:18:15 +01:00
cpuid.h x86/cpufeatures: Combine word 11 and 12 into a new scattered features word 2019-06-20 12:38:44 +02:00
debugfs.c KVM: no need to check return value of debugfs_create functions 2019-08-05 12:55:49 +02:00
emulate.c KVM: X86: avoid unused setup_syscalls_segments call when SYSCALL check failed 2019-11-15 11:44:02 +01:00
hyperv.c KVM: X86: Move irrelevant declarations out of ioapic.h 2020-01-08 17:33:14 +01:00
hyperv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02:00
i8254.c kvm: x86: Add memcg accounting to KVM allocations 2019-02-20 22:48:30 +01:00
i8254.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i8259.c kvm: x86: Add memcg accounting to KVM allocations 2019-02-20 22:48:30 +01:00
ioapic.c KVM: X86: Convert the last users of "shorthand = 0" to use macros 2020-01-08 17:33:16 +01:00
ioapic.h KVM: X86: Move irrelevant declarations out of ioapic.h 2020-01-08 17:33:14 +01:00
irq_comm.c KVM: X86: Convert the last users of "shorthand = 0" to use macros 2020-01-08 17:33:16 +01:00
irq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 320 2019-06-05 17:37:05 +02:00
irq.h KVM: X86: Move irrelevant declarations out of ioapic.h 2020-01-08 17:33:14 +01:00
Kconfig kvm: x86: add host poll control msrs 2019-06-18 11:43:46 +02:00
kvm_cache_regs.h KVM: x86: Fold decache_cr3() into cache_reg() 2019-10-22 13:34:16 +02:00
lapic.c KVM: X86: Fix callers of kvm_apic_match_dest() to use correct macros 2020-01-08 17:33:15 +01:00
lapic.h KVM: X86: Fix callers of kvm_apic_match_dest() to use correct macros 2020-01-08 17:33:15 +01:00
Makefile KVM: x86: create mmu/ subdirectory 2019-11-21 12:03:50 +01:00
mmu_audit.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02:00
mmu.h kvm: x86: mmu: Recovery of shattered NX large pages 2019-11-04 20:26:00 +01:00
mmutrace.h KVM: x86/mmu: Explicitly track only a single invalid mmu generation 2019-09-24 14:36:00 +02:00
mtrr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02:00
pmu_amd.c KVM: x86/vPMU: Add lazy mechanism to release perf_event per vPMC 2019-11-15 11:44:10 +01:00
pmu.c Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-11-26 15:42:43 -08:00
pmu.h KVM: VMX: Add helper to check reserved bits in IA32_PERF_GLOBAL_CTRL 2019-11-15 11:44:13 +01:00
svm.c KVM: X86: Drop KVM_APIC_SHORT_MASK and KVM_APIC_DEST_MASK 2020-01-08 17:33:15 +01:00
trace.h KVM: nVMX: trace nested VM-Enter failures detected by H/W 2019-09-11 17:34:17 +02:00
tss.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
x86.c KVM: x86: Fix potential put_fpu() w/o load_fpu() on MPX platform 2020-01-08 18:16:01 +01:00
x86.h KVM: x86: Prevent set vCPU into INIT/SIPI_RECEIVED state when INIT are latched 2019-11-15 11:44:00 +01:00