Commit 775802c0 authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

fs: remove __vfs_read



Fold it into the two callers.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 6209dd91
Loading
Loading
Loading
Loading
+21 −22
Original line number Diff line number Diff line
@@ -419,17 +419,6 @@ static ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, lo
	return ret;
}

ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
		   loff_t *pos)
{
	if (file->f_op->read)
		return file->f_op->read(file, buf, count, pos);
	else if (file->f_op->read_iter)
		return new_sync_read(file, buf, count, pos);
	else
		return -EINVAL;
}

ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
{
	mm_segment_t old_fs = get_fs();
@@ -443,7 +432,12 @@ ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
	if (count > MAX_RW_COUNT)
		count =  MAX_RW_COUNT;
	set_fs(KERNEL_DS);
	ret = __vfs_read(file, (void __user *)buf, count, pos);
	if (file->f_op->read)
		ret = file->f_op->read(file, (void __user *)buf, count, pos);
	else if (file->f_op->read_iter)
		ret = new_sync_read(file, (void __user *)buf, count, pos);
	else
		ret = -EINVAL;
	set_fs(old_fs);
	if (ret > 0) {
		fsnotify_access(file);
@@ -476,17 +470,22 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
		return -EFAULT;

	ret = rw_verify_area(READ, file, pos, count);
	if (!ret) {
	if (ret)
		return ret;
	if (count > MAX_RW_COUNT)
		count =  MAX_RW_COUNT;
		ret = __vfs_read(file, buf, count, pos);

	if (file->f_op->read)
		ret = file->f_op->read(file, buf, count, pos);
	else if (file->f_op->read_iter)
		ret = new_sync_read(file, buf, count, pos);
	else
		ret = -EINVAL;
	if (ret > 0) {
		fsnotify_access(file);
		add_rchar(current, ret);
	}
	inc_syscr(current);
	}

	return ret;
}

+0 −1
Original line number Diff line number Diff line
@@ -1917,7 +1917,6 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
			      struct iovec *fast_pointer,
			      struct iovec **ret_pointer);

extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
extern ssize_t vfs_readv(struct file *, const struct iovec __user *,