2019-03-18 14:53:26

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH] usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0

There is no need to compare *port* with >= 0 because such comparison
of an unsigned value is always true.

Fix this by removing such comparison.

Addresses-Coverity-ID: 1443949 ("Unsigned compared against 0")
Fixes: 02a50b875046 ("usb: usb251xb: add usb data lane port swap feature")
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/usb/misc/usb251xb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
index 4d72b7d1d383..2c8e2cad7e10 100644
--- a/drivers/usb/misc/usb251xb.c
+++ b/drivers/usb/misc/usb251xb.c
@@ -547,7 +547,7 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
*/
hub->port_swap = USB251XB_DEF_PORT_SWAP;
of_property_for_each_u32(np, "swap-dx-lanes", prop, p, port) {
- if ((port >= 0) && (port <= data->port_cnt))
+ if (port <= data->port_cnt)
hub->port_swap |= BIT(port);
}

--
2.21.0



2019-03-18 15:35:59

by Marco Felsch

[permalink] [raw]
Subject: Re: [PATCH] usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0

Hi Silva,

On 19-03-18 09:50, Gustavo A. R. Silva wrote:
> There is no need to compare *port* with >= 0 because such comparison
> of an unsigned value is always true.

Absolutly.. It seems that it was an copy'n'paste failure. Thanks for
fixing that.

Regards,
Marco

> Fix this by removing such comparison.
>
> Addresses-Coverity-ID: 1443949 ("Unsigned compared against 0")
> Fixes: 02a50b875046 ("usb: usb251xb: add usb data lane port swap feature")
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> drivers/usb/misc/usb251xb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
> index 4d72b7d1d383..2c8e2cad7e10 100644
> --- a/drivers/usb/misc/usb251xb.c
> +++ b/drivers/usb/misc/usb251xb.c
> @@ -547,7 +547,7 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
> */
> hub->port_swap = USB251XB_DEF_PORT_SWAP;
> of_property_for_each_u32(np, "swap-dx-lanes", prop, p, port) {
> - if ((port >= 0) && (port <= data->port_cnt))
> + if (port <= data->port_cnt)
> hub->port_swap |= BIT(port);
> }
>
> --
> 2.21.0
>
>

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

2019-03-18 15:55:27

by Richard Leitner

[permalink] [raw]
Subject: Re: [PATCH] usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0

Hi Marco, Hi Gustavo,
thanks for the fix, please feel free to add

Reviewed-by: Richard Leitner <[email protected]>

On 18/03/2019 16:34, Marco Felsch wrote:
> Hi Silva,
>
> On 19-03-18 09:50, Gustavo A. R. Silva wrote:
>> There is no need to compare *port* with >= 0 because such comparison
>> of an unsigned value is always true.
>
> Absolutly.. It seems that it was an copy'n'paste failure. Thanks for
> fixing that.

A small note on further improvement from my side:

According the datasheet, when you set swap-dx-lanes to 0 (-> setting
port to 0 -> setting bit 0 of PRTSP) " the upstream port DP/DM is
swapped".

IMHO this is not straight-forward, so maybe we want to additionally

a) mention it somewhere in the documentation
b) check on port >= 1
c) something else?

Any opinions on that from your side? ... I'd prefer "a"...

regards;Richard.L

>
> Regards,
> Marco
>
>> Fix this by removing such comparison.
>>
>> Addresses-Coverity-ID: 1443949 ("Unsigned compared against 0")
>> Fixes: 02a50b875046 ("usb: usb251xb: add usb data lane port swap feature")
>> Signed-off-by: Gustavo A. R. Silva <[email protected]>
>> ---
>> drivers/usb/misc/usb251xb.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
>> index 4d72b7d1d383..2c8e2cad7e10 100644
>> --- a/drivers/usb/misc/usb251xb.c
>> +++ b/drivers/usb/misc/usb251xb.c
>> @@ -547,7 +547,7 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
>> */
>> hub->port_swap = USB251XB_DEF_PORT_SWAP;
>> of_property_for_each_u32(np, "swap-dx-lanes", prop, p, port) {
>> - if ((port >= 0) && (port <= data->port_cnt))
>> + if (port <= data->port_cnt)
>> hub->port_swap |= BIT(port);
>> }
>>
>> --
>> 2.21.0
>>
>>
>

