mlx4_en: Added missing iounmap upon releasing a device
authorAlexander Guller <alexg@mellanox.com>
Sun, 9 Oct 2011 05:27:11 +0000 (05:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 10 Oct 2011 03:42:57 +0000 (23:42 -0400)
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>
drivers/net/ethernet/mellanox/mlx4/en_main.c

index 6bfea23..a06096f 100644 (file)
@@ -176,6 +176,7 @@ static void mlx4_en_remove(struct mlx4_dev *dev, void *endev_ptr)
        flush_workqueue(mdev->workqueue);
        destroy_workqueue(mdev->workqueue);
        mlx4_mr_free(dev, &mdev->mr);
+       iounmap(mdev->uar_map);
        mlx4_uar_free(dev, &mdev->priv_uar);
        mlx4_pd_free(dev, mdev->priv_pdn);
        kfree(mdev);
@@ -223,7 +224,7 @@ static void *mlx4_en_add(struct mlx4_dev *dev)
                         MLX4_PERM_LOCAL_WRITE |  MLX4_PERM_LOCAL_READ,
                         0, 0, &mdev->mr)) {
                mlx4_err(mdev, "Failed allocating memory region\n");
-               goto err_uar;
+               goto err_map;
        }
        if (mlx4_mr_enable(mdev->dev, &mdev->mr)) {
                mlx4_err(mdev, "Failed enabling memory region\n");
@@ -282,6 +283,9 @@ static void *mlx4_en_add(struct mlx4_dev *dev)
 
 err_mr:
        mlx4_mr_free(dev, &mdev->mr);
+err_map:
+       if (!mdev->uar_map)
+               iounmap(mdev->uar_map);
 err_uar:
        mlx4_uar_free(dev, &mdev->priv_uar);
 err_pd: