Commit 6d54057d authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

tracing/filter: Have no filter return a match

The n_preds field of a file can change at anytime, and even can become
zero, just as the filter is about to be processed by an event.
In the case that is zero on entering the filter, return 1, telling
the caller the event matchs and should be trace.

Also use a variable and assign it with ACCESS_ONCE() such that the
count stays consistent within the function.

Cc: Tom Zanussi <tzanussi@gmail.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 075de90c
...@@ -383,9 +383,14 @@ int filter_match_preds(struct event_filter *filter, void *rec) ...@@ -383,9 +383,14 @@ int filter_match_preds(struct event_filter *filter, void *rec)
int match, top = 0, val1 = 0, val2 = 0; int match, top = 0, val1 = 0, val2 = 0;
int stack[MAX_FILTER_PRED]; int stack[MAX_FILTER_PRED];
struct filter_pred *pred; struct filter_pred *pred;
int n_preds = ACCESS_ONCE(filter->n_preds);
int i; int i;
for (i = 0; i < filter->n_preds; i++) { /* no filter is considered a match */
if (!n_preds)
return 1;
for (i = 0; i < n_preds; i++) {
pred = filter->preds[i]; pred = filter->preds[i];
if (!pred->pop_n) { if (!pred->pop_n) {
match = pred->fn(pred, rec, val1, val2); match = pred->fn(pred, rec, val1, val2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment