mirror of https://github.com/xemu-project/xemu.git
util/interval-tree: Use qatomic_set_mb in rb_link_node
Ensure that the stores to rb_left and rb_right are complete before inserting the new node into the tree. Otherwise a concurrent reader could see garbage in the new leaf. Cc: qemu-stable@nongnu.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
055b86e0f0
commit
4c8baa02d3
|
@ -128,7 +128,11 @@ static inline void rb_link_node(RBNode *node, RBNode *parent, RBNode **rb_link)
|
|||
node->rb_parent_color = (uintptr_t)parent;
|
||||
node->rb_left = node->rb_right = NULL;
|
||||
|
||||
qatomic_set(rb_link, node);
|
||||
/*
|
||||
* Ensure that node is initialized before insertion,
|
||||
* as viewed by a concurrent search.
|
||||
*/
|
||||
qatomic_set_mb(rb_link, node);
|
||||
}
|
||||
|
||||
static RBNode *rb_next(RBNode *node)
|
||||
|
|
Loading…
Reference in New Issue