nfsd3: Check write permission after checking existence
authorRoss Lagerwall <rosslagerwall@gmail.com>
Sat, 9 Aug 2014 13:44:00 +0000 (14:44 +0100)
committerJ. Bruce Fields <bfields@redhat.com>
Sun, 17 Aug 2014 16:00:14 +0000 (12:00 -0400)
commit63bab0651be0ba857200219a08644e6a99f448b6
tree17fd443e8c826a601742d107e81d90e5b1be5940
parentafbda402a02bde74f350ff98243265dfd3108fb3
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>
fs/nfsd/nfs3proc.c