From: Tom Lendacky Date: Thu, 20 Mar 2025 13:26:53 +0000 (-0500) Subject: KVM: SVM: Add a mutex to dump_vmcb() to prevent concurrent output X-Git-Tag: v6.16-rc1~78^2~4^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=468c27ae0215c14bc62c90fa7b2ce2bc9eb4564b;p=thirdparty%2Fkernel%2Flinux.git KVM: SVM: Add a mutex to dump_vmcb() to prevent concurrent output If multiple VMRUN instructions fail, resulting in calls to dump_vmcb(), the output can become interleaved and it is impossible to identify which line of output belongs to which VMCB. Add a mutex to dump_vmcb() so that the output is serialized. Signed-off-by: Tom Lendacky Acked-by: Borislav Petkov (AMD) Tested-by: Kim Phillips Link: https://lore.kernel.org/r/a880678afd9488e1dd6017445802712f7c02cc6d.1742477213.git.thomas.lendacky@amd.com Signed-off-by: Sean Christopherson --- diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 272ce4bdbf111..919f98479774b 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -249,6 +250,8 @@ static unsigned long iopm_base; DEFINE_PER_CPU(struct svm_cpu_data, svm_data); +static DEFINE_MUTEX(vmcb_dump_mutex); + /* * Only MSR_TSC_AUX is switched via the user return hook. EFER is switched via * the VMCB, and the SYSCALL/SYSENTER MSRs are handled by VMLOAD/VMSAVE. @@ -3404,6 +3407,8 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) return; } + guard(mutex)(&vmcb_dump_mutex); + vm_type = sev_snp_guest(vcpu->kvm) ? "SEV-SNP" : sev_es_guest(vcpu->kvm) ? "SEV-ES" : sev_guest(vcpu->kvm) ? "SEV" : "SVM";