iov_iter_fault_in_readable() should do nothing in xarray case
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 2 Jun 2021 18:48:21 +0000 (14:48 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jul 2021 14:55:39 +0000 (16:55 +0200)
commit 0e8f0d67401589a141950856902c7d0ec8d9c985 upstream.

... and actually should just check it's given an iovec-backed iterator
in the first place.

Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
lib/iov_iter.c

index 018ac4b..537bfdc 100644 (file)
@@ -434,7 +434,7 @@ int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes)
        int err;
        struct iovec v;
 
-       if (!(i->type & (ITER_BVEC|ITER_KVEC))) {
+       if (iter_is_iovec(i)) {
                iterate_iovec(i, bytes, v, iov, skip, ({
                        err = fault_in_pages_readable(v.iov_base, v.iov_len);
                        if (unlikely(err))