powerpc/mm/radix: Implement STRICT_RWX/mark_rodata_ro() for Radix
authorBalbir Singh <bsingharora@gmail.com>
Wed, 28 Jun 2017 17:04:09 +0000 (03:04 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 4 Jul 2017 01:37:39 +0000 (11:37 +1000)
commit7614ff3272a115a047139173cc04466e8132a1f2
tree6215fd8d6460f772c73639a0c1459398067db360
parentcd65d69713349fc7b33fa9de2b32989b99c9fb39
powerpc/mm/radix: Implement STRICT_RWX/mark_rodata_ro() for Radix

The Radix linear mapping code (create_physical_mapping()) tries to use
the largest page size it can at each step. Currently the only reason
it steps down to a smaller page size is if the start addr is
unaligned (never happens in practice), or the end of memory is not
aligned to a huge page boundary.

To support STRICT_RWX we need to break the mapping at __init_begin,
so that the text and rodata prior to that can be marked R_X and the
regular pages after can be marked RW.

Having done that we can now implement mark_rodata_ro() for Radix,
knowing that we won't need to split any mappings.

Signed-off-by: Balbir Singh <bsingharora@gmail.com>
[mpe: Split down to PAGE_SIZE, not 2MB, rewrite change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/pgtable-radix.c
arch/powerpc/mm/pgtable_64.c