diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-01-28 16:28:10 +0100 |
---|---|---|
committer | Jesper Nilsson <jesper.nilsson@axis.com> | 2008-02-08 11:06:36 +0100 |
commit | 08cfeacb6bcb37c5cf1a9bc0c930243634631f09 (patch) | |
tree | 0e99b56b7a6f9cfc28a92a6d5be8daaf13b8f6ee | |
parent | b4945a90d00f9ada1fd76fd7bd591e9ae54ca8b4 (diff) | |
download | op-kernel-dev-08cfeacb6bcb37c5cf1a9bc0c930243634631f09.zip op-kernel-dev-08cfeacb6bcb37c5cf1a9bc0c930243634631f09.tar.gz |
CRIS: Add configuration possibility for using kmalloc for modules.
Using kmalloc instead of vmalloc solves the stability problems
experienced by some 100 LX products.
-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 11b867d..a187833 100644 --- a/arch/cris/kernel/module.c +++ b/arch/cris/kernel/module.c @@ -28,20 +28,28 @@ #define DEBUGP(fmt , ...) #endif +#ifdef CONFIG_ETRAX_KMALLOCED_MODULES +#define MALLOC_MODULE(size) kmalloc(size, GFP_KERNEL) +#define FREE_MODULE(region) kfree(region) +#else +#define MALLOC_MODULE(size) vmalloc_exec(size) +#define FREE_MODULE(region) vfree(region) +#endif + void *module_alloc(unsigned long size) { if (size == 0) return NULL; - return vmalloc_exec(size); + return MALLOC_MODULE(size); } /* Free memory returned from module_alloc */ void module_free(struct module *mod, void *module_region) { - vfree(module_region); + FREE_MODULE(module_region); /* FIXME: If module_region == mod->init_region, trim exception - table entries. */ + table entries. */ } /* We don't need anything special. */ |