Commit 63bab0651be0ba857200219a08644e6a99f448b6
Committed by
J. Bruce Fields
1 parent
afbda402a0
nfsd3: Check write permission after checking existence
When creating a file that already exists in a read-only directory with O_EXCL, the NFSv3 server returns EACCES rather than EEXIST (which local files and the NFSv4 server return). Fix this by checking the MAY_CREATE permission only if the file does not exist. Since this already happens in do_nfsd_create, the check in nfsd3_proc_create can simply be removed. Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Showing 1 changed file with 0 additions and 5 deletions Side-by-side Diff
fs/nfsd/nfs3proc.c
... | ... | @@ -223,11 +223,6 @@ |
223 | 223 | newfhp = fh_init(&resp->fh, NFS3_FHSIZE); |
224 | 224 | attr = &argp->attrs; |
225 | 225 | |
226 | - /* Get the directory inode */ | |
227 | - nfserr = fh_verify(rqstp, dirfhp, S_IFDIR, NFSD_MAY_CREATE); | |
228 | - if (nfserr) | |
229 | - RETURN_STATUS(nfserr); | |
230 | - | |
231 | 226 | /* Unfudge the mode bits */ |
232 | 227 | attr->ia_mode &= ~S_IFMT; |
233 | 228 | if (!(attr->ia_valid & ATTR_MODE)) { |