| From 03e1261778cca782d41a3d8e3945ca88cf93e01e Mon Sep 17 00:00:00 2001 |
| From: Oleg Nesterov <oleg@redhat.com> |
| Date: Sun, 15 Sep 2013 17:50:26 +0200 |
| Subject: tty: disassociate_ctty() sends the extra SIGCONT |
| |
| From: Oleg Nesterov <oleg@redhat.com> |
| |
| commit 03e1261778cca782d41a3d8e3945ca88cf93e01e upstream. |
| |
| Starting from v3.10 (probably commit f91e2590410b: "tty: Signal |
| foreground group processes in hangup") disassociate_ctty() sends SIGCONT |
| if tty && on_exit. This breaks LSB test-suite, in particular test8 in |
| _exit.c and test40 in sigcon5.c. |
| |
| Put the "!on_exit" check back to restore the old behaviour. |
| |
| Review by Peter Hurley: |
| "Yes, this regression was introduced by me in that commit. The effect |
| of the regression is that ptys will receive a SIGCONT when, in similar |
| circumstances, ttys would not. |
| |
| The fact that two test vectors accidentally tripped over this |
| regression suggests that some other apps may as well. |
| |
| Thanks for catching this" |
| |
| Signed-off-by: Oleg Nesterov <oleg@redhat.com> |
| Reported-by: Karel Srot <ksrot@redhat.com> |
| Reviewed-by: Peter Hurley <peter@hurleysoftware.com> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/tty_io.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/tty/tty_io.c |
| +++ b/drivers/tty/tty_io.c |
| @@ -850,7 +850,8 @@ void disassociate_ctty(int on_exit) |
| struct pid *tty_pgrp = tty_get_pgrp(tty); |
| if (tty_pgrp) { |
| kill_pgrp(tty_pgrp, SIGHUP, on_exit); |
| - kill_pgrp(tty_pgrp, SIGCONT, on_exit); |
| + if (!on_exit) |
| + kill_pgrp(tty_pgrp, SIGCONT, on_exit); |
| put_pid(tty_pgrp); |
| } |
| } |