Re: [PATCH 1/3] KVM: x86: fix wrong return code

From: Sean Christopherson
Date: Tue Aug 27 2019 - 09:42:05 EST


On Tue, Aug 27, 2019 at 01:07:04PM +0000, Jan Dakinevich wrote:
> x86_emulate_instruction(), the caller of x86_decode_insn(), expects
> that x86_decode_insn()'s returning value belongs to EMULATION_* name
> space. However, this function may return value from X86EMUL_* name
> space.
>
> Although, the code behaves properly (because both X86EMUL_CONTINUE and
> EMULATION_OK are equal to 0) this change makes code more consistent and
> it is required for further fixes.
>
> Cc: Denis Lunev <den@xxxxxxxxxxxxx>
> Cc: Roman Kagan <rkagan@xxxxxxxxxxxxx>
> Cc: Denis Plotnikov <dplotnikov@xxxxxxxxxxxxx>
> Signed-off-by: Jan Dakinevich <jan.dakinevich@xxxxxxxxxxxxx>
> ---
> arch/x86/kvm/emulate.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 718f7d9..6170ddf 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -5144,7 +5144,7 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len)
> else {
> rc = __do_insn_fetch_bytes(ctxt, 1);
> if (rc != X86EMUL_CONTINUE)
> - return rc;
> + goto done;

Funny how things go unnoticed for years and then suddenly...

https://lkml.kernel.org/r/9bf79098-703c-e82b-7e7d-1c0a6a1023c2@xxxxxxxxxx

> }
>
> switch (mode) {
> --
> 2.1.4
>