mlx4_core: Remove kfree() in mlx4_mr_alloc() error flow
mlx4_mr_alloc() doesn't actually allocate mr (it just initializes the pointer that the caller passes in), so it shouldn't free it if an error occurs. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
4e8e6ee380
commit
0172e2e14c
1 changed files with 3 additions and 12 deletions
|
@ -255,10 +255,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access,
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
index = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap);
|
index = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap);
|
||||||
if (index == -1) {
|
if (index == -1)
|
||||||
err = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
mr->iova = iova;
|
mr->iova = iova;
|
||||||
mr->size = size;
|
mr->size = size;
|
||||||
|
@ -269,15 +267,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access,
|
||||||
|
|
||||||
err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
|
err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_index;
|
mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index);
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
err_index:
|
|
||||||
mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index);
|
|
||||||
|
|
||||||
err:
|
|
||||||
kfree(mr);
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mlx4_mr_alloc);
|
EXPORT_SYMBOL_GPL(mlx4_mr_alloc);
|
||||||
|
|
Loading…
Add table
Reference in a new issue