|
@@ -833,13 +833,13 @@ static inline size_t __pipe_get_pages(struct iov_iter *i,
|
|
size_t *start)
|
|
size_t *start)
|
|
{
|
|
{
|
|
struct pipe_inode_info *pipe = i->pipe;
|
|
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)
|
|
if (!n)
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
|
|
|
|
maxsize = n;
|
|
maxsize = n;
|
|
n += *start;
|
|
n += *start;
|
|
- while (n >= PAGE_SIZE) {
|
|
|
|
|
|
+ while (n > 0) {
|
|
get_page(*pages++ = pipe->bufs[idx].page);
|
|
get_page(*pages++ = pipe->bufs[idx].page);
|
|
idx = next_idx(idx, pipe);
|
|
idx = next_idx(idx, pipe);
|
|
n -= PAGE_SIZE;
|
|
n -= PAGE_SIZE;
|