diff options
author | Tom Zanussi <tzanussi@gmail.com> | 2009-03-23 04:26:48 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-23 04:30:37 -0400 |
commit | c4cff064be678f1e8344d907499f2a81282edc19 (patch) | |
tree | 8c020dd399a8eba7ae279283e9a3eeb074c74d88 /kernel/trace/trace_events.c | |
parent | ee6cdabc820a29bd607f38d9cb335c3ceddc673b (diff) |
tracing/filters: clean up filter_add_subsystem_pred()
Impact: cleanup, memory leak fix
This patch cleans up filter_add_subsystem_pred():
- searches for the field before creating a copy of the pred
- fixes memory leak in the case a predicate isn't applied
- if -ENOMEM, makes sure there's no longer a reference to the
pred so the caller can free the half-finished filter
- changes the confusing i == MAX_FILTER_PRED - 1 comparison
previously remarked upon
This affects only per-subsystem event filtering.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: =?ISO-8859-1?Q?Fr=E9d=E9ric?= Weisbecker <fweisbec@gmail.com>
LKML-Reference: <1237796808.7527.40.camel@charm-linux>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace_events.c')
-rw-r--r-- | kernel/trace/trace_events.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 19f61dd23219..fdab30d6c835 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -585,6 +585,7 @@ subsystem_filter_write(struct file *filp, const char __user *ubuf, size_t cnt, | |||
585 | } | 585 | } |
586 | 586 | ||
587 | if (filter_add_subsystem_pred(system, pred)) { | 587 | if (filter_add_subsystem_pred(system, pred)) { |
588 | filter_free_subsystem_preds(system); | ||
588 | filter_free_pred(pred); | 589 | filter_free_pred(pred); |
589 | return -EINVAL; | 590 | return -EINVAL; |
590 | } | 591 | } |