Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4af3ce0d authored by Roland Dreier's avatar Roland Dreier
Browse files

IB/mlx4: Fix shutdown crash accessing a non-existent bitmap



Commit cfcde11c ("IB/mlx4: Use flow counters on IBoE ports") added
code that sets elements of counters[] to -1 if no counter is allocated,
but then goes ahead and passes every entry to mlx4_counter_free() on
shutdown.  This is a bad idea, especially if MLX4_DEV_CAP_FLAG_COUNTERS
isn't set so there isn't even an underlying bitmap to free from.

Tested-by: default avatarSean Hefty <sean.hefty@intel.com>
Cc: <stable@kernel.org>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent 5611cc45
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1244,6 +1244,7 @@ err_reg:

err_counter:
	for (; i; --i)
		if (ibdev->counters[i - 1] != -1)
			mlx4_counter_free(ibdev->dev, ibdev->counters[i - 1]);

err_map:
@@ -1275,6 +1276,7 @@ static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr)
	}
	iounmap(ibdev->uar_map);
	for (p = 0; p < ibdev->num_ports; ++p)
		if (ibdev->counters[p] != -1)
			mlx4_counter_free(ibdev->dev, ibdev->counters[p]);
	mlx4_foreach_port(p, dev, MLX4_PORT_TYPE_IB)
		mlx4_CLOSE_PORT(dev, p);