diff options
author | Roberto Sassu <roberto.sassu@polito.it> | 2010-11-03 06:11:28 -0400 |
---|---|---|
committer | Tyler Hicks <tyhicks@linux.vnet.ibm.com> | 2011-01-17 12:24:42 -0500 |
commit | 27992890b02d340198a3a22fc210d13684a41564 (patch) | |
tree | 7ece682994e705791c2c96a02cb139c1f42b0239 /fs/ecryptfs/file.c | |
parent | 070baa51286e5cf59dde6be52fa23647ffb5d32d (diff) |
ecryptfs: test lower_file pointer when lower_file_mutex is locked
This patch prevents the lower_file pointer in the 'ecryptfs_inode_info'
structure to be checked when the mutex 'lower_file_mutex' is not locked.
Signed-off-by: Roberto Sassu <roberto.sassu@polito.it>
Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Diffstat (limited to 'fs/ecryptfs/file.c')
-rw-r--r-- | fs/ecryptfs/file.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 679817e82484..99259f850e58 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c | |||
@@ -191,15 +191,13 @@ static int ecryptfs_open(struct inode *inode, struct file *file) | |||
191 | | ECRYPTFS_ENCRYPTED); | 191 | | ECRYPTFS_ENCRYPTED); |
192 | } | 192 | } |
193 | mutex_unlock(&crypt_stat->cs_mutex); | 193 | mutex_unlock(&crypt_stat->cs_mutex); |
194 | if (!ecryptfs_inode_to_private(inode)->lower_file) { | 194 | rc = ecryptfs_init_persistent_file(ecryptfs_dentry); |
195 | rc = ecryptfs_init_persistent_file(ecryptfs_dentry); | 195 | if (rc) { |
196 | if (rc) { | 196 | printk(KERN_ERR "%s: Error attempting to initialize " |
197 | printk(KERN_ERR "%s: Error attempting to initialize " | 197 | "the persistent file for the dentry with name " |
198 | "the persistent file for the dentry with name " | 198 | "[%s]; rc = [%d]\n", __func__, |
199 | "[%s]; rc = [%d]\n", __func__, | 199 | ecryptfs_dentry->d_name.name, rc); |
200 | ecryptfs_dentry->d_name.name, rc); | 200 | goto out_free; |
201 | goto out_free; | ||
202 | } | ||
203 | } | 201 | } |
204 | if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY) | 202 | if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY) |
205 | && !(file->f_flags & O_RDONLY)) { | 203 | && !(file->f_flags & O_RDONLY)) { |