]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fork: replace simple_strtoul with kstrtoul in coredump_filter_setup
authorThorsten Blum <thorsten.blum@linux.dev>
Mon, 15 Dec 2025 14:21:52 +0000 (15:21 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 28 Mar 2026 04:19:35 +0000 (21:19 -0700)
Replace simple_strtoul() with the recommended kstrtoul() for parsing the
'coredump_filter=' boot parameter.

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.  The current code silently
sets 'default_dump_filter = 0' if parsing fails, instead of leaving the
default value (MMF_DUMP_FILTER_DEFAULT) unchanged.

Rename the static variable 'default_dump_filter' to 'coredump_filter'
since it does not necessarily contain the default value and the current
name can be misleading.

Link: https://lkml.kernel.org/r/20251215142152.4082-2-thorsten.blum@linux.dev
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Ben Segall <bsegall@google.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Valentin Schneider <vschneid@redhat.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/fork.c

index 1ec0caea6a7e712d02ebbc9c56d8a91d7c63c3ad..db02a301d0c0af3d3aa3b0f5d50798e1e0cf45d7 100644 (file)
@@ -1014,13 +1014,14 @@ free_tsk:
 
 __cacheline_aligned_in_smp DEFINE_SPINLOCK(mmlist_lock);
 
-static unsigned long default_dump_filter = MMF_DUMP_FILTER_DEFAULT;
+static unsigned long coredump_filter = MMF_DUMP_FILTER_DEFAULT;
 
 static int __init coredump_filter_setup(char *s)
 {
-       default_dump_filter =
-               (simple_strtoul(s, NULL, 0) << MMF_DUMP_FILTER_SHIFT) &
-               MMF_DUMP_FILTER_MASK;
+       if (kstrtoul(s, 0, &coredump_filter))
+               return 0;
+       coredump_filter <<= MMF_DUMP_FILTER_SHIFT;
+       coredump_filter &= MMF_DUMP_FILTER_MASK;
        return 1;
 }
 
@@ -1106,7 +1107,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
                __mm_flags_overwrite_word(mm, mmf_init_legacy_flags(flags));
                mm->def_flags = current->mm->def_flags & VM_INIT_DEF_MASK;
        } else {
-               __mm_flags_overwrite_word(mm, default_dump_filter);
+               __mm_flags_overwrite_word(mm, coredump_filter);
                mm->def_flags = 0;
        }