2019-03-18 16:49:20

by Marco Felsch

[permalink] [raw]
Subject: Re: [PATCH] usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0

Hi Richard,

On 19-03-18 16:46, Richard Leitner wrote:
> Hi Marco, Hi Gustavo,
> thanks for the fix, please feel free to add
>
> Reviewed-by: Richard Leitner <[email protected]>
>
> On 18/03/2019 16:34, Marco Felsch wrote:
> > Hi Silva,
> >
> > On 19-03-18 09:50, Gustavo A. R. Silva wrote:
> > > There is no need to compare *port* with >= 0 because such comparison
> > > of an unsigned value is always true.
> >
> > Absolutly.. It seems that it was an copy'n'paste failure. Thanks for
> > fixing that.
>
> A small note on further improvement from my side:
>
> According the datasheet, when you set swap-dx-lanes to 0 (-> setting port to
> 0 -> setting bit 0 of PRTSP) " the upstream port DP/DM is swapped".

Yes I know that's not intuitve and may confuses the users.

> IMHO this is not straight-forward, so maybe we want to additionally
>
> a) mention it somewhere in the documentation

IMHO this is the correct place.

> b) check on port >= 1

I think this isn't doable since we shouldn't break the existing dt.

Regards,
Marco

> c) something else?
>
> Any opinions on that from your side? ... I'd prefer "a"...
>
> regards;Richard.L
>
> >
> > Regards,
> > Marco
> >
> > > Fix this by removing such comparison.
> > >
> > > Addresses-Coverity-ID: 1443949 ("Unsigned compared against 0")
> > > Fixes: 02a50b875046 ("usb: usb251xb: add usb data lane port swap feature")
> > > Signed-off-by: Gustavo A. R. Silva <[email protected]>
> > > ---
> > > drivers/usb/misc/usb251xb.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
> > > index 4d72b7d1d383..2c8e2cad7e10 100644
> > > --- a/drivers/usb/misc/usb251xb.c
> > > +++ b/drivers/usb/misc/usb251xb.c
> > > @@ -547,7 +547,7 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
> > > */
> > > hub->port_swap = USB251XB_DEF_PORT_SWAP;
> > > of_property_for_each_u32(np, "swap-dx-lanes", prop, p, port) {
> > > - if ((port >= 0) && (port <= data->port_cnt))
> > > + if (port <= data->port_cnt)
> > > hub->port_swap |= BIT(port);
> > > }
> > > --
> > > 2.21.0
> > >
> > >
> >
>

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

2019-03-19 09:42:28

by Richard Leitner

[permalink] [raw]
Subject: Re: [PATCH] usb: usb251xb: Remove unnecessary comparison of unsigned integer with >= 0


On 18/03/2019 17:48, Marco Felsch wrote:
> On 19-03-18 16:46, Richard Leitner wrote:
>> A small note on further improvement from my side:
>>
>> According the datasheet, when you set swap-dx-lanes to 0 (-> setting port to
>> 0 -> setting bit 0 of PRTSP) " the upstream port DP/DM is swapped".
>
> Yes I know that's not intuitve and may confuses the users.
>
>> IMHO this is not straight-forward, so maybe we want to additionally
>>
>> a) mention it somewhere in the documentation
>
> IMHO this is the correct place.
>
>> b) check on port >= 1
>
> I think this isn't doable since we shouldn't break the existing dt.

ACK.

@Marco/Gustavo: does one of you wants to provide a patch for this?

>
> Regards,
> Marco
>
>> c) something else?
>>
>> Any opinions on that from your side? ... I'd prefer "a"...

regards;Richard.L