Inside 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. This is needed, because there will be a third implementation of this function for dynamic stacks. Signed-off-by: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx> --- include/linux/sched/task_stack.h | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h index 4934bfd65ad1..396d5418ae32 100644 --- a/include/linux/sched/task_stack.h +++ b/include/linux/sched/task_stack.h @@ -135,25 +135,30 @@ static inline int object_is_on_stack(const void *obj) extern void thread_stack_cache_init(void); #ifdef CONFIG_DEBUG_STACK_USAGE +#ifdef CONFIG_STACK_GROWSUP static inline unsigned long stack_not_used(struct task_struct *p) { unsigned long *n = end_of_stack(p); - do { /* Skip over canary */ -# ifdef CONFIG_STACK_GROWSUP + do { /* Skip over canary */ n--; -# else - n++; -# endif } while (!*n); -# ifdef CONFIG_STACK_GROWSUP return (unsigned long)end_of_stack(p) - (unsigned long)n; -# else +} +#else /* !CONFIG_STACK_GROWSUP */ +static inline 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 } -#endif +#endif /* CONFIG_STACK_GROWSUP */ +#endif /* CONFIG_DEBUG_STACK_USAGE */ static inline int kstack_end(void *addr) { -- 2.44.0.278.ge034bb2e1d-goog