]> git.baikalelectronics.ru Git - kernel.git/commit
ipv4: Fix fib_trie rebalancing, part 2
authorJarek Poplawski <jarkao2@gmail.com>
Thu, 18 Jun 2009 07:28:51 +0000 (00:28 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Jun 2009 07:28:51 +0000 (00:28 -0700)
commit46d46f2bfc1b86574e3b67b3575281efb5e7ce95
treea2d8075b9d234b0a937d7dd82b95cb16b953aec7
parentb8bc0aef1e70429233c3bc503b48b55d65c4fe20
ipv4: Fix fib_trie rebalancing, part 2

My previous patch, which explicitly delays freeing of tnodes by adding
them to the list to flush them after the update is finished, isn't
strict enough. It treats exceptionally tnodes without parent, assuming
they are newly created, so "invisible" for the read side yet.

But the top tnode doesn't have parent as well, so we have to exclude
all exceptions (at least until a better way is found). Additionally we
need to move rcu assignment of this node before flushing, so the
return type of the trie_rebalance() function is changed.

Reported-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/fib_trie.c