]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
test_maple_tree: Add fuzzer test 2
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 2 Mar 2022 16:23:58 +0000 (11:23 -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 c2ffc360b82270c406f3ebc3d011ac715d000fe2..3647a6f98aa273ef4b000067b0708d8f7d73ee41 100644 (file)
@@ -43,6 +43,12 @@ static int mtree_test_store_range(struct maple_tree *mt, unsigned long start,
        return mtree_store_range(mt, start, end, ptr, GFP_KERNEL);
 }
 
+static int mtree_test_store(struct maple_tree *mt, unsigned long start,
+                               void *ptr)
+{
+       return mtree_test_store_range(mt, start, start, ptr);
+}
+
 static int mtree_test_insert_range(struct maple_tree *mt, unsigned long start,
                                unsigned long end, void *ptr)
 {
@@ -37125,15 +37131,39 @@ static noinline void check_fuzzer(struct maple_tree *mt)
         * Fixed by setting the correct limit in mast_cp_to_nodes() when the
         * entire right side is consumed.
         */
-       mtree_insert(mt, 88, (void*)0xb1, GFP_KERNEL); // 0
-       mtree_insert(mt, 84, (void*)0xa9, GFP_KERNEL); // 0
-       mtree_insert(mt, 2,  (void*)0x5, GFP_KERNEL); // 0
-       mtree_insert(mt, 4,  (void*)0x9, GFP_KERNEL); // 0
-       mtree_insert(mt, 14, (void*)0x1d, GFP_KERNEL); // 0
-       mtree_insert(mt, 7,  (void*)0xf, GFP_KERNEL); // 0
-       mtree_insert(mt, 12, (void*)0x19, GFP_KERNEL); // 0
-       mtree_insert(mt, 18, (void*)0x25, GFP_KERNEL); // 0
-       mtree_store_range(mt, 8, 18, (void*)0x11, GFP_KERNEL);
+       mtree_test_insert(mt, 88, (void*)0xb1); // 0
+       mtree_test_insert(mt, 84, (void*)0xa9); // 0
+       mtree_test_insert(mt, 2,  (void*)0x5); // 0
+       mtree_test_insert(mt, 4,  (void*)0x9); // 0
+       mtree_test_insert(mt, 14, (void*)0x1d); // 0
+       mtree_test_insert(mt, 7,  (void*)0xf); // 0
+       mtree_test_insert(mt, 12, (void*)0x19); // 0
+       mtree_test_insert(mt, 18, (void*)0x25); // 0
+       mtree_test_store_range(mt, 8, 18, (void*)0x11);
+       mtree_destroy(mt);
+
+
+       /*
+        * 2. Cause a spanning rebalance of two nodes in root.
+        * Fixed by setting mast->r->max correctly.
+        */
+       mt_init_flags(mt, 0);
+       mtree_test_store(mt, 87, (void*)0xaf); // 0
+       mtree_test_store(mt, 0, (void*)0x1); // 0
+       mtree_test_load(mt, 4); // (nil)
+       mtree_test_insert(mt, 4, (void*)0x9); // 0
+       mtree_test_store(mt, 8, (void*)0x11); // 0
+       mtree_test_store(mt, 44, (void*)0x59); // 0
+       mtree_test_store(mt, 68, (void*)0x89); // 0
+       mtree_test_store(mt, 2, (void*)0x5); // 0
+       mtree_test_insert(mt, 43, (void*)0x57); // 0
+       mtree_test_insert(mt, 24, (void*)0x31); // 0
+       mtree_test_insert(mt, 844, (void*)0x699); // 0
+       mtree_test_store(mt, 84, (void*)0xa9); // 0
+       mtree_test_store(mt, 4, (void*)0x9); // 0
+       mtree_test_erase(mt, 4); // 0x9
+       mtree_test_load(mt, 5); // (nil)
+       mtree_test_erase(mt, 0); // 0x1
 }
 
 static DEFINE_MTREE(tree);