iterate_xarray(): only of the first iteration we might get offset != 0
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 4 May 2021 21:50:07 +0000 (17:50 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 10 Jun 2021 15:45:21 +0000 (11:45 -0400)
recalculating offset on each iteration is pointless - on all subsequent
passes through the loop it will be zero anyway.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
lib/iov_iter.c

index 48a55de..d5f750c 100644 (file)
@@ -70,9 +70,9 @@
        __label__ __out;                                        \
        size_t __off = 0;                                       \
        struct page *head = NULL;                               \
-       size_t offset;                                          \
        loff_t start = i->xarray_start + i->iov_offset;         \
-       pgoff_t index = start >> PAGE_SHIFT;                    \
+       unsigned offset = start % PAGE_SIZE;                    \
+       pgoff_t index = start / PAGE_SIZE;                      \
        int j;                                                  \
                                                                \
        XA_STATE(xas, i->xarray, index);                        \
@@ -89,7 +89,6 @@
                for (j = (head->index < index) ? index - head->index : 0; \
                     j < thp_nr_pages(head); j++) {             \
                        void *kaddr = kmap_local_page(head + j);        \
-                       offset = (start + __off) % PAGE_SIZE;   \
                        base = kaddr + offset;                  \
                        len = PAGE_SIZE - offset;               \
                        len = min(n, len);                      \
                        n -= len;                               \
                        if (left || n == 0)                     \
                                goto __out;                     \
+                       offset = 0;                             \
                }                                               \
        }                                                       \
 __out:                                                         \