]> code.ossystems Code Review - openembedded-core.git/commitdiff
module-init-tools: fix depmod caused segfault issue
authorKevin Tian <kevin.tian@intel.com>
Fri, 6 Aug 2010 08:37:47 +0000 (16:37 +0800)
committerRichard Purdie <rpurdie@linux.intel.com>
Fri, 6 Aug 2010 17:33:15 +0000 (18:33 +0100)
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>
meta/packages/module-init-tools/files/grab_module_memset.patch [new file with mode: 0644]
meta/packages/module-init-tools/module-init-tools-cross_3.12.bb
meta/packages/module-init-tools/module-init-tools.inc
meta/packages/module-init-tools/module-init-tools_3.12.bb

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 (file)
index 0000000..9550255
--- /dev/null
@@ -0,0 +1,19 @@
+# this patch is from Mark Hatle <mark.hatle@windriver.com>, who  ran into 
+# a random segfault using the latest module-init-tools (3.12) and finally
+# trace back to depmod.c:grab_module, which appears that the new malloc(...) 
+# setups up things, but never clears the memory that was just allocated.
+#
+# Kevin Tian <kevin.tian@intel.com>, 2010-08-06
+
+diff --git a/depmod.c b/depmod.c
+index 647e5e6..46e03e0 100644
+--- a/depmod.c
++++ b/depmod.c
+@@ -313,6 +313,7 @@ static struct module *grab_module(const char *dirname, const char *filename)
+       new = NOFAIL(malloc(sizeof(*new)
+                           + strlen(dirname?:"") + 1 + strlen(filename) + 1));
++      memset(new, 0x00, sizeof(*new) + strlen(dirname?:"") + 1 + strlen(filename) + 1);
+       if (dirname)
+               sprintf(new->pathname, "%s/%s", dirname, filename);
+       else
index c4b411846656fb2c0c5356ccab76f8eb603d74ac..08bf1a95e52ff63aa871454a81465ee079dc1aac 100644 (file)
@@ -1,5 +1,5 @@
 require module-init-tools.inc
-PR = "r0"
+PR = "r1"
 inherit cross
 PROVIDES += "virtual/${TARGET_PREFIX}depmod virtual/${TARGET_PREFIX}depmod-2.6"
 
index 7c9b3f7fa843a729383bfc1b022eff8d27498b61..f1319ad90dff38bf3ff9a899c92406faf9de1001 100644 (file)
@@ -13,7 +13,8 @@ FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static"
 SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \
            file://ignore_arch_directory.patch \
            file://modutils_extension.patch \
-           file://disable_man.patch"
+           file://disable_man.patch \
+           file://grab_module_memset.patch"
 
 inherit autotools
 
index 6fd9d9dc0bb6a42462d4591146c380d28779dd64..6c312b4cec460cd5c99429ed7384c8ded96e3f0a 100644 (file)
@@ -1,5 +1,5 @@
 require module-init-tools.inc
-PR = "r0"
+PR = "r1"
 
 # autotools set prefix to /usr, however we want them in /bin and /sbin
 bindir = "/bin"