summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-11-10 01:15:42 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-11-28 21:46:03 -0500
commit9436d5c32b1ac8d4efdbc933611b5e699908854e (patch)
tree3d08cbe4cf54bc5eac6ed75d3868e1ba21c75c16
parent9489e9dcae718d5fde988e4a684a0f55b5f94d17 (diff)
downloadlinux-3.10-9436d5c32b1ac8d4efdbc933611b5e699908854e.tar.gz
linux-3.10-9436d5c32b1ac8d4efdbc933611b5e699908854e.tar.bz2
linux-3.10-9436d5c32b1ac8d4efdbc933611b5e699908854e.zip
um: get_safe_registers() should be done in flush_thread(), not start_thread()
... or we'll end up buggering the results of ELF_PLAT_INIT() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/um/kernel/exec.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index 3a8ece7d09c..0d7103c9eff 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -32,13 +32,14 @@ void flush_thread(void)
"err = %d\n", ret);
force_sig(SIGKILL, current);
}
+ get_safe_registers(current_pt_regs()->regs.gp,
+ current_pt_regs()->regs.fp);
__switch_mm(&current->mm->context.id);
}
void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp)
{
- get_safe_registers(regs->regs.gp, regs->regs.fp);
PT_REGS_IP(regs) = eip;
PT_REGS_SP(regs) = esp;
current->ptrace &= ~PT_DTRACE;