]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - arch/powerpc/mm/pgtable_32.c
powerpc/mm/32s: Use BATs for STRICT_KERNEL_RWX
[thirdparty/kernel/stable.git] / arch / powerpc / mm / pgtable_32.c
index a000768a5cc9110e1b6df4797ea0ad5b92d9fab1..6e56a6240bfa4da1ee1815bb01835c596fad5e1a 100644 (file)
@@ -353,7 +353,10 @@ void mark_initmem_nx(void)
        unsigned long numpages = PFN_UP((unsigned long)_einittext) -
                                 PFN_DOWN((unsigned long)_sinittext);
 
-       change_page_attr(page, numpages, PAGE_KERNEL);
+       if (v_block_mapped((unsigned long)_stext) + 1)
+               mmu_mark_initmem_nx();
+       else
+               change_page_attr(page, numpages, PAGE_KERNEL);
 }
 
 #ifdef CONFIG_STRICT_KERNEL_RWX
@@ -362,6 +365,11 @@ void mark_rodata_ro(void)
        struct page *page;
        unsigned long numpages;
 
+       if (v_block_mapped((unsigned long)_sinittext)) {
+               mmu_mark_rodata_ro();
+               return;
+       }
+
        page = virt_to_page(_stext);
        numpages = PFN_UP((unsigned long)_etext) -
                   PFN_DOWN((unsigned long)_stext);