]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
test_maple_tree: Test implied pivot as zero and clear accordingly
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 3 Mar 2022 15:47:45 +0000 (10:47 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 8 Mar 2022 18:19:16 +0000 (13:19 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/test_maple_tree.c

index 6d5408d71a00fd8f8d468a7590ff5618f4608597..a9599bdb9dc9c0db9b4e74a52826144069821410 100644 (file)
@@ -37231,6 +37231,133 @@ static noinline void check_fuzzer(struct maple_tree *mt)
        mtree_test_insert(mt, 18446744073709551615UL,
                          (void *)0xffffffffffffffff); // 0
        mtree_test_erase(mt, 18446744073709551615UL); // (nil)
+       mtree_destroy(mt);
+
+       /*
+        * 6.  When reusing a node with an implied pivot and the node is
+        * shrinking, old data would be left in the implied slot
+        * Fixed by checking the last pivot for the mas->max and clear
+        * accordingly.  This only affected the left-most node as that node is
+        * the only one allowed to end in NULL.
+        */
+       mt_init_flags(mt, 0);
+       mtree_test_erase(mt, 3); // (nil)
+       mtree_test_insert(mt, 22, (void *)0x2d); // 0
+       mtree_test_insert(mt, 15, (void *)0x1f); // 0
+       mtree_test_load(mt, 2); // (nil)
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_insert(mt, 5, (void *)0xb); // 0
+       mtree_test_erase(mt, 1); // (nil)
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_insert(mt, 4, (void *)0x9); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_erase(mt, 1); // 0x3
+       mtree_test_insert(mt, 2, (void *)0x5); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_erase(mt, 3); // 0x3
+       mtree_test_insert(mt, 22, (void *)0x2d); // 0
+       mtree_test_insert(mt, 15, (void *)0x1f); // -17
+       mtree_test_insert(mt, 2, (void *)0x5); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 8, (void *)0x11); // -17
+       mtree_test_load(mt, 2); // (nil)
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_store(mt , 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 5, (void *)0xb); // 0
+       mtree_test_erase(mt, 1); // 0x5
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 4, (void *)0x9); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_erase(mt, 1); // 0x3
+       mtree_test_insert(mt, 2, (void *)0x5); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_erase(mt, 3); // 0x3
+       mtree_test_insert(mt, 22, (void *)0x2d); // 0
+       mtree_test_insert(mt, 15, (void *)0x1f); // -17
+       mtree_test_insert(mt, 2, (void *)0x5); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 8, (void *)0x11); // -17
+       mtree_test_insert(mt, 12, (void *)0x19); // -17
+       mtree_test_erase(mt, 1); // (nil)
+       mtree_test_store_range(mt, 4, 62, (void *)0x9); // 0
+       mtree_test_erase(mt, 62); // 0x3
+       mtree_test_store_range(mt, 1, 0, (void *)0x3); // 0
+       mtree_test_insert(mt, 11, (void *)0x17); // -22
+       mtree_test_insert(mt, 3, (void *)0x7); // 0
+       mtree_test_insert(mt, 3, (void *)0x7); // 0
+       mtree_test_store(mt , 62, (void *)0x7d); // -17
+       mtree_test_erase(mt, 62); // 0x9
+       mtree_test_store_range(mt, 1, 15, (void *)0x3); // 0
+       mtree_test_erase(mt, 1); // 0x7d
+       mtree_test_insert(mt, 22, (void *)0x2d); // 0
+       mtree_test_insert(mt, 12, (void *)0x19); // 0
+       mtree_test_erase(mt, 1); // 0x3
+       mtree_test_insert(mt, 3, (void *)0x7); // 0
+       mtree_test_store(mt , 62, (void *)0x7d); // 0
+       mtree_test_erase(mt, 62); // (nil)
+       mtree_test_insert(mt, 122, (void *)0xf5); // 0
+       mtree_test_store(mt , 3, (void *)0x7); // 0
+       mtree_test_insert(mt, 0, (void *)0x1); // 0
+       mtree_test_store_range(mt, 0, 1, (void *)0x1); // 0
+       mtree_test_insert(mt, 85, (void *)0xab); // 0
+       mtree_test_insert(mt, 72, (void *)0x91); // 0
+       mtree_test_insert(mt, 81, (void *)0xa3); // 0
+       mtree_test_insert(mt, 726, (void *)0x5ad); // 0
+       mtree_test_insert(mt, 0, (void *)0x1); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_store(mt , 51, (void *)0x67); // -17
+       mtree_test_insert(mt, 611, (void *)0x4c7); // 0
+       mtree_test_insert(mt, 485, (void *)0x3cb); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_erase(mt, 1); // 0x7d
+       mtree_test_insert(mt, 0, (void *)0x1); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_insert_range(mt, 26, 1, (void *)0x35); // 0
+       mtree_test_load(mt, 1); // 0x1
+       mtree_test_store_range(mt, 1, 22, (void *)0x3); // -22
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_erase(mt, 1); // 0x3
+       mtree_test_load(mt, 53); // 0x3
+       mtree_test_load(mt, 1); // 0xab
+       mtree_test_store_range(mt, 1, 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 222, (void *)0x1bd); // 0
+       mtree_test_insert(mt, 485, (void *)0x3cb); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_erase(mt, 1); // (nil)
+       mtree_test_load(mt, 0); // 0x3
+       mtree_test_insert(mt, 21, (void *)0x2b); // -17
+       mtree_test_insert(mt, 3, (void *)0x7); // 0
+       mtree_test_store(mt , 621, (void *)0x4db); // 0
+       mtree_test_insert(mt, 0, (void *)0x1); // 0
+       mtree_test_erase(mt, 5); // 0x1
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_store(mt , 62, (void *)0x7d); // 0
+       mtree_test_erase(mt, 62); // (nil)
+       mtree_test_store_range(mt, 1, 0, (void *)0x3); // 0
+       mtree_test_insert(mt, 22, (void *)0x2d); // -22
+       mtree_test_insert(mt, 12, (void *)0x19); // 0
+       mtree_test_erase(mt, 1); // 0x7d
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_store_range(mt, 4, 62, (void *)0x9); // 0
+       mtree_test_erase(mt, 62); // 0x3
+       mtree_test_erase(mt, 1); // 0x9
+       mtree_test_load(mt, 1); // 0x3
+       mtree_test_store_range(mt, 1, 22, (void *)0x3); // 0
+       mtree_test_insert(mt, 1, (void *)0x3); // 0
+       mtree_test_erase(mt, 1); // (nil)
+       mtree_test_load(mt, 53); // 0x3
+       mtree_test_load(mt, 1); // (nil)
+       mtree_test_store_range(mt, 1, 1, (void *)0x3); // -17
+       mtree_test_insert(mt, 222, (void *)0x1bd); // 0
+       mtree_test_insert(mt, 485, (void *)0x3cb); // -17
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_erase(mt, 1); // (nil)
+       mtree_test_insert(mt, 1, (void *)0x3); // -17
+       mtree_test_load(mt, 0); // 0x3
+       mtree_test_load(mt, 0); // 0x1
+       mtree_destroy(mt);
 
 }