All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Next Mailing List <linux-next@vger.kernel.org>
Subject: [PATCH] stacktrace: Provide stack_trace_save_tsk() stub in the !CONFIG_STACKTRACE case too
Date: Fri, 22 Oct 2021 09:43:50 +0200	[thread overview]
Message-ID: <YXJrtiFgwMCYNAAM@gmail.com> (raw)
In-Reply-To: <60e736e7-cc37-9fea-a0fb-6628f87e741c@bytedance.com>


* Qi Zheng <zhengqi.arch@bytedance.com> wrote:

> 
> 
> On 10/18/21 2:23 PM, Stephen Rothwell wrote:
> > Hi all,
> > 
> > After merging the tip tree, today's linux-next build (x86_64 allnoconfig)
> > failed like this:
> > 
> > arch/x86/kernel/process.c: In function '__get_wchan':
> > arch/x86/kernel/process.c:950:2: error: implicit declaration of function 'stack_trace_save_tsk' [-Werror=implicit-function-declaration]
> >    950 |  stack_trace_save_tsk(p, &entry, 1, 0);
> >        |  ^~~~~~~~~~~~~~~~~~~~
> > cc1: some warnings being treated as errors
> > 
> > Caused by commit
> > 
> >    bc9bbb81730e ("x86: Fix get_wchan() to support the ORC unwinder")
> > 
> > stack_trace_save_tsk() requires CONFIG_STACKTRACE which is not set for
> > this build.
> 
> Maybe get_wchan() can be updated to:
> 
> unsigned long get_wchan(struct task_struct *p)
> {
> #ifdef CONFIG_STACKTRACE
> 	unsigned long entry = 0;
> 
> 	stack_trace_save_tsk(p, &entry, 1, 0);
> 	return entry;
> #else /* CONFIG_STACKTRACE */
> 	return 0;
> #endif
> }

And repeat the same ugliness in every single function that happens to use 
the stack_trace_save_tsk() API??

The correct solution is to define stack_trace_save_tsk() in the 
!CONFIG_STACKTRACE case too, as the patch below does.

Thanks,

	Ingo

==============================>
From: Ingo Molnar <mingo@kernel.org>
Date: Fri, 22 Oct 2021 09:40:27 +0200
Subject: [PATCH] stacktrace: Provide stack_trace_save_tsk() stub in the !CONFIG_STACKTRACE case too

The following commit:

  bc9bbb81730e ("x86: Fix get_wchan() to support the ORC unwinder")

Added stack_trace_save_tsk() use to __get_wchan(), while this method is not
unconditionally defined: it's not available in the !CONFIG_STACKTRACE case.

Give a default implementation that does nothing.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Fixes: bc9bbb81730e ("x86: Fix get_wchan() to support the ORC unwinder")
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 include/linux/stacktrace.h | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/linux/stacktrace.h b/include/linux/stacktrace.h
index 9edecb494e9e..3ccaf599630f 100644
--- a/include/linux/stacktrace.h
+++ b/include/linux/stacktrace.h
@@ -91,8 +91,19 @@ extern void save_stack_trace_tsk(struct task_struct *tsk,
 extern int save_stack_trace_tsk_reliable(struct task_struct *tsk,
 					 struct stack_trace *trace);
 extern void save_stack_trace_user(struct stack_trace *trace);
+
 #endif /* !CONFIG_ARCH_STACKWALK */
-#endif /* CONFIG_STACKTRACE */
+
+#else /* !CONFIG_STACKTRACE: */
+static inline unsigned int
+stack_trace_save_tsk(struct task_struct *task,
+		     unsigned long *store, unsigned int size,
+		     unsigned int skipnr)
+{
+	return -ENOSYS;
+}
+
+#endif /* !CONFIG_STACKTRACE */
 
 #if defined(CONFIG_STACKTRACE) && defined(CONFIG_HAVE_RELIABLE_STACKTRACE)
 int stack_trace_save_tsk_reliable(struct task_struct *tsk, unsigned long *store,

  reply	other threads:[~2021-10-22  7:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18  6:23 linux-next: build failure after merge of the tip tree Stephen Rothwell
2021-10-18  6:45 ` Qi Zheng
2021-10-22  7:43   ` Ingo Molnar [this message]
2021-10-22 11:38     ` [PATCH] stacktrace: Provide stack_trace_save_tsk() stub in the !CONFIG_STACKTRACE case too Peter Zijlstra

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=YXJrtiFgwMCYNAAM@gmail.com \
    --to=mingo@kernel.org \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=sfr@canb.auug.org.au \
    --cc=tglx@linutronix.de \
    --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.