Commit a489539e authored by Peng Zhang's avatar Peng Zhang Committed by Andrew Morton
Browse files

maple_tree: update mt_validate()

Instead of using mas_first_entry() to find the leftmost leaf, use a simple
loop instead.  Remove an unneeded check for root node.  To make the error
message more accurate, check pivots first and then slots, because checking
slots depend on the node limit pivot to break the loop.

Link: https://lkml.kernel.org/r/20230711035444.526-7-zhangpeng.00@bytedance.com


Signed-off-by: default avatarPeng Zhang <zhangpeng.00@bytedance.com>
Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 33af39d0
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -7244,21 +7244,20 @@ void mt_validate(struct maple_tree *mt)
	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)) &&
		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));
			}
			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);