diff options
Diffstat (limited to 'fs/compat.c')
| -rw-r--r-- | fs/compat.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/compat.c b/fs/compat.c index 6161255fac4..1bdb350ea5d 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -1155,11 +1155,14 @@ compat_sys_readv(unsigned long fd, const struct compat_iovec __user *vec,  	struct file *file;  	int fput_needed;  	ssize_t ret; +	loff_t pos;  	file = fget_light(fd, &fput_needed);  	if (!file)  		return -EBADF; -	ret = compat_readv(file, vec, vlen, &file->f_pos); +	pos = file->f_pos; +	ret = compat_readv(file, vec, vlen, &pos); +	file->f_pos = pos;  	fput_light(file, fput_needed);  	return ret;  } @@ -1221,11 +1224,14 @@ compat_sys_writev(unsigned long fd, const struct compat_iovec __user *vec,  	struct file *file;  	int fput_needed;  	ssize_t ret; +	loff_t pos;  	file = fget_light(fd, &fput_needed);  	if (!file)  		return -EBADF; -	ret = compat_writev(file, vec, vlen, &file->f_pos); +	pos = file->f_pos; +	ret = compat_writev(file, vec, vlen, &pos); +	file->f_pos = pos;  	fput_light(file, fput_needed);  	return ret;  }  |