From: Liam R. Howlett <Liam.Howlett@oracle.com> Date: Wed, 2 Mar 2022 16:23:58 +0000 (-0500) Subject: test_maple_tree: Add fuzzer test 2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=994ba503570e89325d06dc25cbb3b35e8ef9e23f;p=users%2Fjedix%2Flinux-maple.git test_maple_tree: Add fuzzer test 2 Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> --- diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index c2ffc360b822..3647a6f98aa2 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -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);