diff options
author | Dotan Barak | 2014-05-29 15:30:59 +0200 |
---|---|---|
committer | Roland Dreier | 2014-05-30 06:12:58 +0200 |
commit | b38f2879b7d2d51747de2ea9062c698a6ac64cb1 (patch) | |
tree | 28a4ed7653cbb00160fc8a2b8bc46d28b07a6fc3 /drivers/net/ethernet/mellanox/mlx4/main.c | |
parent | IB/mlx4: fix unitialised variable is_mcast (diff) | |
download | kernel-qcow2-linux-b38f2879b7d2d51747de2ea9062c698a6ac64cb1.tar.gz kernel-qcow2-linux-b38f2879b7d2d51747de2ea9062c698a6ac64cb1.tar.xz kernel-qcow2-linux-b38f2879b7d2d51747de2ea9062c698a6ac64cb1.zip |
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>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/main.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/main.c | 14 |
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: unmap_internal_clock(dev); unmap_bf_area(dev); + if (mlx4_is_slave(dev)) { + kfree(dev->caps.qp0_tunnel); + kfree(dev->caps.qp0_proxy); + kfree(dev->caps.qp1_tunnel); + kfree(dev->caps.qp1_proxy); + } + err_close: if (mlx4_is_slave(dev)) mlx4_slave_exit(dev); @@ -2565,6 +2572,13 @@ err_master_mfunc: if (mlx4_is_master(dev)) mlx4_multi_func_cleanup(dev); + if (mlx4_is_slave(dev)) { + kfree(dev->caps.qp0_tunnel); + kfree(dev->caps.qp0_proxy); + kfree(dev->caps.qp1_tunnel); + kfree(dev->caps.qp1_proxy); + } + err_close: if (dev->flags & MLX4_FLAG_MSI_X) pci_disable_msix(pdev); |