| Index: fs/ecryptfs/read_write.c
|
| diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c
|
| index 70902ce56c61f31b7fb5a0b7b06ea2237afde32c..0cc4fafd6552c3d8ddef02e38a81dad96eb6ff6f 100644
|
| --- a/fs/ecryptfs/read_write.c
|
| +++ b/fs/ecryptfs/read_write.c
|
| @@ -44,11 +44,15 @@ int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,
|
| ssize_t rc;
|
|
|
| inode_info = ecryptfs_inode_to_private(ecryptfs_inode);
|
| + mutex_lock(&inode_info->lower_file_mutex);
|
| BUG_ON(!inode_info->lower_file);
|
| + inode_info->lower_file->f_pos = offset;
|
| fs_save = get_fs();
|
| set_fs(get_ds());
|
| - rc = vfs_write(inode_info->lower_file, data, size, &offset);
|
| + rc = vfs_write(inode_info->lower_file, data, size,
|
| + &inode_info->lower_file->f_pos);
|
| set_fs(fs_save);
|
| + mutex_unlock(&inode_info->lower_file_mutex);
|
| mark_inode_dirty_sync(ecryptfs_inode);
|
| return rc;
|
| }
|
| @@ -231,11 +235,15 @@ int ecryptfs_read_lower(char *data, loff_t offset, size_t size,
|
| mm_segment_t fs_save;
|
| ssize_t rc;
|
|
|
| + mutex_lock(&inode_info->lower_file_mutex);
|
| BUG_ON(!inode_info->lower_file);
|
| + inode_info->lower_file->f_pos = offset;
|
| fs_save = get_fs();
|
| set_fs(get_ds());
|
| - rc = vfs_read(inode_info->lower_file, data, size, &offset);
|
| + rc = vfs_read(inode_info->lower_file, data, size,
|
| + &inode_info->lower_file->f_pos);
|
| set_fs(fs_save);
|
| + mutex_unlock(&inode_info->lower_file_mutex);
|
| return rc;
|
| }
|
|
|
|
|