[PATCH v2 01/10] kexec: Handle removal of multiple 'crashkernel' parameters
Youling Tang
youling.tang at linux.dev
Mon Sep 15 18:46:46 PDT 2025
From: Youling Tang <tangyouling at kylinos.cn>
When the kernel command line contains multiple 'crashkernel' parameters
(e.g., `crashkernel=1G,high crashkernel=256M,low`), the original
`remove_parameter()` function only removed the first instance. This
left residual parameters that caused conflicts during kexec operations.
Signed-off-by: Youling Tang <tangyouling at kylinos.cn>
---
kexec/kexec.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 6bf12d7..c9e4bcb 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -1153,6 +1153,7 @@ void remove_parameter(char *line, const char *param_name)
if (!start)
return;
+again:
/*
* check if that's really the start of a parameter and not in
* the middle of the word
@@ -1167,6 +1168,11 @@ void remove_parameter(char *line, const char *param_name)
memmove(start, end+1, strlen(end));
*(end + strlen(end)) = 0;
}
+
+ /* There may be multiple 'crashkernel' parameters, such as low and high */
+ start = strstr(line, param_name);
+ if (start)
+ goto again;
}
static ssize_t _read(int fd, void *buf, size_t count)
--
2.34.1
More information about the kexec
mailing list