]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/rxe: fix xa_alloc_cycle() error return value check again
authorDongliang Mu <mudongliangabcd@gmail.com>
Thu, 9 Jun 2022 07:06:56 +0000 (15:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:41:37 +0000 (14:41 +0200)
[ Upstream commit 1a685940e6200e9def6e34bbaa19dd31dc5aeaf8 ]

Currently rxe_alloc checks ret to indicate error, but 1 is also a valid
return and just indicates that the allocation succeeded with a wrap.

Fix this by modifying the check to be < 0.

Link: https://lore.kernel.org/r/20220609070656.1446121-1-dzm91@hust.edu.cn
Fixes: 3225717f6dfa ("RDMA/rxe: Replace red-black trees by xarrays")
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Reviewed-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/sw/rxe/rxe_pool.c

index 87066d04ed186e18573c3d07140f279eee6bf4ae..69db289445679476105d9be0eb5d0c8ff1a06b56 100644 (file)
@@ -140,7 +140,7 @@ void *rxe_alloc(struct rxe_pool *pool)
 
        err = xa_alloc_cyclic(&pool->xa, &elem->index, elem, pool->limit,
                              &pool->next, GFP_KERNEL);
-       if (err)
+       if (err < 0)
                goto err_free;
 
        return obj;
@@ -168,7 +168,7 @@ int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem)
 
        err = xa_alloc_cyclic(&pool->xa, &elem->index, elem, pool->limit,
                              &pool->next, GFP_KERNEL);
-       if (err)
+       if (err < 0)
                goto err_cnt;
 
        return 0;