summaryrefslogtreecommitdiff
path: root/security/security.c
diff options
context:
space:
mode:
authorWolfram Sang <wsa@kernel.org>2020-07-31 15:54:27 +0200
committerWolfram Sang <wsa@kernel.org>2020-07-31 15:54:27 +0200
commit073d398dc4841f62488ac6060ffeb9dfce6e0a98 (patch)
tree2ae9d508d0cd27f02584b9befb063dda5cb11a0b /security/security.c
parentafca861bc6a3141c858d08279eb9afca76584fa6 (diff)
parent92ed301919932f777713b9172e525674157e983d (diff)
Merge tag 'v5.8-rc7' into i2c/for-5.9
Diffstat (limited to 'security/security.c')
-rw-r--r--security/security.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/security/security.c b/security/security.c
index 0ce3e73edd42..70a7ad357bc6 100644
--- a/security/security.c
+++ b/security/security.c
@@ -1414,7 +1414,22 @@ EXPORT_SYMBOL(security_inode_copy_up);
int security_inode_copy_up_xattr(const char *name)
{
- return call_int_hook(inode_copy_up_xattr, -EOPNOTSUPP, name);
+ struct security_hook_list *hp;
+ int rc;
+
+ /*
+ * The implementation can return 0 (accept the xattr), 1 (discard the
+ * xattr), -EOPNOTSUPP if it does not know anything about the xattr or
+ * any other error code incase of an error.
+ */
+ hlist_for_each_entry(hp,
+ &security_hook_heads.inode_copy_up_xattr, list) {
+ rc = hp->hook.inode_copy_up_xattr(name);
+ if (rc != LSM_RET_DEFAULT(inode_copy_up_xattr))
+ return rc;
+ }
+
+ return LSM_RET_DEFAULT(inode_copy_up_xattr);
}
EXPORT_SYMBOL(security_inode_copy_up_xattr);