OSDN Git Service

fix iov_iter_advance() for ITER_PIPE
authorAbhi Das <adas@redhat.com>
Thu, 17 Nov 2016 03:44:23 +0000 (21:44 -0600)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 17 Nov 2016 05:00:48 +0000 (00:00 -0500)
commit680bb946a1ae04fe0ff369a4965f76b48c07dc54
treebe2ca455a6186b86a08e3ab1c22d49748cc6ed75
parent4a59015372840a6fc35d7fd40638a9d5dc3ec958
fix iov_iter_advance() for ITER_PIPE

iov_iter_advance() needs to decrement iter->count by the number of
bytes we'd moved beyond.  Normal flavours do that, but ITER_PIPE
doesn't and ITER_PIPE generic_file_read_iter() for O_DIRECT files
ends up with a bogus fallback to page cache read, resulting in incorrect
values for file offset and bytes read.

Signed-off-by: Abhi Das <adas@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
lib/iov_iter.c