aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2026-07-27 23:37:44 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2026-07-28 19:45:52 +0000
commit2e259c209f6912bc99e18bbfb55dd10554b3b11d (patch)
tree2851cbe63742f300a0af7cc40ccf709330019d98
parent8cef3c9b768a4a6d63a7754f6a46315532687305 (diff)
kern_pdwait(): print the process pointer through pd
to avoid using uninitialized value in the KASSERT() statement on the first iteration. Also, do the assert under the proctree_lock, which is not critical but satisfies the invariants. Noted and reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D58505
-rw-r--r--sys/kern/kern_exit.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index c43bd69554e7..ebe4aa40c128 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -1572,12 +1572,12 @@ kern_pdwait(struct thread *td, int fd, int *status,
goto exit_unlocked;
for (;;) {
+ sx_xlock(&proctree_lock);
/* We own a reference on the procdesc file. */
KASSERT(pd->pd_fpcount > 0,
("closed proc %p procdesc %p pd flags %#x",
- p, pd, pd->pd_flags));
+ pd->pd_proc, pd, pd->pd_flags));
- sx_xlock(&proctree_lock);
p = pd->pd_proc;
if (p == NULL) {
error = ESRCH;