diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-01-28 10:28:10 -0500 |
---|---|---|
committer | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-02-08 05:06:36 -0500 |
commit | 08cfeacb6bcb37c5cf1a9bc0c930243634631f09 (patch) | |
tree | 0e99b56b7a6f9cfc28a92a6d5be8daaf13b8f6ee /arch/cris/kernel/module.c | |
parent | b4945a90d00f9ada1fd76fd7bd591e9ae54ca8b4 (diff) |
CRIS: Add configuration possibility for using kmalloc for modules.
Using kmalloc instead of vmalloc solves the stability problems
experienced by some 100 LX products.
Diffstat (limited to 'arch/cris/kernel/module.c')
-rw-r--r-- | arch/cris/kernel/module.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/arch/cris/kernel/module.c b/arch/cris/kernel/module.c index 11b867df8617..a187833febc8 100644 --- a/arch/cris/kernel/module.c +++ b/arch/cris/kernel/module.c | |||
@@ -28,20 +28,28 @@ | |||
28 | #define DEBUGP(fmt , ...) | 28 | #define DEBUGP(fmt , ...) |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | #ifdef CONFIG_ETRAX_KMALLOCED_MODULES | ||
32 | #define MALLOC_MODULE(size) kmalloc(size, GFP_KERNEL) | ||
33 | #define FREE_MODULE(region) kfree(region) | ||
34 | #else | ||
35 | #define MALLOC_MODULE(size) vmalloc_exec(size) | ||
36 | #define FREE_MODULE(region) vfree(region) | ||
37 | #endif | ||
38 | |||
31 | void *module_alloc(unsigned long size) | 39 | void *module_alloc(unsigned long size) |
32 | { | 40 | { |
33 | if (size == 0) | 41 | if (size == 0) |
34 | return NULL; | 42 | return NULL; |
35 | return vmalloc_exec(size); | 43 | return MALLOC_MODULE(size); |
36 | } | 44 | } |
37 | 45 | ||
38 | 46 | ||
39 | /* Free memory returned from module_alloc */ | 47 | /* Free memory returned from module_alloc */ |
40 | void module_free(struct module *mod, void *module_region) | 48 | void module_free(struct module *mod, void *module_region) |
41 | { | 49 | { |
42 | vfree(module_region); | 50 | FREE_MODULE(module_region); |
43 | /* FIXME: If module_region == mod->init_region, trim exception | 51 | /* FIXME: If module_region == mod->init_region, trim exception |
44 | table entries. */ | 52 | table entries. */ |
45 | } | 53 | } |
46 | 54 | ||
47 | /* We don't need anything special. */ | 55 | /* We don't need anything special. */ |