Skip to content

Commit 160ce36

Browse files
Merge remote-tracking branch 'riscv/riscv-wx-mappings' into fixes
This single commit is shared between fixes and for-next, as it fixes a concrete bug while likely conflicting with a more invasive cleanup to avoid these oddball mappings entirely. * riscv/riscv-wx-mappings: riscv: mm: Fix W+X mappings at boot
2 parents da2d488 + 8a4102a commit 160ce36

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

arch/riscv/mm/init.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,14 +746,18 @@ void __init protect_kernel_text_data(void)
746746
unsigned long init_data_start = (unsigned long)__init_data_begin;
747747
unsigned long rodata_start = (unsigned long)__start_rodata;
748748
unsigned long data_start = (unsigned long)_data;
749-
unsigned long max_low = (unsigned long)(__va(PFN_PHYS(max_low_pfn)));
749+
#if defined(CONFIG_64BIT) && defined(CONFIG_MMU)
750+
unsigned long end_va = kernel_virt_addr + load_sz;
751+
#else
752+
unsigned long end_va = (unsigned long)(__va(PFN_PHYS(max_low_pfn)));
753+
#endif
750754

751755
set_memory_ro(text_start, (init_text_start - text_start) >> PAGE_SHIFT);
752756
set_memory_ro(init_text_start, (init_data_start - init_text_start) >> PAGE_SHIFT);
753757
set_memory_nx(init_data_start, (rodata_start - init_data_start) >> PAGE_SHIFT);
754758
/* rodata section is marked readonly in mark_rodata_ro */
755759
set_memory_nx(rodata_start, (data_start - rodata_start) >> PAGE_SHIFT);
756-
set_memory_nx(data_start, (max_low - data_start) >> PAGE_SHIFT);
760+
set_memory_nx(data_start, (end_va - data_start) >> PAGE_SHIFT);
757761
}
758762

759763
void mark_rodata_ro(void)

0 commit comments

Comments
 (0)