Commit 1c2940ec authored by Cosmin Ratiu's avatar Cosmin Ratiu Committed by Jakub Kicinski
Browse files

net/mlx5e: Fix lock order in mlx5e_tx_reporter_ptpsq_unhealthy_recover



RTNL needs to be acquired before state_lock.

Fixes: fdce06bd ("net/mlx5e: Acquire RTNL lock before RQs/SQs activation/deactivation")
Signed-off-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: default avatarDragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: default avatarMark Bloch <mbloch@nvidia.com>
Link: https://patch.msgid.link/20250423083611.324567-5-mbloch@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 172c0342
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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;
}