From nobody Mon Jul 6 12:55:21 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 4gv48V3TkJz6jW5M for ; Mon, 06 Jul 2026 12:55:22 +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 4gv48V0qmBz3mft for ; Mon, 06 Jul 2026 12:55:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783342522; 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=atTXA2dglOHwfAe9lQFXYp1tg/QLBhjNydQPR0+AAJw=; b=gyCgfVNS3xAarv2dX7vf4FvhW1zWSuhj7ffUuwI4ovwLphVlgaK42QCxku/usAWxQEmJWd a8tlilAl51JwzkYjNCaVzm9WdYfuR4nRc699v/xRCTFv6W1ZoEil4oTw/C1ew9wsQDAhM+ /FhgZ9/HrZ2mPQ78/yTBsIXuedDmfZlqcZwD+ruhEvIgGx9YDO+lRm/jGUNU/mhDL4s6eE OAQgw67il+fvH2gDaVz04xMWyXSBQQPRBg8XVkLXFTzx0sGq9PJhEKLFHP4EuBtWh7tNnx PnfAsrg00PNS27U74droUPcviVOEmLizU55wP/6+G/lCY5oiNksnn/kNX25WTQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783342522; a=rsa-sha256; cv=none; b=A24F6a0T6bhJyz7BK6KAJB7iFUjdeGJM1mcuVM2mtGzFNTMEqNBDjjU8+RSJG4N1IyYZ5D R9rhEH/1ntagd6ow3QCQsXm7FAKl5nZlJmSzd8hcAHAHhEdaek9+zQKgdV6Gu+PBMfJ02q qfD+3foEH1FgXFI7mU/VleX4jdUuhZk1H1CUjQcxE5JTb9T8+dcIU5KzLTYW8t+B0PqEdM CfobPiS/NDzWIkYUO+0uYzzZ6oBWA+8ziNOQNsS32Qdym9kxHlUr57envwjnBUVK2WN+he YlDx70AV6OspUwc025KjUQ4/Vlz4eeVJjVygaTW9dSAqIfK3v4KmrH+cW0tItQ== 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=1783342522; 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=atTXA2dglOHwfAe9lQFXYp1tg/QLBhjNydQPR0+AAJw=; b=LINS+G50ZQ7djMQTc8nzAmac8j6kC9BV6bYOaaxVSQHZ3QwiYhd2/uEVBDnSU3U8Qyd0RR BLEohK2ztI3PmptZ2v07+hUetzv2rkb/8wLipxzCmtIWfecmCVSqdcLHkEDBfoCGh4XL8L QqLHc7inzCJXMbYmK/cmoja12PCbYwCvqQagEEFLpijqE/79DGoi1SBLFENfHXvKQA7c5V 88vA/ajmGxUfXlA8tXLUvknzeBzYB7gxrCONLccsAwjz98nNXfmhijf2usUQ28IchJHkTr BX6e9uZTWWBstpVU0xsiOrs+86HX+g6Ez/PDDoUdw7MprqFpbpFSm+nisObHQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gv48T72Nbz14Ng for ; Mon, 06 Jul 2026 12:55:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bfd7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 06 Jul 2026 12:55:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 38dd686b9336 - main - jaildesc: Publish the new fd only after the jaildesc is initialized 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: 38dd686b9336e2de5deadc5f8cb5e46a845b0dd9 Auto-Submitted: auto-generated Date: Mon, 06 Jul 2026 12:55:21 +0000 Message-Id: <6a4ba5b9.3bfd7.66c5985d@gitrepo.freebsd.org> The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=38dd686b9336e2de5deadc5f8cb5e46a845b0dd9 commit 38dd686b9336e2de5deadc5f8cb5e46a845b0dd9 Author: Mark Johnston AuthorDate: 2026-07-06 12:51:11 +0000 Commit: Mark Johnston CommitDate: 2026-07-06 12:51:11 +0000 jaildesc: Publish the new fd only after the jaildesc is initialized jaildesc_alloc() finishes initializing the file structure only after it is made visible from the file descriptor table via finit(). In that window, other threads could try to perform operations on the descriptor and thus access an incompletely initialized jaildesc. Defer the finit() call until locks are initialized. While here, simplify the error path for falloc_caps(). Reported by: Yuxiang Yang, Yizhou Zhao, Ao Wang, Xuewei Feng, Qi Li, and Ke Xu from Tsinghua University using GLM-5.2 from Z.ai Reviewed by: jamie MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D58049 --- sys/kern/kern_jaildesc.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_jaildesc.c b/sys/kern/kern_jaildesc.c index e2e3246ea92b..fdce321cb468 100644 --- a/sys/kern/kern_jaildesc.c +++ b/sys/kern/kern_jaildesc.c @@ -153,18 +153,16 @@ jaildesc_alloc(struct thread *td, struct file **fpp, int *fdp, int owning) if (error != 0) return (error); } - jd = malloc(sizeof(*jd), M_JAILDESC, M_WAITOK | M_ZERO); error = falloc_caps(td, &fp, fdp, 0, NULL); - if (error != 0) { - free(jd, M_JAILDESC); + if (error != 0) return (error); - } - finit(fp, priv_check_cred(fp->f_cred, PRIV_JAIL_SET) == 0 ? - FREAD | FWRITE : FREAD, DTYPE_JAILDESC, jd, &jaildesc_ops); + jd = malloc(sizeof(*jd), M_JAILDESC, M_WAITOK | M_ZERO); JAILDESC_LOCK_INIT(jd); knlist_init_mtx(&jd->jd_selinfo.si_note, &jd->jd_lock); if (owning) jd->jd_flags |= JDF_OWNING; + finit(fp, priv_check_cred(fp->f_cred, PRIV_JAIL_SET) == 0 ? + FREAD | FWRITE : FREAD, DTYPE_JAILDESC, jd, &jaildesc_ops); *fpp = fp; return (0); }