lkml.org 
[lkml]   [2022]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/9] ima: Move ima_file_free() into LSM
    Date
    The file_free_security hook already exists for managing notification of
    released files. Use the LSM hook instead of open-coded stacking.

    Cc: Mimi Zohar <zohar@linux.ibm.com>
    Cc: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
    Cc: Paul Moore <paul@paul-moore.com>
    Cc: James Morris <jmorris@namei.org>
    Cc: "Serge E. Hallyn" <serge@hallyn.com>
    Cc: Petr Vorel <pvorel@suse.cz>
    Cc: Jonathan McDowell <noodles@fb.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: linux-integrity@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ---
    fs/file_table.c | 1 -
    include/linux/ima.h | 6 ------
    security/integrity/ima/ima_main.c | 3 ++-
    3 files changed, 2 insertions(+), 8 deletions(-)

    diff --git a/fs/file_table.c b/fs/file_table.c
    index 99c6796c9f28..fa707d221a43 100644
    --- a/fs/file_table.c
    +++ b/fs/file_table.c
    @@ -311,7 +311,6 @@ static void __fput(struct file *file)
    eventpoll_release(file);
    locks_remove_file(file);

    - ima_file_free(file);
    if (unlikely(file->f_flags & FASYNC)) {
    if (file->f_op->fasync)
    file->f_op->fasync(-1, file, 0);
    diff --git a/include/linux/ima.h b/include/linux/ima.h
    index 6dc5143f89f2..9f18df366064 100644
    --- a/include/linux/ima.h
    +++ b/include/linux/ima.h
    @@ -19,7 +19,6 @@ extern enum hash_algo ima_get_current_hash_algo(void);
    extern int ima_file_check(struct file *file, int mask);
    extern void ima_post_create_tmpfile(struct user_namespace *mnt_userns,
    struct inode *inode);
    -extern void ima_file_free(struct file *file);
    extern void ima_post_path_mknod(struct user_namespace *mnt_userns,
    struct dentry *dentry);
    extern int ima_file_hash(struct file *file, char *buf, size_t buf_size);
    @@ -56,11 +55,6 @@ static inline void ima_post_create_tmpfile(struct user_namespace *mnt_userns,
    {
    }

    -static inline void ima_file_free(struct file *file)
    -{
    - return;
    -}
    -
    static inline void ima_post_path_mknod(struct user_namespace *mnt_userns,
    struct dentry *dentry)
    {
    diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
    index b3b79d030a67..94379ba40b58 100644
    --- a/security/integrity/ima/ima_main.c
    +++ b/security/integrity/ima/ima_main.c
    @@ -183,7 +183,7 @@ static void ima_check_last_writer(struct integrity_iint_cache *iint,
    *
    * Flag files that changed, based on i_version
    */
    -void ima_file_free(struct file *file)
    +static void ima_file_free(struct file *file)
    {
    struct inode *inode = file_inode(file);
    struct integrity_iint_cache *iint;
    @@ -1085,6 +1085,7 @@ static struct security_hook_list ima_hooks[] __lsm_ro_after_init = {
    LSM_HOOK_INIT(bprm_check_security, ima_bprm_check),
    LSM_HOOK_INIT(mmap_file, ima_file_mmap),
    LSM_HOOK_INIT(file_mprotect, ima_file_mprotect),
    + LSM_HOOK_INIT(file_free_security, ima_file_free),
    LSM_HOOK_INIT(kernel_read_file, ima_read_file),
    LSM_HOOK_INIT(kernel_post_read_file, ima_post_read_file),
    LSM_HOOK_INIT(kernel_load_data, ima_load_data),
    --
    2.34.1
    \
     
     \ /
      Last update: 2022-10-14 00:38    [W:4.611 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site