]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
maple_tree: use ma_dead_node() in mte_dead_node()
authorI Hsin Cheng <richard120310@gmail.com>
Tue, 11 Feb 2025 07:18:50 +0000 (15:18 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 17 Mar 2025 05:06:13 +0000 (22:06 -0700)
Utilize ma_dead_node() in mte_dead_node().  It can prevent decoding the
maple enode for a second time.  Use the "node" to find parent for
comparison.

Link: https://lkml.kernel.org/r/20250211071850.330632-1-richard120310@gmail.com
Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw>
Cc: Shuah khan <skhan@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/maple_tree.c

index 42c65974a56c514fcce2be2d335302f69f39f716..60356ccb11ce1bc40be1db8357a6e923b2f8424e 100644 (file)
@@ -584,13 +584,10 @@ static __always_inline bool ma_dead_node(const struct maple_node *node)
  */
 static __always_inline bool mte_dead_node(const struct maple_enode *enode)
 {
-       struct maple_node *parent, *node;
+       struct maple_node *node;
 
        node = mte_to_node(enode);
-       /* Do not reorder reads from the node prior to the parent check */
-       smp_rmb();
-       parent = mte_parent(enode);
-       return (parent == node);
+       return ma_dead_node(node);
 }
 
 /*