RE: wrong placement of RIP-relative address computing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 6df88c7..e269d20 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -3547,9 +3547,6 @@ done_prefixes:
>         if (memop.type == OP_MEM && c->ad_bytes != 8)
>                 memop.addr.mem.ea = (u32)memop.addr.mem.ea;
> 
> -       if (memop.type == OP_MEM && c->rip_relative)
> -               memop.addr.mem.ea += c->eip;
> -
>         /*
>          * Decode and fetch the source operand: register, memory
>          * or immediate.
> @@ -3704,6 +3701,9 @@ done_prefixes:
>         }
> 
>  done:

It's not correct to move here, I saw some other problem.

> +       if (memop.type == OP_MEM && c->rip_relative)
> +               memop.addr.mem.ea += c->eip;
> +
>         return (rc == X86EMUL_UNHANDLEABLE) ? EMULATION_FAILED :
> EMULATION_OK;

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux