linux/arch/x86/kvm
Sean Christopherson 057b18756b KVM: nVMX: Document that ignoring memory failures for VMCLEAR is deliberate
Explicitly drop the result of kvm_vcpu_write_guest() when writing the
"launch state" as part of VMCLEAR emulation, and add a comment to call
out that KVM's behavior is architecturally valid.  Intel's pseudocode
effectively says that VMCLEAR is a nop if the target VMCS address isn't
in memory, e.g. if the address points at MMIO.

Add a FIXME to call out that suppressing failures on __copy_to_user() is
wrong, as memory (a memslot) does exist in that case.  Punt the issue to
the future as open coding kvm_vcpu_write_guest() just to make sure the
guest dies with -EFAULT isn't worth the extra complexity.  The flaw will
need to be addressed if KVM ever does something intelligent on uaccess
failures, e.g. to support post-copy demand paging, but in that case KVM
will need a more thorough overhaul, i.e. VMCLEAR shouldn't need to open
code a core KVM helper.

No functional change intended.

Reported-by: coverity-bot <keescook+coverity-bot@chromium.org>
Addresses-Coverity-ID: 1527765 ("Error handling issues")
Fixes: 587d7e72ae ("kvm: nVMX: VMCLEAR should not cause the vCPU to shut down")
Cc: Jim Mattson <jmattson@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221220154224.526568-1-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-12-23 12:16:49 -05:00
..
mmu KVM: x86: avoid memslot check in NX hugepage recovery if it cannot succeed 2022-11-18 11:30:12 -05:00
svm KVM: SVM: Replace kmap_atomic() with kmap_local_page() 2022-11-30 16:13:09 -08:00
vmx KVM: nVMX: Document that ignoring memory failures for VMCLEAR is deliberate 2022-12-23 12:16:49 -05:00
.gitignore KVM: x86: use a separate asm-offsets.c file 2022-11-09 12:10:17 -05:00
cpuid.c KVM: x86: Advertise that the SMM_CTL MSR is not supported 2022-12-02 13:45:59 -05:00
cpuid.h KVM: x86: Add dedicated helper to get CPUID entry with significant index 2022-07-14 11:38:32 -04:00
debugfs.c KVM: x86: Reduce refcount if single_open() fails in kvm_mmu_rmaps_stat_open() 2022-10-27 04:41:54 -04:00
emulate.c KVM: x86: move SMM exit to a new file 2022-11-09 12:31:18 -05:00
fpu.h
hyperv.c KVM: x86: hyper-v: Fix 'using uninitialized value' Coverity warning 2022-12-23 12:08:16 -05:00
hyperv.h KVM: nSVM: hyper-v: Enable L2 TLB flush 2022-11-18 12:59:18 -05:00
i8254.c KVM: x86: PIT: Preserve state of speaker port data bit 2022-06-08 13:06:20 -04:00
i8254.h KVM: x86: PIT: Preserve state of speaker port data bit 2022-06-08 13:06:20 -04:00
i8259.c KVM: x86/i8259: Remove a dead store of irq in a conditional block 2022-04-02 05:41:19 -04:00
ioapic.c KVM: x86/ioapic: Remove unused "addr" and "length" of ioapic_read_indirect() 2022-02-10 13:47:13 -05:00
ioapic.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
irq_comm.c KVM: x86: ioapic: Fix level-triggered EOI and userspace I/OAPIC reconfigure race 2022-12-23 12:07:40 -05:00
irq.c KVM: x86: remove unnecessary exports 2022-12-02 13:36:44 -05:00
irq.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
Kconfig KVM: allow compiling out SMM support 2022-11-09 12:31:19 -05:00
kvm_cache_regs.h KVM: x86: start moving SMM-related functions to new files 2022-11-09 12:31:16 -05:00
kvm_emulate.h KVM: x86: do not define SMM-related constants if SMM disabled 2022-11-09 12:31:21 -05:00
kvm_onhyperv.c KVM: x86: Uninline and export hv_track_root_tdp() 2022-02-10 13:47:19 -05:00
kvm_onhyperv.h KVM: x86: Uninline and export hv_track_root_tdp() 2022-02-10 13:47:19 -05:00
kvm-asm-offsets.c KVM: SVM: move MSR_IA32_SPEC_CTRL save/restore to assembly 2022-11-09 12:25:53 -05:00
lapic.c KVM: x86: remove unnecessary exports 2022-12-02 13:36:44 -05:00
lapic.h KVM: x86: Simplify kvm_apic_hw_enabled 2022-12-23 12:09:28 -05:00
Makefile KVM: x86: Introduce .hv_inject_synthetic_vmexit_post_tlb_flush() nested hook 2022-11-18 12:59:13 -05:00
mmu.h KVM: SVM: Disable SEV-ES support if MMIO caching is disable 2022-08-10 15:08:25 -04:00
mtrr.c
pmu.c KVM: x86/pmu: Prevent zero period event from being repeatedly released 2022-12-23 12:06:45 -05:00
pmu.h KVM: x86/pmu: Prevent zero period event from being repeatedly released 2022-12-23 12:06:45 -05:00
reverse_cpuid.h KVM: x86: Advertise PREFETCHIT0/1 CPUID to user space 2022-11-28 13:33:30 -05:00
smm.c KVM: x86: smm: preserve interrupt shadow in SMRAM 2022-11-09 12:31:26 -05:00
smm.h KVM: x86: smm: preserve interrupt shadow in SMRAM 2022-11-09 12:31:26 -05:00
trace.h KVM: x86/xen: Add CPL to Xen hypercall tracepoint 2022-11-28 13:31:01 -05:00
tss.h
x86.c KVM: x86: Sanity check inputs to kvm_handle_memory_failure() 2022-12-23 12:15:25 -05:00
x86.h KVM: x86: Track supported PERF_CAPABILITIES in kvm_caps 2022-11-09 12:31:11 -05:00
xen.c Merge branch 'gpc-fixes' of git://git.infradead.org/users/dwmw2/linux into HEAD 2022-12-02 14:01:43 -05:00
xen.h KVM: x86/xen: add support for 32-bit guests in SCHEDOP_poll 2022-11-30 19:24:56 +00:00