diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-10 01:15:42 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-28 21:46:03 -0500 |
commit | 9436d5c32b1ac8d4efdbc933611b5e699908854e (patch) | |
tree | 3d08cbe4cf54bc5eac6ed75d3868e1ba21c75c16 | |
parent | 9489e9dcae718d5fde988e4a684a0f55b5f94d17 (diff) | |
download | linux-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.c | 3 |
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(¤t->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; |