if (!mas_searchable(&mas))
                goto done;
 
-       mas_first_entry(&mas, mas_mn(&mas), ULONG_MAX, mte_node_type(mas.node));
+       while (!mte_is_leaf(mas.node))
+               mas_descend(&mas);
+
        while (!mas_is_none(&mas)) {
                MAS_WARN_ON(&mas, mte_dead_node(mas.node));
-               if (!mte_is_root(mas.node)) {
-                       end = mas_data_end(&mas);
-                       if (MAS_WARN_ON(&mas,
-                                       (end < mt_min_slot_count(mas.node)) &&
-                                       (mas.max != ULONG_MAX))) {
-                               pr_err("Invalid size %u of %p\n", end,
-                                      mas_mn(&mas));
-                       }
+               end = mas_data_end(&mas);
+               if (MAS_WARN_ON(&mas, (end < mt_min_slot_count(mas.node)) &&
+                               (mas.max != ULONG_MAX))) {
+                       pr_err("Invalid size %u of %p\n", end, mas_mn(&mas));
                }
+
                mas_validate_parent_slot(&mas);
-               mas_validate_child_slot(&mas);
                mas_validate_limits(&mas);
+               mas_validate_child_slot(&mas);
                if (mt_is_alloc(mt))
                        mas_validate_gaps(&mas);
                mas_dfs_postorder(&mas, ULONG_MAX);