|
@@ -191,13 +191,6 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
|
|
|
| ECRYPTFS_ENCRYPTED);
|
|
|
}
|
|
|
mutex_unlock(&crypt_stat->cs_mutex);
|
|
|
- if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY)
|
|
|
- && !(file->f_flags & O_RDONLY)) {
|
|
|
- rc = -EPERM;
|
|
|
- printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs "
|
|
|
- "file must hence be opened RO\n", __func__);
|
|
|
- goto out;
|
|
|
- }
|
|
|
if (!ecryptfs_inode_to_private(inode)->lower_file) {
|
|
|
rc = ecryptfs_init_persistent_file(ecryptfs_dentry);
|
|
|
if (rc) {
|
|
@@ -208,6 +201,13 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
|
|
|
goto out;
|
|
|
}
|
|
|
}
|
|
|
+ if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY)
|
|
|
+ && !(file->f_flags & O_RDONLY)) {
|
|
|
+ rc = -EPERM;
|
|
|
+ printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs "
|
|
|
+ "file must hence be opened RO\n", __func__);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
ecryptfs_set_file_lower(
|
|
|
file, ecryptfs_inode_to_private(inode)->lower_file);
|
|
|
if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) {
|