aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/mlx4/main.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index f419a728a22b..064454aee863 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -2670,17 +2670,15 @@ static void do_slave_init(struct mlx4_ib_dev *ibdev, int slave, int do_init)
2670 dm = kcalloc(ports, sizeof(*dm), GFP_ATOMIC); 2670 dm = kcalloc(ports, sizeof(*dm), GFP_ATOMIC);
2671 if (!dm) { 2671 if (!dm) {
2672 pr_err("failed to allocate memory for tunneling qp update\n"); 2672 pr_err("failed to allocate memory for tunneling qp update\n");
2673 goto out; 2673 return;
2674 } 2674 }
2675 2675
2676 for (i = 0; i < ports; i++) { 2676 for (i = 0; i < ports; i++) {
2677 dm[i] = kmalloc(sizeof (struct mlx4_ib_demux_work), GFP_ATOMIC); 2677 dm[i] = kmalloc(sizeof (struct mlx4_ib_demux_work), GFP_ATOMIC);
2678 if (!dm[i]) { 2678 if (!dm[i]) {
2679 pr_err("failed to allocate memory for tunneling qp update work struct\n"); 2679 pr_err("failed to allocate memory for tunneling qp update work struct\n");
2680 for (i = 0; i < dev->caps.num_ports; i++) { 2680 while (--i >= 0)
2681 if (dm[i]) 2681 kfree(dm[i]);
2682 kfree(dm[i]);
2683 }
2684 goto out; 2682 goto out;
2685 } 2683 }
2686 } 2684 }