mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 06:53:04 +00:00
powerpc/8xx: Preallocate execmem page tables
Preallocate execmem page tables before creating new PGDs so that all PGD entries related to execmem can be copied in pgd_alloc(). On 8xx there are 32 Mbytes for execmem by default so this will use 32 kbytes. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/a7180cc1ba59dec4502af39b4e9f3ff91c57280d.1724173828.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
c5eec4df25
commit
16a71c0451
|
@ -412,6 +412,18 @@ EXPORT_SYMBOL_GPL(walk_system_ram_range);
|
|||
#ifdef CONFIG_EXECMEM
|
||||
static struct execmem_info execmem_info __ro_after_init;
|
||||
|
||||
#ifdef CONFIG_PPC_8xx
|
||||
static void prealloc_execmem_pgtable(void)
|
||||
{
|
||||
unsigned long va;
|
||||
|
||||
for (va = ALIGN_DOWN(MODULES_VADDR, PGDIR_SIZE); va < MODULES_END; va += PGDIR_SIZE)
|
||||
pte_alloc_kernel(pmd_off_k(va), va);
|
||||
}
|
||||
#else
|
||||
static void prealloc_execmem_pgtable(void) { }
|
||||
#endif
|
||||
|
||||
struct execmem_info __init *execmem_arch_setup(void)
|
||||
{
|
||||
pgprot_t kprobes_prot = strict_module_rwx_enabled() ? PAGE_KERNEL_ROX : PAGE_KERNEL_EXEC;
|
||||
|
@ -443,6 +455,8 @@ struct execmem_info __init *execmem_arch_setup(void)
|
|||
end = VMALLOC_END;
|
||||
#endif
|
||||
|
||||
prealloc_execmem_pgtable();
|
||||
|
||||
execmem_info = (struct execmem_info){
|
||||
.ranges = {
|
||||
[EXECMEM_DEFAULT] = {
|
||||
|
|
Loading…
Reference in New Issue
Block a user