diff options
author | Alexander Guller <alexg@mellanox.com> | 2011-10-09 01:27:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-09 23:42:57 -0400 |
commit | 7398af403f621418fa05c6936cac34aa06b5a758 (patch) | |
tree | c93d1672a6851da5586802239e60ac37161431d8 /drivers/net/ethernet/mellanox | |
parent | 6b4d8d9fd1acb9ff230810793b363dbdb267b892 (diff) |
mlx4_en: Added missing iounmap upon releasing a device
Fixed a memory leak caused by missing iounmap when device
is being released.
Signed-off-by: Alexander Guller <alexg@mellanox.co.il>
Signed-off-by: Sharon Cohen <sharonc@mellanox.co.il>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_main.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_main.c b/drivers/net/ethernet/mellanox/mlx4/en_main.c index 6bfea233a9f2..a06096fcc0b8 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_main.c | |||
@@ -176,6 +176,7 @@ static void mlx4_en_remove(struct mlx4_dev *dev, void *endev_ptr) | |||
176 | flush_workqueue(mdev->workqueue); | 176 | flush_workqueue(mdev->workqueue); |
177 | destroy_workqueue(mdev->workqueue); | 177 | destroy_workqueue(mdev->workqueue); |
178 | mlx4_mr_free(dev, &mdev->mr); | 178 | mlx4_mr_free(dev, &mdev->mr); |
179 | iounmap(mdev->uar_map); | ||
179 | mlx4_uar_free(dev, &mdev->priv_uar); | 180 | mlx4_uar_free(dev, &mdev->priv_uar); |
180 | mlx4_pd_free(dev, mdev->priv_pdn); | 181 | mlx4_pd_free(dev, mdev->priv_pdn); |
181 | kfree(mdev); | 182 | kfree(mdev); |
@@ -223,7 +224,7 @@ static void *mlx4_en_add(struct mlx4_dev *dev) | |||
223 | MLX4_PERM_LOCAL_WRITE | MLX4_PERM_LOCAL_READ, | 224 | MLX4_PERM_LOCAL_WRITE | MLX4_PERM_LOCAL_READ, |
224 | 0, 0, &mdev->mr)) { | 225 | 0, 0, &mdev->mr)) { |
225 | mlx4_err(mdev, "Failed allocating memory region\n"); | 226 | mlx4_err(mdev, "Failed allocating memory region\n"); |
226 | goto err_uar; | 227 | goto err_map; |
227 | } | 228 | } |
228 | if (mlx4_mr_enable(mdev->dev, &mdev->mr)) { | 229 | if (mlx4_mr_enable(mdev->dev, &mdev->mr)) { |
229 | mlx4_err(mdev, "Failed enabling memory region\n"); | 230 | mlx4_err(mdev, "Failed enabling memory region\n"); |
@@ -282,6 +283,9 @@ static void *mlx4_en_add(struct mlx4_dev *dev) | |||
282 | 283 | ||
283 | err_mr: | 284 | err_mr: |
284 | mlx4_mr_free(dev, &mdev->mr); | 285 | mlx4_mr_free(dev, &mdev->mr); |
286 | err_map: | ||
287 | if (!mdev->uar_map) | ||
288 | iounmap(mdev->uar_map); | ||
285 | err_uar: | 289 | err_uar: |
286 | mlx4_uar_free(dev, &mdev->priv_uar); | 290 | mlx4_uar_free(dev, &mdev->priv_uar); |
287 | err_pd: | 291 | err_pd: |