This patch gives a more detailed list of objects that are not freed in case of error before the module exits. Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> --- drivers/infiniband/sw/rxe/rxe_pool.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/sw/rxe/rxe_pool.c b/drivers/infiniband/sw/rxe/rxe_pool.c index cb812bd969c6..3249c2741491 100644 --- a/drivers/infiniband/sw/rxe/rxe_pool.c +++ b/drivers/infiniband/sw/rxe/rxe_pool.c @@ -113,7 +113,17 @@ void rxe_pool_init(struct rxe_dev *rxe, struct rxe_pool *pool, void rxe_pool_cleanup(struct rxe_pool *pool) { - WARN_ON(!xa_empty(&pool->xa)); + unsigned long index; + struct rxe_pool_elem *elem; + + xa_lock(&pool->xa); + xa_for_each(&pool->xa, index, elem) { + rxe_err_dev(pool->rxe, "%s#%d: Leaked", pool->name, + elem->index); + } + xa_unlock(&pool->xa); + + xa_destroy(&pool->xa); } int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem, -- 2.39.2