}
                vma_start_write(next);
                mas_set_range(&mas_detach, next->vm_start, next->vm_end - 1);
-               if (mas_store_gfp(&mas_detach, next, GFP_KERNEL))
+               error = mas_store_gfp(&mas_detach, next, GFP_KERNEL);
+               if (error)
                        goto munmap_gather_failed;
                vma_mark_detached(next, true);
                if (next->vm_flags & VM_LOCKED)
                BUG_ON(count != test_count);
        }
 #endif
-       /* Point of no return */
-       error = -ENOMEM;
        vma_iter_set(vmi, start);
-       if (vma_iter_clear_gfp(vmi, start, end, GFP_KERNEL))
+       error = vma_iter_clear_gfp(vmi, start, end, GFP_KERNEL);
+       if (error)
                goto clear_tree_failed;
 
+       /* Point of no return */
        mm->locked_vm -= locked_vm;
        mm->map_count -= count;
        /*