]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device
authorShay Drory <shayd@nvidia.com>
Tue, 2 May 2023 10:35:11 +0000 (13:35 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 May 2023 13:03:33 +0000 (14:03 +0100)
commit af87194352cad882d787d06fb7efa714acd95427 upstream.

In case devcom allocation is failed, mlx5 is always freeing the priv.
However, this priv might have been allocated by a different thread,
and freeing it might lead to use-after-free bugs.
Fix it by freeing the priv only in case it was allocated by the
running thread.

Fixes: 38d7b8849540 ("net/mlx5: Introduce inter-device communication mechanism")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c

index 070d55f134196a0e680422626d8778eb6c6d358e..8f978491dd32f56eba68d881716db062d49d515e 100644 (file)
@@ -112,7 +112,8 @@ struct mlx5_devcom *mlx5_devcom_register_device(struct mlx5_core_dev *dev)
        priv->devs[idx] = dev;
        devcom = mlx5_devcom_alloc(priv, idx);
        if (!devcom) {
-               kfree(priv);
+               if (new_priv)
+                       kfree(priv);
                return ERR_PTR(-ENOMEM);
        }