summaryrefslogtreecommitdiffstats
path: root/net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2016-07-05 12:18:02 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2016-07-05 12:18:02 -0400
commit090355101563f8b7fda5582b5407d6ea342a4930 (patch)
tree390639740c0996452b5d7ff4bc4b3e583377243d /net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch
parent9759d1d73d53e21471a45ccc49926c63b5e5b62a (diff)
downloadkernel-090355101563f8b7fda5582b5407d6ea342a4930.tar.gz
kernel-090355101563f8b7fda5582b5407d6ea342a4930.tar.xz
kernel-090355101563f8b7fda5582b5407d6ea342a4930.zip
Linux v4.6.3
- CVE-2016-6130 s390x race condition in sclp leads to info leak (rhbz 1352558 1352559)
Diffstat (limited to 'net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch')
-rw-r--r--net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch b/net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch
new file mode 100644
index 000000000..24b5ac2ae
--- /dev/null
+++ b/net-smsc911x-Fix-bug-where-PHY-interrupts-are-overwritten-by-0.patch
@@ -0,0 +1,52 @@
+From patchwork Wed Jun 22 17:40:50 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [v3] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0
+From: Jeremy Linton <jeremy.linton@arm.com>
+X-Patchwork-Id: 639331
+X-Patchwork-Delegate: davem@davemloft.net
+Message-Id: <1466617250-27317-1-git-send-email-jeremy.linton@arm.com>
+To: netdev@vger.kernel.org
+Cc: steve.glendinning@shawell.net, andrew@lunn.ch,
+ sergei.shtylyov@cogentembedded.com, linux-kernel@vger.kernel.org,
+ stable@vger.kernel.org, pbrobinson@gmail.com,
+ mlangsdorf@redhat.com, steve.capper@arm.com
+Date: Wed, 22 Jun 2016 12:40:50 -0500
+
+By default, mdiobus_alloc() sets the PHYs to polling mode, but a
+pointer size memcpy means that a couple IRQs end up being overwritten
+with a value of 0. This means that PHY_POLL is disabled and results
+in unpredictable behavior depending on the PHY's location on the
+MDIO bus. Remove that memcpy and the now unused phy_irq member to
+force the SMSC911x PHYs into polling mode 100% of the time.
+
+Fixes: e7f4dc3536a4 ("mdio: Move allocation of interrupts into core")
+
+Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+---
+ drivers/net/ethernet/smsc/smsc911x.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
+index 8af2556..b5ab5e1 100644
+--- a/drivers/net/ethernet/smsc/smsc911x.c
++++ b/drivers/net/ethernet/smsc/smsc911x.c
+@@ -116,7 +116,6 @@ struct smsc911x_data {
+
+ struct phy_device *phy_dev;
+ struct mii_bus *mii_bus;
+- int phy_irq[PHY_MAX_ADDR];
+ unsigned int using_extphy;
+ int last_duplex;
+ int last_carrier;
+@@ -1073,7 +1072,6 @@ static int smsc911x_mii_init(struct platform_device *pdev,
+ pdata->mii_bus->priv = pdata;
+ pdata->mii_bus->read = smsc911x_mii_read;
+ pdata->mii_bus->write = smsc911x_mii_write;
+- memcpy(pdata->mii_bus->irq, pdata->phy_irq, sizeof(pdata->mii_bus));
+
+ pdata->mii_bus->parent = &pdev->dev;
+