start_piv = mas_safe_pivot(mas, offset);
restart_prev_node:
level = 0;
- if (mte_is_root(mas->node) || mas->node == MAS_NONE)
+ if (mas->node == MAS_NONE)
goto no_entry;
while (1) {
+ if (mte_is_root(mas->node))
+ goto no_entry;
+
offset = mte_parent_slot(mas->node);
mas_ascend(mas);
level++;
goto restart_prev_node;
if (!offset)
- goto ascend;
+ continue;
offset--;
slots = ma_get_slots(mas_mn(mas), mte_node_type(mas->node));
if (pivot < limit)
goto no_entry;
- if (offset != 0 && pivot == 0)
+ if (!pivot && offset) // end of node.
break;
mn = rcu_dereference_check(slots[offset],
slots = ma_get_slots(mas_mn(mas),
mte_node_type(mas->node));
} while (offset-- > 0);
-
-ascend:
- if (mte_is_root(mas->node))
- goto no_entry;
}
no_entry: