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

Re: [Xen-devel] [PATCH] x86-64: clear DF for kernel when forwarding syscall


  • To: Jan Beulich <jbeulich@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
  • Date: Sat, 23 Jun 2007 17:22:33 +0100
  • Delivery-date: Sat, 23 Jun 2007 09:20:45 -0700
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: Ace1srPg8lGoKiGlEdyoUgAX8io7RQ==
  • Thread-topic: [Xen-devel] [PATCH] x86-64: clear DF for kernel when forwarding syscall

Thanks. By the way, I've been thinking that rather than rev'ing the
paravirtual hypercall interface for specifying syscall/sysenter callback
points, since these have a direct native equivalent that we're trying to
emulate the semantics of as closely as possible then we may as well emulate
the MSRs for specifying RIP/RFLAGS_mask/etc too. Callers can catch the #GP
to detect whether the new MSR-based interface is supported, and/or we can
add a feature flag in our CPUID leaves.

 -- Keir

On 22/6/07 16:01, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> While this is not really matching native behavior, no guest seems to assume
> EFLAGS.DF being set or reflecting application state. Thus clear it for now,
> the syscall/sysenter patch that I'll hopefully be able to get to work will
> then introduce a more consistent solution. In any case, without this any
> app can easily force kernel data corruption.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
> 
> Index: 2007-06-18/xen/arch/x86/x86_64/entry.S
> ===================================================================
> --- 2007-06-18.orig/xen/arch/x86/x86_64/entry.S 2007-06-22 16:35:55.000000000
> +0200
> +++ 2007-06-18/xen/arch/x86/x86_64/entry.S 2007-06-22 16:36:59.000000000 +0200
> @@ -34,6 +34,7 @@ switch_to_kernel:
>          jnc   1f
>          movb  $TBF_INTERRUPT,TRAPBOUNCE_flags(%rdx)
>  1:      call  create_bounce_frame
> +        andl  $~X86_EFLAGS_DF,UREGS_eflags(%rsp)
>          jmp   test_all_events
>  
>  /* %rbx: struct vcpu, interrupts disabled */
> 
> 
> 
> 
> _______________________________________________
> 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®.