Commit 19e13cb2 authored by Jose Abreu's avatar Jose Abreu Committed by David S. Miller
Browse files

net: stmmac: Hold rtnl lock in suspend/resume callbacks

We need to hold rnl lock in suspend and resume callbacks because phylink
requires it. Otherwise we will get a WARN() in suspend and resume.

Also, move phylink start and stop callbacks to inside device's internal
lock so that we prevent concurrent HW accesses.

Fixes: 74371272

 ("net: stmmac: Convert to phylink and remove phylib logic")
Reported-by: default avatarChristophe ROULLIER <>
Tested-by: default avatarChristophe ROULLIER <>
Signed-off-by: default avatarJose Abreu <>
Signed-off-by: default avatarDavid S. Miller <>
parent 28e48603
...@@ -4451,10 +4451,12 @@ int stmmac_suspend(struct device *dev) ...@@ -4451,10 +4451,12 @@ int stmmac_suspend(struct device *dev)
if (!ndev || !netif_running(ndev)) if (!ndev || !netif_running(ndev))
return 0; return 0;
mutex_lock(&priv->lock); mutex_lock(&priv->lock);
netif_device_detach(ndev); netif_device_detach(ndev);
stmmac_stop_all_queues(priv); stmmac_stop_all_queues(priv);
...@@ -4558,9 +4560,11 @@ int stmmac_resume(struct device *dev) ...@@ -4558,9 +4560,11 @@ int stmmac_resume(struct device *dev)
stmmac_start_all_queues(priv); stmmac_start_all_queues(priv);
mutex_unlock(&priv->lock); rtnl_lock();
phylink_start(priv->phylink); phylink_start(priv->phylink);
return 0; return 0;
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment