diff options
author | Roberto Sassu <roberto.sassu@huawei.com> | 2024-02-15 13:30:59 +0300 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2024-02-16 07:43:42 +0300 |
commit | dae52cbf5887ac51c3574648124cfe475a9b3246 (patch) | |
tree | ebba0f72a35b8983541589e03cc7ff0362a40a59 /fs/xattr.c | |
parent | 77fa6f314f0376176ef6bf3d84403e0d8b54ce28 (diff) | |
download | linux-dae52cbf5887ac51c3574648124cfe475a9b3246.tar.xz |
security: Introduce inode_post_removexattr hook
In preparation for moving IMA and EVM to the LSM infrastructure, introduce
the inode_post_removexattr hook.
At inode_removexattr hook, EVM verifies the file's existing HMAC value. At
inode_post_removexattr, EVM re-calculates the file's HMAC with the passed
xattr removed and other file metadata.
Other LSMs could similarly take some action after successful xattr removal.
The new hook cannot return an error and cannot cause the operation to be
reverted.
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
Acked-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'fs/xattr.c')
-rw-r--r-- | fs/xattr.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/xattr.c b/fs/xattr.c index 09d927603433..f891c260a971 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -552,11 +552,12 @@ __vfs_removexattr_locked(struct mnt_idmap *idmap, goto out; error = __vfs_removexattr(idmap, dentry, name); + if (error) + return error; - if (!error) { - fsnotify_xattr(dentry); - evm_inode_post_removexattr(dentry, name); - } + fsnotify_xattr(dentry); + security_inode_post_removexattr(dentry, name); + evm_inode_post_removexattr(dentry, name); out: return error; |