summaryrefslogtreecommitdiff
path: root/arch/x86/include/asm/syscalls.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-01-20 09:31:49 +0100
committerIngo Molnar <mingo@elte.hu>2009-01-21 09:43:18 +0100
commit552b8aa4d1edcc1c764ff6f61a7686347a2d1827 (patch)
treecdebda18ea3360461358127091859610be2acf01 /arch/x86/include/asm/syscalls.h
parente0a96129db574d6365e3439d16d88517c437ab33 (diff)
downloadlwn-552b8aa4d1edcc1c764ff6f61a7686347a2d1827.tar.gz
lwn-552b8aa4d1edcc1c764ff6f61a7686347a2d1827.zip
Revert "x86: signal: change type of paramter for sys_rt_sigreturn()"
This reverts commit 4217458dafaa57d8e26a46f5d05ab8c53cf64191. Justin Madru bisected this commit, it was causing weird Firefox crashes. The reason is that GCC mis-optimizes (re-uses) the on-stack parameters of the calling frame, which corrupts the syscall return pt_regs state and thus corrupts user-space register state. So we go back to the slightly less clean but more optimization-safe method of getting to pt_regs. Also add a comment to explain this. Resolves: http://bugzilla.kernel.org/show_bug.cgi?id=12505 Reported-and-bisected-by: Justin Madru <jdm64@gawab.com> Tested-by: Justin Madru <jdm64@gawab.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/syscalls.h')
-rw-r--r--arch/x86/include/asm/syscalls.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index 9c6797c3e56c..c0b0bda754ee 100644
--- a/arch/x86/include/asm/syscalls.h
+++ b/arch/x86/include/asm/syscalls.h
@@ -40,7 +40,7 @@ asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
struct old_sigaction __user *);
asmlinkage int sys_sigaltstack(unsigned long);
asmlinkage unsigned long sys_sigreturn(unsigned long);
-asmlinkage int sys_rt_sigreturn(struct pt_regs);
+asmlinkage int sys_rt_sigreturn(unsigned long);
/* kernel/ioport.c */
asmlinkage long sys_iopl(unsigned long);