From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Robert S. Phillips" Subject: [PATCH] Avoid double faults in stacktrace Date: Wed, 17 May 2006 09:55:08 -0400 Message-ID: <446B2B3C.4010803@virtualiron.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090007020703030305010001" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------090007020703030305010001 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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@virtualiron.com) --------------090007020703030305010001 Content-Type: text/plain; name="patch-9813-guestmode" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-9813-guestmode" # 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@virtualiron.com) 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); \ }) --------------090007020703030305010001 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------090007020703030305010001--