]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Fix mas_reuse_node() zeroing again.
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 3 Mar 2022 16:50:23 +0000 (11:50 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 8 Mar 2022 18:19:16 +0000 (13:19 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index bb7fa9727378b169678d7de6fa2996721c7c6417..221f1c5b6ef7d506e8ecf30fcee35c687d028910 100644 (file)
@@ -3435,22 +3435,14 @@ static inline bool mas_reuse_node(struct ma_wr_state *wr_mas,
        if (mt_in_rcu(wr_mas->mas->tree))
                return false;
 
-       mab_mas_cp(bn, 0, bn->b_end, wr_mas->mas, false);
        if (end > bn->b_end) {
-               char clear = mt_slots[wr_mas->type] - bn->b_end - 2;
-
-               if (bn->pivot[bn->b_end] != wr_mas->mas->max)
-                       clear++;
-
-               /* Zero end of node. */
-               if (clear > 0) {
-                       memset(wr_mas->slots + bn->b_end+1, 0,
+                       int clear = mt_slots[wr_mas->type] - bn->b_end;
+                       memset(wr_mas->slots + bn->b_end, 0,
+                              sizeof(void *) * clear--);
+                       memset(wr_mas->pivots + bn->b_end, 0,
                               sizeof(void *) * clear);
-                       memset(wr_mas->pivots + bn->b_end+1, 0,
-                              sizeof(unsigned long *) * clear);
-               }
        }
-
+       mab_mas_cp(bn, 0, bn->b_end, wr_mas->mas, false);
        return true;
 }