From: Greg Kroah-Hartman Date: Sun, 15 Mar 2020 11:59:21 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.19.110~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=511a657b7abe8e606aac9a32839fffff8da74a02;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: net-phy-avoid-multiple-suspends.patch --- diff --git a/queue-5.4/net-phy-avoid-multiple-suspends.patch b/queue-5.4/net-phy-avoid-multiple-suspends.patch new file mode 100644 index 00000000000..7b1f6ec03c5 --- /dev/null +++ b/queue-5.4/net-phy-avoid-multiple-suspends.patch @@ -0,0 +1,50 @@ +From 503ba7c6961034ff0047707685644cad9287c226 Mon Sep 17 00:00:00 2001 +From: Florian Fainelli +Date: Thu, 20 Feb 2020 15:34:53 -0800 +Subject: net: phy: Avoid multiple suspends + +From: Florian Fainelli + +commit 503ba7c6961034ff0047707685644cad9287c226 upstream. + +It is currently possible for a PHY device to be suspended as part of a +network device driver's suspend call while it is still being attached to +that net_device, either via phy_suspend() or implicitly via phy_stop(). + +Later on, when the MDIO bus controller get suspended, we would attempt +to suspend again the PHY because it is still attached to a network +device. + +This is both a waste of time and creates an opportunity for improper +clock/power management bugs to creep in. + +Fixes: 803dd9c77ac3 ("net: phy: avoid suspending twice a PHY") +Signed-off-by: Florian Fainelli +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/phy/phy_device.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/net/phy/phy_device.c ++++ b/drivers/net/phy/phy_device.c +@@ -246,7 +246,7 @@ static bool mdio_bus_phy_may_suspend(str + * MDIO bus driver and clock gated at this point. + */ + if (!netdev) +- return !phydev->suspended; ++ goto out; + + if (netdev->wol_enabled) + return false; +@@ -266,7 +266,8 @@ static bool mdio_bus_phy_may_suspend(str + if (device_may_wakeup(&netdev->dev)) + return false; + +- return true; ++out: ++ return !phydev->suspended; + } + + static int mdio_bus_phy_suspend(struct device *dev) diff --git a/queue-5.4/series b/queue-5.4/series index 4b3e040780b..a002750dd43 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -54,3 +54,4 @@ net-ipv6-need-update-peer-route-when-modify-metric.patch net-ipv6-remove-the-old-peer-route-if-change-it-to-a-new-one.patch selftests-net-fib_tests-update-addr_metric_test-for-peer-route-testing.patch net-dsa-don-t-instantiate-phylink-for-cpu-dsa-ports-unless-needed.patch +net-phy-avoid-multiple-suspends.patch