Patchwork [BRANCH:release-3.1,BUG:2553] nfs: capture attrs of create request in cs->stbuf for later use

login
register
Submitter Anand Avati
Date 2011-03-28 14:58:30
Message ID <20110328145830.GA24536@dev.gluster.com>
Download mbox | patch
Permalink /patch/6620/
State Accepted
Headers show

Comments

Anand Avati - 2011-03-28 14:58:30
when attrs coming in as part of create request contain modes other
than mode, they were getting discarded previously and a setattr
was getting performed on a 0-filled iatt structure. This would
result in EPERM at the access control translator as non-root users
cannot chown a file to uid 0.

Not seen with Linux NFS client as it (very likely) relies upon
auth-unix to set the ownership of the file or sends an explicit
setattr after the create.

Signed-off-by: Anand Avati <avati@gluster.com>
---
 xlators/nfs/server/src/nfs3.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c
index e23d4ad..0c2f88b 100644
--- a/xlators/nfs/server/src/nfs3.c
+++ b/xlators/nfs/server/src/nfs3.c
@@ -2512,7 +2512,7 @@  nfs3_create (rpcsvc_request_t *req, struct nfs3_fh *dirfh, char *name,
         nfs3_handle_call_state_init (nfs3, cs, req, vol, stat, nfs3err);
 
         cs->cookieverf = cverf;
-        cs->setattr_valid = nfs3_sattr3_to_setattr_valid (sattr, NULL,
+        cs->setattr_valid = nfs3_sattr3_to_setattr_valid (sattr, &cs->stbuf,
                                                           &cs->mode);
         cs->createmode = mode;
         cs->parent = *dirfh;