]> git.itanic.dy.fi Git - linux-stable/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 11:44:11 +0000 (12:44 +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: fadd59fc50d0 ("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 bced2efe9bef44627fa5f2e2c4af717debeb3eba..abd066e952286f2fde74a4e7507a4a1730ddbd98 100644 (file)
@@ -110,7 +110,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);
        }