All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: <johan@kernel.org>, <gregkh@linuxfoundation.org>,
	<felipe.balbi@linux.intel.com>, <matthias.bgg@gmail.com>,
	<linux-usb@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>
Subject: Re: [PATCH 2/2] usb: core: phy: fix return value checking about devm_of_phy_get_by_index()
Date: Mon, 25 Jun 2018 14:37:01 +0800	[thread overview]
Message-ID: <1529908621.32173.27.camel@mhfsdcap03> (raw)
In-Reply-To: <CAFBinCBS+fpfx6jaaqD=kqFuMF6ko8GikbV1ZVwgbDh-Sn8T8w@mail.gmail.com>

On Sun, 2018-06-24 at 20:00 +0200, Martin Blumenstingl wrote:
> Hello Chunfeng,
> 
> thank you for the patch!
> 
> On Fri, Jun 22, 2018 at 8:33 AM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> >
> > 1. use IS_ERR() but not IS_ERR_OR_NULL() because devm_of_phy_get_by_index()
> >     never return NULL value;
> ACK - good catch!
> 
> > 2. devm_of_phy_get_by_index() should not fail for a valid index
> I have learned that the PHY framework can return -ENODEV if the PHY is:
> 1. supposed to be handled by the legacy USB PHY framework
> 2. the PHY node is disabled in devicetree
A little confused, we can avoid this error by not using a disabled or
"usb-nop-xceiv" phy in host node.

If ignore error of -ENODEV, we will also skip an error case which we
don't want it happen. 

