[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