mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
phylib: fix PAL state machine restart on resume
On resume, before starting the PAL state machine, check if the adjust_link() method is well supplied. If not, this would lead to a NULL pointer dereference in the phy_state_machine() function. This scenario can happen if the Ethernet driver call manually the PHY functions instead of using the PAL state machine. The mv643xx_eth driver is a such example. Signed-off-by: Simon Guinot <sguinot@lacie.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ef885afbf8
commit
fddd91016d
@ -308,7 +308,7 @@ static int mdio_bus_suspend(struct device *dev)
|
||||
* may call phy routines that try to grab the same lock, and that may
|
||||
* lead to a deadlock.
|
||||
*/
|
||||
if (phydev->attached_dev)
|
||||
if (phydev->attached_dev && phydev->adjust_link)
|
||||
phy_stop_machine(phydev);
|
||||
|
||||
if (!mdio_bus_phy_may_suspend(phydev))
|
||||
@ -331,7 +331,7 @@ static int mdio_bus_resume(struct device *dev)
|
||||
return ret;
|
||||
|
||||
no_resume:
|
||||
if (phydev->attached_dev)
|
||||
if (phydev->attached_dev && phydev->adjust_link)
|
||||
phy_start_machine(phydev, NULL);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user