Commit eba2d3d7 authored by Al Viro's avatar Al Viro

get rid of non-advancing variants

mechanical change; will be further massaged in subsequent commits
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b5358992
...@@ -247,9 +247,9 @@ void iov_iter_pipe(struct iov_iter *i, unsigned int direction, struct pipe_inode ...@@ -247,9 +247,9 @@ void iov_iter_pipe(struct iov_iter *i, unsigned int direction, struct pipe_inode
void iov_iter_discard(struct iov_iter *i, unsigned int direction, size_t count); void iov_iter_discard(struct iov_iter *i, unsigned int direction, size_t count);
void iov_iter_xarray(struct iov_iter *i, unsigned int direction, struct xarray *xarray, void iov_iter_xarray(struct iov_iter *i, unsigned int direction, struct xarray *xarray,
loff_t start, size_t count); loff_t start, size_t count);
ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages, ssize_t iov_iter_get_pages2(struct iov_iter *i, struct page **pages,
size_t maxsize, unsigned maxpages, size_t *start); size_t maxsize, unsigned maxpages, size_t *start);
ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, struct page ***pages, ssize_t iov_iter_get_pages_alloc2(struct iov_iter *i, struct page ***pages,
size_t maxsize, size_t *start); size_t maxsize, size_t *start);
int iov_iter_npages(const struct iov_iter *i, int maxpages); int iov_iter_npages(const struct iov_iter *i, int maxpages);
void iov_iter_restore(struct iov_iter *i, struct iov_iter_state *state); void iov_iter_restore(struct iov_iter *i, struct iov_iter_state *state);
...@@ -351,24 +351,4 @@ static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction, ...@@ -351,24 +351,4 @@ static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction,
}; };
} }
static inline ssize_t iov_iter_get_pages2(struct iov_iter *i, struct page **pages,
size_t maxsize, unsigned maxpages, size_t *start)
{
ssize_t res = iov_iter_get_pages(i, pages, maxsize, maxpages, start);
if (res >= 0)
iov_iter_advance(i, res);
return res;
}
static inline ssize_t iov_iter_get_pages_alloc2(struct iov_iter *i, struct page ***pages,
size_t maxsize, size_t *start)
{
ssize_t res = iov_iter_get_pages_alloc(i, pages, maxsize, start);
if (res >= 0)
iov_iter_advance(i, res);
return res;
}
#endif #endif
...@@ -1328,6 +1328,7 @@ static ssize_t pipe_get_pages(struct iov_iter *i, ...@@ -1328,6 +1328,7 @@ static ssize_t pipe_get_pages(struct iov_iter *i,
left -= PAGE_SIZE - off; left -= PAGE_SIZE - off;
if (left <= 0) { if (left <= 0) {
buf->len += maxsize; buf->len += maxsize;
iov_iter_advance(i, maxsize);
return maxsize; return maxsize;
} }
buf->len = PAGE_SIZE; buf->len = PAGE_SIZE;
...@@ -1347,7 +1348,9 @@ static ssize_t pipe_get_pages(struct iov_iter *i, ...@@ -1347,7 +1348,9 @@ static ssize_t pipe_get_pages(struct iov_iter *i,
} }
if (!npages) if (!npages)
return -EFAULT; return -EFAULT;
return maxsize - left; maxsize -= left;
iov_iter_advance(i, maxsize);
return maxsize;
} }
static ssize_t iter_xarray_populate_pages(struct page **pages, struct xarray *xa, static ssize_t iter_xarray_populate_pages(struct page **pages, struct xarray *xa,
...@@ -1397,7 +1400,9 @@ static ssize_t iter_xarray_get_pages(struct iov_iter *i, ...@@ -1397,7 +1400,9 @@ static ssize_t iter_xarray_get_pages(struct iov_iter *i,
if (nr == 0) if (nr == 0)
return 0; return 0;
return min_t(size_t, nr * PAGE_SIZE - offset, maxsize); maxsize = min_t(size_t, nr * PAGE_SIZE - offset, maxsize);
iov_iter_advance(i, maxsize);
return maxsize;
} }
/* must be done on non-empty ITER_UBUF or ITER_IOVEC one */ /* must be done on non-empty ITER_UBUF or ITER_IOVEC one */
...@@ -1469,7 +1474,9 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i, ...@@ -1469,7 +1474,9 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
res = get_user_pages_fast(addr, n, gup_flags, *pages); res = get_user_pages_fast(addr, n, gup_flags, *pages);
if (unlikely(res <= 0)) if (unlikely(res <= 0))
return res; return res;
return min_t(size_t, maxsize, res * PAGE_SIZE - *start); maxsize = min_t(size_t, maxsize, res * PAGE_SIZE - *start);
iov_iter_advance(i, maxsize);
return maxsize;
} }
if (iov_iter_is_bvec(i)) { if (iov_iter_is_bvec(i)) {
struct page **p; struct page **p;
...@@ -1481,8 +1488,10 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i, ...@@ -1481,8 +1488,10 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
return -ENOMEM; return -ENOMEM;
p = *pages; p = *pages;
for (int k = 0; k < n; k++) for (int k = 0; k < n; k++)
get_page(*p++ = page++); get_page(p[k] = page + k);
return min_t(size_t, maxsize, n * PAGE_SIZE - *start); maxsize = min_t(size_t, maxsize, n * PAGE_SIZE - *start);
iov_iter_advance(i, maxsize);
return maxsize;
} }
if (iov_iter_is_pipe(i)) if (iov_iter_is_pipe(i))
return pipe_get_pages(i, pages, maxsize, maxpages, start); return pipe_get_pages(i, pages, maxsize, maxpages, start);
...@@ -1491,7 +1500,7 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i, ...@@ -1491,7 +1500,7 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
return -EFAULT; return -EFAULT;
} }
ssize_t iov_iter_get_pages(struct iov_iter *i, ssize_t iov_iter_get_pages2(struct iov_iter *i,
struct page **pages, size_t maxsize, unsigned maxpages, struct page **pages, size_t maxsize, unsigned maxpages,
size_t *start) size_t *start)
{ {
...@@ -1501,9 +1510,9 @@ ssize_t iov_iter_get_pages(struct iov_iter *i, ...@@ -1501,9 +1510,9 @@ ssize_t iov_iter_get_pages(struct iov_iter *i,
return __iov_iter_get_pages_alloc(i, &pages, maxsize, maxpages, start); return __iov_iter_get_pages_alloc(i, &pages, maxsize, maxpages, start);
} }
EXPORT_SYMBOL(iov_iter_get_pages); EXPORT_SYMBOL(iov_iter_get_pages2);
ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, ssize_t iov_iter_get_pages_alloc2(struct iov_iter *i,
struct page ***pages, size_t maxsize, struct page ***pages, size_t maxsize,
size_t *start) size_t *start)
{ {
...@@ -1518,7 +1527,7 @@ ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, ...@@ -1518,7 +1527,7 @@ ssize_t iov_iter_get_pages_alloc(struct iov_iter *i,
} }
return len; return len;
} }
EXPORT_SYMBOL(iov_iter_get_pages_alloc); EXPORT_SYMBOL(iov_iter_get_pages_alloc2);
size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum,
struct iov_iter *i) struct iov_iter *i)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment