aboutsummaryrefslogtreecommitdiffstats
path: root/security/security.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2011-04-21 20:23:19 -0400
committerEric Paris <eparis@redhat.com>2011-04-25 10:20:32 -0400
commit1c9904297451f558191e211a48d8838b4bf792b0 (patch)
tree9c7cabec6ce3d6604147de73953cfaca672f1c0d /security/security.c
parent6b697323a78bed254ee372f71b1a6a2901bb4b7a (diff)
SECURITY: Move exec_permission RCU checks into security modules
Right now all RCU walks fall back to reference walk when CONFIG_SECURITY is enabled, even though just the standard capability module is active. This is because security_inode_exec_permission unconditionally fails RCU walks. Move this decision to the low level security module. This requires passing the RCU flags down the security hook. This way at least the capability module and a few easy cases in selinux/smack work with RCU walks with CONFIG_SECURITY=y Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'security/security.c')
-rw-r--r--security/security.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/security/security.c b/security/security.c
index 47b8a447118f..7e34f98bf433 100644
--- a/security/security.c
+++ b/security/security.c
@@ -514,16 +514,14 @@ int security_inode_permission(struct inode *inode, int mask)
514{ 514{
515 if (unlikely(IS_PRIVATE(inode))) 515 if (unlikely(IS_PRIVATE(inode)))
516 return 0; 516 return 0;
517 return security_ops->inode_permission(inode, mask); 517 return security_ops->inode_permission(inode, mask, 0);
518} 518}
519 519
520int security_inode_exec_permission(struct inode *inode, unsigned int flags) 520int security_inode_exec_permission(struct inode *inode, unsigned int flags)
521{ 521{
522 if (unlikely(IS_PRIVATE(inode))) 522 if (unlikely(IS_PRIVATE(inode)))
523 return 0; 523 return 0;
524 if (flags) 524 return security_ops->inode_permission(inode, MAY_EXEC, flags);
525 return -ECHILD;
526 return security_ops->inode_permission(inode, MAY_EXEC);
527} 525}
528 526
529int security_inode_setattr(struct dentry *dentry, struct iattr *attr) 527int security_inode_setattr(struct dentry *dentry, struct iattr *attr)