From: Sam Ravnborg From: Daniel Mack , me modpost unconditionally searched for ".o" assuming this is always the suffix of the module. This fails in two cases: a) when building external modules where any directory include ".o" in the name. One example is a directory named: .../cvs.alsa.org/... b) when someone names a kernel directory so it contains ".o". One example is drivers/scsi/aic.ok/... case b) was triggered by renaming the directory for aic7xxx, and modifying Makefile and Kconfig. This caused make modules to fail. --- scripts/modpost.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff -puN scripts/modpost.c~handle-dot-o-paths scripts/modpost.c --- 25/scripts/modpost.c~handle-dot-o-paths 2004-03-05 21:24:02.000000000 -0800 +++ 25-akpm/scripts/modpost.c 2004-03-05 21:24:02.000000000 -0800 @@ -64,17 +64,20 @@ new_module(char *modname) { struct module *mod; char *p; + size_t len; mod = NOFAIL(malloc(sizeof(*mod))); memset(mod, 0, sizeof(*mod)); - mod->name = NOFAIL(strdup(modname)); + p = NOFAIL(strdup(modname)); + + len = strlen(p); /* strip trailing .o */ - p = strstr(mod->name, ".o"); - if (p) - *p = 0; + if (len > 2 && p[len-2] == '.' && p[len-1] == 'o') + p[len -2] = '\0'; /* add to list */ + mod->name = NOFAIL(strdup(p)); mod->next = modules; modules = mod; _