Messages in this thread | | | From | Vitaly Kuznetsov <> | Subject | Re: [RESEND PATCH 02/13] KVM: x86: Clean up handle_emulation_failure() | Date | Fri, 23 Aug 2019 11:23:57 +0200 |
| |
Sean Christopherson <sean.j.christopherson@intel.com> writes:
> When handling emulation failure, return the emulation result directly > instead of capturing it in a local variable. Future patches will move > additional cases into handle_emulation_failure(), clean up the cruft > before so there isn't an ugly mix of setting a local variable and > returning directly. > > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> > --- > arch/x86/kvm/x86.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index cd425f54096a..c6de5bc4fa5e 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -6207,24 +6207,22 @@ EXPORT_SYMBOL_GPL(kvm_inject_realmode_interrupt); > > static int handle_emulation_failure(struct kvm_vcpu *vcpu, int emulation_type) > { > - int r = EMULATE_DONE; > - > ++vcpu->stat.insn_emulation_fail; > trace_kvm_emulate_insn_failed(vcpu); > > if (emulation_type & EMULTYPE_NO_UD_ON_FAIL) > return EMULATE_FAIL; > > + kvm_queue_exception(vcpu, UD_VECTOR); > + > if (!is_guest_mode(vcpu) && kvm_x86_ops->get_cpl(vcpu) == 0) { > vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; > vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; > vcpu->run->internal.ndata = 0; > - r = EMULATE_USER_EXIT; > + return EMULATE_USER_EXIT; > } > > - kvm_queue_exception(vcpu, UD_VECTOR); > - > - return r; > + return EMULATE_DONE; > } > > static bool reexecute_instruction(struct kvm_vcpu *vcpu, gva_t cr2,
No functional change,
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Just for self-education, what sane userspace is supposed to do when it sees KVM_EXIT_INTERNAL_ERROR other than kill the guest? Why does it make sense to still prepare to inject '#UD'?
-- Vitaly
| |