CRIS: Add configuration possibility for using kmalloc for modules.
Using kmalloc instead of vmalloc solves the stability problems experienced by some 100 LX products.
This commit is contained in:
@@ -28,18 +28,26 @@
|
|||||||
#define DEBUGP(fmt , ...)
|
#define DEBUGP(fmt , ...)
|
||||||
#endif
|
#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)
|
void *module_alloc(unsigned long size)
|
||||||
{
|
{
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
return vmalloc_exec(size);
|
return MALLOC_MODULE(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Free memory returned from module_alloc */
|
/* Free memory returned from module_alloc */
|
||||||
void module_free(struct module *mod, void *module_region)
|
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
|
/* FIXME: If module_region == mod->init_region, trim exception
|
||||||
table entries. */
|
table entries. */
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user