]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: x86: Don't inject PV async #PF if SEND_ALWAYS=0 and guest state is protected
authorSean Christopherson <seanjc@google.com>
Sat, 15 Feb 2025 01:06:08 +0000 (17:06 -0800)
committerSean Christopherson <seanjc@google.com>
Tue, 25 Feb 2025 15:10:47 +0000 (07:10 -0800)
Don't inject PV async #PFs into guests with protected register state, i.e.
SEV-ES and SEV-SNP guests, unless the guest has opted-in to receiving #PFs
at CPL0.  For protected guests, the actual CPL of the guest is unknown.

Note, no sane CoCo guest should enable PV async #PF, but the current state
of Linux-as-a-CoCo-guest isn't entirely sane.

Fixes: add5e2f04541 ("KVM: SVM: Add support for the SEV-ES VMSA")
Link: https://lore.kernel.org/r/20250215010609.1199982-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/x86.c

index 263ab2ec6f712394cc5e16ac282eaf1df6ef5506..3d84a79583b121a4a439c49bbd4c1382de2a94cd 100644 (file)
@@ -13387,7 +13387,7 @@ static bool kvm_can_deliver_async_pf(struct kvm_vcpu *vcpu)
                return false;
 
        if (vcpu->arch.apf.send_user_only &&
-           kvm_x86_call(get_cpl)(vcpu) == 0)
+           (vcpu->arch.guest_state_protected || !kvm_x86_call(get_cpl)(vcpu)))
                return false;
 
        if (is_guest_mode(vcpu)) {