diff options
Diffstat (limited to 'drivers/char/tty_io.c')
-rw-r--r-- | drivers/char/tty_io.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index b9fce77c8f03..ac937f767f23 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -1508,8 +1508,12 @@ void disassociate_ctty(int on_exit) | |||
1508 | /* XXX: here we race, there is nothing protecting tty */ | 1508 | /* XXX: here we race, there is nothing protecting tty */ |
1509 | if (on_exit && tty->driver->type != TTY_DRIVER_TYPE_PTY) | 1509 | if (on_exit && tty->driver->type != TTY_DRIVER_TYPE_PTY) |
1510 | tty_vhangup(tty); | 1510 | tty_vhangup(tty); |
1511 | } else { | 1511 | } else if (on_exit) { |
1512 | pid_t old_pgrp = current->signal->tty_old_pgrp; | 1512 | pid_t old_pgrp; |
1513 | spin_lock_irq(¤t->sighand->siglock); | ||
1514 | old_pgrp = current->signal->tty_old_pgrp; | ||
1515 | current->signal->tty_old_pgrp = 0; | ||
1516 | spin_unlock_irq(¤t->sighand->siglock); | ||
1513 | if (old_pgrp) { | 1517 | if (old_pgrp) { |
1514 | kill_pg(old_pgrp, SIGHUP, on_exit); | 1518 | kill_pg(old_pgrp, SIGHUP, on_exit); |
1515 | kill_pg(old_pgrp, SIGCONT, on_exit); | 1519 | kill_pg(old_pgrp, SIGCONT, on_exit); |