ima: call ima_file_free() prior to calling fasync
authorMimi Zohar <zohar@linux.vnet.ibm.com>
Thu, 22 Jun 2017 01:13:18 +0000 (21:13 -0400)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Wed, 8 Nov 2017 20:16:36 +0000 (15:16 -0500)
The file hash is calculated and written out as an xattr after
calling fasync().  In order for the file data and metadata to be
written out to disk at the same time, this patch calculates the
file hash and stores it as an xattr before calling fasync.

Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
fs/file_table.c

index 61517f57f8ef744e9915c33659cfba96c0a1f767..49e1f2f1a4cbefe0906224433d03ee5c36e7a9c1 100644 (file)
@@ -201,11 +201,11 @@ 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);
        }
-       ima_file_free(file);
        if (file->f_op->release)
                file->f_op->release(inode, file);
        security_file_free(file);