NFSD: Clean up nfsd3_proc_create()
authorChuck Lever <chuck.lever@oracle.com>
Fri, 25 Mar 2022 18:47:54 +0000 (14:47 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 20 May 2022 17:18:24 +0000 (13:18 -0400)
As near as I can tell, mode bit masking and setting S_IFREG is
already done by do_nfsd_create() and vfs_create(). The NFSv4 path
(do_open_lookup), for example, does not bother with this special
processing.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs3proc.c

index 936eebd..981a2a7 100644 (file)
@@ -229,8 +229,7 @@ nfsd3_proc_create(struct svc_rqst *rqstp)
 {
        struct nfsd3_createargs *argp = rqstp->rq_argp;
        struct nfsd3_diropres *resp = rqstp->rq_resp;
-       svc_fh          *dirfhp, *newfhp = NULL;
-       struct iattr    *attr;
+       svc_fh *dirfhp, *newfhp;
 
        dprintk("nfsd: CREATE(3)   %s %.*s\n",
                                SVCFH_fmt(&argp->fh),
@@ -239,20 +238,9 @@ nfsd3_proc_create(struct svc_rqst *rqstp)
 
        dirfhp = fh_copy(&resp->dirfh, &argp->fh);
        newfhp = fh_init(&resp->fh, NFS3_FHSIZE);
-       attr   = &argp->attrs;
-
-       /* Unfudge the mode bits */
-       attr->ia_mode &= ~S_IFMT;
-       if (!(attr->ia_valid & ATTR_MODE)) { 
-               attr->ia_valid |= ATTR_MODE;
-               attr->ia_mode = S_IFREG;
-       } else {
-               attr->ia_mode = (attr->ia_mode & ~S_IFMT) | S_IFREG;
-       }
 
-       /* Now create the file and set attributes */
        resp->status = do_nfsd_create(rqstp, dirfhp, argp->name, argp->len,
-                                     attr, newfhp, argp->createmode,
+                                     &argp->attrs, newfhp, argp->createmode,
                                      (u32 *)argp->verf, NULL, NULL);
        return rpc_success;
 }