aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDotan Barak <dotanb@dev.mellanox.co.il>2014-05-29 09:30:59 -0400
committerRoland Dreier <roland@purestorage.com>2014-05-30 00:12:58 -0400
commitb38f2879b7d2d51747de2ea9062c698a6ac64cb1 (patch)
tree28a4ed7653cbb00160fc8a2b8bc46d28b07a6fc3
parentbfdfcfee3c9281e9cd28c0b08235aba1762504a6 (diff)
mlx4_core: Fix memory leaks in SR-IOV error paths
Fix a few memory leaks that happen if errors happen in SR-IOV mode. Signed-off-by: Dotan Barak <dotanb@dev.mellanox.co.il> Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index 7cf9dadcb471..12a7ee2e6098 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -1696,6 +1696,13 @@ unmap_bf:
1696 unmap_internal_clock(dev); 1696 unmap_internal_clock(dev);
1697 unmap_bf_area(dev); 1697 unmap_bf_area(dev);
1698 1698
1699 if (mlx4_is_slave(dev)) {
1700 kfree(dev->caps.qp0_tunnel);
1701 kfree(dev->caps.qp0_proxy);
1702 kfree(dev->caps.qp1_tunnel);
1703 kfree(dev->caps.qp1_proxy);
1704 }
1705
1699err_close: 1706err_close:
1700 if (mlx4_is_slave(dev)) 1707 if (mlx4_is_slave(dev))
1701 mlx4_slave_exit(dev); 1708 mlx4_slave_exit(dev);
@@ -2565,6 +2572,13 @@ err_master_mfunc:
2565 if (mlx4_is_master(dev)) 2572 if (mlx4_is_master(dev))
2566 mlx4_multi_func_cleanup(dev); 2573 mlx4_multi_func_cleanup(dev);
2567 2574
2575 if (mlx4_is_slave(dev)) {
2576 kfree(dev->caps.qp0_tunnel);
2577 kfree(dev->caps.qp0_proxy);
2578 kfree(dev->caps.qp1_tunnel);
2579 kfree(dev->caps.qp1_proxy);
2580 }
2581
2568err_close: 2582err_close:
2569 if (dev->flags & MLX4_FLAG_MSI_X) 2583 if (dev->flags & MLX4_FLAG_MSI_X)
2570 pci_disable_msix(pdev); 2584 pci_disable_msix(pdev);