[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180607155348.149665-1-brandon.maier@rockwellcollins.com>
Date: Thu, 7 Jun 2018 10:53:46 -0500
From: Brandon Maier <brandon.maier@...kwellcollins.com>
To: netdev@...r.kernel.org
Cc: andrew@...n.ch, f.fainelli@...il.com, davem@...emloft.net,
michal.simek@...inx.com, clayton.shotwell@...kwellcollins.com,
kristopher.cory@...kwellcollins.com, linux-kernel@...r.kernel.org,
Brandon Maier <brandon.maier@...kwellcollins.com>
Subject: [PATCH 1/3] net: phy: Check phy_driver ready before accessing
Since a phy_device is added to the global mdio_bus list during
phy_device_register(), but a phy_device's phy_driver doesn't get
attached until phy_probe(). It's possible of_phy_find_device() in
xgmiitorgmii will return a valid phy with a NULL phy_driver. Leading to
a NULL pointer access during the memcpy().
Signed-off-by: Brandon Maier <brandon.maier@...kwellcollins.com>
---
drivers/net/phy/xilinx_gmii2rgmii.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
index 2e5150b0b8d5..04c8bec1c4c1 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -81,6 +81,11 @@ static int xgmiitorgmii_probe(struct mdio_device *mdiodev)
return -EPROBE_DEFER;
}
+ if (!priv->phy_dev->drv) {
+ dev_info(dev, "Attached phy not ready\n");
+ return -EPROBE_DEFER;
+ }
+
priv->addr = mdiodev->addr;
priv->phy_drv = priv->phy_dev->drv;
memcpy(&priv->conv_phy_drv, priv->phy_dev->drv,
--
2.14.3
Powered by blists - more mailing lists