Trap call_rcu1() to make sure it won't be invoked twice for one rcu head.
Suggested-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
---
util/rcu.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/util/rcu.c b/util/rcu.c
index b703c86f15..9272fe5796 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -307,6 +307,8 @@ static void *call_rcu_thread(void *opaque)
void call_rcu1(struct rcu_head *node, void (*func)(struct rcu_head *node))
{
+ /* Avoid double rcu frees */
+ assert(node->func == NULL);
node->func = func;
enqueue(node);
qatomic_inc(&rcu_call_count);
--
2.50.1