From: Andrew Lunn <andrew@lunn.ch>
To: Florian Fainelli <f.fainelli@gmail.com>
Cc: netdev@vger.kernel.org, Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Frank Rowand <frowand.list@gmail.com>,
Dajun Jin <adajunjin@gmail.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
open list <linux-kernel@vger.kernel.org>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE"
<devicetree@vger.kernel.org>
Subject: Re: [PATCH net 1/2] of: of_mdio: Correct loop scanning logic
Date: Fri, 19 Jun 2020 15:21:01 +0200 [thread overview]
Message-ID: <20200619132101.GA304147@lunn.ch> (raw)
In-Reply-To: <20200619044759.11387-2-f.fainelli@gmail.com>
On Thu, Jun 18, 2020 at 09:47:58PM -0700, Florian Fainelli wrote:
> Commit 209c65b61d94 ("drivers/of/of_mdio.c:fix of_mdiobus_register()")
> introduced a break of the loop on the premise that a successful
> registration should exit the loop. The premise is correct but not to
> code, because rc && rc != -ENODEV is just a special error condition,
> that means we would exit the loop even with rc == -ENODEV which is
> absolutely not correct since this is the error code to indicate to the
> MDIO bus layer that scanning should continue.
>
> Fix this by explicitly checking for rc = 0 as the only valid condition
> to break out of the loop.
>
> Fixes: 209c65b61d94 ("drivers/of/of_mdio.c:fix of_mdiobus_register()")
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
> drivers/of/of_mdio.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
> index a04afe79529c..7496dc64d6b5 100644
> --- a/drivers/of/of_mdio.c
> +++ b/drivers/of/of_mdio.c
> @@ -315,9 +315,10 @@ 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 && rc != -ENODEV)
> + if (!rc)
> + break;
Maybe add in a comment here about what ENODEV means in this context?
That might avoid it getting broken again in the future.
> + if (rc != -ENODEV)
> goto unregister;
> - break;
> }
> }
> }
> --
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
next prev parent reply other threads:[~2020-06-19 13:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-19 4:47 [PATCH net 0/2] net: phy: MDIO bus scanning fixes Florian Fainelli
2020-06-19 4:47 ` [PATCH net 1/2] of: of_mdio: Correct loop scanning logic Florian Fainelli
2020-06-19 13:21 ` Andrew Lunn [this message]
2020-06-19 4:47 ` [PATCH net 2/2] net: phy: Check harder for errors in get_phy_id() Florian Fainelli
2020-06-19 13:26 ` Andrew Lunn
2020-06-19 13:30 ` Russell King - ARM Linux admin
2020-06-19 18:42 ` Florian Fainelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200619132101.GA304147@lunn.ch \
--to=andrew@lunn.ch \
--cc=adajunjin@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=frowand.list@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.