diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2020-11-03 17:32:12 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-21 21:15:35 +0100 |
commit | e4202df0918e13130bb511a4ce372cbbe089068d (patch) | |
tree | fc0c5560305747f07c8c8afd47efd30392c4ce2d | |
parent | 07abc7c6f7dd0875e0aa548bba952174a54c8797 (diff) | |
download | busybox-e4202df0918e13130bb511a4ce372cbbe089068d.tar.gz |
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>
-rw-r--r-- | modutils/modprobe.c | 19 |
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) { |