]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
fix cp_leaf_init and r_wr_mas.end_piv on spanning store
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 17 Sep 2025 20:11:02 +0000 (16:11 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 17 Sep 2025 20:11:02 +0000 (16:11 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index 295fee1456ea02e053cfe9a4c81451ab91a58e7c..3cecf62c8ed7e479935d61aa980198b324f282ae 100644 (file)
@@ -3051,14 +3051,14 @@ static inline void cp_leaf_init(struct maple_copy *cp,
        else
                cp->gap[end] = mas->last - mas->index + 1;
 
-       if (r_wr_mas->r_max > mas->last) {
+       if (r_wr_mas->end_piv > mas->last) {
                end++;
                cp->slot[end] = r_wr_mas->slots[r_wr_mas->offset_end];
-               cp->pivot[end] = r_wr_mas->r_max;
+               cp->pivot[end] = r_wr_mas->end_piv;
                if (r_wr_mas->content)
                        cp->gap[end] = 0;
                else
-                       cp->gap[end] = r_wr_mas->r_max - mas->last + 1;
+                       cp->gap[end] = r_wr_mas->end_piv - mas->last + 1;
        }
 
        cp->min = l_wr_mas->r_min;
@@ -4234,6 +4234,7 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
        r_mas.index = r_mas.last;
        mas_wr_walk_index(&r_wr_mas);
        r_mas.last = r_mas.index = mas->last;
+       r_wr_mas.end_piv = r_wr_mas.r_max;
        BUG_ON(!r_mas.end);
 
        /* Set up left side. */