WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] Avoid double faults in stacktrace

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] Avoid double faults in stacktrace
From: "Robert S. Phillips" <rphillips@xxxxxxxxxxxxxxx>
Date: Wed, 17 May 2006 09:55:08 -0400
Delivery-date: Fri, 19 May 2006 04:34:01 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla Thunderbird 1.0.7-1.1.fc4 (X11/20050929)
This patch changes the guest_mode macro so it does not double-fault
when faced with a bogus stack pointer.

Signed-off-by: Robert S. Phillips (rphillips@xxxxxxxxxxxxxxx)
# HG changeset patch
# User rphillips@rphillips
# Node ID 4ba740e1027492b5c12daa1447b2d2c71d1cc753
# Parent  ac69f504f7c1fd7415927f2c9ca460de70f71b53

This patch changes the guest_mode macro so it does not double-fault
when faced with a bogus stack pointer.

Signed-off-by: Robert S. Phillips (rphillips@xxxxxxxxxxxxxxx)

diff -r ac69f504f7c1 -r 4ba740e10274 xen/include/asm-x86/regs.h
--- a/xen/include/asm-x86/regs.h        Tue May 16 11:50:02 2006 -0400
+++ b/xen/include/asm-x86/regs.h        Tue May 16 11:53:49 2006 -0400
@@ -35,13 +35,13 @@
 ({                                                                            \
     unsigned long diff = (char *)guest_cpu_user_regs() - (char *)(r);         \
     /* Frame pointer must point into current CPU stack. */                    \
-    ASSERT(diff < STACK_SIZE);                                                \
+    if (diff >= STACK_SIZE) printk("guestregs:%p r:%p\n", 
guest_cpu_user_regs(), r); else { \
     /* If a guest frame, it must be have guest privs (unless HVM guest).   */ \
     /* We permit CS==0 which can come from an uninitialised trap entry. */    \
     ASSERT((diff != 0) || vm86_mode(r) || ((r->cs&3) >= GUEST_KERNEL_RPL) ||  \
            (r->cs == 0) || hvm_guest(current));                              \
     /* If not a guest frame, it must be a hypervisor frame. */                \
-    ASSERT((diff == 0) || (!vm86_mode(r) && (r->cs == __HYPERVISOR_CS)));     \
+    ASSERT((diff == 0) || (!vm86_mode(r) && (r->cs == __HYPERVISOR_CS))); } \
     /* Return TRUE if it's a guest frame. */                                  \
     (diff == 0);                                                              \
 })
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] Avoid double faults in stacktrace, Robert S. Phillips <=