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,
next prev parent 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.