maple_tree: fix potential rcu issue
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 20 Jan 2023 16:26:03 +0000 (11:26 -0500)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 10 Feb 2023 00:51:30 +0000 (16:51 -0800)
Ensure the node isn't dead after reading the node end.

Link: https://lkml.kernel.org/r/20230120162650.984577-3-Liam.Howlett@oracle.com
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/maple_tree.c

index 1c5d3b6..7e3cf5b 100644 (file)
@@ -4655,13 +4655,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;