From 5b04b0026815a1b21bd3702bd6123407fb1e781a Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Fri, 29 Jan 2021 10:11:11 -0500 Subject: [PATCH] maple_tree: Fix atomics Signed-off-by: Liam R. Howlett --- include/linux/maple_tree.h | 21 +++++++++++---------- lib/maple_tree.c | 5 +++-- tools/testing/radix-tree/linux/maple_tree.h | 4 ++++ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h index 142bdea3bfbc..de8e1a2b0d82 100644 --- a/include/linux/maple_tree.h +++ b/include/linux/maple_tree.h @@ -257,8 +257,8 @@ void *mas_prev(struct ma_state *mas, unsigned long min); void *mas_next(struct ma_state *mas, unsigned long max); /* Finds a sufficient hole */ -int mas_get_empty_area(struct ma_state *mas, unsigned long min, - unsigned long max, unsigned long size); +int mas_empty_area(struct ma_state *mas, unsigned long min, unsigned long max, + unsigned long size); /* Checks if a mas has not found anything */ static inline bool mas_is_none(struct ma_state *mas) @@ -271,8 +271,8 @@ void mas_dup_store(struct ma_state *mas, void *entry); /* This finds an empty area from the highest address to the lowest. * AKA "Topdown" version, */ -int mas_get_empty_area_rev(struct ma_state *mas, unsigned long min, - unsigned long max, unsigned long size); +int mas_empty_area_rev(struct ma_state *mas, unsigned long min, + unsigned long max, unsigned long size); /** * mas_reset() - Reset a Maple Tree operation state. * @mas: Maple Tree operation state. @@ -415,21 +415,22 @@ void *_mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max, #ifdef CONFIG_DEBUG_MAPLE_TREE -extern unsigned int maple_tree_tests_run; -extern unsigned int maple_tree_tests_passed; +extern atomic_t maple_tree_tests_run; +extern atomic_t maple_tree_tests_passed; void mt_dump(const struct maple_tree *mt); #define MT_BUG_ON(tree, x) do { \ - uatomic_inc(&maple_tree_tests_run); \ + atomic_inc(&maple_tree_tests_run); \ if (x) { \ pr_info("BUG at %s:%d (%u)\n", \ __func__, __LINE__, x); \ mt_dump(tree); \ - pr_info("Pass: %u Run:%u\n", maple_tree_tests_passed, \ - maple_tree_tests_run); \ + pr_info("Pass: %u Run:%u\n", \ + atomic_read(&maple_tree_tests_passed), \ + atomic_read(&maple_tree_tests_run)); \ dump_stack(); \ } else { \ - uatomic_inc(&maple_tree_tests_passed); \ + atomic_inc(&maple_tree_tests_passed); \ } \ } while (0) #else diff --git a/lib/maple_tree.c b/lib/maple_tree.c index b529bff1c1ad..36655edced52 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5816,9 +5816,9 @@ void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max) EXPORT_SYMBOL(mt_find); #ifdef CONFIG_DEBUG_MAPLE_TREE -unsigned int maple_tree_tests_run; +atomic_t maple_tree_tests_run; EXPORT_SYMBOL_GPL(maple_tree_tests_run); -unsigned int maple_tree_tests_passed; +atomic_t maple_tree_tests_passed; EXPORT_SYMBOL_GPL(maple_tree_tests_passed); #ifndef __KERNEL__ @@ -5833,6 +5833,7 @@ unsigned long mt_get_alloc_size(void) { return kmem_cache_get_alloc(maple_node_cache); } + #define MA_PTR "%p" #else // __KERNEL__ is defined. #define MA_PTR "%px" diff --git a/tools/testing/radix-tree/linux/maple_tree.h b/tools/testing/radix-tree/linux/maple_tree.h index 993ac3c3026f..89f561e68841 100644 --- a/tools/testing/radix-tree/linux/maple_tree.h +++ b/tools/testing/radix-tree/linux/maple_tree.h @@ -1,3 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ +#define atomic_t int32_t #include "../../../../include/linux/maple_tree.h" +#define atomic_inc(x) uatomic_inc(x) +#define atomic_read(x) uatomic_read(x) +#define atomic_set(x, y) do {} while(0) #define U8_MAX UCHAR_MAX -- 2.50.1