From e308da91e77087e943e0d48a83534cbc68bc03de Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 5 Mar 2012 00:12:44 +0000 Subject: kernel: fix vmalloc stack traces triggered by module with an empty init section (mostly happens on x86) SVN-Revision: 30813 --- .../patches-3.2/340-module_alloc_size_check.patch | 20 ++++++++++++++++++++ .../patches-3.3/340-module_alloc_size_check.patch | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 target/linux/generic/patches-3.2/340-module_alloc_size_check.patch create mode 100644 target/linux/generic/patches-3.3/340-module_alloc_size_check.patch (limited to 'target/linux') diff --git a/target/linux/generic/patches-3.2/340-module_alloc_size_check.patch b/target/linux/generic/patches-3.2/340-module_alloc_size_check.patch new file mode 100644 index 0000000000..6c7e50a0b1 --- /dev/null +++ b/target/linux/generic/patches-3.2/340-module_alloc_size_check.patch @@ -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); diff --git a/target/linux/generic/patches-3.3/340-module_alloc_size_check.patch b/target/linux/generic/patches-3.3/340-module_alloc_size_check.patch new file mode 100644 index 0000000000..9830bc507c --- /dev/null +++ b/target/linux/generic/patches-3.3/340-module_alloc_size_check.patch @@ -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); -- cgit v1.2.3