From 220757fd89203aad7eac037df7b4357355776a0f Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Thu, 3 Mar 2022 21:15:09 -0500 Subject: [PATCH] test_maple_tree: Add fuzz 8 test Signed-off-by: Liam R. Howlett --- lib/test_maple_tree.c | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index b26d74c89ac8..61781df80682 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -37422,6 +37422,57 @@ static noinline void check_fuzzer(struct maple_tree *mt) mtree_test_erase(mt, 12); // 0x5 mtree_test_store(mt , 2, (void *)0x5); // -17 mtree_test_load(mt, 22); // 0x9 + mtree_destroy(mt); + + + /* + * 8. When rebalancing or spanning_rebalance(), the max of the new node + * may be set incorrectly to the final pivot and not the right max. + * Fix by setting the left max to orig right max if the entire node is + * consumed. + */ + mt_init_flags(mt, 0); + mtree_test_store(mt , 6, (void *)0xd); // 0 + mtree_test_store(mt , 67, (void *)0x87); // 0 + mtree_test_insert(mt, 15, (void *)0x1f); // 0 + mtree_test_insert(mt, 6716, (void *)0x3479); // 0 + mtree_test_store(mt , 61, (void *)0x7b); // 0 + mtree_test_insert(mt, 13, (void *)0x1b); // 0 + mtree_test_store(mt , 8, (void *)0x11); // 0 + mtree_test_insert(mt, 1, (void *)0x3); // 0 + mtree_test_load(mt, 0); // (nil) + mtree_test_erase(mt, 67167); // (nil) + mtree_test_insert_range(mt, 6, 7167, (void *)0xd); // 0 + mtree_test_insert(mt, 6, (void *)0xd); // -17 + mtree_test_erase(mt, 67); // (nil) + mtree_test_insert(mt, 1, (void *)0x3); // -17 + mtree_test_erase(mt, 667167); // 0x87 + mtree_test_insert(mt, 6, (void *)0xd); // -17 + mtree_test_store(mt , 67, (void *)0x87); // -17 + mtree_test_insert(mt, 5, (void *)0xb); // 0 + mtree_test_erase(mt, 1); // 0x3479 + mtree_test_insert(mt, 6, (void *)0xd); // 0 + mtree_test_erase(mt, 67); // 0x3 + mtree_test_insert(mt, 15, (void *)0x1f); // -17 + mtree_test_insert(mt, 67167, (void *)0x20cbf); // -17 + mtree_test_insert(mt, 1, (void *)0x3); // 0 + mtree_test_load(mt, 7); // 0x87 + mtree_test_insert(mt, 16, (void *)0x21); // 0 + mtree_test_insert(mt, 36, (void *)0x49); // 0 + mtree_test_store(mt , 67, (void *)0x87); // 0 + mtree_test_store(mt , 6, (void *)0xd); // 0 + mtree_test_insert(mt, 367, (void *)0x2df); // 0 + mtree_test_insert(mt, 115, (void *)0xe7); // 0 + mtree_test_store(mt , 0, (void *)0x1); // 0 + mtree_test_store_range(mt, 1, 3, (void *)0x3); // 0 + mtree_test_store(mt , 1, (void *)0x3); // 0 + mtree_test_erase(mt, 67167); // (nil) + mtree_test_insert_range(mt, 6, 47, (void *)0xd); // 0 + mtree_test_store(mt , 1, (void *)0x3); // -17 + mtree_test_insert_range(mt, 1, 67, (void *)0x3); // 0 + mtree_test_load(mt, 67); // 0x20cbf + mtree_test_insert(mt, 1, (void *)0x3); // -17 + mtree_test_erase(mt, 67167); // 0x87 } static DEFINE_MTREE(tree); -- 2.50.1