[PATCH 2/3] arm64: stacktrace: move dump functions to end of file

Kalesh Singh kaleshsingh at google.com
Wed Mar 29 01:58:40 PDT 2023


On Fri, Mar 24, 2023 at 6:50 AM Mark Rutland <mark.rutland at arm.com> wrote:
>
> For historical reasons, the backtrace dumping functions are placed in
> the middle of stacktrace.c, despite using functions defined later. For
> clarity, and to make subsequent refactoring easier, move the dumping
> functions to the end of stacktrace.c
>
> There should be no functional change as a result of this patch.
>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Kalesh Singh <kaleshsingh at google.com>
> Cc: Madhavan T. Venkataraman <madvenka at linux.microsoft.com>
> Cc: Mark Brown <broonie at kernel.org>
> Cc: Will Deacon <will at kernel.org>

Reviewed-by: Kalesh Singh <kaleshsingh at google.com>

Thanks,
Kalesh

> ---
>  arch/arm64/kernel/stacktrace.c | 66 +++++++++++++++++-----------------
>  1 file changed, 33 insertions(+), 33 deletions(-)
>
> diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
> index 219ce0668a3dd..5857e2de147a7 100644
> --- a/arch/arm64/kernel/stacktrace.c
> +++ b/arch/arm64/kernel/stacktrace.c
> @@ -139,39 +139,6 @@ static void notrace unwind(struct unwind_state *state,
>  }
>  NOKPROBE_SYMBOL(unwind);
>
> -static bool dump_backtrace_entry(void *arg, unsigned long where)
> -{
> -       char *loglvl = arg;
> -       printk("%s %pSb\n", loglvl, (void *)where);
> -       return true;
> -}
> -
> -void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk,
> -                   const char *loglvl)
> -{
> -       pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk);
> -
> -       if (regs && user_mode(regs))
> -               return;
> -
> -       if (!tsk)
> -               tsk = current;
> -
> -       if (!try_get_task_stack(tsk))
> -               return;
> -
> -       printk("%sCall trace:\n", loglvl);
> -       arch_stack_walk(dump_backtrace_entry, (void *)loglvl, tsk, regs);
> -
> -       put_task_stack(tsk);
> -}
> -
> -void show_stack(struct task_struct *tsk, unsigned long *sp, const char *loglvl)
> -{
> -       dump_backtrace(NULL, tsk, loglvl);
> -       barrier();
> -}
> -
>  /*
>   * Per-cpu stacks are only accessible when unwinding the current task in a
>   * non-preemptible context.
> @@ -236,3 +203,36 @@ noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry,
>
>         unwind(&state, consume_entry, cookie);
>  }
> +
> +static bool dump_backtrace_entry(void *arg, unsigned long where)
> +{
> +       char *loglvl = arg;
> +       printk("%s %pSb\n", loglvl, (void *)where);
> +       return true;
> +}
> +
> +void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk,
> +                   const char *loglvl)
> +{
> +       pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk);
> +
> +       if (regs && user_mode(regs))
> +               return;
> +
> +       if (!tsk)
> +               tsk = current;
> +
> +       if (!try_get_task_stack(tsk))
> +               return;
> +
> +       printk("%sCall trace:\n", loglvl);
> +       arch_stack_walk(dump_backtrace_entry, (void *)loglvl, tsk, regs);
> +
> +       put_task_stack(tsk);
> +}
> +
> +void show_stack(struct task_struct *tsk, unsigned long *sp, const char *loglvl)
> +{
> +       dump_backtrace(NULL, tsk, loglvl);
> +       barrier();
> +}
> --
> 2.30.2
>



More information about the linux-arm-kernel mailing list