mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-24 17:18:27 +00:00
NFSv4.2: fix listxattr to return selinux security label
Currently, when NFS is queried for all the labels present on the file via a command example "getfattr -d -m . /mnt/testfile", it does not return the security label. Yet when asked specifically for the label (getfattr -n security.selinux) it will be returned. Include the security label when all attributes are queried. Signed-off-by: Olga Kornievskaia <okorniev@redhat.com> Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
This commit is contained in:
parent
aba41e90aa
commit
243fea1346
@ -10858,7 +10858,7 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
|
|||||||
|
|
||||||
static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
|
static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
|
||||||
{
|
{
|
||||||
ssize_t error, error2, error3;
|
ssize_t error, error2, error3, error4;
|
||||||
size_t left = size;
|
size_t left = size;
|
||||||
|
|
||||||
error = generic_listxattr(dentry, list, left);
|
error = generic_listxattr(dentry, list, left);
|
||||||
@ -10881,8 +10881,16 @@ static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
|
|||||||
error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, left);
|
error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, left);
|
||||||
if (error3 < 0)
|
if (error3 < 0)
|
||||||
return error3;
|
return error3;
|
||||||
|
if (list) {
|
||||||
|
list += error3;
|
||||||
|
left -= error3;
|
||||||
|
}
|
||||||
|
|
||||||
error += error2 + error3;
|
error4 = security_inode_listsecurity(d_inode(dentry), list, left);
|
||||||
|
if (error4 < 0)
|
||||||
|
return error4;
|
||||||
|
|
||||||
|
error += error2 + error3 + error4;
|
||||||
if (size && error > size)
|
if (size && error > size)
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
return error;
|
return error;
|
||||||
|
Loading…
Reference in New Issue
Block a user