KVM: fix emulator_task_switch() return value.
emulator_task_switch() should return -1 for failure and 0 for success to the caller, just like x86_emulate_insn() does. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
5b7e0102ae
commit
19d0443726
|
@ -2453,7 +2453,7 @@ int emulator_task_switch(struct x86_emulate_ctxt *ctxt,
|
|||
rc = writeback(ctxt, ops);
|
||||
}
|
||||
|
||||
return rc;
|
||||
return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0;
|
||||
}
|
||||
|
||||
static void string_addr_inc(struct x86_emulate_ctxt *ctxt, unsigned long base,
|
||||
|
|
|
@ -4800,10 +4800,11 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason,
|
|||
tss_selector, reason, has_error_code,
|
||||
error_code);
|
||||
|
||||
if (ret == X86EMUL_CONTINUE)
|
||||
kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags);
|
||||
if (ret)
|
||||
return EMULATE_FAIL;
|
||||
|
||||
return (ret != X86EMUL_CONTINUE);
|
||||
kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags);
|
||||
return EMULATE_DONE;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_task_switch);
|
||||
|
||||
|
|
Loading…
Reference in New Issue