Commit e30bb300 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Jason Gunthorpe

RDMA/rxe: Use 'bitmap_zalloc()' when applicable

'index.table' is a bitmap. So use 'bitmap_zalloc()' to simplify code,
improve the semantic and avoid some open-coded arithmetic in allocator
arguments.

Using 'bitmap_zalloc()' also allows the removal of a now useless
'bitmap_zero()'.

Also change the corresponding 'kfree()' into 'bitmap_free()' to keep
consistency.

Link: https://lore.kernel.org/r/4a3e11d45865678d570333d1962820eb13168848.1635093628.git.christophe.jaillet@wanadoo.frSigned-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 69d1ed59
...@@ -96,7 +96,6 @@ static inline const char *pool_name(struct rxe_pool *pool) ...@@ -96,7 +96,6 @@ static inline const char *pool_name(struct rxe_pool *pool)
static int rxe_pool_init_index(struct rxe_pool *pool, u32 max, u32 min) static int rxe_pool_init_index(struct rxe_pool *pool, u32 max, u32 min)
{ {
int err = 0; int err = 0;
size_t size;
if ((max - min + 1) < pool->max_elem) { if ((max - min + 1) < pool->max_elem) {
pr_warn("not enough indices for max_elem\n"); pr_warn("not enough indices for max_elem\n");
...@@ -107,15 +106,12 @@ static int rxe_pool_init_index(struct rxe_pool *pool, u32 max, u32 min) ...@@ -107,15 +106,12 @@ static int rxe_pool_init_index(struct rxe_pool *pool, u32 max, u32 min)
pool->index.max_index = max; pool->index.max_index = max;
pool->index.min_index = min; pool->index.min_index = min;
size = BITS_TO_LONGS(max - min + 1) * sizeof(long); pool->index.table = bitmap_zalloc(max - min + 1, GFP_KERNEL);
pool->index.table = kmalloc(size, GFP_KERNEL);
if (!pool->index.table) { if (!pool->index.table) {
err = -ENOMEM; err = -ENOMEM;
goto out; goto out;
} }
bitmap_zero(pool->index.table, max - min + 1);
out: out:
return err; return err;
} }
...@@ -167,7 +163,7 @@ void rxe_pool_cleanup(struct rxe_pool *pool) ...@@ -167,7 +163,7 @@ void rxe_pool_cleanup(struct rxe_pool *pool)
pr_warn("%s pool destroyed with unfree'd elem\n", pr_warn("%s pool destroyed with unfree'd elem\n",
pool_name(pool)); pool_name(pool));
kfree(pool->index.table); bitmap_free(pool->index.table);
} }
static u32 alloc_index(struct rxe_pool *pool) static u32 alloc_index(struct rxe_pool *pool)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment