diff options
| -rw-r--r-- | net/ipv4/fib_trie.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 94e5d83db4db..90f0fc8c87bd 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
| @@ -338,12 +338,18 @@ static struct tnode *tnode_alloc(int bits) | |||
| 338 | 338 | ||
| 339 | static inline void empty_child_inc(struct key_vector *n) | 339 | static inline void empty_child_inc(struct key_vector *n) |
| 340 | { | 340 | { |
| 341 | ++tn_info(n)->empty_children ? : ++tn_info(n)->full_children; | 341 | tn_info(n)->empty_children++; |
| 342 | |||
| 343 | if (!tn_info(n)->empty_children) | ||
| 344 | tn_info(n)->full_children++; | ||
| 342 | } | 345 | } |
| 343 | 346 | ||
| 344 | static inline void empty_child_dec(struct key_vector *n) | 347 | static inline void empty_child_dec(struct key_vector *n) |
| 345 | { | 348 | { |
| 346 | tn_info(n)->empty_children-- ? : tn_info(n)->full_children--; | 349 | if (!tn_info(n)->empty_children) |
| 350 | tn_info(n)->full_children--; | ||
| 351 | |||
| 352 | tn_info(n)->empty_children--; | ||
| 347 | } | 353 | } |
| 348 | 354 | ||
| 349 | static struct key_vector *leaf_new(t_key key, struct fib_alias *fa) | 355 | static struct key_vector *leaf_new(t_key key, struct fib_alias *fa) |
