“02d155c0b8c68021cb6d17839dff2b929195c19b”上不存在“src/share/git@gitcode.net:openanolis/dragonwell8_hotspot.git”
提交 008440e3 编写于 作者: J Jarek Poplawski 提交者: David S. Miller

ipv4: Fix fib_trie rebalancing, part 3

Alas current delaying of freeing old tnodes by RCU in trie_rebalance
is still not enough because we can free a top tnode before updating a
t->trie pointer.
Reported-by: NPawel Staszewski <pstaszewski@itcare.pl>
Tested-by: NPawel Staszewski <pstaszewski@itcare.pl>
Signed-off-by: NJarek Poplawski <jarkao2@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 01e53298
...@@ -1021,6 +1021,9 @@ static void trie_rebalance(struct trie *t, struct tnode *tn) ...@@ -1021,6 +1021,9 @@ static void trie_rebalance(struct trie *t, struct tnode *tn)
(struct node *)tn, wasfull); (struct node *)tn, wasfull);
tp = node_parent((struct node *) tn); tp = node_parent((struct node *) tn);
if (!tp)
rcu_assign_pointer(t->trie, (struct node *)tn);
tnode_free_flush(); tnode_free_flush();
if (!tp) if (!tp)
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册