Re: [PATCH 1/2] iov_iter: iterate_folioq: fix handling of offset >= folio size

From: David Howells
Date: Tue Aug 12 2025 - 05:37:00 EST


asmadeus@xxxxxxxxxxxxx wrote:

> There should be a `if (slot == folioq_nr_slots(folioq)) break` check
> somewhere as well? Or is the iov_iter guaranteed to always 1/ have some
> data and 2/ either be big enough or have remaining data in a step?

We should handle both cases. I think the other iteration functions
will. iov_iter_extractg_folioq_pages(), for example, wraps it in a
conditional:

if (offset < fsize) {
part = umin(part, umin(maxsize - extracted, fsize - offset));
i->count -= part;
i->iov_offset += part;
extracted += part;

p[nr++] = folio_page(folio, offset / PAGE_SIZE);
}

David