aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox/0001-modprobe-allow-slashes-in-modaliases-with-modprobe-a.patch
blob: 5d76f473254991c66bd182e5154734cf5ff7af31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From a1aa214134b2843ab30f5fbe9a71321984bd3120 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Fri, 26 Dec 2014 09:32:59 +0100
Subject: [PATCH] modprobe: allow slashes in modaliases with 'modprobe -a'

---
 modutils/modprobe.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index f090428..6ccc18e 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -238,17 +238,6 @@ static void add_probe(const char *name)
 {
 	struct module_entry *m;
 
-	/*
-	 * get_or_add_modentry() strips path from name and works
-	 * on remaining basename.
-	 * This would make "rmmod dir/name" and "modprobe dir/name"
-	 * to work like "rmmod name" and "modprobe name",
-	 * which is wrong, and can be abused via implicit modprobing:
-	 * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial.
-	 */
-	if (strchr(name, '/'))
-		bb_error_msg_and_die("malformed module name '%s'", name);
-
 	m = get_or_add_modentry(name);
 	if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS))
 	 && (m->flags & MODULE_FLAG_LOADED)
@@ -617,6 +606,17 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv)
 	} else {
 		/* First argument is module name, rest are parameters */
 		DBG("probing just module %s", *argv);
+		/*
+		 * get_or_add_modentry() strips path from name and works
+		 * on remaining basename.
+		 * This would make "rmmod dir/name" and "modprobe dir/name"
+		 * to work like "rmmod name" and "modprobe name",
+		 * which is wrong, and can be abused via implicit modprobing:
+		 * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial.
+		 */
+		if (strchr(argv[0], '/'))
+			bb_error_msg_and_die("malformed module name '%s'", argv[0]);
+
 		add_probe(argv[0]);
 		G.cmdline_mopts = parse_cmdline_module_options(argv, /*quote_spaces:*/ 1);
 	}
-- 
2.2.1