aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2005-12-13 01:17:12 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-12-13 01:31:16 -0500
commitdf818a52fb5e64c72b21029fb9ba80583106932c (patch)
treefd71417e26af6dd57e26730541dd53f0609e08e3
parentd6ece5491ae71ded1237f59def88bcd1b19b6f60 (diff)
[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>
-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
217 if (!tsk_used_math(tsk)) 217 if (!tsk_used_math(tsk))
218 return 0; 218 return 0;
219 if (!regs) 219 if (!regs)
220 regs = (struct pt_regs *)tsk->thread.rsp0; 220 regs = ((struct pt_regs *)tsk->thread.rsp0) - 1;
221 --regs;
222 if (tsk == current) 221 if (tsk == current)
223 unlazy_fpu(tsk); 222 unlazy_fpu(tsk);
224 set_fs(KERNEL_DS); 223 set_fs(KERNEL_DS);