]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Protect mas_prev_nentry() from dead nodes
authorLiam Howlett <Liam.Howlett@oracle.com>
Thu, 24 Nov 2022 15:50:21 +0000 (10:50 -0500)
committerLiam Howlett <Liam.Howlett@oracle.com>
Thu, 24 Nov 2022 21:07:24 +0000 (16:07 -0500)
Don't use the pivot array before checking if the node is dead.  This is
for safe use in rcu mode.

Signed-off-by: Liam Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index de6fb61bb63b29ddbe375d2c4e34ece593c53916..993ced44aad2e31f8cd0f3f657c6ef4075dc7b1e 100644 (file)
@@ -4859,6 +4859,11 @@ retry:
                goto retry;
        }
 
+       if (offset == mt_pivots[mt])
+               pivot = mas->max;
+       else
+               pivot = pivots[offset];
+
        while (offset && ((!mas_slot(mas, slots, offset) && pivot >= limit) ||
               !pivot))
                pivot = pivots[--offset];