ath9k: add some fixes for radio reinit and frame flush
[openwrt.git] / package / busybox / patches / 470-insmod_search.patch
index 8d4b019..7f0188f 100644 (file)
@@ -1,14 +1,25 @@
+--- a/modutils/Config.src
++++ b/modutils/Config.src
+@@ -247,7 +247,7 @@ config FEATURE_MODUTILS_SYMBOLS
+ config DEFAULT_MODULES_DIR
+       string "Default directory containing modules"
+       default "/lib/modules"
+-      depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO
++      depends on DEPMOD || INSMOD || MODPROBE || MODPROBE_SMALL || MODINFO
+       help
+         Directory that contains kernel modules.
+         Defaults to "/lib/modules"
 --- a/modutils/insmod.c
 +++ b/modutils/insmod.c
-@@ -9,6 +9,99 @@
+@@ -11,6 +11,106 @@
  
  #include "libbb.h"
  #include "modutils.h"
++#include <sys/utsname.h>
 +#ifndef CONFIG_FEATURE_2_4_MODULES
 +#include <sys/mman.h>
 +#include <asm/unistd.h>
 +#include <sys/syscall.h>
-+#include <sys/utsname.h>
 +#endif
 +
 +static char *g_filename = NULL;
 +      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[0] - '0';
++
++      if (k_version < 2 || k_version > 9)
 +              return EINVAL;
 +
-+      k_version = myuname.release[2] - '0';
++      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);
 +      return ret;
 +}
  
- int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int insmod_main(int argc UNUSED_PARAM, char **argv)
-@@ -25,9 +118,14 @@ int insmod_main(int argc UNUSED_PARAM, c
+ /* 2.6 style insmod has no options and required filename
+  * (not module name - .ko can't be omitted) */
+@@ -58,9 +158,15 @@ int insmod_main(int argc UNUSED_PARAM, c
        if (!filename)
                bb_show_usage();
  
--      rc = bb_init_module(filename, parse_cmdline_module_options(argv));
+-      rc = bb_init_module(filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
 +      rc = find_module(filename);
 +      if (rc || (g_filename == NULL))
-+                      goto done;
++              goto done;
 +
-+      rc = bb_init_module(g_filename, parse_cmdline_module_options(argv));
++      rc = bb_init_module(g_filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
        if (rc)
-               bb_error_msg("cannot insert '%s': %s", filename, moderror(rc));
--
+               bb_error_msg("can't insert '%s': %s", filename, moderror(rc));
 +      free (g_filename);
 +done:
        return rc;
  }
This page took 0.03441 seconds and 4 git commands to generate.