summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJesper Nilsson <jesper.nilsson@axis.com>2008-01-28 16:28:10 +0100
committerJesper Nilsson <jesper.nilsson@axis.com>2008-02-08 11:06:36 +0100
commit08cfeacb6bcb37c5cf1a9bc0c930243634631f09 (patch)
tree0e99b56b7a6f9cfc28a92a6d5be8daaf13b8f6ee /arch
parentCRIS: Remove CONFIG_NO_IOMEM from default configs. (diff)
downloadlinux-08cfeacb6bcb37c5cf1a9bc0c930243634631f09.tar.xz
linux-08cfeacb6bcb37c5cf1a9bc0c930243634631f09.zip
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')
-rw-r--r--arch/cris/kernel/module.c14
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 @@
#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. */