Browse Source

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>
Ignacy Gawędzki 11 years ago
parent
commit
34a419d4e2
1 changed files with 3 additions and 2 deletions
  1. 3 2
      net/sched/ematch.c

+ 3 - 2
net/sched/ematch.c

@@ -526,9 +526,10 @@ pop_stack:
 		match_idx = stack[--stackp];
 		match_idx = stack[--stackp];
 		cur_match = tcf_em_get_match(tree, match_idx);
 		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_early_end(cur_match, res)) {
-			if (tcf_em_is_inverted(cur_match))
-				res = !res;
 			goto pop_stack;
 			goto pop_stack;
 		} else {
 		} else {
 			match_idx++;
 			match_idx++;