svn commit: r242283 - stable/9/sys/kern
Eitan Adler
eadler at FreeBSD.org
Mon Oct 29 03:52:19 UTC 2012
Author: eadler
Date: Mon Oct 29 03:52:18 2012
New Revision: 242283
URL: http://svn.freebsd.org/changeset/base/242283
Log:
MFC r241855,r241859:
Update the kill(2) and killpg(2) man pages to the modern permission
checks. Also indicate killpg(2) is POSIX compliant.
Correct the killpg(2) return values:
Return EPERM if processes were found but they
were unable to be signaled.
Return the first error from p_cansignal if no signal was successful.
Discussed with: jilles
Approved by: cperciva (implicit)
Modified:
stable/9/sys/kern/kern_sig.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/kern/kern_sig.c
==============================================================================
--- stable/9/sys/kern/kern_sig.c Mon Oct 29 03:52:18 2012 (r242282)
+++ stable/9/sys/kern/kern_sig.c Mon Oct 29 03:52:18 2012 (r242283)
@@ -1599,8 +1599,10 @@ killpg1(struct thread *td, int sig, int
{
struct proc *p;
struct pgrp *pgrp;
- int nfound = 0;
+ int err;
+ int ret;
+ ret = ESRCH;
if (all) {
/*
* broadcast
@@ -1613,11 +1615,14 @@ killpg1(struct thread *td, int sig, int
PROC_UNLOCK(p);
continue;
}
- if (p_cansignal(td, p, sig) == 0) {
- nfound++;
+ err = p_cansignal(td, p, sig);
+ if (err == 0) {
if (sig)
pksignal(p, sig, ksi);
+ ret = err;
}
+ else if (ret == ESRCH)
+ ret = err;
PROC_UNLOCK(p);
}
sx_sunlock(&allproc_lock);
@@ -1644,16 +1649,19 @@ killpg1(struct thread *td, int sig, int
PROC_UNLOCK(p);
continue;
}
- if (p_cansignal(td, p, sig) == 0) {
- nfound++;
+ err = p_cansignal(td, p, sig);
+ if (err == 0) {
if (sig)
pksignal(p, sig, ksi);
+ ret = err;
}
+ else if (ret == ESRCH)
+ ret = err;
PROC_UNLOCK(p);
}
PGRP_UNLOCK(pgrp);
}
- return (nfound ? 0 : ESRCH);
+ return (ret);
}
#ifndef _SYS_SYSPROTO_H_
More information about the svn-src-stable-9
mailing list