From f38062a582d2eabb7770115f0c26ca665e612f56 Mon Sep 17 00:00:00 2001 From: eadler Date: Mon, 22 Oct 2012 03:36:44 +0000 Subject: Colin acked the wrong diff originally. fixed version coming soon. Approved by: cperciva (implicit) --- sys/kern/kern_sig.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'sys/kern/kern_sig.c') diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index ed2e0e9..13848b6 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1599,10 +1599,8 @@ killpg1(struct thread *td, int sig, int pgid, int all, ksiginfo_t *ksi) { struct proc *p; struct pgrp *pgrp; - int err; - int ret; + int nfound = 0; - ret = ESRCH; if (all) { /* * broadcast @@ -1615,14 +1613,11 @@ killpg1(struct thread *td, int sig, int pgid, int all, ksiginfo_t *ksi) PROC_UNLOCK(p); continue; } - err = p_cansignal(td, p, sig); - if (err == 0) { + if (p_cansignal(td, p, sig) == 0) { + nfound++; if (sig) pksignal(p, sig, ksi); - ret = err; } - else if (ret == ESRCH) - ret = err; PROC_UNLOCK(p); } sx_sunlock(&allproc_lock); @@ -1649,20 +1644,16 @@ killpg1(struct thread *td, int sig, int pgid, int all, ksiginfo_t *ksi) PROC_UNLOCK(p); continue; } - err = p_cansignal(td, p, sig); - if (err == 0) { + if (p_cansignal(td, p, sig) == 0) { + nfound++; if (sig) pksignal(p, sig, ksi); } - if (err == 0) - ret = err; - else if (ret == ESRCH) - ret = err; PROC_UNLOCK(p); } PGRP_UNLOCK(pgrp); } - return (ret); + return (nfound ? 0 : ESRCH); } #ifndef _SYS_SYSPROTO_H_ -- cgit v1.1