From be61af52a0101aa80b4a586cfb4b59ad02652930 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Tue, 29 Dec 2015 22:43:14 +0000 Subject: [PATCH] signals: SIGCONT should be sent after a SIGHUP --- Kernel/process.c | 8 +++++--- Kernel/tty.c | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Kernel/process.c b/Kernel/process.c index 989a3c1f..b4f8d451 100644 --- a/Kernel/process.c +++ b/Kernel/process.c @@ -427,9 +427,10 @@ void unix_syscall(void) void sgrpsig(uint16_t pgrp, uint16_t sig) { ptptr p; - for (p = ptab; p < ptab_end; ++p) { - if (p->p_pgrp == pgrp) - ssig(p, sig); + if (pgrp) { + for (p = ptab; p < ptab_end; ++p) + if (p->p_pgrp == pgrp) + ssig(p, sig); } } @@ -607,6 +608,7 @@ void doexit(int16_t val, int16_t val2) if (p->p_pgrp == udata.u_ptab->p_pid) { p->p_pgrp = 0; ssig(p, SIGHUP); + ssig(p, SIGCONT); } } tty_exit(); diff --git a/Kernel/tty.c b/Kernel/tty.c index 4dc68334..c9ce5ffd 100644 --- a/Kernel/tty.c +++ b/Kernel/tty.c @@ -445,6 +445,7 @@ void tty_hangup(uint8_t minor) struct tty *t = &ttydata[minor]; /* Kill users */ sgrpsig(t->pgrp, SIGHUP); + sgrpsig(t->pgrp, SIGCONT); t->pgrp = 0; /* Stop any new I/O with errors */ t->flag |= TTYF_DEAD; -- 2.34.1