]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.5-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 15 Mar 2020 11:59:37 +0000 (12:59 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 15 Mar 2020 11:59:37 +0000 (12:59 +0100)
added patches:
net-phy-avoid-multiple-suspends.patch

queue-5.5/net-phy-avoid-multiple-suspends.patch [new file with mode: 0644]
queue-5.5/series

diff --git a/queue-5.5/net-phy-avoid-multiple-suspends.patch b/queue-5.5/net-phy-avoid-multiple-suspends.patch
new file mode 100644 (file)
index 0000000..3730827
--- /dev/null
@@ -0,0 +1,50 @@
+From 503ba7c6961034ff0047707685644cad9287c226 Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Thu, 20 Feb 2020 15:34:53 -0800
+Subject: net: phy: Avoid multiple suspends
+
+From: Florian Fainelli <f.fainelli@gmail.com>
+
+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 <f.fainelli@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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
+@@ -247,7 +247,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;
+@@ -267,7 +267,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)
index 1a92218a4ce0c07e573b6eda81af46af12101e13..66ed72222aab61efab115f857a84994ec8987057 100644 (file)
@@ -68,3 +68,4 @@ s390-qeth-don-t-reset-default_out_queue.patch
 s390-qeth-handle-error-when-backing-rx-buffer.patch
 net-dsa-don-t-instantiate-phylink-for-cpu-dsa-ports-unless-needed.patch
 net-dsa-mv88e6xxx-add-missing-mask-of-atu-occupancy-register.patch
+net-phy-avoid-multiple-suspends.patch