summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWei Yang <richard.weiyang@gmail.com>2025-06-24 15:18:40 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-07-17 18:32:09 +0200
commita1802098ef78a0d1c6c46c08f44b8a182a261490 (patch)
tree1785d442f56a917fd877e524745929f9c31be0b3 /lib
parent7837fb8e97fc5b10461fc95278ff535697f52efc (diff)
downloadlinux-a1802098ef78a0d1c6c46c08f44b8a182a261490.tar.gz
linux-a1802098ef78a0d1c6c46c08f44b8a182a261490.tar.bz2
linux-a1802098ef78a0d1c6c46c08f44b8a182a261490.zip
maple_tree: fix mt_destroy_walk() on root leaf node
commit ea9b77f98d94c4d5c1bd1ac1db078f78b40e8bf5 upstream. On destroy, we should set each node dead. But current code miss this when the maple tree has only the root node. The reason is mt_destroy_walk() leverage mte_destroy_descend() to set node dead, but this is skipped since the only root node is a leaf. Fixes this by setting the node dead if it is a leaf. Link: https://lore.kernel.org/all/20250407231354.11771-1-richard.weiyang@gmail.com/ Link: https://lkml.kernel.org/r/20250624191841.64682-1-Liam.Howlett@oracle.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Wei Yang <richard.weiyang@gmail.com> Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Reviewed-by: Dev Jain <dev.jain@arm.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/maple_tree.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index 63037ea4394f..95fe42835f08 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -5619,6 +5619,7 @@ static void mt_destroy_walk(struct maple_enode *enode, struct maple_tree *mt,
struct maple_enode *start;
if (mte_is_leaf(enode)) {
+ mte_set_node_dead(enode);
node->type = mte_node_type(enode);
goto free_leaf;
}