[PATCH] namespace: Replace simple_strtoul with kstrtoul to parse boot params

Thorsten Blum posted 1 patch 1 day, 6 hours ago
fs/namespace.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
[PATCH] namespace: Replace simple_strtoul with kstrtoul to parse boot params
Posted by Thorsten Blum 1 day, 6 hours ago
Replace simple_strtoul() with the recommended kstrtoul() for parsing the
'mhash_entries=' and 'mphash_entries=' boot parameters.

Check the return value of kstrtoul() and reject invalid values. This
adds error handling while preserving behavior for existing values, and
removes use of the deprecated simple_strtoul() helper.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
 fs/namespace.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/fs/namespace.c b/fs/namespace.c
index c58674a20cad..a548369ddb9c 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -49,20 +49,14 @@ static unsigned int mp_hash_shift __ro_after_init;
 static __initdata unsigned long mhash_entries;
 static int __init set_mhash_entries(char *str)
 {
-	if (!str)
-		return 0;
-	mhash_entries = simple_strtoul(str, &str, 0);
-	return 1;
+	return kstrtoul(str, 0, &mhash_entries) == 0;
 }
 __setup("mhash_entries=", set_mhash_entries);
 
 static __initdata unsigned long mphash_entries;
 static int __init set_mphash_entries(char *str)
 {
-	if (!str)
-		return 0;
-	mphash_entries = simple_strtoul(str, &str, 0);
-	return 1;
+	return kstrtoul(str, 0, &mphash_entries) == 0;
 }
 __setup("mphash_entries=", set_mphash_entries);
 
-- 
Thorsten Blum <thorsten.blum@linux.dev>
GPG: 1D60 735E 8AEF 3BE4 73B6  9D84 7336 78FD 8DFE EAD4
Re: [PATCH] namespace: Replace simple_strtoul with kstrtoul to parse boot params
Posted by Jan Kara 13 hours ago
On Sun 14-12-25 16:31:42, Thorsten Blum wrote:
> Replace simple_strtoul() with the recommended kstrtoul() for parsing the
> 'mhash_entries=' and 'mphash_entries=' boot parameters.
> 
> Check the return value of kstrtoul() and reject invalid values. This
> adds error handling while preserving behavior for existing values, and
> removes use of the deprecated simple_strtoul() helper.
> 
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>

...

> @@ -49,20 +49,14 @@ static unsigned int mp_hash_shift __ro_after_init;
>  static __initdata unsigned long mhash_entries;
>  static int __init set_mhash_entries(char *str)
>  {
> -	if (!str)
> -		return 0;
> -	mhash_entries = simple_strtoul(str, &str, 0);
> -	return 1;
> +	return kstrtoul(str, 0, &mhash_entries) == 0;
>  }
>  __setup("mhash_entries=", set_mhash_entries);

I'm not very experienced with the cmdline option parsing but AFAICT the
'str' argument can be indeed NULL and kstrtoul() will not be happy with
that?

>  static __initdata unsigned long mphash_entries;
>  static int __init set_mphash_entries(char *str)
>  {
> -	if (!str)
> -		return 0;
> -	mphash_entries = simple_strtoul(str, &str, 0);
> -	return 1;
> +	return kstrtoul(str, 0, &mphash_entries) == 0;
>  }
>  __setup("mphash_entries=", set_mphash_entries);

Similar here.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR
Re: [PATCH] namespace: Replace simple_strtoul with kstrtoul to parse boot params
Posted by Thorsten Blum 8 hours ago
On 15. Dec 2025, at 10:15, Jan Kara wrote:
> On Sun 14-12-25 16:31:42, Thorsten Blum wrote:
>> Replace simple_strtoul() with the recommended kstrtoul() for parsing the
>> 'mhash_entries=' and 'mphash_entries=' boot parameters.
>> 
>> Check the return value of kstrtoul() and reject invalid values. This
>> adds error handling while preserving behavior for existing values, and
>> removes use of the deprecated simple_strtoul() helper.
>> 
>> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> 
> ...
> 
>> @@ -49,20 +49,14 @@ static unsigned int mp_hash_shift __ro_after_init;
>> static __initdata unsigned long mhash_entries;
>> static int __init set_mhash_entries(char *str)
>> {
>> -	if (!str)
>> -		return 0;
>> -	mhash_entries = simple_strtoul(str, &str, 0);
>> -	return 1;
>> +	return kstrtoul(str, 0, &mhash_entries) == 0;
>> }
>> __setup("mhash_entries=", set_mhash_entries);
> 
> I'm not very experienced with the cmdline option parsing but AFAICT the
> 'str' argument can be indeed NULL and kstrtoul() will not be happy with
> that?

I don't think 'str' can be NULL. If you don't pass a value, 'str' will
be the empty string (just tested this).

Thanks,
Thorsten