Signed-off-by: Flora Cui <Flora.Cui@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
        spin_unlock(&mgr->lock);
 
        node = kzalloc(sizeof(*node), GFP_KERNEL);
-       if (!node)
-               return -ENOMEM;
+       if (!node) {
+               r = -ENOMEM;
+               goto err_out;
+       }
 
        node->start = AMDGPU_BO_INVALID_OFFSET;
        node->size = mem->num_pages;
                if (unlikely(r)) {
                        kfree(node);
                        mem->mm_node = NULL;
+                       r = 0;
+                       goto err_out;
                }
        } else {
                mem->start = node->start;
        }
 
        return 0;
+err_out:
+       spin_lock(&mgr->lock);
+       mgr->available += mem->num_pages;
+       spin_unlock(&mgr->lock);
+
+       return r;
 }
 
 /**