mbox series

[0/3] iov_iter: Add kunit tests and fix iov_iter_extract_pages()

Message ID 20230908160322.1714302-1-dhowells@redhat.com
Headers show
Series iov_iter: Add kunit tests and fix iov_iter_extract_pages() | expand

Message

David Howells Sept. 8, 2023, 4:03 p.m. UTC
Hi Jens, Christoph, Al,

Here are two patches to add some kunit tests for the iov_iter stuff and a
patch to fix a couple of bugs found by these tests.

It's by no means comprehensive, but it does at least test the basic
copy_to_iter(), copy_from_iter() and iov_iter_extract_pages() for
ITER_KVEC, ITER_BVEC and ITER_XARRAY.

I've left ITER_UBUF and ITER_IOVEC untested for now as they require
userspace VM interaction and I'm not sure if that's possible under kunit
tests.  I've also left ITER_DISCARD for the moment as that does nothing and
can't be extracted.

The kunit tests should also perhaps be using folios rather than pages, but
for the moment I'm using pages because I'm using vmap() and also
iov_iter_extract_pages() doesn't yet have a folio equivalent.

I've pushed the patches here also:

	https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=iov-fixes

David

David Howells (3):
  iov_iter: Fix iov_iter_extract_pages()
  iov_iter: Kunit tests for copying to/from an iterator
  iov_iter: Kunit tests for page extraction

 lib/Kconfig.debug    |  11 +
 lib/Makefile         |   1 +
 lib/iov_iter.c       |  30 +-
 lib/kunit_iov_iter.c | 777 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 804 insertions(+), 15 deletions(-)
 create mode 100644 lib/kunit_iov_iter.c

Comments

Christoph Hellwig Sept. 9, 2023, 11:27 a.m. UTC | #1
On Fri, Sep 08, 2023 at 05:03:20PM +0100, David Howells wrote:
> iov_iter_extract_pages() doesn't correctly handle skipping over initial
> zero-length entries in ITER_KVEC and ITER_BVEC-type iterators.

Maybe put a little of that into the subject.  Fix $foo only makes sense
when it is completely broken and not for a corner case.

i.e.

iov_iter: skip over leading empty vecs in iov_iter_extract_pages

The change itself looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>