Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fddd9101 authored by Simon Guinot's avatar Simon Guinot Committed by David S. Miller
Browse files

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: default avatarSimon Guinot <sguinot@lacie.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ef885afb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;