Re: [PATCH] 2.6.4-rc2: scripts/modpost.c

From: Daniel Mack
Date: Fri Mar 05 2004 - 06:50:22 EST


On Thu, Mar 04, 2004 at 09:24:40PM -0800, Randy.Dunlap wrote:
> The comment and code certainly don't match, and your patch makes sense
> to me. However, I can't reproduce the problem that you describe.
>
> I built the kernel image and modules in "www.osdl.org/264rc2/build1",
> and all *.mod.c and *.ko ended up there with no problems.

This only occurs if you try to build kernel modules externally like
described in http://linuxdevices.com/articles/AT4389927951.html.
The DVB driver from CVS does it like this, I'm sure there are many
more cases where this could lead to problems.

> Andrew, I applied the patch and didn't have any problems with
> 'make allyesconfig' like you alluded to.

Hmm, here is a compiler warning when builing modpost since my patch
accesses const char* memory directly (right after malloc()ing it).
The following patch has exactly the same effect but also makes gcc
happy.


diff -ru linux-2.6.4-rc2.orig/scripts/modpost.c linux-2.6.4-rc2/scripts/modpost.c
--- linux-2.6.4-rc2.orig/scripts/modpost.c 2004-03-04 11:40:21.000000000 +0100
+++ linux-2.6.4-rc2/scripts/modpost.c 2004-03-05 12:10:24.000000000 +0100
@@ -63,17 +63,18 @@
new_module(char *modname)
{
struct module *mod;
- char *p;
+ int len;

mod = NOFAIL(malloc(sizeof(*mod)));
memset(mod, 0, sizeof(*mod));
- mod->name = NOFAIL(strdup(modname));
-
+ len = strlen(modname);
+
/* strip trailing .o */
- p = strstr(mod->name, ".o");
- if (p)
- *p = 0;
-
+ if (len > 2 && modname[len-2] == '.' && modname[len-1] == 'o')
+ len -= 2;
+
+ mod->name = NOFAIL(strndup(modname, len));
+
/* add to list */
mod->next = modules;
modules = mod;
diff -ru linux-2.6.4-rc2.orig/scripts/modpost.h linux-2.6.4-rc2/scripts/modpost.h
--- linux-2.6.4-rc2.orig/scripts/modpost.h 2004-03-04 11:40:21.000000000 +0100
+++ linux-2.6.4-rc2/scripts/modpost.h 2004-03-05 12:10:51.000000000 +0100
@@ -1,3 +1,5 @@
+#define _GNU_SOURCE
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>


Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/