diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 1e0faf9fa078..ccada6856f0d 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -1661,10 +1661,10 @@ static int nfs4_opendata_access(struct rpc_cred *cred, | |||
1661 | return 0; | 1661 | return 0; |
1662 | 1662 | ||
1663 | mask = 0; | 1663 | mask = 0; |
1664 | /* don't check MAY_WRITE - a newly created file may not have | ||
1665 | * write mode bits, but POSIX allows the creating process to write */ | ||
1664 | if (fmode & FMODE_READ) | 1666 | if (fmode & FMODE_READ) |
1665 | mask |= MAY_READ; | 1667 | mask |= MAY_READ; |
1666 | if (fmode & FMODE_WRITE) | ||
1667 | mask |= MAY_WRITE; | ||
1668 | if (fmode & FMODE_EXEC) | 1668 | if (fmode & FMODE_EXEC) |
1669 | mask |= MAY_EXEC; | 1669 | mask |= MAY_EXEC; |
1670 | 1670 | ||
@@ -1673,7 +1673,7 @@ static int nfs4_opendata_access(struct rpc_cred *cred, | |||
1673 | nfs_access_set_mask(&cache, opendata->o_res.access_result); | 1673 | nfs_access_set_mask(&cache, opendata->o_res.access_result); |
1674 | nfs_access_add_cache(state->inode, &cache); | 1674 | nfs_access_add_cache(state->inode, &cache); |
1675 | 1675 | ||
1676 | if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0) | 1676 | if ((mask & ~cache.mask & (MAY_READ | MAY_EXEC)) == 0) |
1677 | return 0; | 1677 | return 0; |
1678 | 1678 | ||
1679 | /* even though OPEN succeeded, access is denied. Close the file */ | 1679 | /* even though OPEN succeeded, access is denied. Close the file */ |