security: Align inode_setattr hook definition with EVM
authorRoberto Sassu <roberto.sassu@huawei.com>
Thu, 15 Feb 2024 10:30:57 +0000 (11:30 +0100)
committerPaul Moore <paul@paul-moore.com>
Fri, 16 Feb 2024 04:43:41 +0000 (23:43 -0500)
Add the idmap parameter to the definition, so that evm_inode_setattr() can
be registered as this hook implementation.

Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Casey Schaufler <casey@schaufler-ca.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
include/linux/lsm_hook_defs.h
security/security.c
security/selinux/hooks.c
security/smack/smack_lsm.c

index 76458b6d53da7667b31fc3a80007bb1a609ec1d8..b00b16d58413332078b1e0f0dd7b1721867f1594 100644 (file)
@@ -135,7 +135,8 @@ LSM_HOOK(int, 0, inode_readlink, struct dentry *dentry)
 LSM_HOOK(int, 0, inode_follow_link, struct dentry *dentry, struct inode *inode,
         bool rcu)
 LSM_HOOK(int, 0, inode_permission, struct inode *inode, int mask)
-LSM_HOOK(int, 0, inode_setattr, struct dentry *dentry, struct iattr *attr)
+LSM_HOOK(int, 0, inode_setattr, struct mnt_idmap *idmap, struct dentry *dentry,
+        struct iattr *attr)
 LSM_HOOK(int, 0, inode_getattr, const struct path *path)
 LSM_HOOK(int, 0, inode_setxattr, struct mnt_idmap *idmap,
         struct dentry *dentry, const char *name, const void *value,
index dc188201a4f58cd3cf4b6e066df167275b69458d..9dc601d459608c613c5e3a018fb79b45f106f637 100644 (file)
@@ -2215,7 +2215,7 @@ int security_inode_setattr(struct mnt_idmap *idmap,
 
        if (unlikely(IS_PRIVATE(d_backing_inode(dentry))))
                return 0;
-       ret = call_int_hook(inode_setattr, 0, dentry, attr);
+       ret = call_int_hook(inode_setattr, 0, idmap, dentry, attr);
        if (ret)
                return ret;
        return evm_inode_setattr(idmap, dentry, attr);
index a6bf90ace84c74bdb11330d7bb278183dfb13275..cedb4cbf072e3f16b7d25b5b7fd058d1c5ce3db1 100644 (file)
@@ -3136,7 +3136,8 @@ static int selinux_inode_permission(struct inode *inode, int mask)
        return rc;
 }
 
-static int selinux_inode_setattr(struct dentry *dentry, struct iattr *iattr)
+static int selinux_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
+                                struct iattr *iattr)
 {
        const struct cred *cred = current_cred();
        struct inode *inode = d_backing_inode(dentry);
index 0fdbf04cc25835801995b6ffda190e97afc978ce..1b6abfdf717331022b3dc7f330e2ce6e1c9235bd 100644 (file)
@@ -1233,12 +1233,14 @@ static int smack_inode_permission(struct inode *inode, int mask)
 
 /**
  * smack_inode_setattr - Smack check for setting attributes
+ * @idmap: idmap of the mount
  * @dentry: the object
  * @iattr: for the force flag
  *
  * Returns 0 if access is permitted, an error code otherwise
  */
-static int smack_inode_setattr(struct dentry *dentry, struct iattr *iattr)
+static int smack_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
+                              struct iattr *iattr)
 {
        struct smk_audit_info ad;
        int rc;