summaryrefslogtreecommitdiff
path: root/modutils/modprobe.c
diff options
context:
space:
mode:
authorGlenn L McGrath2004-08-11 02:30:30 +0000
committerGlenn L McGrath2004-08-11 02:30:30 +0000
commit65c8c7ba2775007fbd4f02272180900f665024f3 (patch)
treeed5e9b604b09f7046c19f55686cd80f5a695b1a2 /modutils/modprobe.c
parent2f325a030b9ebc34627f8d780c73bb17e7c0f5bd (diff)
downloadbusybox-65c8c7ba2775007fbd4f02272180900f665024f3.zip
busybox-65c8c7ba2775007fbd4f02272180900f665024f3.tar.gz
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."
Diffstat (limited to 'modutils/modprobe.c')
-rw-r--r--modutils/modprobe.c15
1 files 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 */