Don't re-parse /proc/cmdline
Related: rhbz#569883
---
loader2/hardware.c | 35 ++++++++++++-----------------------
1 files changed, 12 insertions(+), 23 deletions(-)
diff --git a/loader2/hardware.c b/loader2/hardware.c
index 348ceb7..393bfc8 100644
--- a/loader2/hardware.c
+++ b/loader2/hardware.c
@@ -39,6 +39,10 @@
/* boot flags */
extern uint64_t flags;
+/* parsed /proc/cmdline */
+extern char **cmdline_argv;
+extern int cmdline_argc;
+
/* returns whether or not we can probe devices automatically or have to
* ask for them manually. */
int canProbeDevices(void) {
@@ -216,30 +220,15 @@ int probeiSeries(moduleInfoSet modInfo, moduleList modLoaded,
*/
int earlyModuleLoad(moduleInfoSet modInfo, moduleList modLoaded,
moduleDeps modDeps, int justProbe) {
- int fd, len, i;
- char buf[1024], *cmdLine;
- int argc;
- char ** argv;
-
- /* FIXME: reparsing /proc/cmdline to avoid major loader changes.
- * should probably be done in loader.c

arseCmdline() like everything
- * else
- */
- if ((fd = open("/proc/cmdline", O_RDONLY)) < 0) return 1;
- len = read(fd, buf, sizeof(buf) - 1);
- close(fd);
- if (len <= 0) return 1;
-
- buf[len] = ' ';
- cmdLine = buf;
-
- if (poptParseArgvString(cmdLine, &argc, (const char ***) &argv))
+ int i;
+
+ if (cmdline_argc < 1)
return 1;
-
- for (i=0; i < argc; i++) {
- if (!strncasecmp(argv[i], "driverload=", 11)) {
- logMessage(INFO, "loading %s early", argv[i] + 11);
- mlLoadModuleSet(argv[i] + 11, modLoaded, modDeps, modInfo);
+
+ for (i=0; i < cmdline_argc; i++) {
+ if (!strncasecmp(cmdline_argv[i], "driverload=", 11)) {
+ logMessage(INFO, "loading %s early", cmdline_argv[i] + 11);
+ mlLoadModuleSet(cmdline_argv[i] + 11, modLoaded, modDeps, modInfo);
}
}
return 0;
--
1.7.4
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list