|
@@ -35,6 +35,7 @@
|
|
#include <linux/key.h>
|
|
#include <linux/key.h>
|
|
#include <linux/parser.h>
|
|
#include <linux/parser.h>
|
|
#include <linux/fs_stack.h>
|
|
#include <linux/fs_stack.h>
|
|
|
|
+#include <linux/ima.h>
|
|
#include "ecryptfs_kernel.h"
|
|
#include "ecryptfs_kernel.h"
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -118,6 +119,7 @@ int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry)
|
|
const struct cred *cred = current_cred();
|
|
const struct cred *cred = current_cred();
|
|
struct ecryptfs_inode_info *inode_info =
|
|
struct ecryptfs_inode_info *inode_info =
|
|
ecryptfs_inode_to_private(ecryptfs_dentry->d_inode);
|
|
ecryptfs_inode_to_private(ecryptfs_dentry->d_inode);
|
|
|
|
+ int opened_lower_file = 0;
|
|
int rc = 0;
|
|
int rc = 0;
|
|
|
|
|
|
mutex_lock(&inode_info->lower_file_mutex);
|
|
mutex_lock(&inode_info->lower_file_mutex);
|
|
@@ -134,9 +136,12 @@ int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry)
|
|
"for lower_dentry [0x%p] and lower_mnt [0x%p]; "
|
|
"for lower_dentry [0x%p] and lower_mnt [0x%p]; "
|
|
"rc = [%d]\n", lower_dentry, lower_mnt, rc);
|
|
"rc = [%d]\n", lower_dentry, lower_mnt, rc);
|
|
inode_info->lower_file = NULL;
|
|
inode_info->lower_file = NULL;
|
|
- }
|
|
|
|
|
|
+ } else
|
|
|
|
+ opened_lower_file = 1;
|
|
}
|
|
}
|
|
mutex_unlock(&inode_info->lower_file_mutex);
|
|
mutex_unlock(&inode_info->lower_file_mutex);
|
|
|
|
+ if (opened_lower_file)
|
|
|
|
+ ima_counts_get(inode_info->lower_file);
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
|
|
|