@@ -24,7 +24,7 @@
#include <asm/sections.h>
static struct jit_alloc_params jit_alloc_params = {
- .alignment = MODULE_ALIGN,
+ .alignment = JIT_ALLOC_ALIGN,
.flags = JIT_ALLOC_KASAN_SHADOW,
};
@@ -56,7 +56,7 @@ static unsigned long get_module_load_offset(void)
}
static struct jit_alloc_params jit_alloc_params = {
- .alignment = MODULE_ALIGN,
+ .alignment = JIT_ALLOC_ALIGN,
.flags = JIT_ALLOC_KASAN_SHADOW,
.text.pgprot = PAGE_KERNEL,
};
@@ -67,7 +67,7 @@ static unsigned long int get_module_load_offset(void)
#endif
static struct jit_alloc_params jit_alloc_params = {
- .alignment = MODULE_ALIGN,
+ .alignment = JIT_ALLOC_ALIGN,
.flags = JIT_ALLOC_KASAN_SHADOW,
};
@@ -4,6 +4,14 @@
#include <linux/types.h>
+#if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \
+ !defined(CONFIG_KASAN_VMALLOC)
+#include <linux/kasan.h>
+#define JIT_ALLOC_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT)
+#else
+#define JIT_ALLOC_ALIGN PAGE_SIZE
+#endif
+
/**
* enum jit_alloc_flags - options for executable memory allocations
* @JIT_ALLOC_KASAN_SHADOW: allocate kasan shadow
@@ -25,10 +25,6 @@ int module_frob_arch_sections(Elf_Ehdr *hdr,
/* Additional bytes needed by arch in front of individual sections */
unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
-/* Allocator used for allocating struct module, core sections and init
- sections. Returns NULL on failure. */
-void *module_alloc(unsigned long size);
-
/* Determines if the section name is an init section (that is only used during
* module loading).
*/
@@ -113,12 +109,4 @@ void module_arch_cleanup(struct module *mod);
/* Any cleanup before freeing mod->module_init */
void module_arch_freeing_init(struct module *mod);
-#if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \
- !defined(CONFIG_KASAN_VMALLOC)
-#include <linux/kasan.h>
-#define MODULE_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT)
-#else
-#define MODULE_ALIGN PAGE_SIZE
-#endif
-
#endif
@@ -1600,13 +1600,6 @@ static void free_modinfo(struct module *mod)
}
}
-void * __weak module_alloc(unsigned long size)
-{
- return __vmalloc_node_range(size, 1, VMALLOC_START, VMALLOC_END,
- GFP_KERNEL, PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS,
- NUMA_NO_NODE, __builtin_return_address(0));
-}
-
bool __weak module_init_section(const char *name)
{
return strstarts(name, ".init");
@@ -60,20 +60,16 @@ void jit_free(void *buf)
void *jit_text_alloc(size_t len)
{
- if (jit_alloc_params.text.start) {
- unsigned int align = jit_alloc_params.alignment;
- pgprot_t pgprot = jit_alloc_params.text.pgprot;
- unsigned long start = jit_alloc_params.text.start;
- unsigned long end = jit_alloc_params.text.end;
- unsigned long fallback_start = jit_alloc_params.text.fallback_start;
- unsigned long fallback_end = jit_alloc_params.text.fallback_end;
- bool kasan = jit_alloc_params.flags & JIT_ALLOC_KASAN_SHADOW;
-
- return jit_alloc(len, align, pgprot, start, end,
- fallback_start, fallback_end, kasan);
- }
-
- return module_alloc(len);
+ unsigned int align = jit_alloc_params.alignment;
+ pgprot_t pgprot = jit_alloc_params.text.pgprot;
+ unsigned long start = jit_alloc_params.text.start;
+ unsigned long end = jit_alloc_params.text.end;
+ unsigned long fallback_start = jit_alloc_params.text.fallback_start;
+ unsigned long fallback_end = jit_alloc_params.text.fallback_end;
+ bool kasan = jit_alloc_params.flags & JIT_ALLOC_KASAN_SHADOW;
+
+ return jit_alloc(len, align, pgprot, start, end,
+ fallback_start, fallback_end, kasan);
}
struct jit_alloc_params * __weak jit_alloc_arch_params(void)
@@ -101,5 +97,12 @@ void jit_alloc_init(void)
return;
jit_alloc_params = *p;
+ return;
}
+
+ /* defaults for architecures that don't need special handling */
+ jit_alloc_params.alignment = 1;
+ jit_alloc_params.text.pgprot = PAGE_KERNEL_EXEC;
+ jit_alloc_params.text.start = VMALLOC_START;
+ jit_alloc_params.text.end = VMALLOC_END;
}