]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wip
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 13 May 2025 14:41:04 +0000 (10:41 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 13 May 2025 14:41:04 +0000 (10:41 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index d19df086a2384272d7955cc50c1bef79bedf76fd..8a59186f16401bf6b1b0148f867a40a4546d5db1 100644 (file)
@@ -4978,7 +4978,7 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
        printk("\nwr_mas %lu\n", mas->min);
 
 
-       printk("At %p and %p\n", mas_mn(mas), mas_mn(&r_mas));
+       printk("At %p and r_mas %p\n", mas_mn(mas), mas_mn(&r_mas));
        printk("r_mas: end piv is %lu max %lu\n", r_wr_mas.end_piv, r_mas.max);
 
        wr_mas->end_piv = r_wr_mas.end_piv;
@@ -5126,9 +5126,12 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
                s = d = 0;
                printk("START\n");
                do {
+                       unsigned char max = limits[d] + 1 - sd.offset;
+
                        printk("limits is %u/%u\n", limits[d], sd.offset);
                        printk("pass dst %p\n", &dst[d]);
-                       spanning_append(&sd, src[s], &dst[d], limits[d] + 1 - sd.offset);
+                       spanning_append(&sd, src[s], &dst[d], max);
+                       /* destination full */
                        if (sd.offset > limits[d]) {
                                /* Check NULL.. */
                                if (ma_is_leaf(src[s]->type)
@@ -5144,6 +5147,7 @@ static void mas_wr_spanning_store(struct ma_wr_state *wr_mas)
                                printk("dst ++\n");
                        }
 
+                       /* Source exhausted */
                        if (src[s]->offset > src[s]->end) {
                                src[s]->offset = 0;
                                s++;