ematch: Fix early ending of inverted containers.
authorIgnacy Gawędzki <ignacy.gawedzki@green-communications.fr>
Fri, 3 Oct 2014 13:44:48 +0000 (15:44 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 5 Oct 2014 00:49:46 +0000 (20:49 -0400)
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>
net/sched/ematch.c

index ad57f4444b9c65cdc7abe6eb588868c4e2b65cd2..f878fa16349af95251b9400e98a1837bf4eacb1f 100644 (file)
@@ -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++;