]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
powerpc/8xx: Fix STRICT_KERNEL_RWX startup test failure
authorChristophe Leroy <christophe.leroy@c-s.fr>
Mon, 20 Apr 2020 05:37:42 +0000 (05:37 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 22 Apr 2020 10:23:41 +0000 (20:23 +1000)
WRITE_RO lkdtm test works.

But when selecting CONFIG_DEBUG_RODATA_TEST, the kernel reports
rodata_test: test data was not read only

This is because when rodata test runs, there are still old entries
in TLB.

Flush TLB after setting kernel pages RO or NX.

Fixes: d5f17ee96447 ("powerpc/8xx: don't disable large TLBs with CONFIG_STRICT_KERNEL_RWX")
Cc: stable@vger.kernel.org # v5.1+
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/485caac75f195f18c11eb077b0031fdd2bb7fb9e.1587361039.git.christophe.leroy@c-s.fr
arch/powerpc/mm/nohash/8xx.c

index 3189308dece4c9a09b5f32d332a307945679ce62..d83a12c5bc7f4343d154f60dabb73c8cfa519442 100644 (file)
@@ -185,6 +185,7 @@ void mmu_mark_initmem_nx(void)
                        mmu_mapin_ram_chunk(etext8, einittext8, PAGE_KERNEL);
                }
        }
+       _tlbil_all();
 }
 
 #ifdef CONFIG_STRICT_KERNEL_RWX
@@ -199,6 +200,8 @@ void mmu_mark_rodata_ro(void)
                                      ~(LARGE_PAGE_SIZE_8M - 1)));
        mmu_patch_addis(&patch__dtlbmiss_romem_top, -__pa(_sinittext));
 
+       _tlbil_all();
+
        /* Update page tables for PTDUMP and BDI */
        mmu_mapin_ram_chunk(0, sinittext, __pgprot(0));
        mmu_mapin_ram_chunk(0, etext, PAGE_KERNEL_ROX);