|
@@ -3889,6 +3889,7 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry
|
|
|
struct nfs4_accessargs args = {
|
|
|
.fh = NFS_FH(inode),
|
|
|
.bitmask = server->cache_consistency_bitmask,
|
|
|
+ .access = entry->mask,
|
|
|
};
|
|
|
struct nfs4_accessres res = {
|
|
|
.server = server,
|
|
@@ -3899,26 +3900,8 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry
|
|
|
.rpc_resp = &res,
|
|
|
.rpc_cred = entry->cred,
|
|
|
};
|
|
|
- int mode = entry->mask;
|
|
|
int status = 0;
|
|
|
|
|
|
- /*
|
|
|
- * Determine which access bits we want to ask for...
|
|
|
- */
|
|
|
- if (mode & MAY_READ)
|
|
|
- args.access |= NFS4_ACCESS_READ;
|
|
|
- if (S_ISDIR(inode->i_mode)) {
|
|
|
- if (mode & MAY_WRITE)
|
|
|
- args.access |= NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE;
|
|
|
- if (mode & MAY_EXEC)
|
|
|
- args.access |= NFS4_ACCESS_LOOKUP;
|
|
|
- } else {
|
|
|
- if (mode & MAY_WRITE)
|
|
|
- args.access |= NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND;
|
|
|
- if (mode & MAY_EXEC)
|
|
|
- args.access |= NFS4_ACCESS_EXECUTE;
|
|
|
- }
|
|
|
-
|
|
|
res.fattr = nfs_alloc_fattr();
|
|
|
if (res.fattr == NULL)
|
|
|
return -ENOMEM;
|