On Tue, 2019-08-20 at 13:16 +0200, Thomas Gleixner wrote: > On Tue, 20 Aug 2019, Peter Zijlstra wrote: > > What that code wants to do is skip to the end of the pud, a > > pmd_size > > increase will not do that. And right below this, there's a second > > instance of this exact pattern. > > > > Did I get the below right? > > > > --- > > diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c > > index b196524759ec..32b20b3cb227 100644 > > --- a/arch/x86/mm/pti.c > > +++ b/arch/x86/mm/pti.c > > @@ -330,12 +330,14 @@ pti_clone_pgtable(unsigned long start, > > unsigned long end, > > > > pud = pud_offset(p4d, addr); > > if (pud_none(*pud)) { > > + addr &= PUD_MASK; > > addr += PUD_SIZE; > > round_up(addr, PUD_SIZE); > > perhaps? Won't that keep returning the same address forever if addr & PUD_MASK == 0?