get rid of non-advancing variants
mechanical change; will be further massaged in subsequent commits Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
b53589927d
commit
eba2d3d798
|
@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
}
|
}
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
|
|
||||||
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,
|
||||||
}
|
}
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue