aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/nfs/nfs_commonsubs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/nfs/nfs_commonsubs.c')
-rw-r--r--sys/fs/nfs/nfs_commonsubs.c51
1 files changed, 22 insertions, 29 deletions
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: