From: Borislav Petkov (AMD) Date: Mon, 4 May 2026 12:26:13 +0000 (+0200) Subject: x86/boot: Get rid of kstrtoull() X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=0c37d7aca413619b213d4d998f03379e6cf1ef54;p=thirdparty%2Fkernel%2Flinux.git x86/boot: Get rid of kstrtoull() Fold the '+' check in the single-underscore-prefixed version _kstrtoull() and remove the function. The arch/x86/boot/ namespace prefixes everything copied from kernel proper with "boot_" so that namespace clashes can be avoided. No functional changes. Signed-off-by: Borislav Petkov (AMD) --- diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c index b25c6a9303b73..ac0f900ebc47e 100644 --- a/arch/x86/boot/string.c +++ b/arch/x86/boot/string.c @@ -289,6 +289,9 @@ static int _kstrtoull(const char *s, unsigned int base, unsigned long long *res) unsigned long long _res; unsigned int rv; + if (s[0] == '+') + s++; + s = _parse_integer_fixup_radix(s, &base); rv = _parse_integer(s, base, &_res); if (rv & KSTRTOX_OVERFLOW) @@ -304,35 +307,12 @@ static int _kstrtoull(const char *s, unsigned int base, unsigned long long *res) return 0; } -/** - * kstrtoull - convert a string to an unsigned long long - * @s: The start of the string. The string must be null-terminated, and may also - * include a single newline before its terminating null. The first character - * may also be a plus sign, but not a minus sign. - * @base: The number base to use. The maximum supported base is 16. If base is - * given as 0, then the base of the string is automatically detected with the - * conventional semantics - If it begins with 0x the number will be parsed as a - * hexadecimal (case insensitive), if it otherwise begins with 0, it will be - * parsed as an octal number. Otherwise it will be parsed as a decimal. - * @res: Where to write the result of the conversion on success. - * - * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. - * Used as a replacement for the obsolete simple_strtoull. Return code must - * be checked. - */ -int kstrtoull(const char *s, unsigned int base, unsigned long long *res) -{ - if (s[0] == '+') - s++; - return _kstrtoull(s, base, res); -} - static int _kstrtoul(const char *s, unsigned int base, unsigned long *res) { unsigned long long tmp; int rv; - rv = kstrtoull(s, base, &tmp); + rv = _kstrtoull(s, base, &tmp); if (rv < 0) return rv; if (tmp != (unsigned long)tmp) @@ -364,7 +344,7 @@ int boot_kstrtoul(const char *s, unsigned int base, unsigned long *res) */ if (sizeof(unsigned long) == sizeof(unsigned long long) && __alignof__(unsigned long) == __alignof__(unsigned long long)) - return kstrtoull(s, base, (unsigned long long *)res); + return _kstrtoull(s, base, (unsigned long long *)res); else return _kstrtoul(s, base, res); } diff --git a/arch/x86/boot/string.h b/arch/x86/boot/string.h index a5b05ebc037de..4092bf2ed1eec 100644 --- a/arch/x86/boot/string.h +++ b/arch/x86/boot/string.h @@ -28,6 +28,5 @@ extern unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base); long simple_strtol(const char *cp, char **endp, unsigned int base); -int kstrtoull(const char *s, unsigned int base, unsigned long long *res); int boot_kstrtoul(const char *s, unsigned int base, unsigned long *res); #endif /* BOOT_STRING_H */