summaryrefslogtreecommitdiff
path: root/testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch')
-rw-r--r--testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch b/testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch
new file mode 100644
index 000000000..b694413fb
--- /dev/null
+++ b/testing/kmod/0006-modprobe-remove-support-for-path-based-loading.patch
@@ -0,0 +1,79 @@
+From 658e2cafc2b88d1ab88f20b6183daabc113d3714 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sat, 4 Feb 2012 16:08:34 -0500
+Subject: [PATCH 6/8] modprobe: remove support for path based loading
+
+m-i-t doesn't support this, and it causes serious problems with local
+files clashing with alias names.
+---
+ tools/kmod-modprobe.c | 35 ++---------------------------------
+ 1 files changed, 2 insertions(+), 33 deletions(-)
+
+diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c
+index e70bf3d..b9943da 100644
+--- a/tools/kmod-modprobe.c
++++ b/tools/kmod-modprobe.c
+@@ -737,27 +737,6 @@ error:
+ return err;
+ }
+
+-static int insmod_path(struct kmod_ctx *ctx, const char *path,
+- const char *extra_options)
+-{
+- struct kmod_module *mod;
+- struct array recursion;
+- int err;
+-
+- err = kmod_module_new_from_path(ctx, path, &mod);
+- if (err < 0) {
+- LOG("Module %s not found.\n", path);
+- return err;
+- }
+-
+- array_init(&recursion, INSMOD_RECURSION_STEP);
+- err = insmod_do_module(mod, extra_options, true, &recursion);
+- kmod_module_unref(mod);
+- array_free_array(&recursion);
+-
+- return err;
+-}
+-
+ static int handle_failed_lookup(struct kmod_ctx *ctx, const char *alias)
+ {
+ struct kmod_module *mod;
+@@ -831,22 +810,12 @@ static int insmod_alias(struct kmod_ctx *ctx, const char *alias,
+ return err;
+ }
+
+-static int insmod(struct kmod_ctx *ctx, const char *name,
+- const char *extra_options)
+-{
+- struct stat st;
+- if (stat(name, &st) == 0)
+- return insmod_path(ctx, name, extra_options);
+- else
+- return insmod_alias(ctx, name, extra_options);
+-}
+-
+ static int insmod_all(struct kmod_ctx *ctx, char **args, int nargs)
+ {
+ int i, err = 0;
+
+ for (i = 0; i < nargs; i++) {
+- int r = insmod(ctx, args[i], NULL);
++ int r = insmod_alias(ctx, args[i], NULL);
+ if (r < 0)
+ err = r;
+ }
+@@ -1232,7 +1201,7 @@ static int do_modprobe(int argc, char **orig_argv)
+ char *opts;
+ err = options_from_array(args, nargs, &opts);
+ if (err == 0) {
+- err = insmod(ctx, args[0], opts);
++ err = insmod_alias(ctx, args[0], opts);
+ free(opts);
+ }
+ }
+--
+1.7.9
+