tree 3068f40bdee9b5bae16615b51275bdbf7b978d4a parent 6f313b12335abf010802751c45249e7a0007a232 author Bodo Stroesser <[EMAIL PROTECTED]> Fri, 29 Jul 2005 11:16:06 -0700 committer Linus Torvalds <[EMAIL PROTECTED]> Fri, 29 Jul 2005 11:46:04 -0700
[PATCH] uml: Fix skas0 stub return 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 <[EMAIL PROTECTED]> Signed-off-by: Jeff Dike <[EMAIL PROTECTED]> Cc: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> arch/um/sys-i386/stub_segv.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/um/sys-i386/stub_segv.c b/arch/um/sys-i386/stub_segv.c --- a/arch/um/sys-i386/stub_segv.c +++ b/arch/um/sys-i386/stub_segv.c @@ -21,10 +21,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)); } - To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html