aboutsummaryrefslogtreecommitdiffstats
path: root/security/security.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/security.c')
-rw-r--r--security/security.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/security/security.c b/security/security.c
index 709569305d32..c4bb47db30ee 100644
--- a/security/security.c
+++ b/security/security.c
@@ -700,18 +700,39 @@ int security_inode_killpriv(struct dentry *dentry)
700 700
701int security_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc) 701int security_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc)
702{ 702{
703 struct security_hook_list *hp;
704 int rc;
705
703 if (unlikely(IS_PRIVATE(inode))) 706 if (unlikely(IS_PRIVATE(inode)))
704 return -EOPNOTSUPP; 707 return -EOPNOTSUPP;
705 return call_int_hook(inode_getsecurity, -EOPNOTSUPP, inode, name, 708 /*
706 buffer, alloc); 709 * Only one module will provide an attribute with a given name.
710 */
711 list_for_each_entry(hp, &security_hook_heads.inode_getsecurity, list) {
712 rc = hp->hook.inode_getsecurity(inode, name, buffer, alloc);
713 if (rc != -EOPNOTSUPP)
714 return rc;
715 }
716 return -EOPNOTSUPP;
707} 717}
708 718
709int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags) 719int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
710{ 720{
721 struct security_hook_list *hp;
722 int rc;
723
711 if (unlikely(IS_PRIVATE(inode))) 724 if (unlikely(IS_PRIVATE(inode)))
712 return -EOPNOTSUPP; 725 return -EOPNOTSUPP;
713 return call_int_hook(inode_setsecurity, -EOPNOTSUPP, inode, name, 726 /*
714 value, size, flags); 727 * Only one module will provide an attribute with a given name.
728 */
729 list_for_each_entry(hp, &security_hook_heads.inode_setsecurity, list) {
730 rc = hp->hook.inode_setsecurity(inode, name, value, size,
731 flags);
732 if (rc != -EOPNOTSUPP)
733 return rc;
734 }
735 return -EOPNOTSUPP;
715} 736}
716 737
717int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size) 738int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size)