From 5064dfdc7ca942c44349640d82b2d486a6fae544 Mon Sep 17 00:00:00 2001 From: dillon Date: Sun, 22 Jul 2001 18:47:31 +0000 Subject: As per further discussions on hackers redo the SIGCHLD patch to not generate an unexpected user-visible side effect with the sigaction flags. Also cleanup a minor union issue. Submitted by: Rudolf Cejka MFC addendum: MFC will be combined w/ original commit MFC after: 3 days --- sys/kern/kern_sig.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'sys/kern/kern_sig.c') diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 4784e40..67945b0 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -255,11 +255,11 @@ do_sigaction(p, sig, act, oact, old) ps->ps_catchmask[_SIG_IDX(sig)] = act->sa_mask; SIG_CANTMASK(ps->ps_catchmask[_SIG_IDX(sig)]); if (act->sa_flags & SA_SIGINFO) { - ps->ps_sigact[_SIG_IDX(sig)] = act->sa_handler; - SIGADDSET(ps->ps_siginfo, sig); - } else { ps->ps_sigact[_SIG_IDX(sig)] = (__sighandler_t *)act->sa_sigaction; + SIGADDSET(ps->ps_siginfo, sig); + } else { + ps->ps_sigact[_SIG_IDX(sig)] = act->sa_handler; SIGDELSET(ps->ps_siginfo, sig); } if (!(act->sa_flags & SA_RESTART)) @@ -289,8 +289,7 @@ do_sigaction(p, sig, act, oact, old) p->p_procsig->ps_flag |= PS_NOCLDSTOP; else p->p_procsig->ps_flag &= ~PS_NOCLDSTOP; - if ((act->sa_flags & SA_NOCLDWAIT) || - ps->ps_sigact[_SIG_IDX(SIGCHLD)] == SIG_IGN) { + if (act->sa_flags & SA_NOCLDWAIT) { /* * Paranoia: since SA_NOCLDWAIT is implemented * by reparenting the dying child to PID 1 (and -- cgit v1.1