On 8/1/22 02:38, William Kucharski wrote: > The current code will report an error if xa_alloc_cyclic() returns > non-zero, but it will return 1 if it wrapped indices before successfully > allocating an entry. > > An error should only be reported if the call actually failed (denoted by > a return value < 0.) > > Fixes: 3225717f6dfa2 ("RDMA/rxe: Replace red-black trees by xarrays") > Signed-off-by: William Kucharski <william.kucharski@xxxxxxxxxx> > --- > drivers/infiniband/sw/rxe/rxe_pool.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/sw/rxe/rxe_pool.c b/drivers/infiniband/sw/rxe/rxe_pool.c > index 19b14826385b..e9f3bbd8d605 100644 > --- a/drivers/infiniband/sw/rxe/rxe_pool.c > +++ b/drivers/infiniband/sw/rxe/rxe_pool.c > @@ -139,7 +139,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; > @@ -167,7 +167,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; We fixed this a while back but not sure what happened. In any case this is absolutely correct. You can add Reviewed-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> Bob