All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guo Ren <guoren@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Kees Cook <keescook@chromium.org>, Jann Horn <jannh@google.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	vcaputo@pengaru.com, Ingo Molnar <mingo@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
	Daniel Bristot de Oliveira <bristot@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	christian.brauner@ubuntu.com, amistry@google.com,
	Kenta.Tada@sony.com, legion@kernel.org,
	michael.weiss@aisec.fraunhofer.de, mhocko@suse.com,
	Helge Deller <deller@gmx.de>,
	zhengqi.arch@bytedance.com, me@tobin.cc, tycho@tycho.pizza,
	Thomas Gleixner <tglx@linutronix.de>,
	Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
	Mark Rutland <mark.rutland@arm.com>, Jens Axboe <axboe@kernel.dk>,
	metze@samba.org, laijs@linux.alibaba.com,
	Andy Lutomirski <luto@kernel.org>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	ohoono.kwon@samsung.com, kaleshsingh@google.com,
	yifeifz2@illinois.edu, jpoimboe@redhat.com,
	linux-hardening@vger.kernel.org,
	linux-arch <linux-arch@vger.kernel.org>,
	vgupta@kernel.org, Russell King <linux@armlinux.org.uk>,
	Will Deacon <will@kernel.org>, Brian Cain <bcain@codeaurora.org>,
	Michal Simek <monstr@monstr.eu>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Nick Hu <nickhu@andestech.com>, Jonas Bonn <jonas@southpole.se>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	David Miller <davem@davemloft.net>,
	Chris Zankel <chris@zankel.net>
Subject: Re: [PATCH 7/7] arch: Fix STACKTRACE_SUPPORT
Date: Sat, 9 Oct 2021 17:36:19 +0800	[thread overview]
Message-ID: <CAJF2gTRTbOjqfNcm16E_XCtBSxTiUyczsWYR9uy6ZYqSuR41Pg@mail.gmail.com> (raw)
In-Reply-To: <20211008111626.455137084@infradead.org>

Thx Peter,

On Fri, Oct 8, 2021 at 7:18 PM Peter Zijlstra <peterz@infradead.org> wrote:
>
> A few archs got save_stack_trace_tsk() vs in_sched_functions() wrong.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
>  arch/csky/kernel/stacktrace.c  |    7 ++++++-
>  arch/mips/kernel/stacktrace.c  |   27 ++++++++++++++++-----------
>  arch/nds32/kernel/stacktrace.c |   21 +++++++++++----------
>  3 files changed, 33 insertions(+), 22 deletions(-)
>
> --- a/arch/csky/kernel/stacktrace.c
> +++ b/arch/csky/kernel/stacktrace.c
> @@ -122,12 +122,17 @@ static bool save_trace(unsigned long pc,
>         return __save_trace(pc, arg, false);
>  }
>
> +static bool save_trace_nosched(unsigned long pc, void *arg)
> +{
> +       return __save_trace(pc, arg, true);
> +}
> +
>  /*
>   * Save stack-backtrace addresses into a stack_trace buffer.
>   */
>  void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
>  {
> -       walk_stackframe(tsk, NULL, save_trace, trace);
> +       walk_stackframe(tsk, NULL, save_trace_nosched, trace);
>  }
>  EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
I think the patch should be:
@@ -138,7 +138,7 @@ static bool __save_trace(unsigned long pc, void
*arg, bool nosched)

 static bool save_trace(unsigned long pc, void *arg)
 {
-       return __save_trace(pc, arg, false);
+       return __save_trace(pc, arg, true);
 }

