diff options
author | arter97 <qkrwngud825@gmail.com> | 2014-01-07 14:29:31 +0900 |
---|---|---|
committer | rogersb11 <brettrogers11@gmail.com> | 2016-02-13 21:04:16 -0500 |
commit | d4322cd694ca73be92c2b6f8d96226ba4734bd6a (patch) | |
tree | 80f46e6ddded2943b30961b2f7457f890d264f70 /security | |
parent | 6307d43c25ee624ae51cd5b56c85f9fa88af3b6a (diff) | |
download | kernel_samsung_smdk4412-d4322cd694ca73be92c2b6f8d96226ba4734bd6a.tar.gz kernel_samsung_smdk4412-d4322cd694ca73be92c2b6f8d96226ba4734bd6a.tar.bz2 kernel_samsung_smdk4412-d4322cd694ca73be92c2b6f8d96226ba4734bd6a.zip |
f2fs: support 3.0
Initial backporting done by nowcomputing,
(https://github.com/nowcomputing/f2fs-backports.git)
Additional patches required by upstream jaegeuk/f2fs.git/linux-3.4 done by arter97.
Change-Id: Ibbd3a608857338482f974fa4b1a8d3c02c267d9f
Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/security.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/security/security.c b/security/security.c index 6db15aa19a7..837d3d3a819 100644 --- a/security/security.c +++ b/security/security.c @@ -18,6 +18,8 @@ #include <linux/security.h> #include <linux/ima.h> +#define MAX_LSM_XATTR 1 + /* Boot-time LSM user choice */ static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] = CONFIG_DEFAULT_SECURITY; @@ -359,8 +361,8 @@ void security_inode_free(struct inode *inode) } int security_inode_init_security(struct inode *inode, struct inode *dir, - const struct qstr *qstr, char **name, - void **value, size_t *len) + const struct qstr *qstr, char **name, + void **value, size_t *len) { if (unlikely(IS_PRIVATE(inode))) return -EOPNOTSUPP; @@ -369,6 +371,37 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, } EXPORT_SYMBOL(security_inode_init_security); +int security_new_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; + int ret; + + if (unlikely(IS_PRIVATE(inode))) + return -EOPNOTSUPP; + + memset(new_xattrs, 0, sizeof new_xattrs); + if (!initxattrs) + return security_ops->inode_init_security(inode, dir, qstr, + NULL, NULL, NULL); + lsm_xattr = new_xattrs; + ret = security_ops->inode_init_security(inode, dir, qstr, + &lsm_xattr->name, + &lsm_xattr->value, + &lsm_xattr->value_len); + if (ret) + goto out; + ret = initxattrs(inode, new_xattrs, fs_data); +out: + kfree(lsm_xattr->name); + kfree(lsm_xattr->value); + + return (ret == -EOPNOTSUPP) ? 0 : ret; +} +EXPORT_SYMBOL(security_new_inode_init_security); + #ifdef CONFIG_SECURITY_PATH int security_path_mknod(struct path *dir, struct dentry *dentry, int mode, unsigned int dev) |