linux/arch/x86/kvm
Vitaly Kuznetsov b6a0653ae2 KVM: nVMX: properly handle errors in nested_vmx_handle_enlightened_vmptrld()
nested_vmx_handle_enlightened_vmptrld() fails in two cases:
- when we fail to kvm_vcpu_map() the supplied GPA
- when revision_id is incorrect.
Genuine Hyper-V raises #UD in the former case (at least with *some*
incorrect GPAs) and does VMfailInvalid() in the later. KVM doesn't do
anything so L1 just gets stuck retrying the same faulty VMLAUNCH.

nested_vmx_handle_enlightened_vmptrld() has two call sites:
nested_vmx_run() and nested_get_vmcs12_pages(). The former needs to queue
do much: the failure there happens after migration when L2 was running (and
L1 did something weird like wrote to VP assist page from a different vCPU),
just kill L1 with KVM_EXIT_INTERNAL_ERROR.

Reported-by: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
[Squash kbuild autopatch. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-03-16 18:19:30 +01:00
..
mmu KVM: x86: rename set_cr3 callback and related flags to load_mmu_pgd 2020-03-16 17:58:52 +01:00
vmx KVM: nVMX: properly handle errors in nested_vmx_handle_enlightened_vmptrld() 2020-03-16 18:19:30 +01:00
cpuid.c KVM: x86: Refactor kvm_cpuid() param that controls out-of-range logic 2020-03-16 17:58:50 +01:00
cpuid.h KVM: x86: Refactor kvm_cpuid() param that controls out-of-range logic 2020-03-16 17:58:50 +01: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: Refactor kvm_cpuid() param that controls out-of-range logic 2020-03-16 17:58:50 +01:00
hyperv.c kvm: x86: hyperv: Use APICv update request interface 2020-02-05 15:17:43 +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: Fix print format and coding style 2020-03-16 17:57:08 +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: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks 2020-01-27 19:59:37 +01:00
ioapic.c kvm: ioapic: Lazy update IOAPIC EOI 2020-02-05 15:17:44 +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: don't notify userspace IOAPIC on edge-triggered interrupt EOI 2020-02-21 18:04:57 +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: VMX: Allow KVM_INTEL when building for Centaur and/or Zhaoxin CPUs 2020-01-13 19:35:33 +01:00
kvm_cache_regs.h KVM: x86: Fold decache_cr3() into cache_reg() 2019-10-22 13:34:16 +02:00
kvm_emulate.h KVM: x86: Refactor kvm_cpuid() param that controls out-of-range logic 2020-03-16 17:58:50 +01:00
lapic.c KVM: LAPIC: Recalculate apic map in batch 2020-03-16 17:57:39 +01:00
lapic.h KVM: LAPIC: Recalculate apic map in batch 2020-03-16 17:57:39 +01:00
Makefile KVM: x86: enable -Werror 2020-02-12 20:15:29 +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: rename set_cr3 callback and related flags to load_mmu_pgd 2020-03-16 17:58:52 +01:00
mmutrace.h KVM: x86: fix incorrect comparison in trace event 2020-02-20 18:13:44 +01:00
mtrr.c KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks 2020-01-27 19:59:39 +01: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 KVM: x86: Adjust counter sample period after a wrmsr 2020-03-16 17:57:30 +01:00
pmu.h KVM: x86: Adjust counter sample period after a wrmsr 2020-03-16 17:57:30 +01:00
svm.c KVM: nSVM: Remove an obsolete comment. 2020-03-16 17:59:00 +01:00
trace.h kvm: svm: Introduce GA Log tracepoint for AVIC 2020-03-16 17:58:56 +01: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: correct meaningless kvm_apicv_activated() check 2020-03-16 17:58:59 +01:00
x86.h KVM: CPUID: add support for supervisor states 2020-03-16 17:58:45 +01:00