maple_tree: fix potential rcu issue
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 11 Apr 2023 15:10:43 +0000 (11:10 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Apr 2023 14:55:38 +0000 (16:55 +0200)
commit 65be6f058b0eba98dc6c6f197ea9f62c9b6a519f upstream.

Ensure the node isn't dead after reading the node end.

Link: https://lkml.kernel.org/r/20230120162650.984577-3-Liam.Howlett@oracle.com
Cc: <Stable@vger.kernel.org>
Fixes: 54a611b60590 ("Maple Tree: add new data structure")
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
lib/maple_tree.c

index bf5eefde92b7fcbb50cb1994590f14f4aed1ff82..f8e1e85dd7a6590abf780c1eaa31bd07c8994651 100644 (file)
@@ -4650,13 +4650,13 @@ static inline void *mas_next_nentry(struct ma_state *mas,
        pivots = ma_pivots(node, type);
        slots = ma_slots(node, type);
        mas->index = mas_safe_min(mas, pivots, mas->offset);
+       count = ma_data_end(node, type, pivots, mas->max);
        if (ma_dead_node(node))
                return NULL;
 
        if (mas->index > max)
                return NULL;
 
-       count = ma_data_end(node, type, pivots, mas->max);
        if (mas->offset > count)
                return NULL;