Re: [PATCH 20/28] security: Introduce inode_post_set_acl hook
From: Stefan Berger <stefanb@linux.ibm.com>
Date: 2023-03-06 19:46:35
Also in:
keyrings, linux-fsdevel, linux-integrity, linux-nfs, lkml, selinux
On 3/3/23 13:18, Roberto Sassu wrote:
quoted hunk ↗ jump to hunk
From: Roberto Sassu <roberto.sassu@huawei.com> In preparation for moving IMA and EVM to the LSM infrastructure, introduce the inode_post_set_acl hook. Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> --- fs/posix_acl.c | 1 + include/linux/lsm_hook_defs.h | 2 ++ include/linux/security.h | 7 +++++++ security/security.c | 17 +++++++++++++++++ 4 files changed, 27 insertions(+)diff --git a/fs/posix_acl.c b/fs/posix_acl.c index 5a76fb35923..acddf2dff4c 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c@@ -1102,6 +1102,7 @@ int vfs_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, error = -EOPNOTSUPP; if (!error) { fsnotify_xattr(dentry); + security_inode_post_set_acl(dentry, acl_name, kacl); evm_inode_post_set_acl(dentry, acl_name, kacl); }diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h index 5dc2a7c3d9a..9a3e14db0af 100644 --- a/include/linux/lsm_hook_defs.h +++ b/include/linux/lsm_hook_defs.h@@ -156,6 +156,8 @@ LSM_HOOK(void, LSM_RET_VOID, inode_post_removexattr, struct dentry *dentry, const char *name) LSM_HOOK(int, 0, inode_set_acl, struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl) +LSM_HOOK(void, LSM_RET_VOID, inode_post_set_acl, struct dentry *dentry, + const char *acl_name, struct posix_acl *kacl) LSM_HOOK(int, 0, inode_get_acl, struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name) LSM_HOOK(int, 0, inode_remove_acl, struct mnt_idmap *idmap,diff --git a/include/linux/security.h b/include/linux/security.h index b3e201404dc..b0691bf7237 100644 --- a/include/linux/security.h +++ b/include/linux/security.h@@ -366,6 +366,8 @@ int security_inode_setxattr(struct mnt_idmap *idmap, int security_inode_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl); +void security_inode_post_set_acl(struct dentry *dentry, const char *acl_name, + struct posix_acl *kacl); int security_inode_get_acl(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name); int security_inode_remove_acl(struct mnt_idmap *idmap,@@ -893,6 +895,11 @@ static inline int security_inode_set_acl(struct mnt_idmap *idmap, return 0; } +static inline void security_inode_post_set_acl(struct dentry *dentry, + const char *acl_name, + struct posix_acl *kacl) +{ } + static inline int security_inode_get_acl(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)diff --git a/security/security.c b/security/security.c index 8883082b686..fc11d70bb02 100644 --- a/security/security.c +++ b/security/security.c@@ -2310,6 +2310,23 @@ int security_inode_set_acl(struct mnt_idmap *idmap, return evm_inode_set_acl(idmap, dentry, acl_name, kacl); } +/** + * security_inode_post_set_acl() - Update inode sec after set_acl operation
'sec' because 'security' doesn't let this fit into 80 characters for the line? Update inode security after set_acl op :-/ Update inode security after set_acl() :-) Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>