[PATCH 1/3] powerpc/mm/radix: Refactor radix__mark_rodata_ro()
Balbir Singh
bsingharora at gmail.com
Tue Jul 18 11:04:20 AEST 2017
On Fri, Jul 14, 2017 at 4:51 PM, Michael Ellerman <mpe at ellerman.id.au> wrote:
> Move the core logic into a helper, so we can use it for changing permissions
> other than _PAGE_WRITE.
>
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> ---
> arch/powerpc/mm/pgtable-radix.c | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
> index 8c13e4282308..336e52ec652c 100644
> --- a/arch/powerpc/mm/pgtable-radix.c
> +++ b/arch/powerpc/mm/pgtable-radix.c
> @@ -112,10 +112,9 @@ int radix__map_kernel_page(unsigned long ea, unsigned long pa,
> }
>
> #ifdef CONFIG_STRICT_KERNEL_RWX
> -void radix__mark_rodata_ro(void)
> +void radix__change_memory_range(unsigned long start, unsigned long end,
> + unsigned long clear)
> {
> - unsigned long start = (unsigned long)_stext;
> - unsigned long end = (unsigned long)__init_begin;
> unsigned long idx;
> pgd_t *pgdp;
> pud_t *pudp;
> @@ -125,7 +124,8 @@ void radix__mark_rodata_ro(void)
> start = ALIGN_DOWN(start, PAGE_SIZE);
> end = PAGE_ALIGN(end); // aligns up
>
> - pr_devel("marking ro start %lx, end %lx\n", start, end);
> + pr_debug("Changing flags on range %lx-%lx removing 0x%lx\n",
> + start, end, clear);
>
> for (idx = start; idx < end; idx += PAGE_SIZE) {
> pgdp = pgd_offset_k(idx);
> @@ -147,11 +147,21 @@ void radix__mark_rodata_ro(void)
> if (!ptep)
> continue;
> update_the_pte:
> - radix__pte_update(&init_mm, idx, ptep, _PAGE_WRITE, 0, 0);
> + radix__pte_update(&init_mm, idx, ptep, clear, 0, 0);
> }
>
> radix__flush_tlb_kernel_range(start, end);
> }
> +
> +void radix__mark_rodata_ro(void)
> +{
> + unsigned long start, end;
> +
> + start = (unsigned long)_stext;
> + end = (unsigned long)__init_begin;
> +
> + radix__change_memory_range(start, end, _PAGE_WRITE);
> +}
> #endif /* CONFIG_STRICT_KERNEL_RWX */
>
Looks good, I had something similar for the patches to enable
relocation, but that's a
a larger chunk.
Reviewed-by: Balbir Singh <bsingharora at gmail.com>
More information about the Linuxppc-dev
mailing list