test_maple_tree: add test for spanning store of entire range

Entire range store over an existing tree would cause an underflow in
mas_spanning_store() when the tree is multiple levels.  Add a testcase to
ensure it doesn't happen again.

Link: https://lkml.kernel.org/r/20220625003854.1230114-3-Liam.Howlett@oracle.com
Fixes: 51282228cdd4 (lib/test_maple_tree: add testing for maple tree)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Liam Howlett 2022-06-25 00:39:07 +00:00 committed by akpm
parent 209e6c246b
commit 9400b59d2e

View File

@ -35676,6 +35676,19 @@ static noinline void check_spanning_write(struct maple_tree *mt)
mtree_unlock(mt);
mtree_destroy(mt);
for (i = 1; i <= max; i++)
mtree_test_store_range(mt, i * 10, i * 10 + 5, &i);
mtree_lock(mt);
mas_set_range(&mas, 9, 50006); /* Will expand to 0 - ULONG_MAX */
mas_store_gfp(&mas, NULL, GFP_KERNEL);
mas_set(&mas, 1205);
MT_BUG_ON(mt, mas_walk(&mas) != NULL);
mtree_unlock(mt);
mt_dump(mt);
mt_validate(mt);
mtree_destroy(mt);
/* Test spanning store that requires a right cousin rebalance */
mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE);
for (i = 0; i <= max; i++)