]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Change mas_get_slot to only rcu_dereference when necessary
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 8 Sep 2020 17:59:56 +0000 (13:59 -0400)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 30 Oct 2020 19:11:27 +0000 (15:11 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/maple_tree.c

index 578772401d3388db9464b4a621ffb26c8527f1ae..5066e5460471054d5010da878a5a4578c4165fd1 100644 (file)
@@ -588,8 +588,11 @@ static inline struct maple_enode *mas_get_slot(struct ma_state *mas,
 {
        void **slots = ma_get_slots(mte_to_node(mas->node),
                                    mte_node_type(mas->node));
-       return rcu_dereference_check(slots[offset],
-                               lockdep_is_held(mas->tree->ma_lock));
+       if (mt_in_rcu(mas->tree))
+               return rcu_dereference_check(slots[offset],
+                                       lockdep_is_held(mas->tree->ma_lock));
+       else
+               return slots[offset];
 }
 
 /*