powerpc/mm: Mark __init memory no-execute when STRICT_KERNEL_RWX=y
Currently even with STRICT_KERNEL_RWX we leave the __init text marked
executable after init, which is bad.
Add a hook to mark it NX (no-execute) before we free it, and implement
it for radix and hash.
Note that we use __init_end as the end address, not _einittext,
because overlaps_kernel_text() uses __init_end, because there are
additional executable sections other than .init.text between
__init_begin and __init_end.
Tested on radix and hash with:
0:mon> p $__init_begin
*** 400 exception occurred
Fixes: 1e0fc9d1eb
("powerpc/Kconfig: Enable STRICT_KERNEL_RWX for some configs")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
@@ -505,4 +505,12 @@ void mark_rodata_ro(void)
|
||||
else
|
||||
hash__mark_rodata_ro();
|
||||
}
|
||||
|
||||
void mark_initmem_nx(void)
|
||||
{
|
||||
if (radix_enabled())
|
||||
radix__mark_initmem_nx();
|
||||
else
|
||||
hash__mark_initmem_nx();
|
||||
}
|
||||
#endif
|
||||
|
مرجع در شماره جدید
Block a user