]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/nfsd/nfs4acl.c
Merge branch 'for-6.0/dax' into libnvdimm-fixes
[people/ms/linux.git] / fs / nfsd / nfs4acl.c
index eaa3a0cf38f1453c97c08f4ed3a59c3bbfaabfe1..bb8e2f6d7d03c4b9b8f8abeeae7d6e6019c6fadf 100644 (file)
@@ -751,58 +751,26 @@ out_estate:
        return ret;
 }
 
-__be32
-nfsd4_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp,
-               struct nfs4_acl *acl)
+__be32 nfsd4_acl_to_attr(enum nfs_ftype4 type, struct nfs4_acl *acl,
+                        struct nfsd_attrs *attr)
 {
-       __be32 error;
        int host_error;
-       struct dentry *dentry;
-       struct inode *inode;
-       struct posix_acl *pacl = NULL, *dpacl = NULL;
        unsigned int flags = 0;
 
-       /* Get inode */
-       error = fh_verify(rqstp, fhp, 0, NFSD_MAY_SATTR);
-       if (error)
-               return error;
-
-       dentry = fhp->fh_dentry;
-       inode = d_inode(dentry);
+       if (!acl)
+               return nfs_ok;
 
-       if (S_ISDIR(inode->i_mode))
+       if (type == NF4DIR)
                flags = NFS4_ACL_DIR;
 
-       host_error = nfs4_acl_nfsv4_to_posix(acl, &pacl, &dpacl, flags);
+       host_error = nfs4_acl_nfsv4_to_posix(acl, &attr->na_pacl,
+                                            &attr->na_dpacl, flags);
        if (host_error == -EINVAL)
                return nfserr_attrnotsupp;
-       if (host_error < 0)
-               goto out_nfserr;
-
-       fh_lock(fhp);
-
-       host_error = set_posix_acl(&init_user_ns, inode, ACL_TYPE_ACCESS, pacl);
-       if (host_error < 0)
-               goto out_drop_lock;
-
-       if (S_ISDIR(inode->i_mode)) {
-               host_error = set_posix_acl(&init_user_ns, inode,
-                                          ACL_TYPE_DEFAULT, dpacl);
-       }
-
-out_drop_lock:
-       fh_unlock(fhp);
-
-       posix_acl_release(pacl);
-       posix_acl_release(dpacl);
-out_nfserr:
-       if (host_error == -EOPNOTSUPP)
-               return nfserr_attrnotsupp;
        else
                return nfserrno(host_error);
 }
 
-
 static short
 ace2type(struct nfs4_ace *ace)
 {