From: Liam R. Howlett Date: Tue, 8 Sep 2020 17:39:05 +0000 (-0400) Subject: maple_tree: Change mas_replace to use ma_get_slots X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=db8b3fbdda2cbb62c5a23d19dafa2ee9dfc2bd68;p=users%2Fjedix%2Flinux-maple.git maple_tree: Change mas_replace to use ma_get_slots Signed-off-by: Liam R. Howlett --- 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)