diff options
author | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2011-06-16 03:19:10 +0200 |
---|---|---|
committer | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2011-07-18 18:29:45 +0200 |
commit | 823eb1ccd0b310449e99c822412ea8208334d14c (patch) | |
tree | 649d04ab6042cf058f7849dd826ef74a2d556628 /security/security.c | |
parent | evm: add evm_inode_init_security to initialize new files (diff) | |
download | linux-823eb1ccd0b310449e99c822412ea8208334d14c.tar.xz linux-823eb1ccd0b310449e99c822412ea8208334d14c.zip |
evm: call evm_inode_init_security from security_inode_init_security
Changelog v7:
- moved the initialization call to security_inode_init_security,
renaming evm_inode_post_init_security to evm_inode_init_security
- increase size of xattr array for EVM xattr
Signed-off-by: Mimi Zohar <zohar@us.ibm.com>
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/security/security.c b/security/security.c index 21a79b3d1e8e..181990ae90c1 100644 --- a/security/security.c +++ b/security/security.c @@ -20,7 +20,7 @@ #include <linux/ima.h> #include <linux/evm.h> -#define MAX_LSM_XATTR 1 +#define MAX_LSM_EVM_XATTR 2 /* Boot-time LSM user choice */ static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] = @@ -346,8 +346,8 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr, const initxattrs initxattrs, void *fs_data) { - struct xattr new_xattrs[MAX_LSM_XATTR + 1]; - struct xattr *lsm_xattr; + struct xattr new_xattrs[MAX_LSM_EVM_XATTR + 1]; + struct xattr *lsm_xattr, *evm_xattr, *xattr; int ret; if (unlikely(IS_PRIVATE(inode))) @@ -364,11 +364,17 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, &lsm_xattr->value_len); if (ret) goto out; + + evm_xattr = lsm_xattr + 1; + ret = evm_inode_init_security(inode, lsm_xattr, evm_xattr); + if (ret) + goto out; ret = initxattrs(inode, new_xattrs, fs_data); out: - kfree(lsm_xattr->name); - kfree(lsm_xattr->value); - + for (xattr = new_xattrs; xattr->name != NULL; xattr++) { + kfree(xattr->name); + kfree(xattr->value); + } return (ret == -EOPNOTSUPP) ? 0 : ret; } EXPORT_SYMBOL(security_inode_init_security); |