X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=lib%2Fiov_iter.c;h=7312e7784611d7c56b6c154a2c2bb9975142792b;hb=ac9ef8cd075a1efee13036908a99a4bd5f9d4b8c;hp=48b8c27acabb9b0c817418f55b8958ae355e8a9b;hpb=66f2c6d9525baa7534640f09f406cd2987e0f287;p=cascardo%2Flinux.git diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 48b8c27acabb..7312e7784611 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -396,8 +396,7 @@ int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes) if (!(i->type & (ITER_BVEC|ITER_KVEC))) { iterate_iovec(i, bytes, v, iov, skip, ({ - err = fault_in_multipages_readable(v.iov_base, - v.iov_len); + err = fault_in_pages_readable(v.iov_base, v.iov_len); if (unlikely(err)) return err; 0;})) @@ -834,13 +833,13 @@ static inline size_t __pipe_get_pages(struct iov_iter *i, size_t *start) { struct pipe_inode_info *pipe = i->pipe; - size_t n = push_pipe(i, maxsize, &idx, start); + ssize_t n = push_pipe(i, maxsize, &idx, start); if (!n) return -EFAULT; maxsize = n; n += *start; - while (n >= PAGE_SIZE) { + while (n > 0) { get_page(*pages++ = pipe->bufs[idx].page); idx = next_idx(idx, pipe); n -= PAGE_SIZE;