git: f833ab9dd187 - main - procctl(2): add consistent shortcut P_ID:0 as curproc
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 19 Oct 2021 20:04:46 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=f833ab9dd187328306fa1601330fbc8332392abe
commit f833ab9dd187328306fa1601330fbc8332392abe
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-10-15 19:01:42 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-10-19 20:04:34 +0000
procctl(2): add consistent shortcut P_ID:0 as curproc
Reported by: bdrewery, emaste
Reviewed by: emaste, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32513
---
lib/libc/sys/procctl.2 | 2 ++
sys/kern/kern_procctl.c | 16 +++++++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/lib/libc/sys/procctl.2 b/lib/libc/sys/procctl.2
index 30933875ccbc..7412c2ee9d56 100644
--- a/lib/libc/sys/procctl.2
+++ b/lib/libc/sys/procctl.2
@@ -62,6 +62,8 @@ The following identifier types are supported:
.It Dv P_PID
Control the process with the process ID
.Fa id .
+.Fa id
+zero is a shortcut for the calling process ID.
.It Dv P_PGID
Control processes belonging to the process group with the ID
.Fa id .
diff --git a/sys/kern/kern_procctl.c b/sys/kern/kern_procctl.c
index 90c5e63c7219..613fabc4ca34 100644
--- a/sys/kern/kern_procctl.c
+++ b/sys/kern/kern_procctl.c
@@ -904,12 +904,18 @@ kern_procctl(struct thread *td, idtype_t idtype, id_t id, int com, void *data)
switch (idtype) {
case P_PID:
- p = pfind(id);
- if (p == NULL) {
- error = ESRCH;
- break;
+ if (id == 0) {
+ p = td->td_proc;
+ error = 0;
+ PROC_LOCK(p);
+ } else {
+ p = pfind(id);
+ if (p == NULL) {
+ error = ESRCH;
+ break;
+ }
+ error = p_cansee(td, p);
}
- error = p_cansee(td, p);
if (error == 0)
error = kern_procctl_single(td, p, com, data);
PROC_UNLOCK(p);