KVM: VMX: Read Posted Interrupt "control" exactly once per loop iteration
authorSean Christopherson <seanjc@google.com>
Sat, 9 Oct 2021 02:12:19 +0000 (19:12 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Mar 2022 18:12:34 +0000 (19:12 +0100)
commit723053e16d55c01643ae01ff0f3ddc8a21fc82a4
treefc7149cb3bf1ea6b43d08f093304fce52865dd1c
parent32b758d12c24d7fc385e359d6a54ebbb29960485
KVM: VMX: Read Posted Interrupt "control" exactly once per loop iteration

[ Upstream commit cfb0e1306a3790eb055ebf7cdb7b0ee8a23e9b6e ]

Use READ_ONCE() when loading the posted interrupt descriptor control
field to ensure "old" and "new" have the same base value.  If the
compiler emits separate loads, and loads into "new" before "old", KVM
could theoretically drop the ON bit if it were set between the loads.

Fixes: 28b835d60fcc ("KVM: Update Posted-Interrupts Descriptor when vCPU is preempted")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20211009021236.4122790-27-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kvm/vmx/posted_intr.c