Re: [PATCH v3] mm: folio_zero_user: open code range computation in folio_zero_user()
From: Ankur Arora
Date: Sun Feb 08 2026 - 20:10:43 EST
David Hildenbrand (Arm) <david@xxxxxxxxxx> writes:
> On 2/6/26 23:38, Ankur Arora wrote:
>> riscv64-gcc-linux-gnu (v8.5) reports a compile time assert in:
>> r[2] = DEFINE_RANGE(clamp_t(s64, fault_idx - radius, pg.start, pg.end),
>> clamp_t(s64, fault_idx + radius, pg.start, pg.end));
>> where it decides that pg.start > pg.end in:
>> clamp_t(s64, fault_idx + radius, pg.start, pg.end));
>> where pg comes from:
>> const struct range pg = DEFINE_RANGE(0, folio_nr_pages(folio) - 1);
>> That does not seem like it could be true. Even for pg.start == pg.end,
>> we would need folio_test_large() to evaluate to false at compile time:
>> static inline unsigned long folio_nr_pages(const struct folio *folio)
>> {
>> if (!folio_test_large(folio))
>> return 1;
>> return folio_large_nr_pages(folio);
>> }
>> Workaround by open coding the range computation. Also, simplify the type
>> declarations for the relevant variables.
>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202601240453.QCjgGdJa-lkp@xxxxxxxxx/
>> Fixes: 93552c9a3350 ("mm: folio_zero_user: cache neighbouring pages")
>> Signed-off-by: Ankur Arora <ankur.a.arora@xxxxxxxxxx>
>> Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
>> ---
>> Hi Andrew
>>
>
> Thanks Amkur and hoping you'll have a nice weekend!
Thanks and to you too (or at least what's left of it) :).
--
ankur