| From: Wei Yang <richard.weiyang@gmail.com> |
| Subject: maple_tree: not necessary to check index/last again |
| Date: Thu, 31 Oct 2024 23:16:25 +0000 |
| |
| Before calling mas_new_root(), the range has been checked. |
| |
| Link: https://lkml.kernel.org/r/20241031231627.14316-4-richard.weiyang@gmail.com |
| Signed-off-by: Wei Yang <richard.weiyang@gmail.com> |
| Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com> |
| Cc: Liam R. Howlett <Liam.Howlett@Oracle.com> |
| Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com> |
| Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| lib/maple_tree.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/lib/maple_tree.c~maple_tree-not-necessary-to-check-index-last-again |
| +++ a/lib/maple_tree.c |
| @@ -3670,7 +3670,9 @@ static inline void mas_new_root(struct m |
| void __rcu **slots; |
| unsigned long *pivots; |
| |
| - if (!entry && !mas->index && mas->last == ULONG_MAX) { |
| + WARN_ON_ONCE(mas->index || mas->last != ULONG_MAX); |
| + |
| + if (!entry) { |
| mas->depth = 0; |
| mas_set_height(mas); |
| rcu_assign_pointer(mas->tree->ma_root, entry); |
| _ |