Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix up iter on short count in fuse_direct_io()
fuse_direct_io() can end up advancing the iterator by more than the amount of data read or written. This case is handled by the generic code if going through ->direct_IO(), but not in the FOPEN_DIRECT_IO case. Fix by reverting the extra bytes from the iterator in case of error or a short count. To test: install lxcfs, then the following testcase int fd = open("/var/lib/lxcfs/proc/uptime", O_RDONLY); sendfile(1, fd, NULL, 16777216); sendfile(1, fd, NULL, 16777216); will spew WARN_ON() in iov_iter_pipe(). Reported-by: Peter Geis <[email protected]> Reported-by: Al Viro <[email protected]> Fixes: 3c3db09 ("fuse: use iov_iter based generic splice helpers") Cc: <[email protected]> # v5.1 Signed-off-by: Miklos Szeredi <[email protected]>
- Loading branch information