summaryrefslogtreecommitdiffhomepage
path: root/modutils
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2020-11-03 17:32:12 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-21 21:15:35 +0100
commite4202df0918e13130bb511a4ce372cbbe089068d (patch)
treefc0c5560305747f07c8c8afd47efd30392c4ce2d /modutils
parent07abc7c6f7dd0875e0aa548bba952174a54c8797 (diff)
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>
Diffstat (limited to 'modutils')
-rw-r--r--modutils/modprobe.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index eeeff7609..c334186b8 100644
--- a/modutils/modprobe.c
+++ b/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) {