summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorKevin Tian <kevin.tian@intel.com>2010-08-06 16:37:47 +0800
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-06 18:33:15 +0100
commitf4cb0870acd980a35e6e87b5bcf548a4452fd6a7 (patch)
tree7168f1111fed02e9e2367bb2b84481fe6dfbd0c0 /meta
parent45d237b3bf7262d0a73098b04e8b162528ba99c0 (diff)
downloadpoky-f4cb0870acd980a35e6e87b5bcf548a4452fd6a7.tar.gz
module-init-tools: fix depmod caused segfault issue
memset is required after malloc in grab_module, or else random segfault may happen. The fix is from Mark Hatle <mark.hatle@windriver.com>. Upstream bug is reported as: https://bugzilla.kernel.org/show_bug.cgi?id=16528 Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Diffstat (limited to 'meta')
-rw-r--r--meta/packages/module-init-tools/files/grab_module_memset.patch19
-rw-r--r--meta/packages/module-init-tools/module-init-tools-cross_3.12.bb2
-rw-r--r--meta/packages/module-init-tools/module-init-tools.inc3
-rw-r--r--meta/packages/module-init-tools/module-init-tools_3.12.bb2
4 files changed, 23 insertions, 3 deletions
diff --git a/meta/packages/module-init-tools/files/grab_module_memset.patch b/meta/packages/module-init-tools/files/grab_module_memset.patch
new file mode 100644
index 0000000000..9550255315
--- /dev/null
+++ b/meta/packages/module-init-tools/files/grab_module_memset.patch
@@ -0,0 +1,19 @@
1# this patch is from Mark Hatle <mark.hatle@windriver.com>, who ran into
2# a random segfault using the latest module-init-tools (3.12) and finally
3# trace back to depmod.c:grab_module, which appears that the new malloc(...)
4# setups up things, but never clears the memory that was just allocated.
5#
6# Kevin Tian <kevin.tian@intel.com>, 2010-08-06
7
8diff --git a/depmod.c b/depmod.c
9index 647e5e6..46e03e0 100644
10--- a/depmod.c
11+++ b/depmod.c
12@@ -313,6 +313,7 @@ static struct module *grab_module(const char *dirname, const char *filename)
13
14 new = NOFAIL(malloc(sizeof(*new)
15 + strlen(dirname?:"") + 1 + strlen(filename) + 1));
16+ memset(new, 0x00, sizeof(*new) + strlen(dirname?:"") + 1 + strlen(filename) + 1);
17 if (dirname)
18 sprintf(new->pathname, "%s/%s", dirname, filename);
19 else
diff --git a/meta/packages/module-init-tools/module-init-tools-cross_3.12.bb b/meta/packages/module-init-tools/module-init-tools-cross_3.12.bb
index c4b4118466..08bf1a95e5 100644
--- a/meta/packages/module-init-tools/module-init-tools-cross_3.12.bb
+++ b/meta/packages/module-init-tools/module-init-tools-cross_3.12.bb
@@ -1,5 +1,5 @@
1require module-init-tools.inc 1require module-init-tools.inc
2PR = "r0" 2PR = "r1"
3inherit cross 3inherit cross
4PROVIDES += "virtual/${TARGET_PREFIX}depmod virtual/${TARGET_PREFIX}depmod-2.6" 4PROVIDES += "virtual/${TARGET_PREFIX}depmod virtual/${TARGET_PREFIX}depmod-2.6"
5 5
diff --git a/meta/packages/module-init-tools/module-init-tools.inc b/meta/packages/module-init-tools/module-init-tools.inc
index 7c9b3f7fa8..f1319ad90d 100644
--- a/meta/packages/module-init-tools/module-init-tools.inc
+++ b/meta/packages/module-init-tools/module-init-tools.inc
@@ -13,7 +13,8 @@ FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static"
13SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \ 13SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \
14 file://ignore_arch_directory.patch \ 14 file://ignore_arch_directory.patch \
15 file://modutils_extension.patch \ 15 file://modutils_extension.patch \
16 file://disable_man.patch" 16 file://disable_man.patch \
17 file://grab_module_memset.patch"
17 18
18inherit autotools 19inherit autotools
19 20
diff --git a/meta/packages/module-init-tools/module-init-tools_3.12.bb b/meta/packages/module-init-tools/module-init-tools_3.12.bb
index 6fd9d9dc0b..6c312b4cec 100644
--- a/meta/packages/module-init-tools/module-init-tools_3.12.bb
+++ b/meta/packages/module-init-tools/module-init-tools_3.12.bb
@@ -1,5 +1,5 @@
1require module-init-tools.inc 1require module-init-tools.inc
2PR = "r0" 2PR = "r1"
3 3
4# autotools set prefix to /usr, however we want them in /bin and /sbin 4# autotools set prefix to /usr, however we want them in /bin and /sbin
5bindir = "/bin" 5bindir = "/bin"