[PATCH] x86/boot: Reject truncated acpi_rsdp= values
From: Thorsten Blum
Date: Wed Jun 17 2026 - 09:05:28 EST
cmdline_find_option() returns the full length of the argument value even
if it is truncated. However, get_cmdline_acpi_rsdp() only checks whether
acpi_rsdp= is present and does not reject truncated values that do not
fit in the buffer.
Reject truncated values early to prevent boot_kstrtoul() from parsing a
partial value and thus from silently using the wrong RSDP address.
Fixes: 3c98e71b42a7 ("x86/boot: Add "acpi_rsdp=" early parsing")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
---
arch/x86/boot/compressed/acpi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c
index f196b1d1ddf8..1b5638a8e180 100644
--- a/arch/x86/boot/compressed/acpi.c
+++ b/arch/x86/boot/compressed/acpi.c
@@ -184,8 +184,8 @@ static unsigned long get_cmdline_acpi_rsdp(void)
char val[MAX_ADDR_LEN] = { };
int ret;
- ret = cmdline_find_option("acpi_rsdp", val, MAX_ADDR_LEN);
- if (ret < 0)
+ ret = cmdline_find_option("acpi_rsdp", val, sizeof(val));
+ if (ret < 0 || ret >= sizeof(val))
return 0;
if (boot_kstrtoul(val, 16, &addr))