* Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> [230707 06:11]: > Don't break the loop before checking the last slot. Also here check if > non-leaf nodes are missing children. > > Signed-off-by: Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > lib/maple_tree.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 1fe8b6a787dd..88d6373f37b0 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -7111,11 +7111,12 @@ static void mas_validate_child_slot(struct ma_state *mas) > > for (i = 0; i < mt_slots[type]; i++) { > child = mas_slot(mas, slots, i); > - if (!pivots[i] || pivots[i] == mas->max) > - break; > > - if (!child) > - break; > + if (!child) { > + pr_err("Non-leaf node lacks child at %p[%u]\n", > + mas_mn(mas), i); > + MT_BUG_ON(mas->tree, 1); > + } > > if (mte_parent_slot(child) != i) { > pr_err("Slot error at %p[%u]: child %p has pslot %u\n", > @@ -7130,6 +7131,9 @@ static void mas_validate_child_slot(struct ma_state *mas) > mte_to_node(mas->node)); > MT_BUG_ON(mas->tree, 1); > } > + > + if (i < mt_pivots[type] && pivots[i] == mas->max) > + break; > } > } > > -- > 2.20.1 > >