From nobody Tue Jan 27 19:16:38 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 4f0wBH1M1cz6QJ6W for ; Tue, 27 Jan 2026 19:16:39 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f0wBG5TJzz3FC8 for ; Tue, 27 Jan 2026 19:16:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769541398; 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=VZ9lhrq0HCYnFVumeCA/zhtDc1m3BSGsG9XIA+uBuKw=; b=H0Q0sJkl9SFNHqiYysFh6ZLsodGXPaW+P9oZI4IM9Q3TO/jXwneMBg+AtYf4QJv/nVl+qh OVXUALVXvpwnKyJfe/Rb4hrpx4Na4vGGKfDKaEKrytOb73AMt+DXVRR2/KMho9Jm/zzrCi p+S7FEr29T1KhfGdOLpRagZgkRGPdFS/66MRmQaSLp5nIyTdzQlfc926MqnS/f6yU3yP4j 9Pypqg3vmozCKrHdTMr3hFI9OmdFKxULCF0b7JpPmMaQsQIZREEpjcQ1T7t4Yyo/7yEtDm dW1L4bYCCXf4XFquiCCLgHrwt2jjIsw+Uqz9wI/4BEvxrHi7fFeocFYYaChd3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769541398; 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=VZ9lhrq0HCYnFVumeCA/zhtDc1m3BSGsG9XIA+uBuKw=; b=sJLrM9cCrCmXROExTImMCEgE8smSt6osMJZt2rvZLyc60uu3H+lMnwK/bIYGOQmVBzeP9N 2+0PYKl3lmT3+lRCPYKlwYBlpo2oyEtpufG486UIUAdLZ1Wh5VBXNhWQeUOKOxIWfnlgEl 9pJuHfBG98thHTc3cZFzo/H1IXOLC7M6HMGLXP76zi64D9LcZjLLM+I7vd48YNPA6R5HsM 3SjOah2pklrta1qh+aMOffatg4VsxYvUeoezvjMFe8n6RX7W47Q4PC07Lh18MGzKI5FGjA RPHiu6zXHCLcm/ZadF0lhmpaglAWSU2S7QYtXw3ezHbzC3/atUY1rwObZX9U4A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769541398; a=rsa-sha256; cv=none; b=dOZa8NMO2Pd+aSU9HXuKugwu9/f0f0fjf4fdu/iwWr7Q89tVJJEz597qcRHUN886dIKxaD 4lPXzlJp1IIspmHZOrK9pDcz3j1Ti8QEOJ5S+FLyZV0owpIZIidjOx6bPXXahq5vVRbcyn oYwSUccQvoQmpTm9DPzSDafaiWZ+OVNSnlVdrL8sMHjLNWnaHmq6Npp6fYMAV/E0Q4sn6v VTbm2HsHC4lzm5T1n6/ps+F3F5k01aKqydQhocZ/q6izhHdAl1sS2dVXzkojHYp+rFRciJ WMMbei045RvLkP7lberh8GWgOrVse6JI9yFqbTQxhmS4NDoE4zXKeMnuCvTpKQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f0wBG4s0kz4k0 for ; Tue, 27 Jan 2026 19:16:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22b5a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 27 Jan 2026 19:16:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: fbb71f3a1465 - releng/13.5 - vfs: Don't clobber namei flags in vn_open_cred() 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 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/releng/13.5 X-Git-Reftype: branch X-Git-Commit: fbb71f3a14656684b39187a0c4075216c86dde61 Auto-Submitted: auto-generated Date: Tue, 27 Jan 2026 19:16:38 +0000 Message-Id: <69790f16.22b5a.1bffa70a@gitrepo.freebsd.org> The branch releng/13.5 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=fbb71f3a14656684b39187a0c4075216c86dde61 commit fbb71f3a14656684b39187a0c4075216c86dde61 Author: Mark Johnston AuthorDate: 2025-05-28 13:35:24 +0000 Commit: Mark Johnston CommitDate: 2026-01-26 16:46:30 +0000 vfs: Don't clobber namei flags in vn_open_cred() Otherwise NAMEILOOKUP is cleared. More generally it seems quite surprising that the flags set by vn_open_cred() callers are not automatically preserved. Modify open2nameif() such that it takes already-set namei flags into account. Approved by: so Reviewed by: olce, kib Fixes: 7587f6d4840f ("namei: Make stackable filesystems check harder for jail roots") Differential Revision: https://reviews.freebsd.org/D50531 (cherry picked from commit e05e33041c252dc236939683c01ca4b7b083562c) (cherry picked from commit 8c63056ea8a34f7ac9cbbfcf6d37c303e1e00a76) --- sys/kern/vfs_vnops.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 6591b543ddea..e685d581733b 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -195,21 +195,26 @@ vn_open(struct nameidata *ndp, int *flagp, int cmode, struct file *fp) } static uint64_t -open2nameif(int fmode, u_int vn_open_flags) +open2nameif(int fmode, u_int vn_open_flags, uint64_t cn_flags) { uint64_t res; - res = ISOPEN | LOCKLEAF; + res = ISOPEN | LOCKLEAF | cn_flags; if ((fmode & O_RESOLVE_BENEATH) != 0) res |= RBENEATH; if ((fmode & O_EMPTY_PATH) != 0) res |= EMPTYPATH; + if ((fmode & O_NOFOLLOW) != 0) + res &= ~FOLLOW; if ((vn_open_flags & VN_OPEN_NOAUDIT) == 0) res |= AUDITVNODE1; + else + res &= ~AUDITVNODE1; if ((vn_open_flags & VN_OPEN_NOCAPCHECK) != 0) res |= NOCAPCHECK; if ((vn_open_flags & VN_OPEN_WANTIOCTLCAPS) != 0) res |= WANTIOCTLCAPS; + return (res); } @@ -242,7 +247,9 @@ restart: return (EINVAL); else if ((fmode & (O_CREAT | O_DIRECTORY)) == O_CREAT) { ndp->ni_cnd.cn_nameiop = CREATE; - ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags); + ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags, + ndp->ni_cnd.cn_flags); + /* * Set NOCACHE to avoid flushing the cache when * rolling in many files at once. @@ -251,8 +258,8 @@ restart: * exist despite NOCACHE. */ ndp->ni_cnd.cn_flags |= LOCKPARENT | NOCACHE | NC_KEEPPOSENTRY; - if ((fmode & O_EXCL) == 0 && (fmode & O_NOFOLLOW) == 0) - ndp->ni_cnd.cn_flags |= FOLLOW; + if ((fmode & O_EXCL) != 0) + ndp->ni_cnd.cn_flags &= ~FOLLOW; if ((vn_open_flags & VN_OPEN_INVFS) == 0) bwillwrite(); if ((error = namei(ndp)) != 0) @@ -320,9 +327,8 @@ restart: } } else { ndp->ni_cnd.cn_nameiop = LOOKUP; - ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags); - ndp->ni_cnd.cn_flags |= (fmode & O_NOFOLLOW) != 0 ? NOFOLLOW : - FOLLOW; + ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags, + ndp->ni_cnd.cn_flags); if ((fmode & FWRITE) == 0) ndp->ni_cnd.cn_flags |= LOCKSHARED; if ((error = namei(ndp)) != 0)