diff options
Diffstat (limited to 'fs/ecryptfs/file.c')
| -rw-r--r-- | fs/ecryptfs/file.c | 29 | 
1 files changed, 12 insertions, 17 deletions
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c index 992cf95830b..db0fad3269c 100644 --- a/fs/ecryptfs/file.c +++ b/fs/ecryptfs/file.c @@ -45,14 +45,13 @@   * The function to be used for directory reads is ecryptfs_read.   */  static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb, -				const struct iovec *iov, -				unsigned long nr_segs, loff_t pos) +				struct iov_iter *to)  {  	ssize_t rc;  	struct path *path;  	struct file *file = iocb->ki_filp; -	rc = generic_file_aio_read(iocb, iov, nr_segs, pos); +	rc = generic_file_read_iter(iocb, to);  	/*  	 * Even though this is a async interface, we need to wait  	 * for IO to finish to update atime @@ -271,7 +270,7 @@ static int ecryptfs_flush(struct file *file, fl_owner_t td)  {  	struct file *lower_file = ecryptfs_file_to_lower(file); -	if (lower_file->f_op && lower_file->f_op->flush) { +	if (lower_file->f_op->flush) {  		filemap_write_and_wait(file->f_mapping);  		return lower_file->f_op->flush(lower_file, td);  	} @@ -305,7 +304,7 @@ static int ecryptfs_fasync(int fd, struct file *file, int flag)  	struct file *lower_file = NULL;  	lower_file = ecryptfs_file_to_lower(file); -	if (lower_file->f_op && lower_file->f_op->fasync) +	if (lower_file->f_op->fasync)  		rc = lower_file->f_op->fasync(fd, lower_file, flag);  	return rc;  } @@ -313,12 +312,10 @@ static int ecryptfs_fasync(int fd, struct file *file, int flag)  static long  ecryptfs_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  { -	struct file *lower_file = NULL; +	struct file *lower_file = ecryptfs_file_to_lower(file);  	long rc = -ENOTTY; -	if (ecryptfs_file_to_private(file)) -		lower_file = ecryptfs_file_to_lower(file); -	if (lower_file && lower_file->f_op && lower_file->f_op->unlocked_ioctl) +	if (lower_file->f_op->unlocked_ioctl)  		rc = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg);  	return rc;  } @@ -327,12 +324,10 @@ ecryptfs_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  static long  ecryptfs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  { -	struct file *lower_file = NULL; +	struct file *lower_file = ecryptfs_file_to_lower(file);  	long rc = -ENOIOCTLCMD; -	if (ecryptfs_file_to_private(file)) -		lower_file = ecryptfs_file_to_lower(file); -	if (lower_file && lower_file->f_op && lower_file->f_op->compat_ioctl) +	if (lower_file->f_op && lower_file->f_op->compat_ioctl)  		rc = lower_file->f_op->compat_ioctl(lower_file, cmd, arg);  	return rc;  } @@ -356,10 +351,10 @@ const struct file_operations ecryptfs_dir_fops = {  const struct file_operations ecryptfs_main_fops = {  	.llseek = generic_file_llseek, -	.read = do_sync_read, -	.aio_read = ecryptfs_read_update_atime, -	.write = do_sync_write, -	.aio_write = generic_file_aio_write, +	.read = new_sync_read, +	.read_iter = ecryptfs_read_update_atime, +	.write = new_sync_write, +	.write_iter = generic_file_write_iter,  	.iterate = ecryptfs_readdir,  	.unlocked_ioctl = ecryptfs_unlocked_ioctl,  #ifdef CONFIG_COMPAT  | 
