aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Guangrong <xiaoguangrong@cn.fujitsu.com>2009-07-09 04:20:12 -0400
committerIngo Molnar <mingo@elte.hu>2009-07-10 05:55:27 -0400
commitc5cb183608167c744cb28bbd85884be5a4ce875d (patch)
treecce5d915673768ba0f2190920dcd7ee644a5c477
parentddc1637af217dbd8bc51f30e6d24e84476a869a6 (diff)
tracing/filter: Remove preds from struct event_subsystem
No need to save preds to event_subsystem, because it's not used. Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Acked-by: Tom Zanussi <tzanussi@gmail.com> Reviewed-by: Li Zefan <lizf@cn.fujitsu.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <4A55A83C.1030005@cn.fujitsu.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--kernel/trace/trace_events_filter.c39
1 files changed, 6 insertions, 33 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 936c621bbf46..b9aae72d13db 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -420,17 +420,7 @@ EXPORT_SYMBOL_GPL(init_preds);
420 420
421static void filter_free_subsystem_preds(struct event_subsystem *system) 421static void filter_free_subsystem_preds(struct event_subsystem *system)
422{ 422{
423 struct event_filter *filter = system->filter;
424 struct ftrace_event_call *call; 423 struct ftrace_event_call *call;
425 int i;
426
427 if (filter->n_preds) {
428 for (i = 0; i < filter->n_preds; i++)
429 filter_free_pred(filter->preds[i]);
430 kfree(filter->preds);
431 filter->preds = NULL;
432 filter->n_preds = 0;
433 }
434 424
435 list_for_each_entry(call, &ftrace_events, list) { 425 list_for_each_entry(call, &ftrace_events, list) {
436 if (!call->define_fields) 426 if (!call->define_fields)
@@ -607,26 +597,9 @@ static int filter_add_subsystem_pred(struct filter_parse_state *ps,
607 struct filter_pred *pred, 597 struct filter_pred *pred,
608 char *filter_string) 598 char *filter_string)
609{ 599{
610 struct event_filter *filter = system->filter;
611 struct ftrace_event_call *call; 600 struct ftrace_event_call *call;
612 int err = 0; 601 int err = 0;
613 602
614 if (!filter->preds) {
615 filter->preds = kzalloc(MAX_FILTER_PRED * sizeof(pred),
616 GFP_KERNEL);
617
618 if (!filter->preds)
619 return -ENOMEM;
620 }
621
622 if (filter->n_preds == MAX_FILTER_PRED) {
623 parse_error(ps, FILT_ERR_TOO_MANY_PREDS, 0);
624 return -ENOSPC;
625 }
626
627 filter->preds[filter->n_preds] = pred;
628 filter->n_preds++;
629
630 list_for_each_entry(call, &ftrace_events, list) { 603 list_for_each_entry(call, &ftrace_events, list) {
631 604
632 if (!call->define_fields) 605 if (!call->define_fields)
@@ -1029,12 +1002,12 @@ static int replace_preds(struct event_subsystem *system,
1029 1002
1030 if (elt->op == OP_AND || elt->op == OP_OR) { 1003 if (elt->op == OP_AND || elt->op == OP_OR) {
1031 pred = create_logical_pred(elt->op); 1004 pred = create_logical_pred(elt->op);
1032 if (call) { 1005 if (call)
1033 err = filter_add_pred(ps, call, pred); 1006 err = filter_add_pred(ps, call, pred);
1034 filter_free_pred(pred); 1007 else
1035 } else
1036 err = filter_add_subsystem_pred(ps, system, 1008 err = filter_add_subsystem_pred(ps, system,
1037 pred, filter_string); 1009 pred, filter_string);
1010 filter_free_pred(pred);
1038 if (err) 1011 if (err)
1039 return err; 1012 return err;
1040 1013
@@ -1048,12 +1021,12 @@ static int replace_preds(struct event_subsystem *system,
1048 } 1021 }
1049 1022
1050 pred = create_pred(elt->op, operand1, operand2); 1023 pred = create_pred(elt->op, operand1, operand2);
1051 if (call) { 1024 if (call)
1052 err = filter_add_pred(ps, call, pred); 1025 err = filter_add_pred(ps, call, pred);
1053 filter_free_pred(pred); 1026 else
1054 } else
1055 err = filter_add_subsystem_pred(ps, system, pred, 1027 err = filter_add_subsystem_pred(ps, system, pred,
1056 filter_string); 1028 filter_string);
1029 filter_free_pred(pred);
1057 if (err) 1030 if (err)
1058 return err; 1031 return err;
1059 1032