iov_iter: advancing variants of iov_iter_get_pages{,_alloc}()

Most of the users immediately follow successful iov_iter_get_pages()
with advancing by the amount it had returned.

Provide inline wrappers doing that, convert trivial open-coded
uses of those.

BTW, iov_iter_get_pages() never returns more than it had been asked
to; such checks in cifs ought to be removed someday...

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro
2022-06-09 10:28:36 -04:00
parent 3cf42da327
commit 1ef255e257
13 changed files with 34 additions and 30 deletions

View File

@@ -351,4 +351,24 @@ 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