]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Use mas_data_end in mas_next_sibling()
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Mon, 7 Dec 2020 20:59:37 +0000 (15:59 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 5 Jan 2021 17:33:35 +0000 (12:33 -0500)
This should be faster for allocation ranges.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/maple_tree.c

index c5cecbec4a66be4e58a38abb726586450f56f845..2b012ec9b1b8a268ac889fa7a8bb96dd05ce07c7 100644 (file)
@@ -1795,6 +1795,7 @@ static inline bool mas_prev_sibling(struct ma_state *mas)
  */
 static inline bool mas_next_sibling(struct ma_state *mas)
 {
+       unsigned char end;
        MA_STATE(parent, mas->tree, mas->index, mas->last);
 
        if (mte_is_root(mas->node))
@@ -1802,9 +1803,9 @@ static inline bool mas_next_sibling(struct ma_state *mas)
 
        mas_dup_state(&parent, mas);
        mas_ascend(&parent);
+       end = mas_data_end(&parent);
        parent.offset = mte_parent_slot(mas->node) + 1;
-
-       if (parent.offset == mt_slot_count(parent.node))
+       if (parent.offset > end)
                return false;
 
        if (!mas_get_slot(&parent, parent.offset))