• Jike Song's avatar
    x86/mm/pti: Remove dead logic in pti_user_pagetable_walk*() · 8d56eff2
    Jike Song authored
    The following code contains dead logic:
    
     162 if (pgd_none(*pgd)) {
     163         unsigned long new_p4d_page = __get_free_page(gfp);
     164         if (!new_p4d_page)
     165                 return NULL;
     166
     167         if (pgd_none(*pgd)) {
     168                 set_pgd(pgd, __pgd(_KERNPG_TABLE | __pa(new_p4d_page)));
     169                 new_p4d_page = 0;
     170         }
     171         if (new_p4d_page)
     172                 free_page(new_p4d_page);
     173 }
    
    There can't be any difference between two pgd_none(*pgd) at L162 and L167,
    so it's always false at L171.
    
    Dave Hansen explained:
    
     Yes, the double-test was part of an optimization where we attempted to
     avoid using a global spinlock in the fork() path.  We would check for
     unallocated mid-level page tables without the lock.  The lock was only
     taken when we needed to *make* an entry to avoid collisions.
     
     Now that it is all single-threaded, there is no chance of a collision,
     no need for a lock, and no need for the re-check.
    
    As all these functions are only called during init, mark them __init as
    well.
    
    Fixes: 03f4424f ("x86/mm/pti: Add functions to clone kernel PMDs")
    Signed-off-by: default avatarJike Song <albcamus@gmail.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Jiri Koshina <jikos@kernel.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Kees Cook <keescook@google.com>
    Cc: Andi Lutomirski <luto@amacapital.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Greg KH <gregkh@linux-foundation.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Paul Turner <pjt@google.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180108160341.3461-1-albcamus@gmail.com
    8d56eff2
pti.c 9.34 KB