diff options
author | Vivek Goyal <vgoyal@redhat.com> | 2016-07-13 10:44:49 -0400 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2016-08-08 20:42:13 -0400 |
commit | 121ab822ef21914adac2fa3730efeeb8fd762473 (patch) | |
tree | 7fd5f6947837b361c249ec976af17bee10b22a2e /security/security.c | |
parent | 56909eb3f559103196ecbf2c08c923e0804980fb (diff) |
security,overlayfs: Provide security hook for copy up of xattrs for overlay file
Provide a security hook which is called when xattrs of a file are being
copied up. This hook is called once for each xattr and LSM can return
0 if the security module wants the xattr to be copied up, 1 if the
security module wants the xattr to be discarded on the copy, -EOPNOTSUPP
if the security module does not handle/manage the xattr, or a -errno
upon an error.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
[PM: whitespace cleanup for checkpatch.pl]
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/security/security.c b/security/security.c index f2a7f27bd3e9..a9e2bb9fb9d3 100644 --- a/security/security.c +++ b/security/security.c | |||
@@ -754,6 +754,12 @@ int security_inode_copy_up(struct dentry *src, struct cred **new) | |||
754 | } | 754 | } |
755 | EXPORT_SYMBOL(security_inode_copy_up); | 755 | EXPORT_SYMBOL(security_inode_copy_up); |
756 | 756 | ||
757 | int security_inode_copy_up_xattr(const char *name) | ||
758 | { | ||
759 | return call_int_hook(inode_copy_up_xattr, -EOPNOTSUPP, name); | ||
760 | } | ||
761 | EXPORT_SYMBOL(security_inode_copy_up_xattr); | ||
762 | |||
757 | int security_file_permission(struct file *file, int mask) | 763 | int security_file_permission(struct file *file, int mask) |
758 | { | 764 | { |
759 | int ret; | 765 | int ret; |
@@ -1692,6 +1698,8 @@ struct security_hook_heads security_hook_heads = { | |||
1692 | LIST_HEAD_INIT(security_hook_heads.inode_getsecid), | 1698 | LIST_HEAD_INIT(security_hook_heads.inode_getsecid), |
1693 | .inode_copy_up = | 1699 | .inode_copy_up = |
1694 | LIST_HEAD_INIT(security_hook_heads.inode_copy_up), | 1700 | LIST_HEAD_INIT(security_hook_heads.inode_copy_up), |
1701 | .inode_copy_up_xattr = | ||
1702 | LIST_HEAD_INIT(security_hook_heads.inode_copy_up_xattr), | ||
1695 | .file_permission = | 1703 | .file_permission = |
1696 | LIST_HEAD_INIT(security_hook_heads.file_permission), | 1704 | LIST_HEAD_INIT(security_hook_heads.file_permission), |
1697 | .file_alloc_security = | 1705 | .file_alloc_security = |