Ensure current->signal->tty doesn't get freed during log_exec().
Signed-off-by: Alan Cox <alan@redhat.com>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
         long error;
 
 #ifdef CONFIG_TTY_LOG
-       task_lock(current);
+       mutex_lock(&tty_mutex);
+       task_lock(current);     /* FIXME:  is this needed ? */
        log_exec(argv, current->signal->tty);
        task_unlock(current);
+       mutex_unlock(&tty_mutex);
 #endif
         error = do_execve(file, argv, env, ¤t->thread.regs);
         if (error == 0){