Commit d4f25be2 authored by Maher Sanalla's avatar Maher Sanalla Committed by Paolo Abeni
Browse files

net/mlx5: Check for invalid vector index on EQ creation



Currently, mlx5 driver does not enforce vector index to be lower than
the maximum number of supported completion vectors when requesting a
new completion EQ. Thus, mlx5_comp_eqn_get() fails when trying to
acquire an IRQ with an improper vector index.

To prevent the case above, enforce that vector index value is
valid and lower than maximum in mlx5_comp_eqn_get() before handling the
request.

Fixes: f14c1a14 ("net/mlx5: Allocate completion EQs dynamically")
Signed-off-by: default avatarMaher Sanalla <msanalla@nvidia.com>
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 9addffa3
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1061,6 +1061,12 @@ int mlx5_comp_eqn_get(struct mlx5_core_dev *dev, u16 vecidx, int *eqn)
	struct mlx5_eq_comp *eq;
	int ret = 0;

	if (vecidx >= table->max_comp_eqs) {
		mlx5_core_dbg(dev, "Requested vector index %u should be less than %u",
			      vecidx, table->max_comp_eqs);
		return -EINVAL;
	}

	mutex_lock(&table->comp_lock);
	eq = xa_load(&table->comp_eqs, vecidx);
	if (eq) {