On Wed, Aug 30, 2023 at 08:47:12AM +0530, Anshuman Khandual wrote: > > > On 8/29/23 18:21, Matthew Wilcox wrote: > > On Mon, Aug 28, 2023 at 10:52:12AM +0530, Anshuman Khandual wrote: > >> -static int __init cmdline_parse_stack_guard_gap(char *p) > >> +static int __init cmdline_parse_stack_guard_gap(char *str) > >> { > >> unsigned long val; > >> - char *endptr; > >> > >> - val = simple_strtoul(p, &endptr, 10); > >> - if (!*endptr) > >> - stack_guard_gap = val << PAGE_SHIFT; > >> + if (!str) > >> + return 0; > > > > Please explain how this function can be called with a NULL pointer. > > This is an additional check just in case. We have similar constructs > in the following __setup() functions as well. In case of _what_? Somebody goes insane and decides to start calling __setup functions with NULL pointers? We don't test "Did the VFS call this filesystem with a NULL inode pointer" because that would make ZERO sense. Defensive programming doesn't need to defend against an insane kernel core. > __setup("hashdist=", set_hashdist) > __setup("numa_balancing=", setup_numabalancing) > __setup("transparent_hugepage=", setup_transparent_hugepage) Those should have this stupid NULL check removed. > > Now you've removed the abillity for someone to say stack_guard_gap=0, > > which seems potentially useful. > > In that case, should the following two scenarios be differentiated ? > > * stack_guard_gap= - Retains DEFAULT_STACK_GUARD_GAP > * stack_guard_gap=0 - Changes to 0 pages I don't know. You appear to have run into the scenario where 'stack_guard_gap=' was specified. What did you expect it to do?