]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5e: Avoid unregistering PSP twice
authorCosmin Ratiu <cratiu@nvidia.com>
Mon, 1 Dec 2025 15:13:28 +0000 (17:13 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 4 Dec 2025 10:55:20 +0000 (11:55 +0100)
PSP is unregistered twice in:
_mlx5e_remove -> mlx5e_psp_unregister
mlx5e_nic_cleanup -> mlx5e_psp_unregister

This leads to a refcount underflow in some conditions:
------------[ cut here ]------------
refcount_t: underflow; use-after-free.
WARNING: CPU: 2 PID: 1694 at lib/refcount.c:28 refcount_warn_saturate+0xd8/0xe0
[...]
 mlx5e_psp_unregister+0x26/0x50 [mlx5_core]
 mlx5e_nic_cleanup+0x26/0x90 [mlx5_core]
 mlx5e_remove+0xe6/0x1f0 [mlx5_core]
 auxiliary_bus_remove+0x18/0x30
 device_release_driver_internal+0x194/0x1f0
 bus_remove_device+0xc6/0x130
 device_del+0x159/0x3c0
 mlx5_rescan_drivers_locked+0xbc/0x2a0 [mlx5_core]
[...]

Do not directly remove psp from the _mlx5e_remove path, the PSP cleanup
happens as part of profile cleanup.

Fixes: 89ee2d92f66c ("net/mlx5e: Support PSP offload functionality")
Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/1764602008-1334866-3-git-send-email-tariqt@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index 6168f0814414830a5644ff09e402f47a32c58986..07fc4d2c8fadd420d4646eba8a1a730a974cca52 100644 (file)
@@ -6825,7 +6825,6 @@ static void _mlx5e_remove(struct auxiliary_device *adev)
         * is already unregistered before changing to NIC profile.
         */
        if (priv->netdev->reg_state == NETREG_REGISTERED) {
-               mlx5e_psp_unregister(priv);
                unregister_netdev(priv->netdev);
                _mlx5e_suspend(adev, false);
        } else {