> 
> see [0] for the code in the PHY framework and [1] for the discussion
> with Johan (who informed me of case #1, I added him on this mail)
> 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> >  drivers/usb/core/phy.c | 11 ++++-------
> >  1 file changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
> > index 9879767..0f972e1 100644
> > --- a/drivers/usb/core/phy.c
> > +++ b/drivers/usb/core/phy.c
> > @@ -23,14 +23,11 @@ static int usb_phy_roothub_add_phy(struct device *dev, int index,
> >                                    struct list_head *list)
> >  {
> >         struct usb_phy_roothub *roothub_entry;
> > -       struct phy *phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       struct phy *phy;
> >
> > -       if (IS_ERR_OR_NULL(phy)) {
> > -               if (!phy || PTR_ERR(phy) == -ENODEV)
> > -                       return 0;
> > -               else
> > -                       return PTR_ERR(phy);
> > -       }
> > +       phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       if (IS_ERR(phy))
> > +               return PTR_ERR(phy);
> @Johan can you please review this as well? maybe we need to keep the
> -ENODEV check
> 
> 
> Regards
> Martin
> 
> 
> [0] https://elixir.bootlin.com/linux/v4.18-rc2/source/drivers/phy/phy-core.c#L421
> [1] https://lkml.org/lkml/2018/4/19/88



WARNING: multiple messages have this Message-ID (diff)
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: devicetree@vger.kernel.org, felipe.balbi@linux.intel.com,
	gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
	johan@kernel.org, linux-kernel@vger.kernel.org,
	linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/2] usb: core: phy: fix return value checking about devm_of_phy_get_by_index()
Date: Mon, 25 Jun 2018 14:37:01 +0800	[thread overview]
Message-ID: <1529908621.32173.27.camel@mhfsdcap03> (raw)
In-Reply-To: <CAFBinCBS+fpfx6jaaqD=kqFuMF6ko8GikbV1ZVwgbDh-Sn8T8w@mail.gmail.com>

On Sun, 2018-06-24 at 20:00 +0200, Martin Blumenstingl wrote:
> Hello Chunfeng,
> 
> thank you for the patch!
> 
> On Fri, Jun 22, 2018 at 8:33 AM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> >
> > 1. use IS_ERR() but not IS_ERR_OR_NULL() because devm_of_phy_get_by_index()
> >     never return NULL value;
> ACK - good catch!
> 
> > 2. devm_of_phy_get_by_index() should not fail for a valid index
> I have learned that the PHY framework can return -ENODEV if the PHY is:
> 1. supposed to be handled by the legacy USB PHY framework
> 2. the PHY node is disabled in devicetree
A little confused, we can avoid this error by not using a disabled or
"usb-nop-xceiv" phy in host node.

If ignore error of -ENODEV, we will also skip an error case which we
don't want it happen. 

> 
> see [0] for the code in the PHY framework and [1] for the discussion
> with Johan (who informed me of case #1, I added him on this mail)
> 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> >  drivers/usb/core/phy.c | 11 ++++-------
> >  1 file changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
> > index 9879767..0f972e1 100644
> > --- a/drivers/usb/core/phy.c
> > +++ b/drivers/usb/core/phy.c
> > @@ -23,14 +23,11 @@ static int usb_phy_roothub_add_phy(struct device *dev, int index,
> >                                    struct list_head *list)
> >  {
> >         struct usb_phy_roothub *roothub_entry;
> > -       struct phy *phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       struct phy *phy;
> >
> > -       if (IS_ERR_OR_NULL(phy)) {
> > -               if (!phy || PTR_ERR(phy) == -ENODEV)
> > -                       return 0;
> > -               else
> > -                       return PTR_ERR(phy);
> > -       }
> > +       phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       if (IS_ERR(phy))
> > +               return PTR_ERR(phy);
> @Johan can you please review this as well? maybe we need to keep the
> -ENODEV check
> 
> 
> Regards
> Martin
> 
> 
> [0] https://elixir.bootlin.com/linux/v4.18-rc2/source/drivers/phy/phy-core.c#L421
> [1] https://lkml.org/lkml/2018/4/19/88

WARNING: multiple messages have this Message-ID (diff)
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Cc: johan@kernel.org, gregkh@linuxfoundation.org,
	felipe.balbi@linux.intel.com, matthias.bgg@gmail.com,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Subject: [2/2] usb: core: phy: fix return value checking about devm_of_phy_get_by_index()
Date: Mon, 25 Jun 2018 14:37:01 +0800	[thread overview]
Message-ID: <1529908621.32173.27.camel@mhfsdcap03> (raw)

On Sun, 2018-06-24 at 20:00 +0200, Martin Blumenstingl wrote:
> Hello Chunfeng,
> 
> thank you for the patch!
> 
> On Fri, Jun 22, 2018 at 8:33 AM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> >
> > 1. use IS_ERR() but not IS_ERR_OR_NULL() because devm_of_phy_get_by_index()
> >     never return NULL value;
> ACK - good catch!
> 
> > 2. devm_of_phy_get_by_index() should not fail for a valid index
> I have learned that the PHY framework can return -ENODEV if the PHY is:
> 1. supposed to be handled by the legacy USB PHY framework
> 2. the PHY node is disabled in devicetree
A little confused, we can avoid this error by not using a disabled or
"usb-nop-xceiv" phy in host node.

If ignore error of -ENODEV, we will also skip an error case which we
don't want it happen. 

> 
> see [0] for the code in the PHY framework and [1] for the discussion
> with Johan (who informed me of case #1, I added him on this mail)
> 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> >  drivers/usb/core/phy.c | 11 ++++-------
> >  1 file changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
> > index 9879767..0f972e1 100644
> > --- a/drivers/usb/core/phy.c
> > +++ b/drivers/usb/core/phy.c
> > @@ -23,14 +23,11 @@ static int usb_phy_roothub_add_phy(struct device *dev, int index,
> >                                    struct list_head *list)
> >  {
> >         struct usb_phy_roothub *roothub_entry;
> > -       struct phy *phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       struct phy *phy;
> >
> > -       if (IS_ERR_OR_NULL(phy)) {
> > -               if (!phy || PTR_ERR(phy) == -ENODEV)
> > -                       return 0;
> > -               else
> > -                       return PTR_ERR(phy);
> > -       }
> > +       phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       if (IS_ERR(phy))
> > +               return PTR_ERR(phy);
> @Johan can you please review this as well? maybe we need to keep the
> -ENODEV check
> 
> 
> Regards
> Martin
> 
> 
> [0] https://elixir.bootlin.com/linux/v4.18-rc2/source/drivers/phy/phy-core.c#L421
> [1] https://lkml.org/lkml/2018/4/19/88
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: chunfeng.yun@mediatek.com (Chunfeng Yun)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] usb: core: phy: fix return value checking about devm_of_phy_get_by_index()
Date: Mon, 25 Jun 2018 14:37:01 +0800	[thread overview]
Message-ID: <1529908621.32173.27.camel@mhfsdcap03> (raw)
In-Reply-To: <CAFBinCBS+fpfx6jaaqD=kqFuMF6ko8GikbV1ZVwgbDh-Sn8T8w@mail.gmail.com>

On Sun, 2018-06-24 at 20:00 +0200, Martin Blumenstingl wrote:
> Hello Chunfeng,
> 
> thank you for the patch!
> 
> On Fri, Jun 22, 2018 at 8:33 AM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> >
> > 1. use IS_ERR() but not IS_ERR_OR_NULL() because devm_of_phy_get_by_index()
> >     never return NULL value;
> ACK - good catch!
> 
> > 2. devm_of_phy_get_by_index() should not fail for a valid index
> I have learned that the PHY framework can return -ENODEV if the PHY is:
> 1. supposed to be handled by the legacy USB PHY framework
> 2. the PHY node is disabled in devicetree
A little confused, we can avoid this error by not using a disabled or
"usb-nop-xceiv" phy in host node.

If ignore error of -ENODEV, we will also skip an error case which we
don't want it happen. 

> 
> see [0] for the code in the PHY framework and [1] for the discussion
> with Johan (who informed me of case #1, I added him on this mail)
> 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> >  drivers/usb/core/phy.c | 11 ++++-------
> >  1 file changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
> > index 9879767..0f972e1 100644
> > --- a/drivers/usb/core/phy.c
> > +++ b/drivers/usb/core/phy.c
> > @@ -23,14 +23,11 @@ static int usb_phy_roothub_add_phy(struct device *dev, int index,
> >                                    struct list_head *list)
> >  {
> >         struct usb_phy_roothub *roothub_entry;
> > -       struct phy *phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       struct phy *phy;
> >
> > -       if (IS_ERR_OR_NULL(phy)) {
> > -               if (!phy || PTR_ERR(phy) == -ENODEV)
> > -                       return 0;
> > -               else
> > -                       return PTR_ERR(phy);
> > -       }
> > +       phy = devm_of_phy_get_by_index(dev, dev->of_node, index);
> > +       if (IS_ERR(phy))
> > +               return PTR_ERR(phy);
> @Johan can you please review this as well? maybe we need to keep the
> -ENODEV check
> 
> 
> Regards
> Martin
> 
> 
> [0] https://elixir.bootlin.com/linux/v4.18-rc2/source/drivers/phy/phy-core.c#L421
> [1] https://lkml.org/lkml/2018/4/19/88

  parent reply	other threads:[~2018-06-25  6:42 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-22  6:33 [PATCH 1/2] usb: gadget: composite: fix delayed_status race condition when set_interface Chunfeng Yun
2018-06-22  6:33 ` Chunfeng Yun
2018-06-22  6:33 ` [1/2] " Chunfeng Yun
2018-06-22  6:33 ` [PATCH 1/2] " Chunfeng Yun
2018-06-22  6:33 ` [PATCH 2/2] usb: core: phy: fix return value checking about devm_of_phy_get_by_index() Chunfeng Yun
2018-06-22  6:33   ` Chunfeng Yun
2018-06-22  6:33   ` [2/2] " Chunfeng Yun
2018-06-22  6:33   ` [PATCH 2/2] " Chunfeng Yun
2018-06-24 18:00   ` Martin Blumenstingl
2018-06-24 18:00     ` Martin Blumenstingl
2018-06-24 18:00     ` [2/2] " Martin Blumenstingl
2018-06-25  5:29     ` [PATCH 2/2] " Johan Hovold
2018-06-25  5:29       ` Johan Hovold
2018-06-25  5:29       ` [2/2] " Johan Hovold
2018-06-25  6:37     ` Chunfeng Yun [this message]
2018-06-25  6:37       ` [PATCH 2/2] " Chunfeng Yun
2018-06-25  6:37       ` [2/2] " Chunfeng Yun
2018-06-25  6:37       ` [PATCH 2/2] " Chunfeng Yun
2018-06-25 17:32       ` Martin Blumenstingl
2018-06-25 17:32         ` Martin Blumenstingl
2018-06-25 17:32         ` [2/2] " Martin Blumenstingl

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=1529908621.32173.27.camel@mhfsdcap03 \
    --to=chunfeng.yun@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=felipe.balbi@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=matthias.bgg@gmail.com \
    /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.