From: Steven Rostedt <rostedt@goodmis.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jan Engelhardt <jengelh@inai.de>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
linux-kernel <linux-kernel@vger.kernel.org>,
Paul <paulmck@linux.vnet.ibm.com>,
Josh Triplett <josh@joshtriplett.org>,
Lai Jiangshan <jiangshanlai@gmail.com>,
"Joel Fernandes, Google" <joel@joelfernandes.org>,
Pablo Neira Ayuso <pablo@netfilter.org>,
Jozsef Kadlecsik <kadlec@netfilter.org>,
Florian Westphal <fw@strlen.de>,
"David S. Miller" <davem@davemloft.net>,
Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
David Ahern <dsahern@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, rcu <rcu@vger.kernel.org>,
netfilter-devel <netfilter-devel@vger.kernel.org>,
coreteam <coreteam@netfilter.org>,
netdev <netdev@vger.kernel.org>
Subject: Re: [RFC][PATCH] rcu: Use typeof(p) instead of typeof(*p) *
Date: Tue, 5 Oct 2021 16:02:52 -0400 [thread overview]
Message-ID: <20211005160252.54640350@gandalf.local.home> (raw)
In-Reply-To: <CAHk-=wiL+wyCOTedh48Oz0cNOKJq2GNwtxg6423hf-1FuGrv_A@mail.gmail.com>
On Tue, 5 Oct 2021 12:46:43 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Tue, Oct 5, 2021 at 12:40 PM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > I may try it, because exposing the structure I want to hide, is pulling out
> > a lot of other crap with it :-p
>
> One option is just "don't do rcu_access of a pointer that you're not
> supposed to touch in a file that isn't supposed to touch it".
The problem is, the RCU isn't for touching it, it is for knowing it exists.
>
> IOW, why are you doing that
>
> pid_list = rcu_dereference_sched(tr->function_pids);
>
> in a place that isn't supposed to look at the pid_list in the first place?
>
> Yeah, yeah, I see how you just pass it to trace_ignore_this_task() as
> an argument, but maybe the real fix is to just pass that trace_array
> pointer instead?
>
> IOW, if you want to keep that structure private, maybe you really just
> shouldn't have non-private users of it randomly doing RCU lookups of
> it?
>
Ideally, I wanted to keep the logic of the pid lists separate, and not have
it know about the trace array at all.
And this was the best "incremental" approach I had, as the code is
currently all just open coded.
The RCU lookups are not an internal use functionality of the pid lists. The
updates to the pid list are done by allocating a new pid_list, copying the
old pid_list with the new updates and then swapping the pointers. The logic
of the pid_list is orthogonal to the RCU update. It's just "allocate some
random thing" and use RCU to swap it with the old random thing.
That is, the logic to synchronize updates is left to the user not the pid
list itself.
I also want to limit function calls, as this is called from the function
tracer (every function being traced) and if the pid_list pointer is NULL it
skips it. Hence, I want to avoid calling a function to know if the pointer
is NULL or not.
-- Steve
next prev parent reply other threads:[~2021-10-05 20:02 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-05 13:47 [RFC][PATCH] rcu: Use typeof(p) instead of typeof(*p) * Steven Rostedt
2021-10-05 15:15 ` Mathieu Desnoyers
2021-10-05 15:58 ` Steven Rostedt
2021-10-05 16:15 ` Mathieu Desnoyers
2021-10-05 16:29 ` Paul E. McKenney
2021-10-05 16:40 ` Steven Rostedt
2021-10-11 8:39 ` David Laight
2021-10-12 14:18 ` Mathieu Desnoyers
2021-10-12 15:36 ` Steven Rostedt
2021-10-05 16:18 ` Linus Torvalds
2021-10-05 16:37 ` Steven Rostedt
2021-10-05 16:47 ` Linus Torvalds
2021-10-05 16:42 ` Steven Rostedt
2021-10-05 18:01 ` Rasmus Villemoes
2021-10-05 18:06 ` Mathieu Desnoyers
2021-10-05 18:28 ` Jan Engelhardt
2021-10-05 18:40 ` Steven Rostedt
2021-10-05 19:06 ` Jan Engelhardt
2021-10-05 19:40 ` Steven Rostedt
2021-10-05 19:46 ` Linus Torvalds
2021-10-05 20:02 ` Steven Rostedt [this message]
2021-10-05 19:49 ` Mathieu Desnoyers
2021-10-05 20:06 ` Steven Rostedt
2021-10-05 20:37 ` Steven Rostedt
2021-10-05 20:45 ` Linus Torvalds
2021-10-05 21:05 ` Steven Rostedt
2021-10-05 21:09 ` Jan Engelhardt
2021-10-05 21:24 ` Steven Rostedt
2021-10-11 8:34 ` David Laight
2021-10-05 21:27 ` Linus Torvalds
2021-10-05 22:26 ` Jan Engelhardt
2021-10-05 18:48 ` Rasmus Villemoes
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=20211005160252.54640350@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=coreteam@netfilter.org \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=fw@strlen.de \
--cc=jengelh@inai.de \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--cc=josh@joshtriplett.org \
--cc=kadlec@netfilter.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mathieu.desnoyers@efficios.com \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rcu@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=yoshfuji@linux-ipv6.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 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).