From nobody Thu Feb 5 01:29:10 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 4f604R1Pw1z6Qy15 for ; Thu, 05 Feb 2026 01:29: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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f604Q6qJ5z3dnX for ; Thu, 05 Feb 2026 01:29:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770254950; 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=boNPZPUpNTsYNAqz1PWeFnxZnyrwh0dVJSjUWNFrl1Q=; b=my0qWsFmJQTkbgKXltUqccjRe67y7PtUlQoQPph0V96GE6lixRdSz4BBvyPpJgA4WxcBlc TAHUt5A32NovP5nh7JcnWxdKv87lhzSY+yLv+oCbVkE//8rNXhqwfeA6GI199u65A5uzZF LkLaXrCvIRxbgLeaecyGQ95iHV43wZUJArKClZg7LdUJceD9lA2HtT0XQavuTeQ7Bbm0rZ 4mNlDt9ZneCXbEZnYTvn0O4zd/JJ/VaHjZh06PPkUDh5OMw4I2PkxXkd12YNj8wf1NodkV boA8vwAyO4YUYqdbRX6dpn30ACjfoAhKrs9ZsO/p4jzE4/7H3Tan9KY+Qr5OSA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770254950; a=rsa-sha256; cv=none; b=rSTHisy59DnoaqOzgrpYXQALY6WZYlqcJHbjrNf6Ubnq7LbGYSOcUGmuI7HUMD+fhu8B6Y gqaeBuUKLzdphyXzE/qSxRhnTVHetUOQKX0i89Zu4YJ4yUgB8StQdZCuihiL08bWcNfpdP D8niEKanY+CyzGHinlp38NMJHBaQSPQxOxssGjBWpcJqs/TOjsAt4uRrlMHka3t+7O7TxQ wVFp5ANEoghfmYWGchGYPWKExsyMGGrEnFK/DQ6P8k8WGjz9XEtRm/CaaJNQaf9kCkTIzg qSbkikad1klpUNsAdtTzILowCmEdd3SrqR3aZcsnMY1VXFNJDYhLF3ebRHtgqg== 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=1770254950; 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=boNPZPUpNTsYNAqz1PWeFnxZnyrwh0dVJSjUWNFrl1Q=; b=TIsfke2jA92fyZ6RJB5Q/m0S9ARTtmsTEuPlw3IMBkFcbOLSVEO/sSVRKqUKdUJarrZbxN yPLczA5ctRFq2zDGZZ8NEz1M3xKiKNw75aTgy2ukJ0M/D28ZU3tUK6rojhkG+fmf57E9Cy IQgTYPA7+Rp1IEFQ+7IqtN+K52G+XAplOsjrGRewFTm3rGQ4ZlIu8+aluInyF+0Ok/qFsd 7m3nTQy57DGPuYWcnJjPdYk6Pzv9CHu1VTShAsD7UMqPdJnb1OJ9bPwOmnhKNARUigprTf 9rdstx6ErPagQkqgkqe1tyuA6uP35NuQ8NBRdfcip6bGjxhZM+L8oEkjMcej5Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f604Q5wc6z1MxL for ; Thu, 05 Feb 2026 01:29:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 373aa by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 05 Feb 2026 01:29:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: dccf41dd1834 - stable/15 - nfs: Add some support for POSIX draft ACLs 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: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: dccf41dd183493a26fef0100060e865f408e743e Auto-Submitted: auto-generated Date: Thu, 05 Feb 2026 01:29:10 +0000 Message-Id: <6983f266.373aa.766de4d1@gitrepo.freebsd.org> The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=dccf41dd183493a26fef0100060e865f408e743e commit dccf41dd183493a26fef0100060e865f408e743e Author: Rick Macklem AuthorDate: 2025-12-22 21:51:15 +0000 Commit: Rick Macklem CommitDate: 2026-02-05 01:27:41 +0000 nfs: Add some support for POSIX draft ACLs An internet draft (expected to become an RFC someday) https://datatracker.ietf.org/doc/draft-ietf-nfsv4-posix-acls describes an extension to NFSv4.2 to handle POSIX draft ACLs. This is the fifth of several patches that implement the above draft. This one mostly adds an extra argument to two functions in nfscommon.ko. Unfortunately, these functions are called in many places, so the changes are numerous, but straightforward. Since the internal KAPI between the NFS modules is changed by this commit, all of nfscommon.ko, nfscl.ko and nfsd.ko must be rebuilt from sources. There should be no semantics change for the series at this point. (cherry picked from commit 9f49f436a9ec9441dacae8117280a83ddea7b9c6) --- sys/fs/nfs/nfs_commonacl.c | 2 +- sys/fs/nfs/nfs_commonsubs.c | 51 +++++++++++++++++----------------------- sys/fs/nfs/nfs_var.h | 10 ++++---- sys/fs/nfsclient/nfs_clcomsubs.c | 2 +- sys/fs/nfsclient/nfs_clport.c | 2 +- sys/fs/nfsclient/nfs_clrpcops.c | 32 ++++++++++++++----------- sys/fs/nfsserver/nfs_nfsdport.c | 28 +++++++++++----------- sys/fs/nfsserver/nfs_nfsdserv.c | 4 ++-- sys/fs/nfsserver/nfs_nfsdstate.c | 2 +- 9 files changed, 65 insertions(+), 68 deletions(-) diff --git a/sys/fs/nfs/nfs_commonacl.c b/sys/fs/nfs/nfs_commonacl.c index 2120b095823b..64272b35a82d 100644 --- a/sys/fs/nfs/nfs_commonacl.c +++ b/sys/fs/nfs/nfs_commonacl.c @@ -40,7 +40,7 @@ static int nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner, */ int nfsrv_dissectace(struct nfsrv_descript *nd, struct acl_entry *acep, - bool server, int *aceerrp, int *acesizep, NFSPROC_T *p) + bool server, int *aceerrp, int *acesizep) { u_int32_t *tl; int len, gotid = 0, owner = 0, error = 0, aceerr = 0; diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index 2b0ce45d05dd..950288027d76 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -1148,12 +1148,11 @@ nfsmout: */ int nfsrv_dissectacl(struct nfsrv_descript *nd, NFSACL_T *aclp, bool server, - int *aclerrp, int *aclsizep, __unused NFSPROC_T *p) + bool posixacl, int *aclerrp, int *aclsizep) { uint32_t *tl; int i, aclsize; int acecnt, error = 0, aceerr = 0, acesize; - bool posixacl = false; *aclerrp = 0; if (aclp != NULL) @@ -1186,7 +1185,7 @@ nfsrv_dissectacl(struct nfsrv_descript *nd, NFSACL_T *aclp, bool server, else error = nfsrv_dissectace(nd, &aclp->acl_entry[i], server, &aceerr, - &acesize, p); + &acesize); } else if (posixacl) error = nfsrv_skipace(nd, ACL_TYPE_ACCESS, &acesize); else @@ -1328,7 +1327,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsv3_pathconf *pc, struct statfs *sbp, struct nfsstatfs *sfp, struct nfsfsinfo *fsp, NFSACL_T *aclp, int compare, int *retcmpp, u_int32_t *leasep, u_int32_t *rderrp, bool *has_namedattrp, - uint32_t *clone_blksizep, NFSPROC_T *p, struct ucred *cred) + uint32_t *clone_blksizep, uint32_t *trueformp, NFSPROC_T *p, + struct ucred *cred) { u_int32_t *tl; int i = 0, j, k, l = 0, m, bitpos, attrsum = 0; @@ -1648,8 +1648,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, NFSACL_T *naclp; naclp = acl_alloc(M_WAITOK); - error = nfsrv_dissectacl(nd, naclp, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, naclp, true, false, + &aceerr, &cnt); if (error) { acl_free(naclp); goto nfsmout; @@ -1659,8 +1659,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, *retcmpp = NFSERR_NOTSAME; acl_free(naclp); } else { - error = nfsrv_dissectacl(nd, NULL, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, NULL, true, false, + &aceerr, &cnt); if (error) goto nfsmout; *retcmpp = NFSERR_ATTRNOTSUPP; @@ -1669,14 +1669,13 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, } else { if (vp != NULL && aclp != NULL) error = nfsrv_dissectacl(nd, aclp, false, - &aceerr, &cnt, p); + false, &aceerr, &cnt); else error = nfsrv_dissectacl(nd, NULL, false, - &aceerr, &cnt, p); + false, &aceerr, &cnt); if (error) goto nfsmout; } - attrsum += cnt; break; case NFSATTRBIT_ACLSUPPORT: @@ -2470,13 +2469,9 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, *tl)) *retcmpp = NFSERR_NOTSAME; } -#ifdef notyet } else if (trueformp != NULL) { *trueformp = fxdr_unsigned(uint32_t, *tl); } -#else - } -#endif attrsum += NFSX_UNSIGNED; break; case NFSATTRBIT_ACLTRUEFORMSCOPE: @@ -2497,8 +2492,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, NFSACL_T *naclp; naclp = acl_alloc(M_WAITOK); - error = nfsrv_dissectacl(nd, naclp, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, naclp, true, true, + &aceerr, &cnt); if (error) { acl_free(naclp); goto nfsmout; @@ -2508,8 +2503,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, *retcmpp = NFSERR_NOTSAME; acl_free(naclp); } else { - error = nfsrv_dissectacl(nd, NULL, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, NULL, true, true, + &aceerr, &cnt); if (error) goto nfsmout; *retcmpp = NFSERR_ATTRNOTSUPP; @@ -2518,14 +2513,13 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, } else { if (vp != NULL && aclp != NULL) error = nfsrv_dissectacl(nd, aclp, false, - &aceerr, &cnt, p); + true, &aceerr, &cnt); else error = nfsrv_dissectacl(nd, NULL, false, - &aceerr, &cnt, p); + true, &aceerr, &cnt); if (error) goto nfsmout; } - attrsum += cnt; break; case NFSATTRBIT_POSIXDEFAULTACL: @@ -2535,8 +2529,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, NFSACL_T *naclp; naclp = acl_alloc(M_WAITOK); - error = nfsrv_dissectacl(nd, naclp, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, naclp, true, true, + &aceerr, &cnt); if (error) { acl_free(naclp); goto nfsmout; @@ -2546,8 +2540,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, *retcmpp = NFSERR_NOTSAME; acl_free(naclp); } else { - error = nfsrv_dissectacl(nd, NULL, true, - &aceerr, &cnt, p); + error = nfsrv_dissectacl(nd, NULL, true, true, + &aceerr, &cnt); if (error) goto nfsmout; *retcmpp = NFSERR_ATTRNOTSUPP; @@ -2556,14 +2550,13 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, } else { if (vp != NULL && aclp != NULL) error = nfsrv_dissectacl(nd, aclp, false, - &aceerr, &cnt, p); + true, &aceerr, &cnt); else error = nfsrv_dissectacl(nd, NULL, false, - &aceerr, &cnt, p); + true, &aceerr, &cnt); if (error) goto nfsmout; } - attrsum += cnt; break; default: diff --git a/sys/fs/nfs/nfs_var.h b/sys/fs/nfs/nfs_var.h index fe2462d94fd5..0211acf7f00b 100644 --- a/sys/fs/nfs/nfs_var.h +++ b/sys/fs/nfs/nfs_var.h @@ -334,8 +334,8 @@ int nfsm_advance(struct nfsrv_descript *, int, int); void *nfsm_dissct(struct nfsrv_descript *, int, int); void newnfs_copycred(struct nfscred *, struct ucred *); void newnfs_copyincred(struct ucred *, struct nfscred *); -int nfsrv_dissectacl(struct nfsrv_descript *, NFSACL_T *, bool, int *, - int *, NFSPROC_T *); +int nfsrv_dissectacl(struct nfsrv_descript *, NFSACL_T *, bool, bool, int *, + int *); int nfsrv_getattrbits(struct nfsrv_descript *, nfsattrbit_t *, int *, int *); int nfsrv_getopbits(struct nfsrv_descript *, nfsopbit_t *, int *); @@ -343,8 +343,8 @@ int nfsv4_loadattr(struct nfsrv_descript *, vnode_t, struct nfsvattr *, struct nfsfh **, fhandle_t *, int, struct nfsv3_pathconf *, struct statfs *, struct nfsstatfs *, struct nfsfsinfo *, NFSACL_T *, - int, int *, u_int32_t *, u_int32_t *, bool *, uint32_t *, NFSPROC_T *, - struct ucred *); + int, int *, u_int32_t *, u_int32_t *, bool *, uint32_t *, uint32_t *, + NFSPROC_T *, struct ucred *); int nfsv4_lock(struct nfsv4lock *, int, int *, struct mtx *, struct mount *); void nfsv4_unlock(struct nfsv4lock *, int); void nfsv4_relref(struct nfsv4lock *); @@ -441,7 +441,7 @@ int nfs_supportsposixacls(struct vnode *); /* nfs_commonacl.c */ int nfsrv_dissectace(struct nfsrv_descript *, struct acl_entry *, - bool, int *, int *, NFSPROC_T *); + bool, int *, int *); uint32_t nfs_aceperm(acl_perm_t); int nfsrv_dissectposixace(struct nfsrv_descript *, struct acl_entry *, bool, int *, int *); diff --git a/sys/fs/nfsclient/nfs_clcomsubs.c b/sys/fs/nfsclient/nfs_clcomsubs.c index 05963074e53d..2b48e257381e 100644 --- a/sys/fs/nfsclient/nfs_clcomsubs.c +++ b/sys/fs/nfsclient/nfs_clcomsubs.c @@ -272,7 +272,7 @@ nfsm_loadattr(struct nfsrv_descript *nd, struct nfsvattr *nap) if (nd->nd_flag & ND_NFSV4) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, - NULL, NULL); + NULL, NULL, NULL); } else if (nd->nd_flag & ND_NFSV3) { NFSM_DISSECT(fp, struct nfs_fattr *, NFSX_V3FATTR); nap->na_type = nfsv34tov_type(fp->fa_type); diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index 77e71d4153c9..c5f7ce0a12c7 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -828,7 +828,7 @@ nfscl_wcc_data(struct nfsrv_descript *nd, struct vnode *vp, == (ND_NFSV4 | ND_V4WCCATTR)) { error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if (error) return (error); /* diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 0047be031ad5..9bdc2b776575 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -678,7 +678,7 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, int fhlen, if (ret) ndp->nfsdl_flags |= NFSCLDL_RECALL; error = nfsrv_dissectace(nd, &ndp->nfsdl_ace, false, - &ret, &acesize, p); + &ret, &acesize); if (error) goto nfsmout; } else if (deleg == NFSV4OPEN_DELEGATENONEEXT && @@ -699,7 +699,7 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, int fhlen, ("nfsrpc_openrpc: Getattr repstat")); error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, p, cred); + NULL, NULL, NULL, NULL, NULL, NULL, p, cred); if (error) goto nfsmout; } @@ -1358,7 +1358,7 @@ nfsrpc_getattrnovp(struct nfsmount *nmp, u_int8_t *fhp, int fhlen, int syscred, if ((nd->nd_flag & ND_NFSV4) != 0) error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, leasep, NULL, - NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); else error = nfsm_loadattr(nd, nap); } else @@ -2754,7 +2754,7 @@ nfsrpc_createv4(vnode_t dvp, char *name, int namelen, struct vattr *vap, if (ret) dp->nfsdl_flags |= NFSCLDL_RECALL; error = nfsrv_dissectace(nd, &dp->nfsdl_ace, false, - &ret, &acesize, p); + &ret, &acesize); if (error) goto nfsmout; } else if (deleg == NFSV4OPEN_DELEGATENONEEXT && @@ -3601,7 +3601,8 @@ nfsrpc_readdir(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep, nfsva.na_mntonfileno = UINT64_MAX; error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, p, cred); + NULL, NULL, NULL, NULL, NULL, NULL, + p, cred); if (error) { dotdotfileid = dotfileid; } else if (gotmnton) { @@ -3851,7 +3852,8 @@ nfsrpc_readdir(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep, nfsva.na_mntonfileno = UINT64_MAX; error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, &rderr, NULL, NULL, p, cred); + NULL, NULL, &rderr, NULL, NULL, NULL, + p, cred); if (error) goto nfsmout; NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); @@ -4076,7 +4078,8 @@ nfsrpc_readdirplus(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep, nfsva.na_mntonfileno = UINT64_MAX; error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, p, cred); + NULL, NULL, NULL, NULL, NULL, NULL, + p, cred); if (error) { dotdotfileid = dotfileid; } else if (gotmnton) { @@ -4353,7 +4356,8 @@ nfsrpc_readdirplus(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep, nfsva.na_mntonfileno = 0xffffffff; error = nfsv4_loadattr(nd, NULL, &nfsva, &nfhp, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, &rderr, NULL, NULL, p, cred); + NULL, NULL, &rderr, NULL, NULL, NULL, + p, cred); if (error) goto nfsmout; } @@ -5018,7 +5022,7 @@ nfsrpc_statfs(vnode_t vp, struct nfsstatfs *sbp, struct nfsfsinfo *fsp, if (nd->nd_repstat == 0) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, sbp, fsp, NULL, 0, NULL, leasep, NULL, - NULL, cloneblksizep, p, cred); + NULL, cloneblksizep, NULL, p, cred); if (!error) { nmp->nm_fsid[0] = nap->na_filesid[0]; nmp->nm_fsid[1] = nap->na_filesid[1]; @@ -5113,7 +5117,7 @@ nfsrpc_pathconf(vnode_t vp, struct nfsv3_pathconf *pc, bool *has_namedattrp, if (nd->nd_repstat == 0) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, pc, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - has_namedattrp, clone_blksizep, p, cred); + has_namedattrp, clone_blksizep, trueformp, p, cred); if (!error) *attrflagp = 1; } else { @@ -5430,7 +5434,7 @@ nfsrpc_getacl(struct vnode *vp, acl_type_t acltype, struct ucred *cred, if (!nd->nd_repstat) error = nfsv4_loadattr(nd, vp, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, aclp, 0, NULL, NULL, NULL, NULL, NULL, - p, cred); + NULL, p, cred); else error = nd->nd_repstat; m_freem(nd->nd_mrep); @@ -8532,7 +8536,7 @@ nfsrpc_openlayoutrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, if (ret != 0) ndp->nfsdl_flags |= NFSCLDL_RECALL; error = nfsrv_dissectace(nd, &ndp->nfsdl_ace, false, - &ret, &acesize, p); + &ret, &acesize); if (error != 0) goto nfsmout; } else if (deleg == NFSV4OPEN_DELEGATENONEEXT && @@ -8556,7 +8560,7 @@ nfsrpc_openlayoutrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, if (*++tl == 0) { error = nfsv4_loadattr(nd, NULL, &nfsva, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, p, cred); + NULL, NULL, NULL, NULL, NULL, NULL, p, cred); if (error != 0) goto nfsmout; if (ndp != NULL) { @@ -8759,7 +8763,7 @@ nfsrpc_createlayout(vnode_t dvp, char *name, int namelen, struct vattr *vap, if (ret != 0) dp->nfsdl_flags |= NFSCLDL_RECALL; error = nfsrv_dissectace(nd, &dp->nfsdl_ace, false, - &ret, &acesize, p); + &ret, &acesize); if (error != 0) goto nfsmout; } else if (deleg == NFSV4OPEN_DELEGATENONEEXT && diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index 61d0f2aa8f90..58a9b17caab9 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -3239,8 +3239,8 @@ nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, attrsum += NFSX_HYPER; break; case NFSATTRBIT_ACL: - error = nfsrv_dissectacl(nd, aclp, true, &aceerr, - &aclsize, p); + error = nfsrv_dissectacl(nd, aclp, true, false, &aceerr, + &aclsize); if (error) goto nfsmout; if (aceerr && !nd->nd_repstat) @@ -3432,8 +3432,8 @@ nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, attrsum += 2 * NFSX_UNSIGNED; break; case NFSATTRBIT_POSIXACCESSACL: - error = nfsrv_dissectacl(nd, aclp, true, &aceerr, - &aclsize, p); + error = nfsrv_dissectacl(nd, aclp, true, true, &aceerr, + &aclsize); if (error != 0) goto nfsmout; if (!nd->nd_repstat) { @@ -3447,8 +3447,8 @@ nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, attrsum += aclsize; break; case NFSATTRBIT_POSIXDEFAULTACL: - error = nfsrv_dissectacl(nd, daclp, true, &aceerr, - &aclsize, p); + error = nfsrv_dissectacl(nd, daclp, true, true, &aceerr, + &aclsize); if (error != 0) goto nfsmout; if (!nd->nd_repstat) { @@ -5757,7 +5757,7 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, (ND_NFSV4 | ND_V4WCCATTR)) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, - NULL); + NULL, NULL); NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -5789,7 +5789,7 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, - NULL); + NULL, NULL); } NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: @@ -5956,7 +5956,7 @@ nfsrv_allocatedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, - NULL); + NULL, NULL); } else error = nd->nd_repstat; NFSD_DEBUG(4, "nfsrv_allocatedsdorpc: aft loadattr=%d\n", error); @@ -6124,7 +6124,7 @@ nfsrv_deallocatedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, (ND_NFSV4 | ND_V4WCCATTR)) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, - NULL); + NULL, NULL); NFSD_DEBUG(4, "nfsrv_deallocatedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -6139,7 +6139,7 @@ nfsrv_deallocatedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, - NULL); + NULL, NULL); } else error = nd->nd_repstat; NFSD_DEBUG(4, "nfsrv_deallocatedsdorpc: aft loadattr=%d\n", error); @@ -6288,7 +6288,7 @@ nfsrv_setattrdsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, (ND_NFSV4 | ND_V4WCCATTR)) { error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, - NULL, NULL); + NULL, NULL, NULL); NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -6313,7 +6313,7 @@ nfsrv_setattrdsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, - NULL, NULL); + NULL, NULL, NULL); } NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: aft setattr loadattr=%d\n", error); nfsmout: @@ -6602,7 +6602,7 @@ nfsrv_getattrdsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, if (nd->nd_repstat == 0) { error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); /* * We can only save the updated values in the extended * attribute if the vp is exclusively locked. diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index faccb174d998..bc877d94283a 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -4410,8 +4410,8 @@ nfsrvd_verify(struct nfsrv_descript *nd, int isdgram, if (!nd->nd_repstat) { nfsvno_getfs(&fs, isdgram); error = nfsv4_loadattr(nd, vp, &nva, NULL, &fh, fhsize, NULL, - sf, NULL, &fs, NULL, 1, &ret, NULL, NULL, NULL, NULL, p, - nd->nd_cred); + sf, NULL, &fs, NULL, 1, &ret, NULL, NULL, NULL, NULL, NULL, + p, nd->nd_cred); if (!error) { if (nd->nd_procnum == NFSV4OP_NVERIFY) { if (ret == 0) diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c index 3fae2be5af46..cb8bbc45b379 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -4689,7 +4689,7 @@ errout: } else if (error == 0 && procnum == NFSV4OP_CBGETATTR) error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL, p, NULL); + NULL, NULL, NULL, p, NULL); m_freem(nd->nd_mrep); } NFSLOCKSTATE();