Skip to content

Commit 2bc19dc

Browse files
mstsirkinbonzini
authored andcommitted
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: [email protected] Signed-off-by: Michael S. Tsirkin <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent a642fc3 commit 2bc19dc

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

arch/x86/kvm/svm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3551,9 +3551,9 @@ static int handle_exit(struct kvm_vcpu *vcpu)
35513551

35523552
if (exit_code >= ARRAY_SIZE(svm_exit_handlers)
35533553
|| !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;
35573557
}
35583558

35593559
return svm_exit_handlers[exit_code](svm);

arch/x86/kvm/vmx.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7174,10 +7174,10 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
71747174
&& kvm_vmx_exit_handlers[exit_reason])
71757175
return kvm_vmx_exit_handlers[exit_reason](vcpu);
71767176
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;
71797180
}
7180-
return 0;
71817181
}
71827182

71837183
static void update_cr8_intercept(struct kvm_vcpu *vcpu, int tpr, int irr)

0 commit comments

Comments
 (0)