]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net/mlx5: Check for invalid vector index on EQ creation
authorMaher Sanalla <msanalla@nvidia.com>
Tue, 15 Oct 2024 09:32:05 +0000 (12:32 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Nov 2024 01:02:31 +0000 (02:02 +0100)
[ Upstream commit d4f25be27e3ef7e23998fbd3dd4bff0602de7ae5 ]

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: f14c1a14e632 ("net/mlx5: Allocate completion EQs dynamically")
Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/eq.c

index cb7e7e4104aff9611dbbef9a27f5c6becdb97b08..99d9e8863bfd6256a10a872583e3a13e50e3f8a1 100644 (file)
@@ -1080,6 +1080,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) {