From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Jiri Olsa <jolsa@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
bpf@vger.kernel.org
Subject: [PATCH bpf v2 0/2] rethook: Reject getting a rethook if RCU is not watching
Date: Wed, 8 Jun 2022 01:10:52 +0900 [thread overview]
Message-ID: <165461825202.280167.12903689442217921817.stgit@devnote2> (raw)
Hi,
Here is the 2nd version of the patches to reject rethook if RCU is
not watching. The 1st version is here;
https://lore.kernel.org/all/165189881197.175864.14757002789194211860.stgit@devnote2/
This is actually related to the idle function tracing issue
reported by Jiri on LKML (*)
(*) https://lore.kernel.org/bpf/20220515203653.4039075-1-jolsa@kernel.org/
Jiri reported that fprobe (and rethook) based kprobe-multi bpf
trace kicks "suspicious RCU usage" warning. This is because the
RCU operation is used in the kprobe-multi handler. However, I
also found that the similar issue exists in the rethook because
the rethook uses RCU operation.
I added a new patch [1/2] to test this issue by fprobe_example.ko.
(with this patch, it can avoid using printk() which also involves
the RCU operation.)
------
# insmod fprobe_example.ko symbol=arch_cpu_idle use_trace=1 stackdump=0
fprobe_init: Planted fprobe at arch_cpu_idle
# rmmod fprobe_example.ko
=============================
WARNING: suspicious RCU usage
5.18.0-rc5-00019-gcae4ec21e87a-dirty #30 Not tainted
-----------------------------
include/trace/events/lock.h:37 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
RCU used illegally from extended quiescent state!
no locks held by swapper/0/0.
stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.18.0-rc5-00019-gcae4ec21e87a-dirty #30
------
After applying [2/2] fix (which avoid initializing rethook on
function entry if !rcu_watching()), this warning was gone.
------
# insmod fprobe_example.ko symbol=arch_cpu_idle use_trace=1 stackdump=0
fprobe_init: Planted fprobe at arch_cpu_idle
# rmmod fprobe_example.ko
fprobe_exit: fprobe at arch_cpu_idle unregistered. 225 times hit, 230 times missed
------
Note that you can test this program until the arch_cpu_idle()
is marked as noinstr. After that, the function can not be
traced.
Thank you,
---
Masami Hiramatsu (Google) (2):
fprobe: samples: Add use_trace option and show hit/missed counter
rethook: Reject getting a rethook if RCU is not watching
kernel/trace/rethook.c | 9 +++++++++
samples/fprobe/fprobe_example.c | 21 +++++++++++++++++----
2 files changed, 26 insertions(+), 4 deletions(-)
--
Signature
next reply other threads:[~2022-06-07 16:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-07 16:10 Masami Hiramatsu (Google) [this message]
2022-06-07 16:11 ` [PATCH bpf v2 1/2] fprobe: samples: Add use_trace option and show hit/missed counter Masami Hiramatsu (Google)
2022-06-17 16:06 ` Steven Rostedt
2022-06-22 1:41 ` Masami Hiramatsu
2022-06-07 16:11 ` [PATCH bpf v2 2/2] rethook: Reject getting a rethook if RCU is not watching Masami Hiramatsu (Google)
2022-06-17 16:19 ` Steven Rostedt
2022-06-17 11:27 ` [PATCH bpf v2 0/2] " Jiri Olsa
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=165461825202.280167.12903689442217921817.stgit@devnote2 \
--to=mhiramat@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rostedt@goodmis.org \
/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.