diff options
| author | Roberto Sassu <[email protected]> | 2024-02-15 10:31:00 +0000 |
|---|---|---|
| committer | Paul Moore <[email protected]> | 2024-02-16 04:43:42 +0000 |
| commit | 8f46ff5767b0b18329140d80d6bcabd818f42c4c (patch) | |
| tree | 0023bde4f2e5cacda47f6bb5edb32dd552dfeed8 /security/security.c | |
| parent | security: Introduce inode_post_removexattr hook (diff) | |
| download | kernel-8f46ff5767b0b18329140d80d6bcabd818f42c4c.tar.gz kernel-8f46ff5767b0b18329140d80d6bcabd818f42c4c.zip | |
security: Introduce file_post_open hook
In preparation to move IMA and EVM to the LSM infrastructure, introduce the
file_post_open hook. Also, export security_file_post_open() for NFS.
Based on policy, IMA calculates the digest of the file content and
extends the TPM with the digest, verifies the file's integrity based on
the digest, and/or includes the file digest in the audit log.
LSMs could similarly take action depending on the file content and the
access mask requested with open().
The new hook returns a value and can cause the open to be aborted.
Signed-off-by: Roberto Sassu <[email protected]>
Reviewed-by: Stefan Berger <[email protected]>
Acked-by: Casey Schaufler <[email protected]>
Reviewed-by: Mimi Zohar <[email protected]>
Acked-by: Christian Brauner <[email protected]>
Signed-off-by: Paul Moore <[email protected]>
Diffstat (limited to 'security/security.c')
| -rw-r--r-- | security/security.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/security/security.c b/security/security.c index d77fdd3ca1bc..207405a84902 100644 --- a/security/security.c +++ b/security/security.c @@ -2967,6 +2967,23 @@ int security_file_open(struct file *file) } /** + * security_file_post_open() - Evaluate a file after it has been opened + * @file: the file + * @mask: access mask + * + * Evaluate an opened file and the access mask requested with open(). The hook + * is useful for LSMs that require the file content to be available in order to + * make decisions. + * + * Return: Returns 0 if permission is granted. + */ +int security_file_post_open(struct file *file, int mask) +{ + return call_int_hook(file_post_open, 0, file, mask); +} +EXPORT_SYMBOL_GPL(security_file_post_open); + +/** * security_file_truncate() - Check if truncating a file is allowed * @file: file * |
