linux/arch/x86/kvm
Sean Christopherson 2cbbe28c73 KVM: x86/mmu: Fix struct guest_walker arrays for 5-level paging
[ Upstream commit f6ab0107a4 ]

Define PT_MAX_FULL_LEVELS as PT64_ROOT_MAX_LEVEL, i.e. 5, to fix shadow
paging for 5-level guest page tables.  PT_MAX_FULL_LEVELS is used to
size the arrays that track guest pages table information, i.e. using a
"max levels" of 4 causes KVM to access garbage beyond the end of an
array when querying state for level 5 entries.  E.g. FNAME(gpte_changed)
will read garbage and most likely return %true for a level 5 entry,
soft-hanging the guest because FNAME(fetch) will restart the guest
instead of creating SPTEs because it thinks the guest PTE has changed.

Note, KVM doesn't yet support 5-level nested EPT, so PT_MAX_FULL_LEVELS
gets to stay "4" for the PTTYPE_EPT case.

Fixes: 855feb6736 ("KVM: MMU: Add 5 level EPT & Shadow page table support.")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-19 19:53:09 +01:00
..
vmx KVM: nVMX: Use correct root level for nested EPT shadow page tables 2020-02-19 19:53:04 +01:00
Kconfig
Makefile
cpuid.c kvm/svm: PKU not currently supported 2020-02-11 04:35:40 -08:00
cpuid.h
debugfs.c
emulate.c KVM: x86: Ensure guest's FPU state is loaded when accessing for emulation 2020-02-11 04:35:41 -08:00
hyperv.c KVM: x86: Protect kvm_hv_msr_[get|set]_crash_data() from Spectre-v1/L1TF attacks 2020-02-11 04:35:38 -08:00
hyperv.h
i8254.c
i8254.h
i8259.c KVM: x86: Refactor picdev_write() to prevent Spectre-v1/L1TF attacks 2020-02-11 04:35:37 -08:00
ioapic.c KVM: x86: Protect ioapic_read_indirect() from Spectre-v1/L1TF attacks 2020-02-11 04:35:38 -08:00
ioapic.h
irq.c
irq.h
irq_comm.c
kvm_cache_regs.h
lapic.c KVM: x86: Protect kvm_lapic_reg_write() from Spectre-v1/L1TF attacks 2020-02-11 04:35:38 -08:00
lapic.h KVM: SVM: Fix potential wrong physical id in avic_handle_ldr_update 2019-10-22 18:47:50 +02:00
mmu.c KVM: Use vcpu-specific gva->hva translation when querying host page size 2020-02-11 04:35:54 -08:00
mmu.h kvm: x86: mmu: Recovery of shattered NX large pages 2019-11-04 20:26:00 +01:00
mmu_audit.c
mmutrace.h KVM: x86: Use gpa_t for cr2/gpa to fix TDP support on 32-bit KVM 2020-02-11 04:35:53 -08:00
mtrr.c KVM: x86: Protect MSR-based index computations in fixed_msr_to_seg_unit() from Spectre-v1/L1TF attacks 2020-02-11 04:35:39 -08:00
page_track.c
paging_tmpl.h KVM: x86/mmu: Fix struct guest_walker arrays for 5-level paging 2020-02-19 19:53:09 +01:00
pmu.c
pmu.h KVM: x86: Protect MSR-based index computations in pmu.h from Spectre-v1/L1TF attacks 2020-02-11 04:35:38 -08:00
pmu_amd.c
svm.c kvm/svm: PKU not currently supported 2020-02-11 04:35:40 -08:00
trace.h
tss.h
x86.c KVM: x86: Mask off reserved bit from #DB exception payload 2020-02-19 19:53:08 +01:00
x86.h KVM: x86: Use gpa_t for cr2/gpa to fix TDP support on 32-bit KVM 2020-02-11 04:35:53 -08:00