diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2026-07-27 23:37:44 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2026-07-28 19:45:52 +0000 |
| commit | 2e259c209f6912bc99e18bbfb55dd10554b3b11d (patch) | |
| tree | 2851cbe63742f300a0af7cc40ccf709330019d98 | |
| parent | 8cef3c9b768a4a6d63a7754f6a46315532687305 (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.c | 4 |
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; |
