[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[PATCH 3/5] Check blacklist= for the module name before loading it (#569883)
- From: "Brian C. Lane" <bcl redhat com>
- To: anaconda-devel-list redhat com
- Subject: [PATCH 3/5] Check blacklist= for the module name before loading it (#569883)
- Date: Mon, 7 Mar 2011 22:55:38 -0800
Prevent loader from loading blacklisted modules. Pass blacklist=modname
to the kernel, one module per blacklist= entry.
Related: rhbz#569883
---
loader2/modules.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/loader2/modules.c b/loader2/modules.c
index 4b59777..b79eb50 100644
--- a/loader2/modules.c
+++ b/loader2/modules.c
@@ -43,6 +43,10 @@
/* boot flags */
extern uint64_t flags;
+/* parsed /proc/cmdline */
+extern char **cmdline_argv;
+extern int cmdline_argc;
+
static int writeModulesConf(moduleList list, char *conf);
static struct extractedModule * extractModules (char * const * modNames,
struct extractedModule * oldPaths,
@@ -246,6 +250,18 @@ int mlModuleInList(const char * modName, moduleList list) {
return 0;
}
+int mlModuleInBlacklist(const char * modName) {
+ int i;
+
+ for (i=0; i < cmdline_argc; i++) {
+ if (!strncasecmp(cmdline_argv[i], "blacklist=", 10))
+ if (!strcmp(cmdline_argv[i] + 10, modName))
+ return 1;
+ }
+
+ return 0;
+}
+
static struct loadedModuleInfo * getLoadedModuleInfo(moduleList modLoaded,
const char * modName) {
int i = 0;
@@ -270,7 +286,7 @@ static int loadModule(const char * modName, struct extractedModule * path,
static int usbWasLoaded = 0;
/* don't need to load a module that's already loaded */
- if (mlModuleInList(modName, modLoaded))
+ if (mlModuleInList(modName, modLoaded) || mlModuleInBlacklist(modName))
return 0;
if (modInfo && (mi = findModuleInfo(modInfo, modName))) {
@@ -479,7 +495,7 @@ static int doLoadModules(const char * origModNames, moduleList modLoaded,
next++;
}
- if (mlModuleInList(start, modLoaded)) {
+ if (mlModuleInList(start, modLoaded) || mlModuleInBlacklist(start)) {
/* already loaded, we don't need to load it again */
start = next;
continue;
--
1.7.4
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]