mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
powerpc/kexec_file: use snprintf to simplify setup_kdump_cmdline
Replace the manual string length accounting, memcpy(), and NUL termination with a single snprintf() call to prepend the elfcorehdr= address and to detect string truncation at the same time. Use kmalloc() to avoid unnecessarily zeroing the memory. While at it, also use "prepending" instead of "appending" in the error message. Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260527000105.1081651-3-thorsten.blum@linux.dev
This commit is contained in:
parent
c2c8844316
commit
dd6c80abf4
|
|
@ -36,25 +36,19 @@
|
|||
char *setup_kdump_cmdline(struct kimage *image, char *cmdline,
|
||||
unsigned long cmdline_len)
|
||||
{
|
||||
int elfcorehdr_strlen;
|
||||
char *cmdline_ptr;
|
||||
|
||||
cmdline_ptr = kzalloc(COMMAND_LINE_SIZE, GFP_KERNEL);
|
||||
cmdline_ptr = kmalloc(COMMAND_LINE_SIZE, GFP_KERNEL);
|
||||
if (!cmdline_ptr)
|
||||
return NULL;
|
||||
|
||||
elfcorehdr_strlen = sprintf(cmdline_ptr, "elfcorehdr=0x%lx ",
|
||||
image->elf_load_addr);
|
||||
|
||||
if (elfcorehdr_strlen + cmdline_len > COMMAND_LINE_SIZE) {
|
||||
pr_err("Appending elfcorehdr=<addr> exceeds cmdline size\n");
|
||||
if (snprintf(cmdline_ptr, COMMAND_LINE_SIZE, "elfcorehdr=0x%lx %s",
|
||||
image->elf_load_addr, cmdline_len ? cmdline : "") >= COMMAND_LINE_SIZE) {
|
||||
pr_err("Prepending elfcorehdr=<addr> exceeds cmdline size\n");
|
||||
kfree(cmdline_ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(cmdline_ptr + elfcorehdr_strlen, cmdline, cmdline_len);
|
||||
// Ensure it's nul terminated
|
||||
cmdline_ptr[COMMAND_LINE_SIZE - 1] = '\0';
|
||||
return cmdline_ptr;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user