diff options
Diffstat (limited to 'drivers/net/mlx4/mr.c')
-rw-r--r-- | drivers/net/mlx4/mr.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c index d0808fa3ec82..5b87183e62ce 100644 --- a/drivers/net/mlx4/mr.c +++ b/drivers/net/mlx4/mr.c | |||
@@ -255,10 +255,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access, | |||
255 | int err; | 255 | int err; |
256 | 256 | ||
257 | index = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap); | 257 | index = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap); |
258 | if (index == -1) { | 258 | if (index == -1) |
259 | err = -ENOMEM; | 259 | return -ENOMEM; |
260 | goto err; | ||
261 | } | ||
262 | 260 | ||
263 | mr->iova = iova; | 261 | mr->iova = iova; |
264 | mr->size = size; | 262 | mr->size = size; |
@@ -269,15 +267,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access, | |||
269 | 267 | ||
270 | err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt); | 268 | err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt); |
271 | if (err) | 269 | if (err) |
272 | goto err_index; | 270 | mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index); |
273 | |||
274 | return 0; | ||
275 | |||
276 | err_index: | ||
277 | mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index); | ||
278 | 271 | ||
279 | err: | ||
280 | kfree(mr); | ||
281 | return err; | 272 | return err; |
282 | } | 273 | } |
283 | EXPORT_SYMBOL_GPL(mlx4_mr_alloc); | 274 | EXPORT_SYMBOL_GPL(mlx4_mr_alloc); |