>
> Yes, that's a very valid point, how about we even do this:
>
> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> index f84414b8f2ee..dc666ec13651 100644
> --- a/drivers/net/phy/phy_device.c
> +++ b/drivers/net/phy/phy_device.c
> @@ -960,15 +960,21 @@ int phy_attach_direct(struct net_device *dev,
> struct phy_device *phydev,
>
> phydev->attached_dev = dev;
> dev->phydev = phydev;
> +
> + /* Some Ethernet drivers try to connect to a PHY device before
> + * calling register_netdevice() -> netdev_register_kobject() and
> + * does the dev->dev.kobj initialization. Here we only check for
> + * success which indicates that the network device kobject is
> + * ready.
> + */
> err = sysfs_create_link(&phydev->mdio.dev.kobj, &dev->dev.kobj,
> "attached_dev");
> - if (err)
> - goto error;
> -
> - err = sysfs_create_link(&dev->dev.kobj, &phydev->mdio.dev.kobj,
> - "phydev");
> - if (err)
> - goto error;
> + if (!err) {
> + err = sysfs_create_link(&dev->dev.kobj,
> &phydev->mdio.dev.kobj,
> + "phydev");
> + if (err)
> + goto error;
> + }
>
> phydev->dev_flags = flags;
>
Looks better and clean.
How about sysfs_remove_link() in phy_detach()?
- Woojung