]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: nSVM: Always inject a #GP if mapping VMCB12 fails on nested VMRUN
authorYosry Ahmed <yosry@kernel.org>
Tue, 3 Mar 2026 00:33:59 +0000 (00:33 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 5 Mar 2026 00:08:46 +0000 (16:08 -0800)
nested_svm_vmrun() currently only injects a #GP if kvm_vcpu_map() fails
with -EINVAL. But it could also fail with -EFAULT if creating a host
mapping failed. Inject a #GP in all cases, no reason to treat failure
modes differently.

Fixes: 8c5fbf1a7231 ("KVM/nSVM: Use the new mapping API for mapping guest memory")
CC: stable@vger.kernel.org
Co-developed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Yosry Ahmed <yosry@kernel.org>
Link: https://patch.msgid.link/20260303003421.2185681-6-yosry@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/nested.c

index 2b1066ce23f5bfc1a39680901e9b24d8a5a32add..7a472d7c6e9892e2fb8fd1072dd97de838c70788 100644 (file)
@@ -1010,12 +1010,9 @@ int nested_svm_vmrun(struct kvm_vcpu *vcpu)
        }
 
        vmcb12_gpa = svm->vmcb->save.rax;
-       ret = kvm_vcpu_map(vcpu, gpa_to_gfn(vmcb12_gpa), &map);
-       if (ret == -EINVAL) {
+       if (kvm_vcpu_map(vcpu, gpa_to_gfn(vmcb12_gpa), &map)) {
                kvm_inject_gp(vcpu, 0);
                return 1;
-       } else if (ret) {
-               return kvm_skip_emulated_instruction(vcpu);
        }
 
        ret = kvm_skip_emulated_instruction(vcpu);