Merge tag 'ext4_for_linus_stable2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[platform/kernel/linux-starfive.git] / lib / maple_tree.c
index f23f11d..df352f6 100644 (file)
@@ -1351,6 +1351,7 @@ static inline struct maple_enode *mas_start(struct ma_state *mas)
                root = mas_root(mas);
                /* Tree with nodes */
                if (likely(xa_is_node(root))) {
+                       mas->depth = 1;
                        mas->node = mte_safe_root(root);
                        return NULL;
                }
@@ -3602,8 +3603,7 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas,
        node = mas_pop_node(wr_mas->mas);
        node->parent = mas_mn(wr_mas->mas)->parent;
        wr_mas->mas->node = mt_mk_node(node, b_type);
-       mab_mas_cp(b_node, 0, b_end, wr_mas->mas, true);
-
+       mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false);
        mas_replace(wr_mas->mas, false);
 reuse_node:
        mas_update_gap(wr_mas->mas);
@@ -3727,7 +3727,6 @@ static bool mas_is_span_wr(struct ma_wr_state *wr_mas)
 
 static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas)
 {
-       wr_mas->mas->depth++;
        wr_mas->type = mte_node_type(wr_mas->mas->node);
        mas_wr_node_walk(wr_mas);
        wr_mas->slots = ma_slots(wr_mas->node, wr_mas->type);
@@ -3739,6 +3738,7 @@ static inline void mas_wr_walk_traverse(struct ma_wr_state *wr_mas)
        wr_mas->mas->min = wr_mas->r_min;
        wr_mas->mas->node = wr_mas->content;
        wr_mas->mas->offset = 0;
+       wr_mas->mas->depth++;
 }
 /*
  * mas_wr_walk() - Walk the tree for a write.