summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorThorsten Blum <thorsten.blum@linux.dev>2025-12-15 15:21:52 +0100
committerAndrew Morton <akpm@linux-foundation.org>2026-03-27 21:19:35 -0700
commit380369ea2e9d3c41855b0d8c41898dcd564209fd (patch)
tree2a9093189bde2272e9d9765265d6bfa7aeee4759 /kernel
parent162e4fd97dc6c4f56c7e94b82651e95a57674091 (diff)
downloadlwn-380369ea2e9d3c41855b0d8c41898dcd564209fd.tar.gz
lwn-380369ea2e9d3c41855b0d8c41898dcd564209fd.zip
fork: replace simple_strtoul with kstrtoul in coredump_filter_setup
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>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/fork.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 1ec0caea6a7e..db02a301d0c0 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -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;
}