summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2005-12-13 09:17:12 +0300
committerLinus Torvalds <torvalds@g5.osdl.org>2005-12-13 09:31:16 +0300
commitdf818a52fb5e64c72b21029fb9ba80583106932c (patch)
treefd71417e26af6dd57e26730541dd53f0609e08e3 /arch
parentd6ece5491ae71ded1237f59def88bcd1b19b6f60 (diff)
downloadlinux-df818a52fb5e64c72b21029fb9ba80583106932c.tar.xz
[PATCH] x86_64: Fix 32bit thread coredumps
When a register set is passed in don't try to fix up the pointer. Noticed by Al Viro Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86_64/ia32/ia32_binfmt.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c
index 830feb272eca..2b760d0d9ce2 100644
--- a/arch/x86_64/ia32/ia32_binfmt.c
+++ b/arch/x86_64/ia32/ia32_binfmt.c
@@ -217,8 +217,7 @@ elf_core_copy_task_fpregs(struct task_struct *tsk, struct pt_regs *regs, elf_fpr
if (!tsk_used_math(tsk))
return 0;
if (!regs)
- regs = (struct pt_regs *)tsk->thread.rsp0;
- --regs;
+ regs = ((struct pt_regs *)tsk->thread.rsp0) - 1;
if (tsk == current)
unlazy_fpu(tsk);
set_fs(KERNEL_DS);