38 lines
1.2 KiB
Diff
38 lines
1.2 KiB
Diff
From 9256af60ce919aead3a5c1fc7f75a138c56474e2 Mon Sep 17 00:00:00 2001
|
|
From: Trond Myklebust <trond.myklebust@primarydata.com>
|
|
Date: Sun, 24 Aug 2014 14:46:48 -0400
|
|
Subject: [PATCH] NFSv3: Fix another acl regression
|
|
|
|
When creating a new object on the NFS server, we should not be sending
|
|
posix setacl requests unless the preceding posix_acl_create returned a
|
|
non-trivial acl. Doing so, causes Solaris servers in particular to
|
|
return an EINVAL.
|
|
|
|
Fixes: 013cdf1088d72 (nfs: use generic posix ACL infrastructure,,,)
|
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1132786
|
|
Cc: stable@vger.kernel.org # 3.14+
|
|
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
|
|
---
|
|
fs/nfs/nfs3acl.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c
|
|
index d0fec260132a..24c6898159cc 100644
|
|
--- a/fs/nfs/nfs3acl.c
|
|
+++ b/fs/nfs/nfs3acl.c
|
|
@@ -129,7 +129,10 @@ static int __nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
|
|
.rpc_argp = &args,
|
|
.rpc_resp = &fattr,
|
|
};
|
|
- int status;
|
|
+ int status = 0;
|
|
+
|
|
+ if (acl == NULL && (!S_ISDIR(inode->i_mode) || dfacl == NULL))
|
|
+ goto out;
|
|
|
|
status = -EOPNOTSUPP;
|
|
if (!nfs_server_capable(inode, NFS_CAP_ACLS))
|
|
--
|
|
1.9.3
|
|
|