From: 王贇 <yun.wang@linux.alibaba.com> To: Guo Ren <guoren@kernel.org>, Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@redhat.com>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>, Helge Deller <deller@gmx.de>, Michael Ellerman <mpe@ellerman.id.au>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>, Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, Albert Ou <aou@eecs.berkeley.edu>, Thomas Gleixner <tglx@linutronix.de>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Josh Poimboeuf <jpoimboe@redhat.com>, Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>, Petr Mladek <pmladek@suse.com>, Joe Lawrence <joe.lawrence@redhat.com>, Colin Ian King <colin.king@canonical.com>, Masami Hiramatsu <mhiramat@kernel.org>, "Peter Zijlstra (Intel)" <peterz@infradead.org>, Nicholas Piggin <npiggin@gmail.com>, Jisheng Zhang <jszhang@kernel.org>, linux-csky@vger.kernel.org, linux-kernel@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v2 2/2] ftrace: do CPU checking after preemption disabled Date: Wed, 13 Oct 2021 11:18:00 +0800 [thread overview] Message-ID: <44c07848-c1e1-79f1-8356-4310c1bae037@linux.alibaba.com> (raw) In-Reply-To: <1a8e8d73-b508-f90b-0d82-eb2da45a720e@linux.alibaba.com> With CONFIG_DEBUG_PREEMPT we observed reports like: BUG: using smp_processor_id() in preemptible caller is perf_ftrace_function_call+0x6f/0x2e0 CPU: 1 PID: 680 Comm: a.out Not tainted Call Trace: <TASK> dump_stack_lvl+0x8d/0xcf check_preemption_disabled+0x104/0x110 ? optimize_nops.isra.7+0x230/0x230 ? text_poke_bp_batch+0x9f/0x310 perf_ftrace_function_call+0x6f/0x2e0 ... __text_poke+0x5/0x620 text_poke_bp_batch+0x9f/0x310 This telling us the CPU could be changed after task is preempted, and the checking on CPU before preemption will be invalid. Since now ftrace_test_recursion_trylock() will help to disable the preemption, this patch just do the checking after trylock() to address the issue. CC: Steven Rostedt <rostedt@goodmis.org> Reported-by: Abaci <abaci@linux.alibaba.com> Signed-off-by: Michael Wang <yun.wang@linux.alibaba.com> --- kernel/trace/trace_event_perf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index 6aed10e..fba8cb7 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -441,13 +441,13 @@ void perf_trace_buf_update(void *record, u16 type) if (!rcu_is_watching()) return; - if ((unsigned long)ops->private != smp_processor_id()) - return; - bit = ftrace_test_recursion_trylock(ip, parent_ip); if (bit < 0) return; + if ((unsigned long)ops->private != smp_processor_id()) + goto out; + event = container_of(ops, struct perf_event, ftrace_ops); /* -- 1.8.3.1
next prev parent reply other threads:[~2021-10-13 3:18 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-12 5:39 [PATCH 0/2] ftrace: make sure preemption disabled on recursion testing 王贇 2021-10-12 5:40 ` [PATCH 1/2] ftrace: disable preemption on the testing of recursion 王贇 2021-10-12 12:17 ` Steven Rostedt 2021-10-13 1:46 ` 王贇 2021-10-12 12:24 ` Miroslav Benes 2021-10-12 12:29 ` Steven Rostedt 2021-10-13 1:52 ` 王贇 2021-10-13 1:50 ` 王贇 2021-10-13 2:27 ` Steven Rostedt 2021-10-13 2:36 ` 王贇 2021-10-12 12:43 ` Steven Rostedt 2021-10-13 2:04 ` 王贇 2021-10-13 2:30 ` Steven Rostedt 2021-10-13 2:38 ` 王贇 2021-10-12 5:40 ` [PATCH 2/2] ftrace: prevent preemption in perf_ftrace_function_call() 王贇 2021-10-12 11:20 ` Peter Zijlstra 2021-10-13 1:45 ` 王贇 2021-10-12 5:41 ` [PATCH 0/2] ftrace: make sure preemption disabled on recursion testing 王贇 2021-10-13 3:16 ` [PATCH v2 0/2] fix & prevent the missing preemption disabling 王贇 2021-10-13 3:17 ` [PATCH v2 1/2] ftrace: disable preemption between ftrace_test_recursion_trylock/unlock() 王贇 2021-10-13 3:18 ` 王贇 [this message] 2021-10-13 3:26 ` [PATCH v2 0/2] fix & prevent the missing preemption disabling Steven Rostedt 2021-10-13 3:33 ` 王贇 2021-10-26 23:48 ` [PATCH 0/2] ftrace: make sure preemption disabled on recursion testing Palmer Dabbelt
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=44c07848-c1e1-79f1-8356-4310c1bae037@linux.alibaba.com \ --to=yun.wang@linux.alibaba.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=aou@eecs.berkeley.edu \ --cc=benh@kernel.crashing.org \ --cc=bp@alien8.de \ --cc=colin.king@canonical.com \ --cc=deller@gmx.de \ --cc=guoren@kernel.org \ --cc=hpa@zytor.com \ --cc=jikos@kernel.org \ --cc=joe.lawrence@redhat.com \ --cc=jpoimboe@redhat.com \ --cc=jszhang@kernel.org \ --cc=linux-csky@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-parisc@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=live-patching@vger.kernel.org \ --cc=mbenes@suse.cz \ --cc=mhiramat@kernel.org \ --cc=mingo@redhat.com \ --cc=mpe@ellerman.id.au \ --cc=npiggin@gmail.com \ --cc=palmer@dabbelt.com \ --cc=paul.walmsley@sifive.com \ --cc=paulus@samba.org \ --cc=peterz@infradead.org \ --cc=pmladek@suse.com \ --cc=rostedt@goodmis.org \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ --subject='Re: [PATCH v2 2/2] ftrace: do CPU checking after preemption disabled' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).