[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20181204124333.00f4c5ee@vmware.local.home>
Date: Tue, 4 Dec 2018 12:43:33 -0500
From: Steven Rostedt <rostedt@...dmis.org>
To: Masami Hiramatsu <mhiramat@...nel.org>
Cc: linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...nel.org>,
Tom Zanussi <tom.zanussi@...ux.intel.com>,
Ravi Bangoria <ravi.bangoria@...ux.vnet.ibm.com>
Subject: Re: [PATCH v2 01/12] tracing/uprobes: Add busy check when cleanup
all uprobes
On Mon, 5 Nov 2018 18:00:15 +0900
Masami Hiramatsu <mhiramat@...nel.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?
-- Steve
> Signed-off-by: Masami Hiramatsu <mhiramat@...nel.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;
> }
Powered by blists - more mailing lists