net/mlx5e: Fix lock order in mlx5e_tx_reporter_ptpsq_unhealthy_recover
authorCosmin Ratiu <cratiu@nvidia.com>
Wed, 23 Apr 2025 08:36:10 +0000 (11:36 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 25 Apr 2025 01:19:56 +0000 (18:19 -0700)
RTNL needs to be acquired before state_lock.

Fixes: fdce06bda7e5 ("net/mlx5e: Acquire RTNL lock before RQs/SQs activation/deactivation")
Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Link: https://patch.msgid.link/20250423083611.324567-5-mbloch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c

index 532c7fa94d172a568fc1459928a1bca62c2bd27f..dbd9482359e1ecef54a93bc2bc4c0343b674ab1a 100644 (file)
@@ -176,6 +176,7 @@ static int mlx5e_tx_reporter_ptpsq_unhealthy_recover(void *ctx)
 
        priv = ptpsq->txqsq.priv;
 
+       rtnl_lock();
        mutex_lock(&priv->state_lock);
        chs = &priv->channels;
        netdev = priv->netdev;
@@ -183,22 +184,19 @@ static int mlx5e_tx_reporter_ptpsq_unhealthy_recover(void *ctx)
        carrier_ok = netif_carrier_ok(netdev);
        netif_carrier_off(netdev);
 
-       rtnl_lock();
        mlx5e_deactivate_priv_channels(priv);
-       rtnl_unlock();
 
        mlx5e_ptp_close(chs->ptp);
        err = mlx5e_ptp_open(priv, &chs->params, chs->c[0]->lag_port, &chs->ptp);
 
-       rtnl_lock();
        mlx5e_activate_priv_channels(priv);
-       rtnl_unlock();
 
        /* return carrier back if needed */
        if (carrier_ok)
                netif_carrier_on(netdev);
 
        mutex_unlock(&priv->state_lock);
+       rtnl_unlock();
 
        return err;
 }