diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2011-06-15 21:17:52 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2011-06-15 21:17:52 +0000 |
commit | b213493bda02f29c59c04b611a4ba729ce01b08d (patch) | |
tree | 39004aef4bd489549491725520de5858600c056e /package/busybox | |
parent | e8974127fbda8f099cfb4e870965dac64693408a (diff) | |
download | upstream-b213493bda02f29c59c04b611a4ba729ce01b08d.tar.gz upstream-b213493bda02f29c59c04b611a4ba729ce01b08d.tar.bz2 upstream-b213493bda02f29c59c04b611a4ba729ce01b08d.zip |
busybox: Fix insmod for linux 3.0
Insmod silently rejected being run on any non 2.x kernel. Make its version
check allow newer kernels (and reject 2.4- when not enabling the 2.4
feature).
Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
SVN-Revision: 27189
Diffstat (limited to 'package/busybox')
-rw-r--r-- | package/busybox/patches/470-insmod_search.patch | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch index 8c5741d17f..b5314e3f0d 100644 --- a/package/busybox/patches/470-insmod_search.patch +++ b/package/busybox/patches/470-insmod_search.patch @@ -1,6 +1,6 @@ --- a/modutils/insmod.c +++ b/modutils/insmod.c -@@ -11,6 +11,99 @@ +@@ -11,6 +11,106 @@ #include "libbb.h" #include "modutils.h" @@ -37,20 +37,27 @@ + char *module_dir, real_module_dir[FILENAME_MAX]; + int len, slen, ret = ENOENT, k_version; + struct utsname myuname; -+ const char *suffix; ++ const char *suffix = ".ko"; + struct stat st; + + /* check the kernel version */ -+ if ((uname(&myuname) != 0) || (myuname.release[0] != '2')) ++ if (uname(&myuname) != 0) + return EINVAL; + -+ k_version = myuname.release[2] - '0'; ++ k_version = myuname.release[0] - '0'; ++ ++ if (k_version < 2 || k_version > 9) ++ return EINVAL; ++ ++ if (k_version == 2) { ++ int k_patchlevel = myuname.release[2] - '0'; ++ if (k_patchlevel <= 4) +#if ENABLE_FEATURE_2_4_MODULES -+ if (k_version <= 4) -+ suffix = ".o"; -+ else ++ suffix = ".o"; ++#else ++ return EINVAL; +#endif -+ suffix = ".ko"; ++ } + + len = strlen(filename); + slen = strlen(suffix); @@ -100,7 +107,7 @@ /* 2.6 style insmod has no options and required filename * (not module name - .ko can't be omitted) */ -@@ -59,9 +152,15 @@ int insmod_main(int argc UNUSED_PARAM, c +@@ -59,9 +159,15 @@ int insmod_main(int argc UNUSED_PARAM, c if (!filename) bb_show_usage(); |