lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180105151235.GD4038@lunn.ch>
Date:   Fri, 5 Jan 2018 16:12:35 +0100
From:   Andrew Lunn <andrew@...n.ch>
To:     Madalin Bucur <madalin.bucur@....com>
Cc:     f.fainelli@...il.com, davem@...emloft.net, geert+renesas@...der.be,
        robh+dt@...nel.org, frowand.list@...il.com, netdev@...r.kernel.org,
        devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is missing

On Fri, Jan 05, 2018 at 11:36:14AM +0200, Madalin Bucur wrote:
> If one of the child devices is missing the of_mdiobus_register_phy()
> call will return -ENODEV. When a missing device is encountered the
> registration of the remaining PHYs is stopped and the MDIO bus will
> fail to register. Propagate all errors except ENODEV to avoid it.

Hi Madalin

This is is not clear cut. If the PHY is in device tree, the PHY should
exist. So returning ENODEV is justified. The device tree blob is
broken. But i can also see the value for continuing. There is a chance
some of your other interfaces come up, allowing you to get the correct
device tree blob for the hardware.

Please add

dev_err(&mdio->dev, "MDIO device at address %d is missing.\n");

	Andrew

> 
> Signed-off-by: Madalin Bucur <madalin.bucur@....com>
> ---
>  drivers/of/of_mdio.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
> index 3481e69..93d41275 100644
> --- a/drivers/of/of_mdio.c
> +++ b/drivers/of/of_mdio.c
> @@ -231,7 +231,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
>  			rc = of_mdiobus_register_phy(mdio, child, addr);
>  		else
>  			rc = of_mdiobus_register_device(mdio, child, addr);
> -		if (rc)
> +		if (rc && rc != -ENODEV)
>  			goto unregister;
>  	}
>  
> @@ -255,7 +255,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
>  
>  			if (of_mdiobus_child_is_phy(child)) {
>  				rc = of_mdiobus_register_phy(mdio, child, addr);
> -				if (rc)
> +				if (rc && rc != -ENODEV)
>  					goto unregister;
>  			}
>  		}
> -- 
> 2.1.0
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