Commit 2bc19dc3754fc066c43799659f0d848631c44cfe

Authored by Michael S. Tsirkin
Committed by Paolo Bonzini
1 parent a642fc3050

kvm: x86: don't kill guest on unknown exit reason

KVM_EXIT_UNKNOWN is a kvm bug, we don't really know whether it was
triggered by a priveledged application.  Let's not kill the guest: WARN
and inject #UD instead.

Cc: stable@vger.kernel.org
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Showing 2 changed files with 6 additions and 6 deletions Side-by-side Diff

... ... @@ -3551,9 +3551,9 @@
3551 3551  
3552 3552 if (exit_code >= ARRAY_SIZE(svm_exit_handlers)
3553 3553 || !svm_exit_handlers[exit_code]) {
3554   - kvm_run->exit_reason = KVM_EXIT_UNKNOWN;
3555   - kvm_run->hw.hardware_exit_reason = exit_code;
3556   - return 0;
  3554 + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_code);
  3555 + kvm_queue_exception(vcpu, UD_VECTOR);
  3556 + return 1;
3557 3557 }
3558 3558  
3559 3559 return svm_exit_handlers[exit_code](svm);
... ... @@ -7174,10 +7174,10 @@
7174 7174 && kvm_vmx_exit_handlers[exit_reason])
7175 7175 return kvm_vmx_exit_handlers[exit_reason](vcpu);
7176 7176 else {
7177   - vcpu->run->exit_reason = KVM_EXIT_UNKNOWN;
7178   - vcpu->run->hw.hardware_exit_reason = exit_reason;
  7177 + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_reason);
  7178 + kvm_queue_exception(vcpu, UD_VECTOR);
  7179 + return 1;
7179 7180 }
7180   - return 0;
7181 7181 }
7182 7182  
7183 7183 static void update_cr8_intercept(struct kvm_vcpu *vcpu, int tpr, int irr)