diff mbox

[v2] stmmac: fix check for phydev being open

Message ID 1441659019-25522-1-git-send-email-abrodkin@synopsys.com
State Superseded, archived
Delegated to: David Miller
Headers show

Commit Message

Alexey Brodkin Sept. 7, 2015, 8:50 p.m. UTC
Current implementation via IS_ERR(phydev) may make no sense because
of_phy_attach() returns NULL on failure instead of error value.

Still for checking result of phy_connect() IS_ERR() is useful.

To address both situations we use combined IS_ERR_OR_NULL() check.

Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
Cc: David Miller <davem@davemloft.net>
Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
---

Changes compared to v1:
 * Use IS_ERR_OR_NULL() instead of discrete checks for null and err

 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sergei Shtylyov Sept. 7, 2015, 8:53 p.m. UTC | #1
On 09/07/2015 11:50 PM, Alexey Brodkin wrote:

> Current implementation via IS_ERR(phydev) may make no sense because
> of_phy_attach() returns NULL on failure instead of error value.
>
> Still for checking result of phy_connect() IS_ERR() is useful.
>
> To address both situations we use combined IS_ERR_OR_NULL() check.
>
> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org
> Cc: David Miller <davem@davemloft.net>
> Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> ---
>
> Changes compared to v1:
>   * Use IS_ERR_OR_NULL() instead of discrete checks for null and err
>
>   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 864b476..7985d8a 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -837,7 +837,7 @@ static int stmmac_init_phy(struct net_device *dev)
>   				     interface);
>   	}
>
> -	if (IS_ERR(phydev)) {
> +	if (IS_ERR_OR_NULL(phydev)) {
>   		pr_err("%s: Could not attach to PHY\n", dev->name);
>   		return PTR_ERR(phydev);

    Hm, in case of phydev == NULL, you're going to return 0 here... is that 
what you want?

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexey Brodkin Sept. 7, 2015, 9:08 p.m. UTC | #2
Hi Sergei,

On Mon, 2015-09-07 at 23:53 +0300, Sergei Shtylyov wrote:
> On 09/07/2015 11:50 PM, Alexey Brodkin wrote:
> 
> > Current implementation via IS_ERR(phydev) may make no sense because
> > of_phy_attach() returns NULL on failure instead of error value.
> > 
> > Still for checking result of phy_connect() IS_ERR() is useful.
> > 
> > To address both situations we use combined IS_ERR_OR_NULL() check.
> > 
> > Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> > Cc: linux-kernel@vger.kernel.org
> > Cc: stable@vger.kernel.org
> > Cc: David Miller <davem@davemloft.net>
> > Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> > ---
> > 
> > Changes compared to v1:
> >   * Use IS_ERR_OR_NULL() instead of discrete checks for null and err
> > 
> >   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > index 864b476..7985d8a 100644
> > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > @@ -837,7 +837,7 @@ static int stmmac_init_phy(struct net_device *dev)
> >   				     interface);
> >   	}
> > 
> > -	if (IS_ERR(phydev)) {
> > +	if (IS_ERR_OR_NULL(phydev)) {
> >   		pr_err("%s: Could not attach to PHY\n", dev->name);
> >   		return PTR_ERR(phydev);
> 
>     Hm, in case of phydev == NULL, you're going to return 0 here... is that 
> what you want?

Ah, right.

So then the question would be what's a proper error code for !phydev:
-ENOENT or -ENODEV?

-Alexey--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov Sept. 7, 2015, 9:24 p.m. UTC | #3
On 09/07/2015 11:50 PM, Alexey Brodkin wrote:

> Current implementation via IS_ERR(phydev) may make no sense because
> of_phy_attach() returns NULL on failure instead of error value.

    Not of_phy_connect()?

> Still for checking result of phy_connect() IS_ERR() is useful.
>
> To address both situations we use combined IS_ERR_OR_NULL() check.
>
> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org
> Cc: David Miller <davem@davemloft.net>
> Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexey Brodkin Sept. 7, 2015, 9:26 p.m. UTC | #4
Hi Sergei,

On Tue, 2015-09-08 at 00:24 +0300, Sergei Shtylyov wrote:
> On 09/07/2015 11:50 PM, Alexey Brodkin wrote:
> 
> > Current implementation via IS_ERR(phydev) may make no sense because
> > of_phy_attach() returns NULL on failure instead of error value.
> 
>     Not of_phy_connect()?

I already noticed this misspelling - it came from my exploration of
what happens inside of_phy_connect(). So sort of braindump.

I will fix in v3 re-spin.

-Alexey--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 864b476..7985d8a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -837,7 +837,7 @@  static int stmmac_init_phy(struct net_device *dev)
 				     interface);
 	}
 
-	if (IS_ERR(phydev)) {
+	if (IS_ERR_OR_NULL(phydev)) {
 		pr_err("%s: Could not attach to PHY\n", dev->name);
 		return PTR_ERR(phydev);
 	}