From: Heiner Kallweit Date: Thu, 17 Jan 2019 19:08:39 +0000 (+0100) Subject: net: phy: ensure phylib state machine is stopped after calling phy_stop X-Git-Tag: v5.1-rc1~178^2~486^2~1 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=cbfd12b3e8c3542e8142aa041714ed614d3f67b0;p=uclinux-h8%2Flinux.git net: phy: ensure phylib state machine is stopped after calling phy_stop The call to the phylib state machine in phy_stop() just ensures that the state machine isn't re-triggered, but a state machine call may be scheduled already. So lets's call phy_stop_machine(). This also allows to get rid of the call to phy_stop_machine() in phy_disconnect(). Signed-off-by: Heiner Kallweit Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller --- diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index b0632e859564..37cf39fdcc91 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -858,6 +858,7 @@ void phy_stop(struct phy_device *phydev) mutex_unlock(&phydev->lock); phy_state_machine(&phydev->state_queue.work); + phy_stop_machine(phydev); /* Cannot call flush_scheduled_work() here as desired because * of rtnl_lock(), but PHY_HALTED shall guarantee irq handler diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 616a5fe47f56..e269a355012d 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1005,8 +1005,6 @@ void phy_disconnect(struct phy_device *phydev) if (phydev->irq > 0) phy_stop_interrupts(phydev); - phy_stop_machine(phydev); - phydev->adjust_link = NULL; phy_detach(phydev);