All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@redhat.com>,
	linux-kernel@vger.kernel.org,
	Tom Zanussi <tom.zanussi@linux.intel.com>,
	Ravi Bangoria <ravi.bangoria@linux.ibm.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>
Subject: Re: [PATCH 10/21] tracing/probe: Split trace_event related data from trace_probe
Date: Wed, 19 Jun 2019 10:11:33 +0900	[thread overview]
Message-ID: <20190619101133.f5aa78eac7a1cce4c24ae802@kernel.org> (raw)
In-Reply-To: <20190618122322.6875b643@gandalf.local.home>

On Tue, 18 Jun 2019 12:23:22 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> On Wed, 19 Jun 2019 01:14:09 +0900
> Masami Hiramatsu <mhiramat@kernel.org> wrote:
> 
> > On Mon, 17 Jun 2019 21:56:43 -0400
> > Steven Rostedt <rostedt@goodmis.org> wrote:
> > 
> 
> > > > +static nokprobe_inline struct trace_kprobe *
> > > > +trace_kprobe_primary_from_call(struct trace_event_call *call)
> > > > +{
> > > > +	struct trace_probe *tp = trace_probe_primary_from_call(call);
> > > > +
> > > > +	return container_of(tp, struct trace_kprobe, tp);  
> > > 
> > > 
> > > Hmm, is there a possibility that trace_probe_primary_from_call() may
> > > not have a primary?  
> > 
> > Good question! Of course if given event_call is not a kprobe event,
> > it doesn't have primary (or any) trace_probe. But that must not happen
> > unless user misuses it.
> > And that list never be the empty, when the last trace probe is released,
> > the event_call also unregistered and released. See unregister_trace_kprobe()
> > for details. If there is no siblings on the list, the event_call is also
> > unregistered before unregistering kprobes, and after unregistering kprobes
> > the list is unlinked.
> >  (Note that unregister_kprobe() will wait a quiescence period
> > before return. This means all probe handlers are done before that.)
> 
> Yeah, I thought something like that. But perhaps the
> trace_probe_primary_from_call() code should add a WARN_ON() is the list
> is empty.

OK, I'll add that, and check in all callers.

> > > >  
> > > > -	ret = __enable_trace_kprobe(tk);
> > > > -	if (ret) {
> > > > +	enabled = false;
> > > > +	list_for_each_entry(pos, trace_probe_probe_list(tp), list) {
> > > > +		tk = container_of(pos, struct trace_kprobe, tp);
> > > > +		ecode = __enable_trace_kprobe(tk);
> > > > +		if (ecode)
> > > > +			ret = ecode;	/* Save the last error code */
> > > > +		else
> > > > +			enabled = true;  
> > > 
> > > So, if we have some enabled but return an error code, what should a
> > > caller think of that? Wouldn't it be an inconsistent state?  
> > 
> > Oops, good catch!
> > This part is related to caller (ftrace/perf) so should be more careful.
> > Usually, kprobe enablement should not fail. If one of them has
> > gone (like a probe on unloaded module), it can be fail but that
> > should be ignored. I would like to add some additional check so that
> > - If all kprobes are on the module which is unloaded, enablement
> >   must be failed and return error.
> > - If any kprobe is enabled, and others are on non-exist modules,
> >   it should succeeded and return OK.
> > - If any kprobe caused an error not because of unloaded module,
> >   all other enablement should be canceled and return error.
> > 
> > Is that OK for you?
> > 
> 
> Sounds good to me.

Thank you!


-- 
Masami Hiramatsu <mhiramat@kernel.org>

  parent reply	other threads:[~2019-06-19  1:11 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-31 15:16 [PATCH 00/21] tracing/probe: Add multi-probes per event support Masami Hiramatsu
2019-05-31 15:16 ` [PATCH 01/21] tracing/kprobe: Set print format right after parsed command Masami Hiramatsu
2019-05-31 15:16 ` [PATCH 02/21] tracing/uprobe: Set print format when parsing command Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 03/21] tracing/probe: Add trace_probe init and free functions Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 04/21] tracing/probe: Add trace_event_call register API for trace_probe Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 05/21] tracing/probe: Add trace_event_file access APIs " Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 06/21] tracing/probe: Add trace flag " Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 07/21] tracing/probe: Add probe event name and group name accesses APIs Masami Hiramatsu
2019-05-31 15:17 ` [PATCH 08/21] tracing/probe: Add trace_event_call " Masami Hiramatsu
2019-05-31 15:18 ` [PATCH 09/21] tracing/kprobe: Check registered state using kprobe Masami Hiramatsu
2019-05-31 15:18 ` [PATCH 10/21] tracing/probe: Split trace_event related data from trace_probe Masami Hiramatsu
2019-06-18  1:56   ` Steven Rostedt
2019-06-18 16:14     ` Masami Hiramatsu
2019-06-18 16:23       ` Steven Rostedt
2019-06-18 21:11         ` Steven Rostedt
2019-06-19  2:28           ` Masami Hiramatsu
2019-06-19  9:19             ` Steven Rostedt
2019-06-19  1:11         ` Masami Hiramatsu [this message]
2019-05-31 15:18 ` [PATCH 11/21] tracing/dynevent: Delete all matched events Masami Hiramatsu
2019-05-31 15:18 ` [PATCH 12/21] tracing/dynevent: Pass extra arguments to match operation Masami Hiramatsu
2019-05-31 15:18 ` [PATCH 13/21] tracing/kprobe: Add multi-probe per event support Masami Hiramatsu
2019-05-31 15:18 ` [PATCH 14/21] tracing/uprobe: Add multi-probe per uprobe " Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 15/21] tracing/kprobe: Add per-probe delete from event Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 16/21] tracing/uprobe: " Masami Hiramatsu
2019-06-18  2:16   ` Steven Rostedt
2019-06-18 16:18     ` Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 17/21] tracing/probe: Add immediate parameter support Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 18/21] tracing/probe: Add immediate string " Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 19/21] selftests/ftrace: Add a testcase for kprobe multiprobe event Masami Hiramatsu
2019-05-31 15:19 ` [PATCH 20/21] selftests/ftrace: Add syntax error test for immediates Masami Hiramatsu
2019-05-31 15:20 ` [PATCH 21/21] selftests/ftrace: Add syntax error test for multiprobe Masami Hiramatsu

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=20190619101133.f5aa78eac7a1cce4c24ae802@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=acme@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=ravi.bangoria@linux.ibm.com \
    --cc=rostedt@goodmis.org \
    --cc=tom.zanussi@linux.intel.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.