diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2004-08-11 02:30:30 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2004-08-11 02:30:30 +0000 |
commit | 65c8c7ba2775007fbd4f02272180900f665024f3 (patch) | |
tree | ed5e9b604b09f7046c19f55686cd80f5a695b1a2 | |
parent | 2f325a030b9ebc34627f8d780c73bb17e7c0f5bd (diff) |
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."
-rw-r--r-- | modutils/modprobe.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c index e1e451943..fd984e446 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 */ |