aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Zanussi <tzanussi@gmail.com>2009-08-08 11:49:09 -0400
committerIngo Molnar <mingo@elte.hu>2009-08-08 11:55:34 -0400
commit96b2de313b1e0e02aea80ee47df6a2b5cbdf8e13 (patch)
treef6d1a22d6ab587d346f642fe89db9d75401da57b
parentbd3f02212d6a457267e0c9c02c426151c436d9d4 (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.c4
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);