2022-09-26 15:48:28

by Dongliang Mu

[permalink] [raw]
Subject: [PATCH] usb: cdns3: remove dead code

From: Dongliang Mu <[email protected]>

Smatch reports the following error:

drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
platform_get_irq() does not return zero

From the document, platform_get_irq_byname_optional only returns
non-zero value, and negative value on failure.

Fix this by removing the zero value checking.

Signed-off-by: Dongliang Mu <[email protected]>
---
drivers/usb/cdns3/cdns3-plat.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
index dc068e940ed5..2bc5d094548b 100644
--- a/drivers/usb/cdns3/cdns3-plat.c
+++ b/drivers/usb/cdns3/cdns3-plat.c
@@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
if (cdns->wakeup_irq == -EPROBE_DEFER)
return cdns->wakeup_irq;
- else if (cdns->wakeup_irq == 0)
- return -EINVAL;

if (cdns->wakeup_irq < 0) {
dev_dbg(dev, "couldn't get wakeup irq\n");
--
2.35.1


2022-09-28 06:58:27

by Pawel Laszczak

[permalink] [raw]
Subject: RE: [PATCH] usb: cdns3: remove dead code

>
>From: Dongliang Mu <[email protected]>
>
>Smatch reports the following error:
>
>drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
>platform_get_irq() does not return zero
>
>From the document, platform_get_irq_byname_optional only returns
>non-zero value, and negative value on failure.
>
>Fix this by removing the zero value checking.
>
>Signed-off-by: Dongliang Mu <[email protected]>
>---
> drivers/usb/cdns3/cdns3-plat.c | 2 --
> 1 file changed, 2 deletions(-)
>
>diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
>index dc068e940ed5..2bc5d094548b 100644
>--- a/drivers/usb/cdns3/cdns3-plat.c
>+++ b/drivers/usb/cdns3/cdns3-plat.c
>@@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
> cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
> if (cdns->wakeup_irq == -EPROBE_DEFER)
> return cdns->wakeup_irq;
>- else if (cdns->wakeup_irq == 0)
>- return -EINVAL;
>
I think that here we should have:
else if (cdns->wakeup_irq == -ENXIO)
return -EINVAL;
because of function:
platform_get_irq_byname_optional -> __platform_get_irq_byname returns
irq number (>0), -EPROBE_DEFFER or -ENXIO


thanks
Pawel

> if (cdns->wakeup_irq < 0) {
> dev_dbg(dev, "couldn't get wakeup irq\n");
>--
>2.35.1

2022-09-28 07:22:50

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: remove dead code



On 26/09/2022 16:59, Dongliang Mu wrote:
> From: Dongliang Mu <[email protected]>
>
> Smatch reports the following error:
>
> drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
> platform_get_irq() does not return zero
>
> From the document, platform_get_irq_byname_optional only returns
> non-zero value, and negative value on failure.
>
> Fix this by removing the zero value checking.
>
> Signed-off-by: Dongliang Mu <[email protected]>

Reviewed-by: Roger Quadros <[email protected]>

> ---
> drivers/usb/cdns3/cdns3-plat.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
> index dc068e940ed5..2bc5d094548b 100644
> --- a/drivers/usb/cdns3/cdns3-plat.c
> +++ b/drivers/usb/cdns3/cdns3-plat.c
> @@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
> cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
> if (cdns->wakeup_irq == -EPROBE_DEFER)
> return cdns->wakeup_irq;
> - else if (cdns->wakeup_irq == 0)
> - return -EINVAL;
>
> if (cdns->wakeup_irq < 0) {
> dev_dbg(dev, "couldn't get wakeup irq\n");


cheers,
-roger

2022-09-28 07:25:31

by Dongliang Mu

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: remove dead code

On Wed, Sep 28, 2022 at 2:49 PM Roger Quadros <[email protected]> wrote:
>
> Hello Pawel,
>
> On 28/09/2022 09:40, Pawel Laszczak wrote:
> >>
> >> From: Dongliang Mu <[email protected]>
> >>
> >> Smatch reports the following error:
> >>
> >> drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
> >> platform_get_irq() does not return zero
> >>
> >>From the document, platform_get_irq_byname_optional only returns
> >> non-zero value, and negative value on failure.
> >>
> >> Fix this by removing the zero value checking.
> >>
> >> Signed-off-by: Dongliang Mu <[email protected]>
> >> ---
> >> drivers/usb/cdns3/cdns3-plat.c | 2 --
> >> 1 file changed, 2 deletions(-)
> >>
> >> diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
> >> index dc068e940ed5..2bc5d094548b 100644
> >> --- a/drivers/usb/cdns3/cdns3-plat.c
> >> +++ b/drivers/usb/cdns3/cdns3-plat.c
> >> @@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
> >> cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
> >> if (cdns->wakeup_irq == -EPROBE_DEFER)
> >> return cdns->wakeup_irq;
> >> - else if (cdns->wakeup_irq == 0)
> >> - return -EINVAL;
> >>
> > I think that here we should have:
> > else if (cdns->wakeup_irq == -ENXIO)
> > return -EINVAL;
> > because of function:
> > platform_get_irq_byname_optional -> __platform_get_irq_byname returns
> > irq number (>0), -EPROBE_DEFFER or -ENXIO
>
> But this is changing functionality and should come as a new patch.

I agree. Pawel, you should submit a new patch. This satisfies the rule
of kernel patching.

>
> The original patch is correct as it doesn't change existing code
> functionality.
>
> >
> >
> > thanks
> > Pawel
> >
> >> if (cdns->wakeup_irq < 0) {
> >> dev_dbg(dev, "couldn't get wakeup irq\n");
> >> --
> >> 2.35.1
> >
>
> cheers,
> -roger

2022-09-28 07:39:56

by Dongliang Mu

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: remove dead code

On Wed, Sep 28, 2022 at 2:50 PM Roger Quadros <[email protected]> wrote:
>
>
>
> On 26/09/2022 16:59, Dongliang Mu wrote:
> > From: Dongliang Mu <[email protected]>
> >
> > Smatch reports the following error:
> >
> > drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
> > platform_get_irq() does not return zero
> >
> > From the document, platform_get_irq_byname_optional only returns
> > non-zero value, and negative value on failure.
> >
> > Fix this by removing the zero value checking.
> >
> > Signed-off-by: Dongliang Mu <[email protected]>
>
> Reviewed-by: Roger Quadros <[email protected]>

Hi Roger,

By simply checking the usage of API - platform_get_irq_byname_optional,
there are several issues in other code sites.

However, some code sites are related to semantics. I will analyze all
of them and submit patches later.

>
> > ---
> > drivers/usb/cdns3/cdns3-plat.c | 2 --
> > 1 file changed, 2 deletions(-)
> >
> > diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
> > index dc068e940ed5..2bc5d094548b 100644
> > --- a/drivers/usb/cdns3/cdns3-plat.c
> > +++ b/drivers/usb/cdns3/cdns3-plat.c
> > @@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
> > cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
> > if (cdns->wakeup_irq == -EPROBE_DEFER)
> > return cdns->wakeup_irq;
> > - else if (cdns->wakeup_irq == 0)
> > - return -EINVAL;
> >
> > if (cdns->wakeup_irq < 0) {
> > dev_dbg(dev, "couldn't get wakeup irq\n");
>
>
> cheers,
> -roger

2022-09-28 07:40:07

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: remove dead code

Hello Pawel,

On 28/09/2022 09:40, Pawel Laszczak wrote:
>>
>> From: Dongliang Mu <[email protected]>
>>
>> Smatch reports the following error:
>>
>> drivers/usb/cdns3/cdns3-plat.c:113 cdns3_plat_probe() warn:
>> platform_get_irq() does not return zero
>>
>>From the document, platform_get_irq_byname_optional only returns
>> non-zero value, and negative value on failure.
>>
>> Fix this by removing the zero value checking.
>>
>> Signed-off-by: Dongliang Mu <[email protected]>
>> ---
>> drivers/usb/cdns3/cdns3-plat.c | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c
>> index dc068e940ed5..2bc5d094548b 100644
>> --- a/drivers/usb/cdns3/cdns3-plat.c
>> +++ b/drivers/usb/cdns3/cdns3-plat.c
>> @@ -110,8 +110,6 @@ static int cdns3_plat_probe(struct platform_device *pdev)
>> cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
>> if (cdns->wakeup_irq == -EPROBE_DEFER)
>> return cdns->wakeup_irq;
>> - else if (cdns->wakeup_irq == 0)
>> - return -EINVAL;
>>
> I think that here we should have:
> else if (cdns->wakeup_irq == -ENXIO)
> return -EINVAL;
> because of function:
> platform_get_irq_byname_optional -> __platform_get_irq_byname returns
> irq number (>0), -EPROBE_DEFFER or -ENXIO

But this is changing functionality and should come as a new patch.

The original patch is correct as it doesn't change existing code
functionality.

>
>
> thanks
> Pawel
>
>> if (cdns->wakeup_irq < 0) {
>> dev_dbg(dev, "couldn't get wakeup irq\n");
>> --
>> 2.35.1
>

cheers,
-roger