Messages in this thread | | | Date | Fri, 7 Dec 2018 11:19:57 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH v2 01/12] tracing/uprobes: Add busy check when cleanup all uprobes |
| |
On Tue, 4 Dec 2018 12:43:33 -0500 Steven Rostedt <rostedt@goodmis.org> wrote:
> On Mon, 5 Nov 2018 18:00:15 +0900 > Masami Hiramatsu <mhiramat@kernel.org> wrote: > > > Add a busy check loop in cleanup_all_probes() before > > trying to remove all events in uprobe_events as same as > > kprobe_events does. > > > > Without this change, writing null to uprobe_events will > > try to remove events but if one of them is enabled, it > > stopped there but some of events are already cleared. > > > > With this change, writing null to uprobe_events make > > sure all events are not enabled before removing events. > > So, it clears all events, or return an error (-EBUSY) > > with keeping all events. > > > > Hmm, should this patch be marked as stable?
Hmm, OK, let this go to stable. Since anyway, this will cause a wired result on uprobe_events from user point of view.
Thank you!
> > -- Steve > > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> > > --- > > kernel/trace/trace_uprobe.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c > > index 31ea48eceda1..b708e4ff7ea7 100644 > > --- a/kernel/trace/trace_uprobe.c > > +++ b/kernel/trace/trace_uprobe.c > > @@ -587,12 +587,19 @@ static int cleanup_all_probes(void) > > int ret = 0; > > > > mutex_lock(&uprobe_lock); > > + /* Ensure no probe is in use. */ > > + list_for_each_entry(tu, &uprobe_list, list) > > + if (trace_probe_is_enabled(&tu->tp)) { > > + ret = -EBUSY; > > + goto end; > > + } > > while (!list_empty(&uprobe_list)) { > > tu = list_entry(uprobe_list.next, struct trace_uprobe, list); > > ret = unregister_trace_uprobe(tu); > > if (ret) > > break; > > } > > +end: > > mutex_unlock(&uprobe_lock); > > return ret; > > } >
-- Masami Hiramatsu <mhiramat@kernel.org>
| |