WSL2-Linux-Kernel/arch/x86/kvm
Vitaly Kuznetsov 342993f96a KVM: x86: clear stale x86_emulate_ctxt->intercept value
After commit 07721feee4 ("KVM: nVMX: Don't emulate instructions in guest
mode") Hyper-V guests on KVM stopped booting with:

 kvm_nested_vmexit:    rip fffff802987d6169 reason EPT_VIOLATION info1 181
    info2 0 int_info 0 int_info_err 0
 kvm_page_fault:       address febd0000 error_code 181
 kvm_emulate_insn:     0:fffff802987d6169: f3 a5
 kvm_emulate_insn:     0:fffff802987d6169: f3 a5 FAIL
 kvm_inj_exception:    #UD (0x0)

"f3 a5" is a "rep movsw" instruction, which should not be intercepted
at all.  Commit c44b4c6ab8 ("KVM: emulate: clean up initializations in
init_decode_cache") reduced the number of fields cleared by
init_decode_cache() claiming that they are being cleared elsewhere,
'intercept', however, is left uncleared if the instruction does not have
any of the "slow path" flags (NotImpl, Stack, Op3264, Sse, Mmx, CheckPerm,
NearBranch, No16 and of course Intercept itself).

Fixes: c44b4c6ab8 ("KVM: emulate: clean up initializations in init_decode_cache")
Fixes: 07721feee4 ("KVM: nVMX: Don't emulate instructions in guest mode")
Cc: stable@vger.kernel.org
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-03-03 17:38:16 +01:00
..
mmu KVM: x86/mmu: Fix struct guest_walker arrays for 5-level paging 2020-02-12 20:09:44 +01:00
vmx KVM: VMX: check descriptor table exits on instruction emulation 2020-03-01 19:26:31 +01:00
Kconfig KVM: allow disabling -Werror 2020-02-28 10:45:28 +01:00
Makefile KVM: allow disabling -Werror 2020-02-28 10:45:28 +01:00
cpuid.c kvm/svm: PKU not currently supported 2020-01-27 19:59:35 +01:00
cpuid.h KVM: x86: Refactor and rename bit() to feature_bit() macro 2020-01-21 14:45:28 +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: clear stale x86_emulate_ctxt->intercept value 2020-03-03 17:38:16 +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: i8254: Deactivate APICv when using in-kernel PIT re-injection mode. 2020-02-05 15:17:44 +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.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
irq_comm.c KVM: x86: don't notify userspace IOAPIC on edge-triggered interrupt EOI 2020-02-21 18:04:57 +01:00
kvm_cache_regs.h KVM: x86: Fold decache_cr3() into cache_reg() 2019-10-22 13:34:16 +02:00
lapic.c KVM: apic: avoid calculating pending eoi from an uninitialized val 2020-02-21 18:05:44 +01:00
lapic.h kvm: lapic: Introduce APICv update helper function 2020-02-05 15:17:40 +01:00
mmu.h KVM: x86/mmu: Avoid retpoline on ->page_fault() with TDP 2020-02-12 20:09:42 +01:00
mmu_audit.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499 2019-06-19 17:09:53 +02: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.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: x86: Protect MSR-based index computations in pmu.h from Spectre-v1/L1TF attacks 2020-01-27 19:59:40 +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
svm.c KVM: SVM: Fix the svm vmexit code for WRMSR 2020-03-02 17:06:52 +01:00
trace.h kvm: x86: Add APICv (de)activate request trace points 2020-02-05 15:17:41 +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: Fix dereference null cpufreq policy 2020-03-02 17:06:52 +01:00
x86.h KVM: x86: Take a u64 when checking for a valid dr7 value 2020-02-05 15:17:45 +01:00