From db8b3fbdda2cbb62c5a23d19dafa2ee9dfc2bd68 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Tue, 8 Sep 2020 13:39:05 -0400 Subject: [PATCH] maple_tree: Change mas_replace to use ma_get_slots Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index b618acfb2e99..dcb0f2db1615 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -1286,19 +1286,21 @@ static inline void mas_adopt_children(struct ma_state *mas, */ static inline void mas_replace(struct ma_state *mas, bool advanced) { - struct maple_node *mn = mas_mn(mas); - struct maple_enode *parent = NULL; - struct maple_enode *prev; - unsigned char slot = 0; + struct maple_node *parent, *mn = mas_mn(mas); + struct maple_enode *prev, *eparent = NULL; + unsigned char offset = 0; + void **slots; if (mte_is_root(mas->node)) { prev = mas->tree->ma_root; } else { enum maple_type ptype = mas_parent_enum(mas, mas->node); - parent = mt_mk_node(mte_parent(mas->node), ptype); - slot = mte_parent_slot(mas->node); - prev = mte_get_slot(parent, slot, mas->tree); + parent = mte_parent(mas->node); + eparent = mt_mk_node(parent, ptype); + offset = mte_parent_slot(mas->node); + slots = ma_get_slots(parent, ptype); + prev = slots[offset]; } if (mte_to_node(prev) == mn) @@ -1313,7 +1315,7 @@ static inline void mas_replace(struct ma_state *mas, bool advanced) rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node)); mas_set_height(mas); } else { - mte_set_slot(parent, slot, mas->node); + mte_set_slot(eparent, offset, mas->node); } if (!advanced) -- 2.50.1