kernel: fix vmalloc stack traces triggered by module with an empty init section (mostly happens on x86)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30813 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
bac0472b04
commit
30e736b60b
|
@ -0,0 +1,20 @@
|
||||||
|
--- a/kernel/module.c
|
||||||
|
+++ b/kernel/module.c
|
||||||
|
@@ -2286,12 +2286,15 @@
|
||||||
|
|
||||||
|
void * __weak module_alloc(unsigned long size)
|
||||||
|
{
|
||||||
|
- return size == 0 ? NULL : vmalloc_exec(size);
|
||||||
|
+ return vmalloc_exec(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *module_alloc_update_bounds(unsigned long size)
|
||||||
|
{
|
||||||
|
- void *ret = module_alloc(size);
|
||||||
|
+ void *ret = NULL;
|
||||||
|
+
|
||||||
|
+ if (size)
|
||||||
|
+ ret = module_alloc(size);
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
mutex_lock(&module_mutex);
|
|
@ -0,0 +1,20 @@
|
||||||
|
--- a/kernel/module.c
|
||||||
|
+++ b/kernel/module.c
|
||||||
|
@@ -2322,12 +2322,15 @@
|
||||||
|
|
||||||
|
void * __weak module_alloc(unsigned long size)
|
||||||
|
{
|
||||||
|
- return size == 0 ? NULL : vmalloc_exec(size);
|
||||||
|
+ return vmalloc_exec(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *module_alloc_update_bounds(unsigned long size)
|
||||||
|
{
|
||||||
|
- void *ret = module_alloc(size);
|
||||||
|
+ void *ret = NULL;
|
||||||
|
+
|
||||||
|
+ if (size)
|
||||||
|
+ ret = module_alloc(size);
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
mutex_lock(&module_mutex);
|
Loading…
Reference in New Issue