mirror of
https://github.com/torvalds/linux.git
synced 2025-11-30 23:16:01 +07:00
task_stack.h: clean-up stack_not_used() implementation
Inside the small stack_not_used() function there are several ifdefs for stack growing-up vs. regular versions. Instead just implement this function two times, one for growing-up and another regular. Add comments like /* !CONFIG_DEBUG_STACK_USAGE */ to clarify what the ifdefs are doing. [linus.walleij@linaro.org: rebased, function moved elsewhere in the kernel] Link: https://lkml.kernel.org/r/20250829-fork-cleanups-for-dynstack-v1-2-3bbaadce1f00@linaro.org Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Link: https://lore.kernel.org/20240311164638.2015063-13-pasha.tatashin@soleen.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Ben Segall <bsegall@google.com> Cc: David Hildenbrand <david@redhat.com> 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: Mel Gorman <mgorman <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>
This commit is contained in:
committed by
Andrew Morton
parent
1bca7359d7
commit
783dbe472d
@@ -780,24 +780,29 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_STACK_USAGE
|
||||
#ifdef CONFIG_STACK_GROWSUP
|
||||
unsigned long stack_not_used(struct task_struct *p)
|
||||
{
|
||||
unsigned long *n = end_of_stack(p);
|
||||
|
||||
do { /* Skip over canary */
|
||||
# ifdef CONFIG_STACK_GROWSUP
|
||||
n--;
|
||||
# else
|
||||
n++;
|
||||
# endif
|
||||
} while (!*n);
|
||||
|
||||
# ifdef CONFIG_STACK_GROWSUP
|
||||
return (unsigned long)end_of_stack(p) - (unsigned long)n;
|
||||
# else
|
||||
return (unsigned long)n - (unsigned long)end_of_stack(p);
|
||||
# endif
|
||||
}
|
||||
#else /* !CONFIG_STACK_GROWSUP */
|
||||
unsigned long stack_not_used(struct task_struct *p)
|
||||
{
|
||||
unsigned long *n = end_of_stack(p);
|
||||
|
||||
do { /* Skip over canary */
|
||||
n++;
|
||||
} while (!*n);
|
||||
|
||||
return (unsigned long)n - (unsigned long)end_of_stack(p);
|
||||
}
|
||||
#endif /* CONFIG_STACK_GROWSUP */
|
||||
|
||||
/* Count the maximum pages reached in kernel stacks */
|
||||
static inline void kstack_histogram(unsigned long used_stack)
|
||||
@@ -856,9 +861,9 @@ static void check_stack_usage(void)
|
||||
}
|
||||
spin_unlock(&low_water_lock);
|
||||
}
|
||||
#else
|
||||
#else /* !CONFIG_DEBUG_STACK_USAGE */
|
||||
static inline void check_stack_usage(void) {}
|
||||
#endif
|
||||
#endif /* CONFIG_DEBUG_STACK_USAGE */
|
||||
|
||||
static void synchronize_group_exit(struct task_struct *tsk, long code)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user