[PATCH] nfsd4: fix open-create permissions
In the case where an open creates the file, we shouldn't be rechecking permissions to open the file; the open succeeds regardless of what the new file's mode bits say. This patch fixes the problem, but only by introducing yet another parameter to nfsd_create_v3. This is ugly. This will be fixed by later patches. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Acked-by: Neil Brown <neilb@suse.de> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
af85852de0
commit
81ac95c556
@@ -1237,7 +1237,7 @@ __be32
|
||||
nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
char *fname, int flen, struct iattr *iap,
|
||||
struct svc_fh *resfhp, int createmode, u32 *verifier,
|
||||
int *truncp)
|
||||
int *truncp, int *created)
|
||||
{
|
||||
struct dentry *dentry, *dchild = NULL;
|
||||
struct inode *dirp;
|
||||
@@ -1331,6 +1331,8 @@ nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
host_err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
|
||||
if (host_err < 0)
|
||||
goto out_nfserr;
|
||||
if (created)
|
||||
*created = 1;
|
||||
|
||||
if (EX_ISSYNC(fhp->fh_export)) {
|
||||
err = nfserrno(nfsd_sync_dir(dentry));
|
||||
|
Reference in New Issue
Block a user