RDMA/rxe: Return the correct errno
authorZhu Yanjun <yanjun.zhu@linux.dev>
Mon, 8 Apr 2024 14:21:42 +0000 (16:21 +0200)
committerLeon Romanovsky <leon@kernel.org>
Thu, 11 Apr 2024 11:47:26 +0000 (14:47 +0300)
In the function __rxe_add_to_pool, the function xa_alloc_cyclic is
called. The return value of the function xa_alloc_cyclic is as below:
"
 Return: 0 if the allocation succeeded without wrapping.  1 if the
 allocation succeeded after wrapping, -ENOMEM if memory could not be
 allocated or -EBUSY if there are no free entries in @limit.
"
But now the function __rxe_add_to_pool only returns -EINVAL. All the
returned error value should be returned to the caller.

Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Link: https://lore.kernel.org/r/20240408142142.792413-1-yanjun.zhu@linux.dev
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/rxe/rxe_pool.c

index 6215c6de3a8408b9b9a304a1e1efa07f9d1a3630..67567d62195e865023ad71dfde58bf078958e617 100644 (file)
@@ -119,7 +119,7 @@ void rxe_pool_cleanup(struct rxe_pool *pool)
 int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem,
                                bool sleepable)
 {
-       int err;
+       int err = -EINVAL;
        gfp_t gfp_flags;
 
        if (atomic_inc_return(&pool->num_elem) > pool->max_elem)
@@ -147,7 +147,7 @@ int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem,
 
 err_cnt:
        atomic_dec(&pool->num_elem);
-       return -EINVAL;
+       return err;
 }
 
 void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)