break;
mas_prev_node(mas, limit);
- mas_set_slot(mas, mt_slot_count(mas->node) - 1);
+ mas_set_slot(mas, mt_slot_count(mas->node));
}
if (mas_is_none(mas))
static noinline void check_prev_entry(struct maple_tree *mt)
{
- MT_BUG_ON(mt, !mtree_empty(mt));
+ unsigned long index = 16;
+ void *value;
+ MA_STATE(mas, mt, index, index);
+ MT_BUG_ON(mt, !mtree_empty(mt));
check_seq(mt, 30, false);
+
rcu_read_lock();
+ value = mas_find(&mas, ULONG_MAX);
+ MT_BUG_ON(mt, value != xa_mk_value(index));
+ value = mas_prev(&mas, 0);
+ MT_BUG_ON(mt, value != xa_mk_value(index - 1));
rcu_read_unlock();
mtree_destroy(mt);
mtree_destroy(&tree);
- mtree_init(&tree, 0);
+ mtree_init(&tree, MAPLE_ALLOC_RANGE);
check_prev_entry(&tree);
mtree_init(&tree, 0);