aboutsummaryrefslogtreecommitdiffstats
path: root/fs/file_table.c
diff options
context:
space:
mode:
authorMimi Zohar <[email protected]>2011-03-17 02:48:43 +0000
committerMimi Zohar <[email protected]>2012-09-07 18:57:27 +0000
commit4199d35cbc90c15db447d115bd96ffa5f1d60d3a (patch)
treef012b30b0b2269eef36261ac5b7a918cd91f95b8 /fs/file_table.c
parentvfs: extend vfs_removexattr locking (diff)
downloadkernel-4199d35cbc90c15db447d115bd96ffa5f1d60d3a.tar.gz
kernel-4199d35cbc90c15db447d115bd96ffa5f1d60d3a.zip
vfs: move ima_file_free before releasing the file
ima_file_free(), called on __fput(), currently flags files that have changed, so that the file is re-measured. For appraising a files's integrity, the file's hash must be re-calculated and stored in the 'security.ima' xattr to reflect any changes. This patch moves the ima_file_free() call to before releasing the file in preparation of ima-appraisal measuring the file and updating the 'security.ima' xattr. Signed-off-by: Mimi Zohar <[email protected]> Acked-by: Serge Hallyn <[email protected]> Acked-by: Dmitry Kasatkin <[email protected]>
Diffstat (limited to 'fs/file_table.c')
-rw-r--r--fs/file_table.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/file_table.c b/fs/file_table.c
index 701985e4ccda..a41f23f90b17 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -243,10 +243,10 @@ static void __fput(struct file *file)
if (file->f_op && file->f_op->fasync)
file->f_op->fasync(-1, file, 0);
}
+ ima_file_free(file);
if (file->f_op && file->f_op->release)
file->f_op->release(inode, file);
security_file_free(file);
- ima_file_free(file);
if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL &&
!(file->f_mode & FMODE_PATH))) {
cdev_put(inode->i_cdev);