diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/ecryptfs/read_write.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c index 85d430963116..3745f7c2b9c2 100644 --- a/fs/ecryptfs/read_write.c +++ b/fs/ecryptfs/read_write.c @@ -39,15 +39,16 @@  int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,  			 loff_t offset, size_t size)  { -	struct ecryptfs_inode_info *inode_info; +	struct file *lower_file;  	mm_segment_t fs_save;  	ssize_t rc; -	inode_info = ecryptfs_inode_to_private(ecryptfs_inode); -	BUG_ON(!inode_info->lower_file); +	lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file; +	if (!lower_file) +		return -EIO;  	fs_save = get_fs();  	set_fs(get_ds()); -	rc = vfs_write(inode_info->lower_file, data, size, &offset); +	rc = vfs_write(lower_file, data, size, &offset);  	set_fs(fs_save);  	mark_inode_dirty_sync(ecryptfs_inode);  	return rc; @@ -225,15 +226,16 @@ out:  int ecryptfs_read_lower(char *data, loff_t offset, size_t size,  			struct inode *ecryptfs_inode)  { -	struct ecryptfs_inode_info *inode_info = -		ecryptfs_inode_to_private(ecryptfs_inode); +	struct file *lower_file;  	mm_segment_t fs_save;  	ssize_t rc; -	BUG_ON(!inode_info->lower_file); +	lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file; +	if (!lower_file) +		return -EIO;  	fs_save = get_fs();  	set_fs(get_ds()); -	rc = vfs_read(inode_info->lower_file, data, size, &offset); +	rc = vfs_read(lower_file, data, size, &offset);  	set_fs(fs_save);  	return rc;  }  |