linux/arch/x86/kvm
Peter Gonda 19a23da539 Fix unsynchronized access to sev members through svm_register_enc_region
Grab kvm->lock before pinning memory when registering an encrypted
region; sev_pin_memory() relies on kvm->lock being held to ensure
correctness when checking and updating the number of pinned pages.

Add a lockdep assertion to help prevent future regressions.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Sean Christopherson <seanjc@google.com>
Cc: x86@kernel.org
Cc: kvm@vger.kernel.org
Cc: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Fixes: 1e80fdc09d ("KVM: SVM: Pin guest memory when SEV is active")
Signed-off-by: Peter Gonda <pgonda@google.com>

V2
 - Fix up patch description
 - Correct file paths svm.c -> sev.c
 - Add unlock of kvm->lock on sev_pin_memory error

V1
 - https://lore.kernel.org/kvm/20210126185431.1824530-1-pgonda@google.com/

Message-Id: <20210127161524.2832400-1-pgonda@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-01-28 13:03:14 -05:00
..
mmu KVM: x86/mmu: Ensure TDP MMU roots are freed after yield 2021-01-07 18:11:31 -05:00
svm Fix unsynchronized access to sev members through svm_register_enc_region 2021-01-28 13:03:14 -05:00
vmx KVM: x86: allow KVM_REQ_GET_NESTED_STATE_PAGES outside guest mode for VMX 2021-01-25 18:54:09 -05:00
cpuid.c KVM: x86: fix CPUID entries returned by KVM_GET_CPUID2 ioctl 2021-01-28 02:40:11 -05:00
cpuid.h KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits 2020-12-11 19:05:13 -05:00
debugfs.c KVM: let kvm_destroy_vm_debugfs clean up vCPU debugfs directories 2020-06-04 11:00:54 -04:00
emulate.c KVM: x86: clflushopt should be treated as a no-op by emulation 2020-11-13 06:28:33 -05:00
hyperv.c KVM: x86: hyper-v: allow KVM_GET_SUPPORTED_HV_CPUID as a system ioctl 2020-11-15 09:49:11 -05:00
hyperv.h KVM: x86: hyper-v: allow KVM_GET_SUPPORTED_HV_CPUID as a system ioctl 2020-11-15 09:49:11 -05:00
i8254.c kvm: i8254: remove redundant assignment to pointer s 2020-06-11 12:35:18 -04: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: break infinite recursion on lazy EOI 2020-10-24 04:42:06 -04:00
ioapic.h kvm/x86: Remove redundant function implementations 2020-05-27 13:11:10 -04:00
irq_comm.c x86/kvm: Use msi_msg shadow structs 2020-10-28 20:26:26 +01:00
irq.c KVM: x86: Fix split-irqchip vs interrupt injection window request 2020-11-27 09:27:28 -05:00
irq.h kvm/x86: Remove redundant function implementations 2020-05-27 13:11:10 -04:00
Kconfig KVM: SVM: Add support for SEV-ES capability in KVM 2020-12-14 11:09:31 -05:00
kvm_cache_regs.h KVM: x86: Revert "KVM: x86: Mark GPRs dirty when written" 2021-01-25 18:52:10 -05:00
kvm_emulate.h ARM: 2020-04-02 15:13:15 -07:00
lapic.c KVM: SVM: Add support for booting APs in an SEV-ES guest 2021-01-07 18:11:37 -05:00
lapic.h KVM: nVMX: Morph notification vector IRQ on nested VM-Enter to pending PI 2020-09-28 07:57:22 -04:00
Makefile KVM: X86: Implement ring-based dirty memory tracking 2020-11-15 09:49:15 -05:00
mmu.h KVM: x86: Add more protection against undefined behavior in rsvd_bits() 2021-01-25 18:52:06 -05:00
mtrr.c KVM: x86: remove bogus #GP injection 2020-12-15 05:18:30 -05:00
pmu.c KVM/x86: pmu: Fix #GP condition check for RDPMC emulation 2020-07-09 07:08:37 -04:00
pmu.h kvm: x86: limit the maximum number of vPMU fixed counters to 3 2020-07-08 16:21:59 -04:00
trace.h KVM: SVM: Create trace events for VMGEXIT MSR protocol processing 2020-12-15 05:20:49 -05: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: allow KVM_REQ_GET_NESTED_STATE_PAGES outside guest mode for VMX 2021-01-25 18:54:09 -05:00
x86.h KVM: SVM: Provide support for SEV-ES vCPU loading 2020-12-15 05:20:59 -05:00