um: get_safe_registers() should be done in flush_thread(), not start_thread()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 10 Nov 2012 06:15:42 +0000 (01:15 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 29 Nov 2012 02:46:03 +0000 (21:46 -0500)
... or we'll end up buggering the results of ELF_PLAT_INIT()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/um/kernel/exec.c

index 3a8ece7d09ca2015b3e2c218a3e7a84e951d9bee..0d7103c9eff3d21c29f15f2f54d5aeabcb0a8449 100644 (file)
@@ -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;