KVM: s390: Fix race condition in kvm_s390_handle_wait
authorCarsten Otte <cotte@de.ibm.com>
Wed, 21 May 2008 11:37:44 +0000 (13:37 +0200)
committerAvi Kivity <avi@qumranet.com>
Fri, 6 Jun 2008 18:08:26 +0000 (21:08 +0300)
commite52b2af541bcb299212a63cfa3e3231618a415be
tree745f8d30f645b052cb96909148f4dfe80d952361
parent1f0d0f094df9a570dfc26d5eb825986b7e165e1d
KVM: s390: Fix race condition in kvm_s390_handle_wait

The call to add_timer was issued before local_int.lock was taken and before
timer_due was set to 0. If the timer expires before the lock is being taken,
the timer function will set timer_due to 1 and exit before the vcpu falls
asleep. Depending on other external events, the vcpu might sleep forever.
This fix pulls setting timer_due to the beginning of the function before
add_timer, which ensures correct behavior.

Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
arch/s390/kvm/interrupt.c