fs/namespace.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
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
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
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
© 2016 - 2025 Red Hat, Inc.