From: Liam R. Howlett Date: Tue, 6 May 2025 16:49:44 +0000 (-0400) Subject: Fix mns_assemble() undefined behaviour with clang X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d2271ff912b603808df09fa0ae146f4411897367;p=users%2Fjedix%2Flinux-maple.git Fix mns_assemble() undefined behaviour with clang Signed-off-by: Liam R. Howlett --- diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 3f4bfefd3376..f462aa159f9b 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3551,7 +3551,7 @@ void mns_assemble(struct ma_node_state *states, unsigned char len) if (ns->use_part) { s_slots = ns->part->slots + ns->start; s_piv = ns->part->pivots + ns->start; - s_gap = ns->part->gaps + ns->start; + s_gap = ns->part->gaps; max = s_piv[size - 1]; if (!ns->part->leaf) { int j = 0; @@ -3568,7 +3568,7 @@ void mns_assemble(struct ma_node_state *states, unsigned char len) } else { s_slots = ns->info->slots + ns->start; s_piv = ns->info->pivots + ns->start; - s_gap = ns->info->gaps + ns->start; + s_gap = ns->info->gaps; if (ns->start + size > mt_pivots[ns->info->type]) { piv_overflow = 1; max = ns->info->max; @@ -3580,6 +3580,7 @@ void mns_assemble(struct ma_node_state *states, unsigned char len) memcpy(d_slots, s_slots, size * sizeof(void __rcu *)); if (ns->dst->gaps) { d_gap = ns->dst->gaps + ns->dst->offset; + s_gap += ns->start; memcpy(d_gap, s_gap, size * sizeof(unsigned long)); }