phy: check if parent device is NULL
Subsystems (3)
PATCH 1/1 phy: check if parent device is NULL
Fixes a crash observed on Octeon.
different owner")
--- drivers/net/phy/phy_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/phy/phy_device.c +2 -1
@@ -905,7 +905,8 @@ EXPORT_SYMBOL(phy_attached_print);int phy_attach_direct (struct net_device *dev,struct phy_device *phydev,u32 flags,phy_interface_t interface) { -struct module *ndev_owner = dev->dev.parent->driver->owner; +struct device *parent = dev->dev.parent; +struct module *ndev_owner = parent ? parent->driver->owner :NULL ;struct mii_bus *bus = phydev->mdio.bus;struct device *d = &phydev->mdio.dev;int err;
Signature · 1 line
2.7.4
Quoted 5 lines · Ruslan Babayev
Fixes a crash observed on Octeon.
Signed-off-by Ruslan Babayev <[email protected]>Fixes ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's adifferent owner")
Assuming you saw this with the staging Octeon driver, a fix has already been submitted:
https://lkml.org/lkml/2016/12/14/756
If this is with a different driver, I would rather we fix it in a similar way that the fix proposed above.
Thanks
Quoted 19 lines
--- drivers/net/phy/phy_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)drivers/net/phy/phy_device.c +2
-1@@ -905,7 +905,8 @@ EXPORT_SYMBOL(phy_attached_print);int phy_attach_direct (struct net_device *dev,struct phy_device *phydev,u32 flags,phy_interface_t interface) { -struct module *ndev_owner = dev->dev.parent->driver->owner; +struct device *parent = dev->dev.parent; +struct module *ndev_owner = parent ? parent->driver->owner :NULL ;struct mii_bus *bus = phydev->mdio.bus;struct device *d = &phydev->mdio.dev;int err;
Signature · 1 line
Florian
Yes, I saw that with the staging Octeon driver.
Your patch works for me too.
Thanks Florian!
Quoted 40 lines · Florian Fainelli
Quoted 5 lines · Ruslan Babayev
Fixes a crash observed on Octeon.
Signed-off-by Ruslan Babayev <[email protected]>Fixes ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's adifferent owner")
Assuming you saw this with the staging Octeon driver, a fix has already been submitted:
https://lkml.org/lkml/2016/12/14/756
If this is with a different driver, I would rather we fix it in a similar way that the fix proposed above.
Thanks
Quoted 10 lines
--- drivers/net/phy/phy_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)drivers/net/phy/phy_device.c +0
-0drivers/net/phy/phy_device.c EXPORT_SYMBOL(phy_attached_print); · line 912
Quoted 9 lines
drivers/net/phy/phy_device.c +2
-1@@ -905,7 +905,8 @@ EXPORT_SYMBOL(phy_attached_print);int phy_attach_direct (struct net_device *dev,struct phy_device *phydev,u32 flags,phy_interface_t interface) { -struct module *ndev_owner = dev->dev.parent->driver->owner; +struct device *parent = dev->dev.parent; +struct module *ndev_owner = parent ? parent->driver->owner :NULL ;struct mii_bus *bus = phydev->mdio.bus;struct device *d = &phydev->mdio.dev;int err;--
Florian