• Pingfan Liu's avatar
    arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd · d3eb70ea
    Pingfan Liu authored
    trans_pgd_create_copy() can hit "VM_BUG_ON(mm != &init_mm)" in the
    function pmd_populate_kernel().
    
    This is the combined consequence of commit 5de59884 ("arm64:
    trans_pgd: pass NULL instead of init_mm to *_populate functions"), which
    replaced &init_mm with NULL and commit 59511cfd ("arm64: mm: use XN
    table mapping attributes for user/kernel mappings"), which introduced
    the VM_BUG_ON.
    
    Since the former sounds reasonable, it is better to work on the later.
    From the perspective of trans_pgd, two groups of functions are
    considered in the later one:
    
      pmd_populate_kernel()
        mm == NULL should be fixed, else it hits VM_BUG_ON()
      p?d_populate()
        mm == NULL means PXN, that is OK, since trans_pgd only copies a
        linear map, no execution will happen on the map.
    
    So it is good enough to just relax VM_BUG_ON() to disregard mm == NULL
    
    Fixes: 59511cfd ("arm64: mm: use XN table mapping attributes for user/kernel mappings")
    Signed-off-by: default avatarPingfan Liu <kernelfans@gmail.com>
    Cc: <stable@vger.kernel.org> # 5.13.x
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Matthias Brugger <mbrugger@suse.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: default avatarPasha Tatashin <pasha.tatashin@soleen.com>
    Link: https://lore.kernel.org/r/20211112052214.9086-1-kernelfans@gmail.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    d3eb70ea
pgalloc.h 2.22 KB