aboutsummaryrefslogtreecommitdiff
path: root/modutils/rmmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'modutils/rmmod.c')
-rw-r--r--modutils/rmmod.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index f4e65d0ce..512221ba5 100644
--- a/modutils/rmmod.c
+++ b/modutils/rmmod.c
@@ -27,6 +27,7 @@
#include <getopt.h>
#include <fcntl.h>
#include <string.h>
+#include <sys/utsname.h>
#include <sys/syscall.h>
#include "busybox.h"
@@ -44,7 +45,16 @@ static inline void filename2modname(char *modname, const char *filename)
/* Convert to underscores, stop at first . */
for (i = 0; afterslash[i] && afterslash[i] != '.'; i++) {
- if (afterslash[i] == '-')
+ int kr_chk = 1;
+
+ if (ENABLE_FEATURE_2_4_MODULES) {
+ struct utsname uname_info;
+ if (uname(&uname_info) == -1)
+ bb_error_msg_and_die("cannot get uname data");
+ if (strcmp(uname_info.release, "2.6") < 0)
+ kr_chk = 0;
+ }
+ if (kr_chk && (afterslash[i] == '-'))
modname[i] = '_';
else
modname[i] = afterslash[i];