]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
powerpc/8xx: Fix initial memory mapping
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 20 Aug 2024 17:23:45 +0000 (19:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2024 14:32:45 +0000 (16:32 +0200)
[ Upstream commit f9f2bff64c2f0dbee57be3d8c2741357ad3d05e6 ]

Commit cf209951fa7f ("powerpc/8xx: Map linear memory with huge pages")
introduced an initial mapping of kernel TEXT using PAGE_KERNEL_TEXT,
but the pages that contain kernel TEXT may also contain kernel RODATA,
and depending on selected debug options PAGE_KERNEL_TEXT may be either
RWX or ROX. RODATA must be writable during init because it also
contains ro_after_init data.

So use PAGE_KERNEL_X instead to be sure it is RWX.

Fixes: cf209951fa7f ("powerpc/8xx: Map linear memory with huge pages")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/dac7a828d8497c4548c91840575a706657baa4f1.1724173828.git.christophe.leroy@csgroup.eu
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/powerpc/mm/nohash/8xx.c

index d93433e26dedb8965b73ed67ae58cb76fe384b69..e5cc3b3a259f9a8c14bcca29cb2496803da0bb86 100644 (file)
@@ -154,11 +154,11 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
 
        mmu_mapin_immr();
 
-       mmu_mapin_ram_chunk(0, boundary, PAGE_KERNEL_TEXT, true);
+       mmu_mapin_ram_chunk(0, boundary, PAGE_KERNEL_X, true);
        if (debug_pagealloc_enabled_or_kfence()) {
                top = boundary;
        } else {
-               mmu_mapin_ram_chunk(boundary, einittext8, PAGE_KERNEL_TEXT, true);
+               mmu_mapin_ram_chunk(boundary, einittext8, PAGE_KERNEL_X, true);
                mmu_mapin_ram_chunk(einittext8, top, PAGE_KERNEL, true);
        }