diff options
| -rw-r--r-- | drivers/infiniband/hw/mlx4/main.c | 8 |
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 | } |
