diff options
| -rw-r--r-- | fs/nfs/dir.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 1255891e5695..24b3a6748062 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
| @@ -2375,16 +2375,31 @@ void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set) | |||
| 2375 | } | 2375 | } |
| 2376 | EXPORT_SYMBOL_GPL(nfs_access_add_cache); | 2376 | EXPORT_SYMBOL_GPL(nfs_access_add_cache); |
| 2377 | 2377 | ||
| 2378 | #define NFS_MAY_READ (NFS4_ACCESS_READ) | ||
| 2379 | #define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \ | ||
| 2380 | NFS4_ACCESS_EXTEND | \ | ||
| 2381 | NFS4_ACCESS_DELETE) | ||
| 2382 | #define NFS_MAY_LOOKUP (NFS4_ACCESS_LOOKUP) | ||
| 2383 | #define NFS_MAY_EXECUTE (NFS4_ACCESS_EXECUTE) | ||
| 2384 | static int | ||
| 2385 | nfs_access_calc_mask(u32 access_result) | ||
| 2386 | { | ||
| 2387 | int mask = 0; | ||
| 2388 | |||
| 2389 | if (access_result & NFS_MAY_READ) | ||
| 2390 | mask |= MAY_READ; | ||
| 2391 | if (access_result & NFS_MAY_WRITE) | ||
| 2392 | mask |= MAY_WRITE; | ||
| 2393 | if (access_result & NFS_MAY_LOOKUP) | ||
| 2394 | mask |= MAY_EXEC; | ||
| 2395 | if (access_result & NFS_MAY_EXECUTE) | ||
| 2396 | mask |= MAY_EXEC; | ||
| 2397 | return mask; | ||
| 2398 | } | ||
| 2399 | |||
| 2378 | void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result) | 2400 | void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result) |
| 2379 | { | 2401 | { |
| 2380 | entry->mask = 0; | 2402 | entry->mask = nfs_access_calc_mask(access_result); |
| 2381 | if (access_result & NFS4_ACCESS_READ) | ||
| 2382 | entry->mask |= MAY_READ; | ||
| 2383 | if (access_result & | ||
| 2384 | (NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE)) | ||
| 2385 | entry->mask |= MAY_WRITE; | ||
| 2386 | if (access_result & (NFS4_ACCESS_LOOKUP|NFS4_ACCESS_EXECUTE)) | ||
| 2387 | entry->mask |= MAY_EXEC; | ||
| 2388 | } | 2403 | } |
| 2389 | EXPORT_SYMBOL_GPL(nfs_access_set_mask); | 2404 | EXPORT_SYMBOL_GPL(nfs_access_set_mask); |
| 2390 | 2405 | ||
