From nobody Sun Nov 09 22:39:11 2025 X-Original-To: dev-commits-src-main@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 4d4SQR5MdJz6G8tg; Sun, 09 Nov 2025 22:39:11 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4d4SQR4hjWz3DTF; Sun, 09 Nov 2025 22:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762727951; 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=fJjo0SWA5nFvyItUsz1o5AvvPu9I2HjKNlqwG8Sp/QI=; b=hb8vXpob4H8hXHWYNrGdEoJk16L+nGdCleBdGtWqzm/IH76N8johvJyD6rOVbUh3HxBu3X qQpeltLJIDhNEZbAjHXUV4WJD5dsrYsbhVWwDQ6X7ngrjuPdYPnTnXjTygh57FI23CNGPg NIwOqZYUZJSl4caN0QMGZOcYK27zhnqsYt3jO6wLrWYCeLLleumBMDEv3u0OEiKS+GwXgE 4eTrYL6lhFwjlCzV/1eY8Mm18FG0yLgVErjacmP6RRTLp+1kEKcdn6eQlxrPLojVMUOz02 whwFLvywGR2N90b3nmTIrp5u4bjwIwh2wQ8qxYk4ID2KIGNi4zn0KdwIh47wXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762727951; 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=fJjo0SWA5nFvyItUsz1o5AvvPu9I2HjKNlqwG8Sp/QI=; b=sLsLdkUYfxGaxMt/0bQxDYttnoLdTwnbaD74GAB0mWNBTbulAfTphQdUAmc/A1WiEWEEnW XkILAS641qjDFU0GEWiLybs41K1JE0t4vxvmG2gzSrGfkoJiAWL3A0Hkii1dGpsaOIsILi +C27F4bkABAeAE2DwrF6CtltuBWLlbWTDY0ThxnqzkLK/noOT475mTpr5KXPaVYYOsqStM ocq+Oht2gqtRqioEzrfXSbKgj54Mg4ykJdk50DHmeS5EAX5IMu/4ywZ+iLAWO1Fb8P/Aed MAFygcmFD6syWZHqWzArfF7yBsOjlUYYNkeiPdDqGsKU3GVVi636um1ikG1dKw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1762727951; a=rsa-sha256; cv=none; b=l66xqElaPGLryxI1QaNaECQF08c65DL5E0cLN3MnaugHQ1xHCgCJ59Ei2lyBDp17CzmyjA kCm+I65teyZLHB7inH/vG3zXEV3WffLrebVMdwYwk7hyCwX+BdsCwXwykJatI8OxXZH9Lb yWeadtsoKz/WK+RRAnYHR4O2ox1OFgF2a03ceT2EaaUMwwx4Yt03szi4fEb/C12cxMkFyY r1fxPzd6t0DtQ3vjnphFjADq1uujWZIpyritHdD06/Ntut/zF9DCwd1w2BivCDzyPizf0o l7xJB3yobrC5u1NQLFYFNSQEf9Uxql2YkfoldSVIRxxQbMzzYtIkhr10i7H4zQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4d4SQR47DKzs14; Sun, 09 Nov 2025 22:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5A9MdBAU003114; Sun, 9 Nov 2025 22:39:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5A9MdBom003111; Sun, 9 Nov 2025 22:39:11 GMT (envelope-from git) Date: Sun, 9 Nov 2025 22:39:11 GMT Message-Id: <202511092239.5A9MdBom003111@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: 5d46d11772c3 - main - proc_set_cred(): Allow 'newcred' to have multiple references List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5d46d11772c3280fd1c8ae09f20ce6c57f631c30 Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=5d46d11772c3280fd1c8ae09f20ce6c57f631c30 commit 5d46d11772c3280fd1c8ae09f20ce6c57f631c30 Author: Olivier Certner AuthorDate: 2025-11-06 22:25:57 +0000 Commit: Olivier Certner CommitDate: 2025-11-09 22:38:10 +0000 proc_set_cred(): Allow 'newcred' to have multiple references This is an extension needed by next commit, where some additional reference is kept on the credentials to be set on a process in order to keep these credentials alive even after the process lock is released (an intervening reset of process credentials could release the reference that the process holds). Only 'cr_users' is incremented, as the reference (counted in 'cr_ref') comes from the caller, who passes it to the process. Reviewed by: kib, markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D53636 --- sys/kern/kern_prot.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 3c145851b683..dc8751ddfbf6 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -2792,10 +2792,6 @@ _proc_set_cred(struct proc *p, struct ucred *newcred, bool enforce_proc_lim) MPASS(oldcred != NULL); PROC_LOCK_ASSERT(p, MA_OWNED); - KASSERT(newcred->cr_users == 0, ("%s: users %d not 0 on cred %p", - __func__, newcred->cr_users, newcred)); - KASSERT(newcred->cr_ref == 1, ("%s: ref %ld not 1 on cred %p", - __func__, newcred->cr_ref, newcred)); if (newcred->cr_ruidinfo != oldcred->cr_ruidinfo) { /* @@ -2821,8 +2817,10 @@ _proc_set_cred(struct proc *p, struct ucred *newcred, bool enforce_proc_lim) __func__, oldcred->cr_users, oldcred)); oldcred->cr_users--; mtx_unlock(&oldcred->cr_mtx); + mtx_lock(&newcred->cr_mtx); + newcred->cr_users++; + mtx_unlock(&newcred->cr_mtx); p->p_ucred = newcred; - newcred->cr_users = 1; PROC_UPDATE_COW(p); if (newcred->cr_ruidinfo != oldcred->cr_ruidinfo) (void)chgproccnt(oldcred->cr_ruidinfo, -1, 0);