aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorShannon Zhao <shannon.zhao@linaro.org>2015-07-07 17:25:48 +0800
committerKevin Hilman <khilman@linaro.org>2015-07-07 09:01:19 -0700
commita32844ca3a02130d9c0166b65f54696dfaafc922 (patch)
tree6a34ec6ceeadc6d7acd64befd90e4eb9a2db8774 /kernel
parentc1c767d29bb2390308a35b69957b874e9446fe3b (diff)
parenta0768244828d0da096ce957616150220da607be1 (diff)
Merge tag 'v3.14.47' of git://git./linux/kernel/git/stable/linux-stable into linux-linaro-lsk-v3.14
Conflicts: arch/arm/include/asm/kvm_mmu.h arch/arm/kvm/mmu.c arch/arm64/include/asm/kvm_arm.h arch/arm64/include/asm/kvm_host.h arch/arm64/include/asm/kvm_mmu.h virt/kvm/arm/vgic.c
Diffstat (limited to 'kernel')
-rw-r--r--kernel/trace/trace_events_filter.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 8a8631926a07..cb347e85f75e 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -1399,19 +1399,24 @@ static int check_preds(struct filter_parse_state *ps)
{
int n_normal_preds = 0, n_logical_preds = 0;
struct postfix_elt *elt;
+ int cnt = 0;
list_for_each_entry(elt, &ps->postfix, list) {
- if (elt->op == OP_NONE)
+ if (elt->op == OP_NONE) {
+ cnt++;
continue;
+ }
+ cnt--;
if (elt->op == OP_AND || elt->op == OP_OR) {
n_logical_preds++;
continue;
}
n_normal_preds++;
+ WARN_ON_ONCE(cnt < 0);
}
- if (!n_normal_preds || n_logical_preds >= n_normal_preds) {
+ if (cnt != 1 || !n_normal_preds || n_logical_preds >= n_normal_preds) {
parse_error(ps, FILT_ERR_INVALID_FILTER, 0);
return -EINVAL;
}