Re: [PATCH v2] x86/boot/compressed: use boot_kstrtoul() for hugepages= parsing

From: Thorsten Blum

Date: Mon Apr 27 2026 - 04:19:05 EST


On Thu, Apr 09, 2026 at 06:15:59PM +0200, Thorsten Blum wrote:
> Replace simple_strtoull() with boot_kstrtoul() for parsing the
> hugepages= boot parameter.
>
> Unlike simple_strtoull(), boot_kstrtoul() performs strict validation and
> returns an error on invalid inputs instead of silently accepting partial
> input. Use boot_kstrtoul() to reject and warn about invalid hugepages=
> values.
>
> boot_kstrtoul() also converts the input directly to an unsigned long and
> avoids implicit casting.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
> ---
> Changes in v2:
> - Adjust warning message (Boris)
> - The value pointer cannot be NULL after [1] has been applied (Boris)
> - Update patch subject and description
> - Link to v1: https://lore.kernel.org/lkml/20260202173223.865709-1-thorsten.blum@xxxxxxxxx/
>
> [1] https://lore.kernel.org/lkml/20260409105437.108686-4-thorsten.blum@xxxxxxxxx/
> ---
> arch/x86/boot/compressed/kaslr.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
> index 3b0948ad449f..8e4bf5365ac6 100644
> --- a/arch/x86/boot/compressed/kaslr.c
> +++ b/arch/x86/boot/compressed/kaslr.c
> @@ -219,7 +219,8 @@ static void parse_gb_huge_pages(char *param, char *val)
>
> if (!strcmp(param, "hugepages") && gbpage_sz) {
> p = val;
> - max_gb_huge_pages = simple_strtoull(p, &p, 0);
> + if (boot_kstrtoul(p, 0, &max_gb_huge_pages))
> + warn("Failed to parse hugepages= boot parameter\n");
> return;
> }
> }

Hi Boris,

Could you give this another look now that [1] is in mainline and 'val'
can no longer be NULL?

Thanks,
Thorsten