blob: e0eab0d6e75fda91e4be7911359255bd4dd5566a [file] [log] [blame]
From 59d874f4b2fab9e2809488a8fa1be13e6f8da0be Mon Sep 17 00:00:00 2001
From: Sean Christopherson <>
Date: Wed, 18 Dec 2019 13:55:06 -0800
Subject: [PATCH] KVM: x86: Remove spurious clearing of async #PF MSR
commit 208050dac5ef4de5cb83ffcafa78499c94d0b5ad upstream.
Remove a bogus clearing of apf.msr_val from kvm_arch_vcpu_destroy().
apf.msr_val is only set to a non-zero value by kvm_pv_enable_async_pf(),
which is only reachable by kvm_set_msr_common(), i.e. by writing
MSR_KVM_ASYNC_PF_EN. KVM does not autonomously write said MSR, i.e.
can only be written via KVM_SET_MSRS or KVM_RUN. Since KVM_SET_MSRS and
KVM_RUN are vcpu ioctls, they require a valid vcpu file descriptor.
kvm_arch_vcpu_destroy() is only called if KVM_CREATE_VCPU fails, and KVM
declares KVM_CREATE_VCPU successful once the vcpu fd is installed and
thus visible to userspace. Ergo, apf.msr_val cannot be non-zero when
kvm_arch_vcpu_destroy() is called.
Fixes: 344d9588a9df0 ("KVM: Add PV MSR to enable asynchronous page faults delivery.")
Signed-off-by: Sean Christopherson <>
Signed-off-by: Paolo Bonzini <>
Signed-off-by: Paul Gortmaker <>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 1ad21dead494..6859c61835c4 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -9025,8 +9025,6 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
- vcpu->arch.apf.msr_val = 0;