aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/iov_iter.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 0ce341125195..7312e7784611 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -833,13 +833,13 @@ static inline size_t __pipe_get_pages(struct iov_iter *i,
833 size_t *start) 833 size_t *start)
834{ 834{
835 struct pipe_inode_info *pipe = i->pipe; 835 struct pipe_inode_info *pipe = i->pipe;
836 size_t n = push_pipe(i, maxsize, &idx, start); 836 ssize_t n = push_pipe(i, maxsize, &idx, start);
837 if (!n) 837 if (!n)
838 return -EFAULT; 838 return -EFAULT;
839 839
840 maxsize = n; 840 maxsize = n;
841 n += *start; 841 n += *start;
842 while (n >= PAGE_SIZE) { 842 while (n > 0) {
843 get_page(*pages++ = pipe->bufs[idx].page); 843 get_page(*pages++ = pipe->bufs[idx].page);
844 idx = next_idx(idx, pipe); 844 idx = next_idx(idx, pipe);
845 n -= PAGE_SIZE; 845 n -= PAGE_SIZE;