]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mas_walk changes
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 3 Apr 2023 15:59:40 +0000 (11:59 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 6 Apr 2023 13:18:09 +0000 (09:18 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
lib/maple_tree.c

index b5428f65a59cdedebed87afcd963a8a85e019309..d76e0bb4366ac0d82b8f0f5c5e97e18286362fa0 100644 (file)
@@ -5124,24 +5124,25 @@ void *mas_walk(struct ma_state *mas)
 {
        void *entry;
 
+       if (mas_is_none(mas) || mas_is_paused(mas))
+               mas->node = MAS_START;
 retry:
        entry = mas_state_walk(mas);
-       if (mas_is_start(mas))
+       if (mas_is_start(mas)) {
                goto retry;
-
-       if (mas_is_ptr(mas)) {
+       } else if (mas_is_none(mas)) {
+               mas->index = 0;
+               mas->last = ULONG_MAX;
+       } else if (mas_is_ptr(mas)) {
                if (!mas->index) {
                        mas->last = 0;
-               } else {
-                       mas->index = 1;
-                       mas->last = ULONG_MAX;
+                       return mas_root(mas);
                }
-               return entry;
-       }
 
-       if (mas_is_none(mas)) {
-               mas->index = 0;
+               mas->index = 1;
                mas->last = ULONG_MAX;
+               mas->node = MAS_NONE;
+               return NULL;
        }
 
        return entry;