Unverified Commit 6024b948 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!9976 KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()

parents b4b49229 9dba01a8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -3606,12 +3606,13 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode)
{
	struct kvm *kvm = me->kvm;
	struct kvm_vcpu *vcpu;
	int last_boosted_vcpu = me->kvm->last_boosted_vcpu;
	int last_boosted_vcpu;
	int yielded = 0;
	int try = 3;
	int pass;
	int i;

	last_boosted_vcpu = READ_ONCE(kvm->last_boosted_vcpu);
	kvm_vcpu_set_in_spin_loop(me, true);
	/*
	 * We boost the priority of a VCPU that is runnable but not
@@ -3642,7 +3643,7 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode)

			yielded = kvm_vcpu_yield_to(vcpu);
			if (yielded > 0) {
				kvm->last_boosted_vcpu = i;
				WRITE_ONCE(kvm->last_boosted_vcpu, i);
				break;
			} else if (yielded < 0) {
				try--;