diff --git a/tools/testing/radix-tree/linux/types.h b/tools/testing/radix-tree/linux/types.h index faa0b6f..8491d89 100644 --- a/tools/testing/radix-tree/linux/types.h +++ b/tools/testing/radix-tree/linux/types.h @@ -6,8 +6,6 @@ #define __rcu #define __read_mostly -#define BITS_PER_LONG (sizeof(long) * 8) - static inline void INIT_LIST_HEAD(struct list_head *list) { list->next = list; diff --git a/tools/testing/radix-tree/multiorder.c b/tools/testing/radix-tree/multiorder.c index f14252d..2dea001 100644 --- a/tools/testing/radix-tree/multiorder.c +++ b/tools/testing/radix-tree/multiorder.c @@ -123,6 +123,9 @@ static void multiorder_check(unsigned long index, int order) unsigned long i; unsigned long min = index & ~((1UL << order) - 1); unsigned long max = min + (1UL << order); + void **slot; + static void *entry = (void *)(0xA0 | RADIX_TREE_EXCEPTIONAL_ENTRY); + struct item *item; RADIX_TREE(tree, GFP_KERNEL); printf("Multiorder index %ld, order %d\n", index, order); @@ -130,7 +133,7 @@ static void multiorder_check(unsigned long index, int order) assert(item_insert_order(&tree, index, order) == 0); for (i = min; i < max; i++) { - struct item *item = item_lookup(&tree, i); + item = item_lookup(&tree, i); assert(item != 0); assert(item->index == index); } @@ -138,11 +141,16 @@ static void multiorder_check(unsigned long index, int order) item_check_absent(&tree, i); for (i = max; i < 2*max; i++) item_check_absent(&tree, i); - for (i = min; i < max; i++) { - static void *entry = (void *) - (0xA0 | RADIX_TREE_EXCEPTIONAL_ENTRY); + for (i = min; i < max; i++) assert(radix_tree_insert(&tree, i, entry) == -EEXIST); + + slot = radix_tree_lookup_slot(&tree, index); + radix_tree_replace_slot(slot, entry); + for (i = min; i < max; i++) { + struct item *item2 = item_lookup(&tree, i); + assert(item2 == entry); } + radix_tree_replace_slot(slot, item); assert(item_delete(&tree, index) != 0);