KVM: Fix racy event propagation in timer
authorJan Kiszka <jan.kiszka@siemens.com>
Tue, 9 Jun 2009 13:37:01 +0000 (15:37 +0200)
committerAvi Kivity <avi@redhat.com>
Thu, 10 Sep 2009 05:32:57 +0000 (08:32 +0300)
commitf7104db26ab2bc5f642892774ac8fb0f15400969
treebecb4695f6028d9636c0cbdc2bd4dff42d4066bf
parent33e4c68656a2e461b296ce714ec322978de85412
KVM: Fix racy event propagation in timer

Minor issue that likely had no practical relevance: the kvm timer
function so far incremented the pending counter and then may reset it
again to 1 in case reinjection was disabled. This opened a small racy
window with the corresponding VCPU loop that may have happened to run
on another (real) CPU and already consumed the value.

Fix it by skipping the incrementation in case pending is already > 0.
This opens a different race windows, but may only rarely cause lost
events in case we do not care about them anyway (!reinject).

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/timer.c