On 03/17/2017 09:55 PM, Kirill A. Shutemov wrote: > With folded p4d, pgd_clear() is nop. Change clear_pgds() to use > p4d_clear() instead. > You could probably just use set_pgd(pgd_offset_k(start), __pgd(0)); instead of pgd_clear() as we already do in arm64. It's basically pgd_clear() except it's not a nop wih p4d folded. > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > --- > arch/x86/mm/kasan_init_64.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c > index 0a56059a95c7..b775ffd7989d 100644 > --- a/arch/x86/mm/kasan_init_64.c > +++ b/arch/x86/mm/kasan_init_64.c > @@ -35,8 +35,19 @@ static int __init map_range(struct range *range) > static void __init clear_pgds(unsigned long start, > unsigned long end) > { > - for (; start < end; start += PGDIR_SIZE) > - pgd_clear(pgd_offset_k(start)); > + pgd_t *pgd; > + > + for (; start < end; start += PGDIR_SIZE) { > + pgd = pgd_offset_k(start); > + /* > + * With folded p4d, pgd_clear() is nop, use p4d_clear() > + * instead. > + */ > + if (CONFIG_PGTABLE_LEVELS < 5) > + p4d_clear(p4d_offset(pgd, start)); > + else > + pgd_clear(pgd); > + } > } > > static void __init kasan_map_early_shadow(pgd_t *pgd) > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>