From: Namhyung Kim <namhyung@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
Tom Zanussi <tom.zanussi@linux.intel.com>,
"zhangwei(Jovi)" <jovi.zhangwei@huawei.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/7] tracing: instance_rmdir() leaks ftrace_event_file->filter
Date: Mon, 14 Jul 2014 22:54:56 +0900 [thread overview]
Message-ID: <1405346096.1745.17.camel@leonhard> (raw)
In-Reply-To: <20140711190622.GA19499@redhat.com>
Hi Oleg,
2014-07-11 (금), 21:06 +0200, Oleg Nesterov:
> Hello,
>
> Sorry for delay, I was distracted by other problems.
>
> To remind, we discussed the potential uprobes "mix perf/ftrace" changes and
> found some off-topic problems. Lets start with ->filter fixes/cleanups.
>
> So far I didn't even try to test this series, although it looks simple except
> perhaps the last patch. I'll try to somehow test this tomorrow, but I do not
> really now how.
>
> So please review, these patches need acks anyway.
>
> As for 1/7, I added BUG_ON(file->filter) into remove_event_file_dir() before
> kmem_cache_free() to verify that yes, the leak does exist. Perhaps this patch
> should go to stable, or at least to v3.16.
>
> --------------------------------------------------------------------------------
> And could someone explain me why apply_subsystem_event_filter("0") clears
> ->filter_string first, then the whole ->filter? It seems that the only
> thing filter_free_subsystem_preds() should do is filter_disable(), no?
> IOW, why the patch below (on top of this series) is wrong?
I also think that the original code is bit strange. I agree with your
change and name of the function should be changed to something like
'filter_disable_subsystem_filters' IMHO (it does nothing with preds).
With this change, the apply_subsystem_event_filter can simply do below:
if (!strcmp(strstrip(filter_string), "0")) {
filter_disable_subsystem_filters(system, tr);
/* Ensure all filters are no longer used */
synchronize_sched();
filter_free_subsystem_filters(system, tr);
__free_filter(system->filter);
system->filter = NULL;
goto out_unlock;
}
Thanks,
Namhyung
>
> Oleg.
>
> --- x/kernel/trace/trace_events_filter.c
> +++ x/kernel/trace/trace_events_filter.c
> @@ -831,17 +831,6 @@ static int __alloc_preds(struct event_filter *filter, int n_preds)
> return 0;
> }
>
> -static inline void __remove_filter(struct ftrace_event_file *file)
> -{
> - struct ftrace_event_call *call = file->event_call;
> -
> - filter_disable(file);
> - if (call->flags & TRACE_EVENT_FL_USE_CALL_FILTER)
> - remove_filter_string(call->filter);
> - else
> - remove_filter_string(file->filter);
> -}
> -
> static void filter_free_subsystem_preds(struct event_subsystem *system,
> struct trace_array *tr)
> {
> @@ -850,7 +839,7 @@ static void filter_free_subsystem_preds(struct event_subsystem *system,
> list_for_each_entry(file, &tr->events, list) {
> if (file->system->subsystem != system)
> continue;
> - __remove_filter(file);
> + filter_disable(file);
> }
> }
>
>
next prev parent reply other threads:[~2014-07-14 13:55 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-11 19:06 [PATCH 0/7] tracing: instance_rmdir() leaks ftrace_event_file->filter Oleg Nesterov
2014-07-11 19:06 ` [PATCH 1/7] " Oleg Nesterov
2014-07-14 18:35 ` Steven Rostedt
2014-07-14 19:03 ` Oleg Nesterov
2014-07-11 19:06 ` [PATCH 2/7] tracing: kill destroy_preds() and destroy_file_preds() Oleg Nesterov
2014-07-11 19:06 ` [PATCH 3/7] tracing: kill destroy_call_preds() Oleg Nesterov
2014-07-11 19:06 ` [PATCH 4/7] tracing: kill call_filter_disable() Oleg Nesterov
2014-07-14 19:03 ` Steven Rostedt
2014-07-11 19:06 ` [PATCH 5/7] tracing/uprobes: kill the dead TRACE_EVENT_FL_USE_CALL_FILTER logic Oleg Nesterov
2014-07-14 19:04 ` Steven Rostedt
2014-07-15 0:18 ` Srikar Dronamraju
2014-07-11 19:06 ` [PATCH 6/7] tracing: kill ftrace_event_call->files Oleg Nesterov
2014-07-14 19:06 ` Steven Rostedt
2014-07-11 19:06 ` [PATCH 7/7] tracing: change filter_free_subsystem_*() to check ->subsystem rather then ->name Oleg Nesterov
2014-07-14 13:58 ` Namhyung Kim
2014-07-14 16:02 ` Oleg Nesterov
2014-07-14 19:21 ` Steven Rostedt
2014-07-14 19:20 ` Steven Rostedt
2014-07-14 19:23 ` Oleg Nesterov
2014-07-14 13:54 ` Namhyung Kim [this message]
2014-07-14 16:15 ` [PATCH 0/7] tracing: instance_rmdir() leaks ftrace_event_file->filter Oleg Nesterov
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=1405346096.1745.17.camel@leonhard \
--to=namhyung@kernel.org \
--cc=jovi.zhangwei@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=oleg@redhat.com \
--cc=rostedt@goodmis.org \
--cc=srikar@linux.vnet.ibm.com \
--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.