Depends on
tty-signal-tty-locking.patch
No need to take the global tty_mutex, signal->tty->driver can't go away
while we are holding ->siglock.
Signed-off-by: Oleg Nesterov <[email protected]>
--- rc2-mm2/kernel/acct.c~ 2006-10-22 19:28:17.000000000 +0400
+++ rc2-mm2/kernel/acct.c 2006-10-23 17:09:12.000000000 +0400
@@ -484,12 +484,9 @@ static void do_acct_process(struct file
ac.ac_ppid = current->parent->tgid;
#endif
- mutex_lock(&tty_mutex);
- tty = get_current_tty();
- ac.ac_tty = tty ? old_encode_dev(tty_devnum(tty)) : 0;
- mutex_unlock(&tty_mutex);
-
spin_lock_irq(¤t->sighand->siglock);
+ tty = current->signal->tty;
+ ac.ac_tty = tty ? old_encode_dev(tty_devnum(tty)) : 0;
ac.ac_utime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_utime)));
ac.ac_stime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_stime)));
ac.ac_flag = pacct->ac_flag;
On Mon, 2006-10-23 at 17:56 +0400, Oleg Nesterov wrote:
> Depends on
> tty-signal-tty-locking.patch
>
> No need to take the global tty_mutex, signal->tty->driver can't go away
> while we are holding ->siglock.
>
> Signed-off-by: Oleg Nesterov <[email protected]>
Acked-by: Peter Zijlstra <[email protected]
> --- rc2-mm2/kernel/acct.c~ 2006-10-22 19:28:17.000000000 +0400
> +++ rc2-mm2/kernel/acct.c 2006-10-23 17:09:12.000000000 +0400
> @@ -484,12 +484,9 @@ static void do_acct_process(struct file
> ac.ac_ppid = current->parent->tgid;
> #endif
>
> - mutex_lock(&tty_mutex);
> - tty = get_current_tty();
> - ac.ac_tty = tty ? old_encode_dev(tty_devnum(tty)) : 0;
> - mutex_unlock(&tty_mutex);
> -
> spin_lock_irq(¤t->sighand->siglock);
> + tty = current->signal->tty;
> + ac.ac_tty = tty ? old_encode_dev(tty_devnum(tty)) : 0;
> ac.ac_utime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_utime)));
> ac.ac_stime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_stime)));
> ac.ac_flag = pacct->ac_flag;
>