On 12/7/24 18:16, Zi Yan wrote: > Some architectures have special handling after clearing user folios: > architectures, which set cpu_dcache_is_aliasing() to true, require > flushing dcache; arc, which sets cpu_icache_is_aliasing() to true, changes > folio->flags to make icache coherent to dcache. So __GFP_ZERO using only > clear_page() is not enough to zero user folios and clear_user_(high)page() > must be used. Otherwise, user data will be corrupted. > > Fix it by always clearing user folios with clear_user_(high)page() when > cpu_dcache_is_aliasing() is true or cpu_icache_is_aliasing() is true. > Rename alloc_zeroed() to alloc_need_zeroing() and invert the logic to > clarify its intend. user_alloc_needs_zeroing() would be perhaps more descriptive? > Fixes: 5708d96da20b ("mm: avoid zeroing user movable page twice with init_on_alloc=1") > Reported-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > Closes: https://lore.kernel.org/linux-mm/CAMuHMdV1hRp_NtR5YnJo=HsfgKQeH91J537Gh4gKk3PFZhSkbA@xxxxxxxxxxxxxx/ > Tested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > Signed-off-by: Zi Yan <ziy@xxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx>