KVM: X86: Do not yield to self
authorWanpeng Li <wanpengli@tencent.com>
Fri, 9 Apr 2021 04:18:31 +0000 (12:18 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 19 Apr 2021 22:04:46 +0000 (18:04 -0400)
If the target is self we do not need to yield, we can avoid malicious
guest to play this.

Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
Message-Id: <1617941911-5338-3-git-send-email-wanpengli@tencent.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index 05a4bce..66d2ab0 100644 (file)
@@ -8228,6 +8228,10 @@ static void kvm_sched_yield(struct kvm_vcpu *vcpu, unsigned long dest_id)
        if (!target || !READ_ONCE(target->ready))
                goto no_yield;
 
+       /* Ignore requests to yield to self */
+       if (vcpu == target)
+               goto no_yield;
+
        if (kvm_vcpu_yield_to(target) <= 0)
                goto no_yield;