All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
To: Rob Landley <rob@landley.net>
Cc: Jeff Dike <jdike@addtoit.com>,
	user-mode-linux-devel@lists.sourceforge.net,
	Blaisorblade <blaisorblade@yahoo.it>
Subject: Re: [uml-devel] Am I doing something wrong with -skas0?
Date: Thu, 14 Jul 2005 14:05:11 +0200	[thread overview]
Message-ID: <42D654F7.2080608@fujitsu-siemens.com> (raw)
In-Reply-To: <42D6459B.6080702@fujitsu-siemens.com>

[-- Attachment #1: Type: text/plain, Size: 519 bytes --]

Bodo Stroesser wrote:
> stub_segv_handler misses the "push ebp" at the beginning. As you
> do the normally corresponding "pop eax" explicitly, I think stack
> pointer is wrong on call of sigreturn.
> 
> I have no idea, what makes happen this. Maybe it depends on compiler
> version?
> 

I hope, the attached patch fixes the problem. The patch is tested in
my 2.6.12-rc4 + skas0, where I didn't see the problem. It still works
fine for me.

Rob, could you please test whether the patch fixes the problem for you?

	Bodo

[-- Attachment #2: fix-stub_segv-stack.patch --]
[-- Type: text/x-diff, Size: 1381 bytes --]

# 
# From: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
# 
# It's wrong to pop a fixed number of words from stack before
# calling sigreturn, as the number depends on what code is generated
# by the compiler for the start of stub_segv_handler().
# What we need is esp containing the address of sigcontext. So we
# explicitly load that pointer into esp.
# 
# Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>

Index: linux-2.6.12-rc4/arch/um/sys-i386/stub_segv.c
===================================================================
--- linux-2.6.12-rc4.orig/arch/um/sys-i386/stub_segv.c	2005-07-14 13:15:53.364847980 +0200
+++ linux-2.6.12-rc4/arch/um/sys-i386/stub_segv.c	2005-07-14 13:36:02.980002269 +0200
@@ -22,10 +22,10 @@ stub_segv_handler(int sig)
 	__asm__("movl %0, %%eax ; int $0x80": : "g" (__NR_getpid));
 	__asm__("movl %%eax, %%ebx ; movl %0, %%eax ; movl %1, %%ecx ;"
 		"int $0x80": : "g" (__NR_kill), "g" (SIGUSR1));
-	/* Pop the frame pointer and return address since we need to leave
+	/* Load pointer to sigcontext into esp, since we need to leave
 	 * the stack in its original form when we do the sigreturn here, by
 	 * hand.
 	 */
-	__asm__("popl %%eax ; popl %%eax ; popl %%eax ; movl %0, %%eax ; "
-		"int $0x80" : : "g" (__NR_sigreturn));
+	__asm__("mov %0,%%esp ; movl %1, %%eax ; "
+		"int $0x80" : : "a" (sc), "g" (__NR_sigreturn));
 }

  reply	other threads:[~2005-07-14 12:05 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-13  4:46 [uml-devel] Am I doing something wrong with -skas0? Rob Landley
2005-07-13 12:11 ` Bodo Stroesser
2005-07-13 21:47   ` Rob Landley
2005-07-14 10:59     ` Bodo Stroesser
2005-07-14 12:05       ` Bodo Stroesser [this message]
2005-07-14 13:43         ` Jeff Dike
2005-07-14 14:11           ` Bodo Stroesser
2005-07-14 14:23             ` Jeff Dike
2005-07-14 18:19               ` Rob Landley
2005-07-14 14:13           ` Bodo Stroesser
2005-07-14 18:02         ` Rob Landley
2005-07-14 13:40       ` Jeff Dike
2005-07-14 17:58       ` Rob Landley
2005-07-13 21:51   ` Rob Landley
2005-07-13 12:15 ` Jeff Dike
2005-07-13 21:56   ` Rob Landley
2005-07-13 23:29     ` Jeff Dike
2005-07-14  2:02       ` Rob Landley
2005-07-14 12:37         ` Jeff Dike
2005-07-14 18:16           ` Rob Landley
2005-07-14 20:30             ` Rob Landley
2005-07-15 16:10               ` Blaisorblade
2005-07-15 16:25                 ` Bodo Stroesser
2005-07-15 19:40                 ` Rob Landley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42D654F7.2080608@fujitsu-siemens.com \
    --to=bstroesser@fujitsu-siemens.com \
    --cc=blaisorblade@yahoo.it \
    --cc=jdike@addtoit.com \
    --cc=rob@landley.net \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.