Skip to content

Commit 9acb237

Browse files
Olga KornievskaiaTrond Myklebust
authored andcommitted
NFSv4.2: another fix for listxattr
Currently, when the server supports NFS4.1 security labels then security.selinux label in included twice. Instead, only add it when the server doesn't possess security label support. Fixes: 243fea1 ("NFSv4.2: fix listxattr to return selinux security label") Signed-off-by: Olga Kornievskaia <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Trond Myklebust <[email protected]>
1 parent ef93a68 commit 9acb237

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

fs/nfs/nfs4proc.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10883,7 +10883,7 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
1088310883

1088410884
static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
1088510885
{
10886-
ssize_t error, error2, error3, error4;
10886+
ssize_t error, error2, error3, error4 = 0;
1088710887
size_t left = size;
1088810888

1088910889
error = generic_listxattr(dentry, list, left);
@@ -10911,9 +10911,11 @@ static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
1091110911
left -= error3;
1091210912
}
1091310913

10914-
error4 = security_inode_listsecurity(d_inode(dentry), list, left);
10915-
if (error4 < 0)
10916-
return error4;
10914+
if (!nfs_server_capable(d_inode(dentry), NFS_CAP_SECURITY_LABEL)) {
10915+
error4 = security_inode_listsecurity(d_inode(dentry), list, left);
10916+
if (error4 < 0)
10917+
return error4;
10918+
}
1091710919

1091810920
error += error2 + error3 + error4;
1091910921
if (size && error > size)

0 commit comments

Comments
 (0)