• M
    powerpc/mm/radix: Fix small page at boundary when splitting · b43c5287
    Michael Ellerman 提交于
    [ Upstream commit 81d1b54dec95209ab5e5be2cf37182885f998753 ]
    
    When we have CONFIG_STRICT_KERNEL_RWX enabled, we want to split the
    linear mapping at the text/data boundary so we can map the kernel
    text read only.
    
    Currently we always use a small page at the text/data boundary, even
    when that's not necessary:
    
      Mapped 0x0000000000000000-0x0000000000e00000 with 2.00 MiB pages
      Mapped 0x0000000000e00000-0x0000000001000000 with 64.0 KiB pages
      Mapped 0x0000000001000000-0x0000000040000000 with 2.00 MiB pages
    
    This is because the check that the mapping crosses the __init_begin
    boundary is too strict, it also returns true when we map exactly up to
    the boundary.
    
    So fix it to check that the mapping would actually map past
    __init_begin, and with that we see:
    
      Mapped 0x0000000000000000-0x0000000040000000 with 2.00 MiB pages
      Mapped 0x0000000040000000-0x0000000100000000 with 1.00 GiB pages
    Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    b43c5287
pgtable-radix.c 26.2 KB