Another question:
If we put sched_text in the backtrace buffer, just cause put no useful
information in wchan, right?
(I think it wouldn't cause a worse problem than debugging.)


>
> --- a/arch/mips/kernel/stacktrace.c
> +++ b/arch/mips/kernel/stacktrace.c
> @@ -66,16 +66,7 @@ static void save_context_stack(struct st
>  #endif
>  }
>
> -/*
> - * Save stack-backtrace addresses into a stack_trace buffer.
> - */
> -void save_stack_trace(struct stack_trace *trace)
> -{
> -       save_stack_trace_tsk(current, trace);
> -}
> -EXPORT_SYMBOL_GPL(save_stack_trace);
> -
> -void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
> +static void __save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace, bool savesched)
>  {
>         struct pt_regs dummyregs;
>         struct pt_regs *regs = &dummyregs;
> @@ -88,6 +79,20 @@ void save_stack_trace_tsk(struct task_st
>                 regs->cp0_epc = tsk->thread.reg31;
>         } else
>                 prepare_frametrace(regs);
> -       save_context_stack(trace, tsk, regs, tsk == current);
> +       save_context_stack(trace, tsk, regs, savesched);
> +}
> +
> +/*
> + * Save stack-backtrace addresses into a stack_trace buffer.
> + */
> +void save_stack_trace(struct stack_trace *trace)
> +{
> +       __save_stack_trace_tsk(current, trace, true);
> +}
> +EXPORT_SYMBOL_GPL(save_stack_trace);
> +
> +void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
> +{
> +       __save_stack_trace_tsk(tsk, trace, false);
>  }
>  EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
> --- a/arch/nds32/kernel/stacktrace.c
> +++ b/arch/nds32/kernel/stacktrace.c
> @@ -6,25 +6,16 @@
>  #include <linux/stacktrace.h>
>  #include <linux/ftrace.h>
>
> -void save_stack_trace(struct stack_trace *trace)
> -{
> -       save_stack_trace_tsk(current, trace);
> -}
> -EXPORT_SYMBOL_GPL(save_stack_trace);
> -
> -void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
> +static void __save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace, bool savesched)
>  {
>         unsigned long *fpn;
>         int skip = trace->skip;
> -       int savesched;
>         int graph_idx = 0;
>
>         if (tsk == current) {
>                 __asm__ __volatile__("\tori\t%0, $fp, #0\n":"=r"(fpn));
> -               savesched = 1;
>         } else {
>                 fpn = (unsigned long *)thread_saved_fp(tsk);
> -               savesched = 0;
>         }
>
>         while (!kstack_end(fpn) && !((unsigned long)fpn & 0x3)
> @@ -50,4 +41,14 @@ void save_stack_trace_tsk(struct task_st
>                 fpn = (unsigned long *)fpp;
>         }
>  }
> +void save_stack_trace(struct stack_trace *trace)
> +{
> +       __save_stack_trace_tsk(current, trace, true);
> +}
> +EXPORT_SYMBOL_GPL(save_stack_trace);
> +
> +void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
> +{
> +       __save_stack_trace_tsk(tsk, trace, false);
> +}
>  EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
>
>


--
Best Regards
 Guo Ren

ML: https://lore.kernel.org/linux-csky/

  parent reply	other threads:[~2021-10-09  9:36 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-08 11:15 [PATCH 0/7] wchan: Fix wchan support Peter Zijlstra
2021-10-08 11:15 ` [PATCH 1/7] Revert "proc/wchan: use printk format instead of lookup_symbol_name()" Peter Zijlstra
2021-10-15  9:45   ` [tip: sched/core] " tip-bot2 for Kees Cook
2021-10-08 11:15 ` [PATCH 2/7] leaking_addresses: Always print a trailing newline Peter Zijlstra
2021-10-15  9:45   ` [tip: sched/core] " tip-bot2 for Kees Cook
2021-10-08 11:15 ` [PATCH 3/7] proc: Use task_is_running() for wchan in /proc/$pid/stat Peter Zijlstra
2021-10-15  9:45   ` [tip: sched/core] " tip-bot2 for Kees Cook
2021-10-08 11:15 ` [PATCH 4/7] x86: Fix get_wchan() to support the ORC unwinder Peter Zijlstra
2021-10-15  9:45   ` [tip: sched/core] " tip-bot2 for Qi Zheng
2021-10-08 11:15 ` [PATCH 5/7] sched: Add wrapper for get_wchan() to keep task blocked Peter Zijlstra
2021-10-08 11:26   ` Geert Uytterhoeven
2021-10-08 12:45   ` Mark Rutland
2021-10-14 10:46   ` Russell King (Oracle)
2021-10-15  9:45   ` [tip: sched/core] " tip-bot2 for Kees Cook
2021-10-08 11:15 ` [PATCH 6/7] arch: __get_wchan || STACKTRACE_SUPPORT Peter Zijlstra
2021-10-08 12:40   ` Mark Rutland
2021-10-08 13:45     ` Peter Zijlstra
2021-10-08 16:17       ` Josh Poimboeuf
2021-10-14 18:07         ` Mark Rutland
2021-10-14 18:41           ` Josh Poimboeuf
2021-10-14 18:03       ` Mark Rutland
2021-10-14 18:48         ` Josh Poimboeuf
2021-10-14 11:07   ` Russell King (Oracle)
2021-10-08 11:15 ` [PATCH 7/7] arch: Fix STACKTRACE_SUPPORT Peter Zijlstra
2021-10-08 12:52   ` Mark Rutland
2021-10-09  9:36   ` Guo Ren [this message]
2021-10-14 12:02 ` [PATCH 0/7] wchan: Fix wchan support Russell King (Oracle)
2021-10-14 13:38   ` Russell King (Oracle)
2021-10-14 19:51     ` Josh Poimboeuf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJF2gTRTbOjqfNcm16E_XCtBSxTiUyczsWYR9uy6ZYqSuR41Pg@mail.gmail.com \
    --to=guoren@kernel.org \
    --cc=Kenta.Tada@sony.com \
    --cc=akpm@linux-foundation.org \
    --cc=amistry@google.com \
    --cc=axboe@kernel.dk \
    --cc=bcain@codeaurora.org \
    --cc=bp@alien8.de \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=chris@zankel.net \
    --cc=christian.brauner@ubuntu.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=deller@gmx.de \
    --cc=dietmar.eggemann@arm.com \
    --cc=ebiederm@xmission.com \
    --cc=hca@linux.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jannh@google.com \
    --cc=jonas@southpole.se \
    --cc=jpoimboe@redhat.com \
    --cc=juri.lelli@redhat.com \
    --cc=kaleshsingh@google.com \
    --cc=keescook@chromium.org \
    --cc=laijs@linux.alibaba.com \
    --cc=legion@kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=luto@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=me@tobin.cc \
    --cc=metze@samba.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@suse.com \
    --cc=michael.weiss@aisec.fraunhofer.de \
    --cc=mingo@redhat.com \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=nickhu@andestech.com \
    --cc=ohoono.kwon@samsung.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=tsbogend@alpha.franken.de \
    --cc=tycho@tycho.pizza \
    --cc=vcaputo@pengaru.com \
    --cc=vgupta@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=will@kernel.org \
    --cc=yifeifz2@illinois.edu \
    --cc=ysato@users.sourceforge.jp \
    --cc=zhengqi.arch@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.