unsigned long *range_start)
{
void *entry = NULL;
- struct maple_enode *prev_node;
+ struct maple_enode *prev_node = mas->node;
+ unsigned char offset = mas->offset;
unsigned long index = mas->index;
enum maple_type mt = mte_node_type(mas->node);
if (mas_next_nentry(mas, limit, range_start))
break;
- if (*range_start > limit)
+ if (*range_start > limit) {
+ mas->offset = offset;
+ mas->node = prev_node;
return NULL;
+ }
next_node:
+ prev_node = mas->node;
+ offset = mas->offset;
mas_next_node(mas, limit);
mas->offset = 0;
mt = mte_node_type(mas->node);