Переглянути джерело

modprobe: Add support for modprobe.blacklist=module1,module2,...

function                                             old     new   delta
parse_and_add_kcmdline_module_options                  -     186    +186
modprobe_main                                        713     798     +85
do_modprobe                                          648     451    -197
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 271/-197)           Total: 74 bytes

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Andy Shevchenko 3 роки тому
батько
коміт
e4202df091
1 змінених файлів з 19 додано та 0 видалено
  1. 19 0
      modutils/modprobe.c

+ 19 - 0
modutils/modprobe.c

@@ -663,6 +663,25 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv)
 		load_modules_dep();
 	}
 
+	/* Handle modprobe.blacklist=module1,module2,... */
+	if (ENABLE_FEATURE_MODPROBE_BLACKLIST) {
+		char *options;
+		char *substr;
+
+		options = parse_and_add_kcmdline_module_options(NULL, "modprobe");
+		while ((substr = strsep(&options, " ")) != NULL) {
+			char *fn = is_prefixed_with(substr, "blacklist=");
+			if (!fn)
+				continue;
+			while ((substr = strsep(&fn, ",")) != NULL) {
+				/* blacklist <modulename> */
+				get_or_add_modentry(substr)->flags |= MODULE_FLAG_BLACKLISTED;
+				DBG("blacklist: %s", substr);
+			}
+		}
+		/*free(options); - WRONG, strsep may have advanced it */
+	}
+
 	rc = 0;
 	while ((me = llist_pop(&G.probes)) != NULL) {
 		if (me->realnames == NULL) {