1ac74b6d66
Resolves: bz2060824 Upstream: git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git Conflicts: None commit d6516ba4c88f217fe14455db92c60cd0e9af18f8 Author: Sven Schnelle <svens@linux.ibm.com> Date: Thu Dec 16 12:43:55 2021 +0100 use slurp_proc_file() in get_command_line() This way the size of the command line that get_command_line() can handle is no longer fixed. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Philipp Rudo <prudo@redhat.com>
53 lines
1.4 KiB
Diff
53 lines
1.4 KiB
Diff
commit d6516ba4c88f217fe14455db92c60cd0e9af18f8
|
|
Author: Sven Schnelle <svens@linux.ibm.com>
|
|
Date: Thu Dec 16 12:43:55 2021 +0100
|
|
|
|
use slurp_proc_file() in get_command_line()
|
|
|
|
This way the size of the command line that get_command_line() can handle
|
|
is no longer fixed.
|
|
|
|
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
|
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
|
|
diff --git a/kexec/kexec.c b/kexec/kexec.c
|
|
index f3adac517161d448552a16fd79488c1df100d356..7e4787bc821107b7af66ebdbcfc31f4e7e1d48cd 100644
|
|
--- a/kexec/kexec.c
|
|
+++ b/kexec/kexec.c
|
|
@@ -1172,25 +1172,19 @@ static char *slurp_proc_file(const char *filename, size_t *len)
|
|
*/
|
|
char *get_command_line(void)
|
|
{
|
|
- FILE *fp;
|
|
- char *line;
|
|
- const int sizeof_line = 2048;
|
|
-
|
|
- line = malloc(sizeof_line);
|
|
- if (line == NULL)
|
|
- die("Could not allocate memory to read /proc/cmdline.");
|
|
-
|
|
- fp = fopen("/proc/cmdline", "r");
|
|
- if (!fp)
|
|
- die("Could not open /proc/cmdline.");
|
|
-
|
|
- if (fgets(line, sizeof_line, fp) == NULL)
|
|
- die("Can't read /proc/cmdline.");
|
|
+ char *p, *line;
|
|
+ size_t size;
|
|
|
|
- fclose(fp);
|
|
+ line = slurp_proc_file("/proc/cmdline", &size);
|
|
+ if (!line || !size)
|
|
+ die("Failed to read /proc/cmdline\n");
|
|
|
|
/* strip newline */
|
|
- line[strlen(line) - 1] = '\0';
|
|
+ line[size-1] = '\0';
|
|
+
|
|
+ p = strpbrk(line, "\r\n");
|
|
+ if (p)
|
|
+ *p = '\0';
|
|
|
|
remove_parameter(line, "BOOT_IMAGE");
|
|
if (kexec_flags & KEXEC_ON_CRASH)
|