From nobody Fri Jul 24 21:07:25 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4h6LCy0xQgz6mkjJ for ; Fri, 24 Jul 2026 21:07:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h6LCx5Dvdz3cWr for ; Fri, 24 Jul 2026 21:07:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784927245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IrLR2RJGZPkM/Y/x7QTFKNTnREvwFhrBpK4JpnoDNZo=; b=XFYttNF+kUcV7z4ieZCDpnw5TpdJTABr0+dfFL/Whg9kQeu4BVxGzGhYL1Q9tJ2wG7ra+8 YH+GkYip1yN7n8aK3G+FMPe3+Zhm8tcguwtGgGcy1720upfiETCN15kn3iySBBY5nqGGBH 7J85C6OCEqZMLIU4ZOZTEIe1jNY2tKdSlIXYG6HA0qCwk9V6VPS9105eAiOxpMuFa9TbhZ LWrBPUS5Lb5/muQBuX6QG8wK5di58ep21j6iuh41yH69SIJP5nKZvOULYOF2RK0JEE1TI1 BZaeB8PZ3qo0eb1AFf0LATwIO3ma3yjW+tWGSRxCWz3pFy34JEmr/ZciP1vyqA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784927245; a=rsa-sha256; cv=none; b=AefCKabJixtqLMGZGxN/NVm762OADPUtVE81Gok118xqfqhuAcOJcCSNR8+LPPpyoQnSAd K2zMsIFcvbxB0KG2IjCYfodsrp6hzoeZ/pNfMbS8Ro6/Rfhi5ru0RlLDRbc1p6xVe/kQGq i6kcwmA3NSQgSJF6eWKgMIqbDoUGeCGwn6jJ4f918dE3kHB1snx9wuLTJb4XhWYdy05Isu s312xcdNnO67fBptQ5NhGr/NCbneRlfjLNbFBYjChoPnlMoLMdAx9nFC66NGZkUBa1vYOx 63PNDVTDKP3tS0+7bZ5trDLPR/qldDjoIlBcIyzw0qnjA86etuRKZLPkOEes0A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784927245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IrLR2RJGZPkM/Y/x7QTFKNTnREvwFhrBpK4JpnoDNZo=; b=NiDhovTXMX88Nb9bZFvqfySo84fED2R9k5GzsQmYV48A6Aaxkax3e8FvdF4ZhCiO4Hu8Sl qdWKF14pqNv1UVUELrloL5JsGo4WXtibQ3qjbsB9vpQuIWUYOK+Agl4U5rf06nKMAdSzZs pTfFHAD4lcbVxUXjvRad0LkbedaJlP4VltVuAtAU9QAD/kMjYMkdKGzWVxuktj52ZKjsAx Ob2IZ4kSTIkqgBuWhZq7pgj/Gq8vn/gwBY/I4qbGjAvprmToX5A5aYgwM+8BSI55oklB9J lzMF9np9iy2ao5RAfIi2ek30cxixKWDFArG8flJ0tQGVUFaX3TUehY4cXoPJiw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h6LCx4Hnrz17PF for ; Fri, 24 Jul 2026 21:07:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 37acf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 24 Jul 2026 21:07:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 9a7bd3309bec - main - procdesc: Remove dead code List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9a7bd3309bec08802e8c18c03669812ec3352534 Auto-Submitted: auto-generated Date: Fri, 24 Jul 2026 21:07:25 +0000 Message-Id: <6a63d40d.37acf.2767056d@gitrepo.freebsd.org> The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=9a7bd3309bec08802e8c18c03669812ec3352534 commit 9a7bd3309bec08802e8c18c03669812ec3352534 Author: Mark Johnston AuthorDate: 2026-07-24 20:06:16 +0000 Commit: Mark Johnston CommitDate: 2026-07-24 20:06:16 +0000 procdesc: Remove dead code As far as I can see, it is impossible for procdesc_exit() to observe pd->pd_fpcount == 0: if procdesc_close() decrements that counter to zero, then it will clean up the procdesc structure too, and this is atomic with respect to the proctree lock. No functional change intended. Reviewed by: kib MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D58396 --- sys/kern/kern_exit.c | 3 ++- sys/kern/sys_procdesc.c | 22 ++++------------------ sys/sys/procdesc.h | 2 +- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index b989cbff7720..43d0c2da38c1 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -680,7 +680,8 @@ exit1(struct thread *td, int rval, int signo) * exit(). */ signal_parent = 0; - if (p->p_procdesc == NULL || procdesc_exit(p)) { + procdesc_exit(p); + if (p->p_procdesc == NULL) { /* * Notify parent that we're gone. If parent has the * PS_NOCLDWAIT flag set, or if the handler is set to SIG_IGN, diff --git a/sys/kern/sys_procdesc.c b/sys/kern/sys_procdesc.c index b913c9109f18..862b59262d0c 100644 --- a/sys/kern/sys_procdesc.c +++ b/sys/kern/sys_procdesc.c @@ -278,45 +278,31 @@ procdesc_free(struct procdesc *pd) * We use the proctree_lock to ensure that process exit either happens * strictly before or strictly after a concurrent call to procdesc_close(). */ -bool +void procdesc_exit(struct proc *p) { struct procdesc *pd; sx_assert(&proctree_lock, SA_XLOCKED); PROC_LOCK_ASSERT(p, MA_OWNED); - KASSERT(p->p_procdesc != NULL, ("procdesc_exit: p_procdesc NULL")); MPASS((p->p_flag & P_WEXIT) != 0); pd = p->p_procdesc; + if (pd == NULL) + return; PROCDESC_LOCK(pd); - KASSERT(pd->pd_fpcount > 0 || p->p_pptr == p->p_reaper, - ("procdesc_exit: closed && parent not reaper")); + KASSERT(pd->pd_fpcount > 0, ("%s: closed procdesc %p", __func__, pd)); pd->pd_flags |= PDF_EXITED; pd->pd_xstat = KW_EXITCODE(p->p_xexit, p->p_xsig); - /* - * If the process descriptor has been closed, then we have nothing - * to do; return 1 so that init will get SIGCHLD and do the reaping. - * Clean up the procdesc now rather than letting it happen during - * that reap. - */ - if (pd->pd_fpcount == 0) { - PROCDESC_UNLOCK(pd); - pd->pd_proc = NULL; - p->p_procdesc = NULL; - procdesc_free(pd); - return (true); - } selwakeup(&pd->pd_selinfo); KNOTE_LOCKED(&pd->pd_selinfo.si_note, NOTE_EXIT | NOTE_PDSIGCHLD); PROCDESC_UNLOCK(pd); /* Wakeup all waiters for this procdesc' process exit. */ wakeup(&p->p_procdesc); - return (false); } void diff --git a/sys/sys/procdesc.h b/sys/sys/procdesc.h index ac23dbdcb53b..bb486d9026ba 100644 --- a/sys/sys/procdesc.h +++ b/sys/sys/procdesc.h @@ -102,7 +102,7 @@ struct procdesc { /* * In-kernel interfaces to process descriptors. */ -bool procdesc_exit(struct proc *); +void procdesc_exit(struct proc *); void procdesc_fork(struct proc *p, pid_t child_pid); void procdesc_jobstate(struct proc *p); int kern_pdgetpid(struct thread *, int fd, const cap_rights_t *,