From: Steven Rostedt <rostedt@goodmis.org>
To: Tejun Heo <tj@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@redhat.com>, Jiri Olsa <jolsa@redhat.com>,
linux-kernel@vger.kernel.org,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH 1/2] trace_events_filter: use rcu_assign_pointer() when setting ftrace_event_call->filter
Date: Wed, 23 Nov 2011 10:16:47 -0500 [thread overview]
Message-ID: <1322061407.20742.51.camel@frodo> (raw)
In-Reply-To: <20111123014603.GA19630@google.com>
[ Added Paul to Cc ]
On Tue, 2011-11-22 at 17:46 -0800, Tejun Heo wrote:
> ftrace_event_call->filter is sched RCU protected but didn't use
> rcu_assign_pointer(). Fix it.
Is it really needed? Maybe just for documentation but I'm not sure this
use is required because all use cases have synchronize_sched() used,
which is a big hammer compared to the rcu_assign_pointer().
>
> TODO: Add proper __rcu annotation to call->filter and all its users.
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> ---
> kernel/trace/trace_events_filter.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> Index: work/kernel/trace/trace_events_filter.c
> ===================================================================
> --- work.orig/kernel/trace/trace_events_filter.c
> +++ work/kernel/trace/trace_events_filter.c
> @@ -1686,7 +1686,7 @@ static int replace_system_preds(struct e
> * replace the filter for the call.
> */
> filter = call->filter;
> - call->filter = filter_item->filter;
> + rcu_assign_pointer(call->filter, filter_item->filter);
We update filter here, and then call synchronize_sched() before we free
the filter_item->filter.
> filter_item->filter = filter;
>
> fail = false;
> @@ -1741,7 +1741,7 @@ int apply_event_filter(struct ftrace_eve
> filter = call->filter;
> if (!filter)
> goto out_unlock;
> - call->filter = NULL;
> + rcu_assign_pointer(call->filter, NULL);
> /* Make sure the filter is not being used */
Again you can see that synchronize_sched() is called here.
> synchronize_sched();
> __free_filter(filter);
> @@ -1782,7 +1782,7 @@ out:
> * string
> */
> tmp = call->filter;
> - call->filter = filter;
> + rcu_assign_pointer(call->filter, filter);
We only call synchronize_sched if call->filter wasn't NULL, because we
are going to free tmp. We need to make sure all users are done with tmp
before we free it.
> if (tmp) {
> /* Make sure the call is done with the filter */
> synchronize_sched();
Thus my question is, do we really need to add the rcu_assign_pointer().
I have no problem if we only do so to document that this is an rcu sched
protected variable. But it should be commented as such.
-- Steve
next prev parent reply other threads:[~2011-11-23 15:16 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-23 1:46 [PATCH 1/2] trace_events_filter: use rcu_assign_pointer() when setting ftrace_event_call->filter Tejun Heo
2011-11-23 2:00 ` [PATCH 2/2] trace_event_filter: factorize filter creation Tejun Heo
2011-11-23 15:19 ` Steven Rostedt
2011-11-23 15:59 ` Tejun Heo
2011-11-28 20:49 ` Tejun Heo
2011-11-28 22:15 ` Steven Rostedt
2011-12-08 23:32 ` Tejun Heo
2011-12-09 0:15 ` Steven Rostedt
2011-12-09 0:46 ` Steven Rostedt
2011-12-09 18:55 ` Tejun Heo
2011-12-09 19:43 ` [PATCH 2/2 UPDATED] " Tejun Heo
2011-11-23 15:16 ` Steven Rostedt [this message]
2011-11-23 16:06 ` [PATCH 1/2] trace_events_filter: use rcu_assign_pointer() when setting ftrace_event_call->filter Tejun Heo
2011-11-23 16:12 ` Tejun Heo
2011-11-23 17:06 ` Steven Rostedt
2011-11-23 17:33 ` Tejun Heo
2011-11-28 16:49 ` Paul E. McKenney
2011-11-23 16:40 ` Eric Dumazet
2011-11-23 16:44 ` Tejun Heo
2011-11-23 16:49 ` [PATCH UPDATED " Tejun Heo
2011-12-05 17:34 ` [tip:perf/urgent] trace_events_filter: Use " tip-bot for Tejun Heo
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=1322061407.20742.51.camel@frodo \
--to=rostedt@goodmis.org \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=tj@kernel.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.