Skip to content

Commit

Permalink
KVM: VMX: fix halt emulation while emulating invalid guest sate
Browse files Browse the repository at this point in the history
commit 8d76c49 upstream.

The invalid guest state emulation loop does not check halt_request
which causes 100% cpu loop while guest is in halt and in invalid
state, but more serious issue is that this leaves halt_request set, so
random instruction emulated by vm86 #GP exit can be interpreted
as halt which causes guest hang. Fix both problems by handling
halt_request in emulation loop.

Reported-by: Tomas Papan <[email protected]>
Tested-by: Tomas Papan <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Signed-off-by: Gleb Natapov <[email protected]>
Signed-off-by: Kamal Mostafa <[email protected]>
  • Loading branch information
Gleb Natapov authored and kamalmostafa committed May 24, 2013
1 parent 135be9f commit 2a4763a
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions arch/x86/kvm/vmx.c
Original file line number Diff line number Diff line change
Expand Up @@ -5059,6 +5059,12 @@ static int handle_invalid_guest_state(struct kvm_vcpu *vcpu)
return 0;
}

if (vcpu->arch.halt_request) {
vcpu->arch.halt_request = 0;
ret = kvm_emulate_halt(vcpu);
goto out;
}

if (signal_pending(current))
goto out;
if (need_resched())
Expand Down

0 comments on commit 2a4763a

Please sign in to comment.