From 65c8c7ba2775007fbd4f02272180900f665024f3 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Wed, 11 Aug 2004 02:30:30 +0000 Subject: Willian Barsse wrote "There seems to be a slight problem with the "mod_strcmp" function in modprobe.c, it scans for the first occurence of the module name in the "mod_path" variable and expects it to be the last path element. ie /lib/modules/2.4.22-debug/kernel/fs/vfat in my example. The comparison will always fail if mod_path contains another substring matching the module name." Robert McQueen wrote "Although William Barsse's patch fixed mod_strcmp for 2.4 kernels, there was a remaining problem which prevented it from working for me. I've just tracked it down - when you enable kernel 2.6 module support it hard-wired the extension to .ko instead of checking at runtime like the other places where 2.4 differs from 2.6. The attached patch fixes this for me." --- modutils/modprobe.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modutils/modprobe.c b/modutils/modprobe.c index e1e4519..fd984e4 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c @@ -361,21 +361,20 @@ static struct dep_t *build_dep ( void ) /* return 1 = found, 0 = not found */ static int mod_strcmp ( const char *mod_path, const char *mod_name ) { -#if defined(CONFIG_FEATURE_2_6_MODULES) -#define MODULE_EXTENSION ".ko" -#define MOD_EXTENSION_LEN 3 -#else -#define MODULE_EXTENSION ".o" -#define MOD_EXTENSION_LEN 2 -#endif /* last path component */ const char *last_comp = strrchr (mod_path, '/'); + const char *mod_ext = ".o"; + +#if defined(CONFIG_FEATURE_2_6_MODULES) + if ( k_version > 4 ) + mod_ext = ".ko"; +#endif return (strncmp(last_comp ? last_comp + 1 : mod_path, mod_name, strlen(mod_name)) == 0 ) && (strcmp(mod_path + strlen(mod_path) - - MOD_EXTENSION_LEN, MODULE_EXTENSION) == 0); + strlen(mod_ext), mod_ext) == 0); } /* return 1 = loaded, 0 = not loaded, -1 = can't tell */ -- cgit v1.1