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

Re: [Xen-devel] [PATCH] x86: emulate lea with two register operands correctly


  • To: David Vrabel <david.vrabel@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Keir Fraser <keir@xxxxxxx>
  • Date: Thu, 05 Jan 2012 15:49:55 +0000
  • Delivery-date: Thu, 05 Jan 2012 15:50:18 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AczLwatN15hVb5RJKEarRSsF+GJ6RQ==
  • Thread-topic: [Xen-devel] [PATCH] x86: emulate lea with two register operands correctly

On 05/01/2012 15:03, "David Vrabel" <david.vrabel@xxxxxxxxxx> wrote:

> An lea instruction with two register operands should raise an
> undefined instruction exception.
> 
> Skype does such a instruction and will crash when starting if it does
> not get the exception.

Thanks. I think it is a little nicer to check ea.type != OP_MEM, so I made
that change before committing this patch. It's now in xen-unstable staging.

It's a bit concerning that we're emulating LEA at all, perhaps. I wonder if
a pagetable page has been reused as a code page and we didn't notice yet? Or
is there some other reason that skype is getting emulated? :-)

 -- Keir

> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> 
> diff -r efaa28639a71 -r e25b7798f13b xen/arch/x86/x86_emulate/x86_emulate.c
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c Wed Jan 04 16:12:44 2012 +0000
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c Thu Jan 05 14:58:56 2012 +0000
> @@ -2240,6 +2240,7 @@ x86_emulate(
>      }
>  
>      case 0x8d: /* lea */
> +        generate_exception_if(modrm_mod == 3, EXC_UD, -1);
>          dst.val = ea.mem.off;
>          break;
>  
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.