diff options
author | Tom Zanussi <tzanussi@gmail.com> | 2009-08-08 11:49:09 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-08 11:55:34 -0400 |
commit | 96b2de313b1e0e02aea80ee47df6a2b5cbdf8e13 (patch) | |
tree | f6d1a22d6ab587d346f642fe89db9d75401da57b | |
parent | bd3f02212d6a457267e0c9c02c426151c436d9d4 (diff) |
tracing/filters: Don't use pred on alloc failure
Dan Carpenter sent me a fix to prevent pred from being used if
it couldn't be allocated. I noticed the same problem also
existed for the create_pred() case and added a fix for that.
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <1249746549.6453.29.camel@tropicana>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | kernel/trace/trace_events_filter.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index 936c621bbf46..1557148be34b 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
@@ -1029,6 +1029,8 @@ static int replace_preds(struct event_subsystem *system, | |||
1029 | 1029 | ||
1030 | if (elt->op == OP_AND || elt->op == OP_OR) { | 1030 | if (elt->op == OP_AND || elt->op == OP_OR) { |
1031 | pred = create_logical_pred(elt->op); | 1031 | pred = create_logical_pred(elt->op); |
1032 | if (!pred) | ||
1033 | return -ENOMEM; | ||
1032 | if (call) { | 1034 | if (call) { |
1033 | err = filter_add_pred(ps, call, pred); | 1035 | err = filter_add_pred(ps, call, pred); |
1034 | filter_free_pred(pred); | 1036 | filter_free_pred(pred); |
@@ -1048,6 +1050,8 @@ static int replace_preds(struct event_subsystem *system, | |||
1048 | } | 1050 | } |
1049 | 1051 | ||
1050 | pred = create_pred(elt->op, operand1, operand2); | 1052 | pred = create_pred(elt->op, operand1, operand2); |
1053 | if (!pred) | ||
1054 | return -ENOMEM; | ||
1051 | if (call) { | 1055 | if (call) { |
1052 | err = filter_add_pred(ps, call, pred); | 1056 | err = filter_add_pred(ps, call, pred); |
1053 | filter_free_pred(pred); | 1057 | filter_free_pred(pred); |