summaryrefslogtreecommitdiffstats
path: root/net/sched/ematch.c
diff options
context:
space:
mode:
authorIgnacy Gawędzki2014-10-03 15:44:48 +0200
committerDavid S. Miller2014-10-05 02:49:46 +0200
commit34a419d4e20d6be5e0c4a3b27f6eface366a4836 (patch)
tree2c56cf3b933968f015cc2ea3aec1046860dcf3ab /net/sched/ematch.c
parentnet: systemport: fix bcm_sysport_insert_tsb() (diff)
downloadkernel-qcow2-linux-34a419d4e20d6be5e0c4a3b27f6eface366a4836.tar.gz
kernel-qcow2-linux-34a419d4e20d6be5e0c4a3b27f6eface366a4836.tar.xz
kernel-qcow2-linux-34a419d4e20d6be5e0c4a3b27f6eface366a4836.zip
ematch: Fix early ending of inverted containers.
The result of a negated container has to be inverted before checking for early ending. This fixes my previous attempt (17c9c8232663a47f074b7452b9b034efda868ca7) to make inverted containers work correctly. Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/ematch.c')
-rw-r--r--net/sched/ematch.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sched/ematch.c b/net/sched/ematch.c
index ad57f4444b9c..f878fa16349a 100644
--- a/net/sched/ematch.c
+++ b/net/sched/ematch.c
@@ -526,9 +526,10 @@ pop_stack:
match_idx = stack[--stackp];
cur_match = tcf_em_get_match(tree, match_idx);
+ if (tcf_em_is_inverted(cur_match))
+ res = !res;
+
if (tcf_em_early_end(cur_match, res)) {
- if (tcf_em_is_inverted(cur_match))
- res = !res;
goto pop_stack;
} else {
match_idx++;