diff options
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/fib_trie.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 7e9031739f06..80892f565030 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -752,7 +752,7 @@ static void resize(struct trie *t, struct tnode *tn) | |||
752 | { | 752 | { |
753 | struct tnode *tp = node_parent(tn), *n = NULL; | 753 | struct tnode *tp = node_parent(tn), *n = NULL; |
754 | struct tnode __rcu **cptr; | 754 | struct tnode __rcu **cptr; |
755 | int max_work; | 755 | int max_work = MAX_WORK; |
756 | 756 | ||
757 | pr_debug("In tnode_resize %p inflate_threshold=%d threshold=%d\n", | 757 | pr_debug("In tnode_resize %p inflate_threshold=%d threshold=%d\n", |
758 | tn, inflate_threshold, halve_threshold); | 758 | tn, inflate_threshold, halve_threshold); |
@@ -775,8 +775,7 @@ static void resize(struct trie *t, struct tnode *tn) | |||
775 | /* Double as long as the resulting node has a number of | 775 | /* Double as long as the resulting node has a number of |
776 | * nonempty nodes that are above the threshold. | 776 | * nonempty nodes that are above the threshold. |
777 | */ | 777 | */ |
778 | max_work = MAX_WORK; | 778 | while (should_inflate(tp, tn) && max_work) { |
779 | while (should_inflate(tp, tn) && max_work--) { | ||
780 | if (inflate(t, tn)) { | 779 | if (inflate(t, tn)) { |
781 | #ifdef CONFIG_IP_FIB_TRIE_STATS | 780 | #ifdef CONFIG_IP_FIB_TRIE_STATS |
782 | this_cpu_inc(t->stats->resize_node_skipped); | 781 | this_cpu_inc(t->stats->resize_node_skipped); |
@@ -784,6 +783,7 @@ static void resize(struct trie *t, struct tnode *tn) | |||
784 | break; | 783 | break; |
785 | } | 784 | } |
786 | 785 | ||
786 | max_work--; | ||
787 | tn = rtnl_dereference(*cptr); | 787 | tn = rtnl_dereference(*cptr); |
788 | } | 788 | } |
789 | 789 | ||
@@ -794,8 +794,7 @@ static void resize(struct trie *t, struct tnode *tn) | |||
794 | /* Halve as long as the number of empty children in this | 794 | /* Halve as long as the number of empty children in this |
795 | * node is above threshold. | 795 | * node is above threshold. |
796 | */ | 796 | */ |
797 | max_work = MAX_WORK; | 797 | while (should_halve(tp, tn) && max_work) { |
798 | while (should_halve(tp, tn) && max_work--) { | ||
799 | if (halve(t, tn)) { | 798 | if (halve(t, tn)) { |
800 | #ifdef CONFIG_IP_FIB_TRIE_STATS | 799 | #ifdef CONFIG_IP_FIB_TRIE_STATS |
801 | this_cpu_inc(t->stats->resize_node_skipped); | 800 | this_cpu_inc(t->stats->resize_node_skipped); |
@@ -803,6 +802,7 @@ static void resize(struct trie *t, struct tnode *tn) | |||
803 | break; | 802 | break; |
804 | } | 803 | } |
805 | 804 | ||
805 | max_work--; | ||
806 | tn = rtnl_dereference(*cptr); | 806 | tn = rtnl_dereference(*cptr); |
807 | } | 807 | } |
808 | 808 | ||