Please do not apply this patch. More testing is needed. Again, sorry for the noise. * Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> [220712 10:53]: > When walking the dead leaves, use the nodes metadata for the end of the > node. This avoids needing to use tricks for BE/LE unions. > > Fixes: d0aac5e48048 (Maple Tree: add new data structure) > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > lib/maple_tree.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 14e9ab14c1da..c661fda37665 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -5390,15 +5390,12 @@ unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots) > enum maple_type type; > void *entry; > int offset; > + unsigned end = mas_data_end(mas); > > - for (offset = 0; offset < mt_slot_count(mas->node); offset++) { > + for (offset = 0; offset <= end; offset++) { > entry = mas_slot_locked(mas, slots, offset); > type = mte_node_type(entry); > node = mte_to_node(entry); > - /* Use both node and type to catch LE & BE metadata */ > - if (!node || !type) > - break; > - > mte_set_node_dead(entry); > smp_wmb(); /* Needed for RCU */ > node->type = type; > -- > 2.35.1