Patch from Cristian Ionescu-Idbohrn to deal with _ vs - better.
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index f4e65d0..512221b 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 @@
 
 	/* 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];