2017-04-03 17:36:27

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH] usb: misc: add missing continue and refactor code

-Code refactoring to make the flow easier to follow.
-Add missing 'continue' for case USB_ENDPOINT_XFER_INT.

Addresses-Coverity-ID: 1248733
Cc: Alan Stern <[email protected]>
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/usb/misc/usbtest.c | 68 +++++++++++++++++++++-------------------------
1 file changed, 31 insertions(+), 37 deletions(-)

diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 3525626..382491e 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -124,18 +124,32 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)

/*-------------------------------------------------------------------------*/

+static inline void endpoint_update(int edi,
+ struct usb_host_endpoint **in,
+ struct usb_host_endpoint **out,
+ struct usb_host_endpoint *e)
+{
+ if (edi) {
+ if (!*in)
+ *in = e;
+ } else {
+ if (!*out)
+ *out = e;
+ }
+}
+
static int
get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
{
- int tmp;
- struct usb_host_interface *alt;
- struct usb_host_endpoint *in, *out;
- struct usb_host_endpoint *iso_in, *iso_out;
- struct usb_host_endpoint *int_in, *int_out;
- struct usb_device *udev;
+ int tmp;
+ struct usb_host_interface *alt;
+ struct usb_host_endpoint *in, *out;
+ struct usb_host_endpoint *iso_in, *iso_out;
+ struct usb_host_endpoint *int_in, *int_out;
+ struct usb_device *udev;

for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
- unsigned ep;
+ unsigned ep;

in = out = NULL;
iso_in = iso_out = NULL;
@@ -150,47 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
* ignore other endpoints and altsettings.
*/
for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
- struct usb_host_endpoint *e;
+ struct usb_host_endpoint *e;
+ int edi;

e = alt->endpoint + ep;
+ edi = usb_endpoint_dir_in(&e->desc);
+
switch (usb_endpoint_type(&e->desc)) {
case USB_ENDPOINT_XFER_BULK:
- break;
+ endpoint_update(edi, &in, &out, e);
+ continue;
case USB_ENDPOINT_XFER_INT:
if (dev->info->intr)
- goto try_intr;
+ endpoint_update(edi, &int_in, &int_out, e);
+ continue;
case USB_ENDPOINT_XFER_ISOC:
if (dev->info->iso)
- goto try_iso;
- /* FALLTHROUGH */
+ endpoint_update(edi, &iso_in, &iso_out, e);
+ /* fall through */
default:
continue;
}
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!in)
- in = e;
- } else {
- if (!out)
- out = e;
- }
- continue;
-try_intr:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!int_in)
- int_in = e;
- } else {
- if (!int_out)
- int_out = e;
- }
- continue;
-try_iso:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!iso_in)
- iso_in = e;
- } else {
- if (!iso_out)
- iso_out = e;
- }
}
if ((in && out) || iso_in || iso_out || int_in || int_out)
goto found;
--
2.5.0


2017-04-03 17:57:53

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: misc: add missing continue and refactor code

On Mon, Apr 03, 2017 at 09:39:53AM -0500, Gustavo A. R. Silva wrote:
> -Code refactoring to make the flow easier to follow.
> -Add missing 'continue' for case USB_ENDPOINT_XFER_INT.

Don't do multiple things in the same patch, please make these multiple
patches. And do the "add missing continue" first, so it can be
backported to other kernels easier please.

thanks,

greg k-h

2017-04-03 18:38:33

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH] usb: misc: add missing continue and refactor code

On Mon, 3 Apr 2017, Greg Kroah-Hartman wrote:

> On Mon, Apr 03, 2017 at 09:39:53AM -0500, Gustavo A. R. Silva wrote:
> > -Code refactoring to make the flow easier to follow.
> > -Add missing 'continue' for case USB_ENDPOINT_XFER_INT.
>
> Don't do multiple things in the same patch, please make these multiple
> patches. And do the "add missing continue" first, so it can be
> backported to other kernels easier please.

Also, make sure your patch does not contain gratuitous whitespace
changes.

Alan Stern

2017-04-03 19:24:25

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH] usb: misc: add missing continue and refactor code


Quoting Alan Stern <[email protected]>:

> On Mon, 3 Apr 2017, Greg Kroah-Hartman wrote:
>
>> On Mon, Apr 03, 2017 at 09:39:53AM -0500, Gustavo A. R. Silva wrote:
>> > -Code refactoring to make the flow easier to follow.
>> > -Add missing 'continue' for case USB_ENDPOINT_XFER_INT.
>>
>> Don't do multiple things in the same patch, please make these multiple
>> patches. And do the "add missing continue" first, so it can be
>> backported to other kernels easier please.
>

OK, I will send a patchset shortly.

> Also, make sure your patch does not contain gratuitous whitespace
> changes.
>

Does it have any?
I ran it through checkpatch.pl before sending it and didn't see any.

Thanks
--
Gustavo A. R. Silva




2017-04-03 19:50:47

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH 2/2] usb: misc: refactor code

Code refactoring to make the flow easier to follow.

Cc: Alan Stern <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/usb/misc/usbtest.c | 67 +++++++++++++++++++++-------------------------
1 file changed, 30 insertions(+), 37 deletions(-)

diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 7bfb6b78..382491e 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -124,18 +124,32 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)

/*-------------------------------------------------------------------------*/

+static inline void endpoint_update(int edi,
+ struct usb_host_endpoint **in,
+ struct usb_host_endpoint **out,
+ struct usb_host_endpoint *e)
+{
+ if (edi) {
+ if (!*in)
+ *in = e;
+ } else {
+ if (!*out)
+ *out = e;
+ }
+}
+
static int
get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
{
- int tmp;
- struct usb_host_interface *alt;
- struct usb_host_endpoint *in, *out;
- struct usb_host_endpoint *iso_in, *iso_out;
- struct usb_host_endpoint *int_in, *int_out;
- struct usb_device *udev;
+ int tmp;
+ struct usb_host_interface *alt;
+ struct usb_host_endpoint *in, *out;
+ struct usb_host_endpoint *iso_in, *iso_out;
+ struct usb_host_endpoint *int_in, *int_out;
+ struct usb_device *udev;

for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
- unsigned ep;
+ unsigned ep;

in = out = NULL;
iso_in = iso_out = NULL;
@@ -150,48 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
* ignore other endpoints and altsettings.
*/
for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
- struct usb_host_endpoint *e;
+ struct usb_host_endpoint *e;
+ int edi;

e = alt->endpoint + ep;
+ edi = usb_endpoint_dir_in(&e->desc);
+
switch (usb_endpoint_type(&e->desc)) {
case USB_ENDPOINT_XFER_BULK:
- break;
+ endpoint_update(edi, &in, &out, e);
+ continue;
case USB_ENDPOINT_XFER_INT:
if (dev->info->intr)
- goto try_intr;
+ endpoint_update(edi, &int_in, &int_out, e);
continue;
case USB_ENDPOINT_XFER_ISOC:
if (dev->info->iso)
- goto try_iso;
- /* FALLTHROUGH */
+ endpoint_update(edi, &iso_in, &iso_out, e);
+ /* fall through */
default:
continue;
}
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!in)
- in = e;
- } else {
- if (!out)
- out = e;
- }
- continue;
-try_intr:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!int_in)
- int_in = e;
- } else {
- if (!int_out)
- int_out = e;
- }
- continue;
-try_iso:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!iso_in)
- iso_in = e;
- } else {
- if (!iso_out)
- iso_out = e;
- }
}
if ((in && out) || iso_in || iso_out || int_in || int_out)
goto found;
--
2.5.0

2017-04-03 20:07:59

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH 1/2] usb: misc: add missing continue in switch

Add missing continue in switch.

Addresses-Coverity-ID: 1248733
Cc: Alan Stern <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
drivers/usb/misc/usbtest.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 3525626..7bfb6b78 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -159,6 +159,7 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
case USB_ENDPOINT_XFER_INT:
if (dev->info->intr)
goto try_intr;
+ continue;
case USB_ENDPOINT_XFER_ISOC:
if (dev->info->iso)
goto try_iso;
--
2.5.0

2017-04-03 21:06:24

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: misc: refactor code

On Mon, 3 Apr 2017, Gustavo A. R. Silva wrote:

> Code refactoring to make the flow easier to follow.
>
> Cc: Alan Stern <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> drivers/usb/misc/usbtest.c | 67 +++++++++++++++++++++-------------------------
> 1 file changed, 30 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
> index 7bfb6b78..382491e 100644
> --- a/drivers/usb/misc/usbtest.c
> +++ b/drivers/usb/misc/usbtest.c
> @@ -124,18 +124,32 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)
>
> /*-------------------------------------------------------------------------*/
>
> +static inline void endpoint_update(int edi,
> + struct usb_host_endpoint **in,
> + struct usb_host_endpoint **out,
> + struct usb_host_endpoint *e)
> +{
> + if (edi) {
> + if (!*in)
> + *in = e;
> + } else {
> + if (!*out)
> + *out = e;
> + }
> +}
> +
> static int
> get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> {
> - int tmp;
> - struct usb_host_interface *alt;
> - struct usb_host_endpoint *in, *out;
> - struct usb_host_endpoint *iso_in, *iso_out;
> - struct usb_host_endpoint *int_in, *int_out;
> - struct usb_device *udev;
> + int tmp;
> + struct usb_host_interface *alt;
> + struct usb_host_endpoint *in, *out;
> + struct usb_host_endpoint *iso_in, *iso_out;
> + struct usb_host_endpoint *int_in, *int_out;
> + struct usb_device *udev;

What's the difference between these 6 lines you added and the 6 lines
that were there originally?

> for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
> - unsigned ep;
> + unsigned ep;

And here?

>
> in = out = NULL;
> iso_in = iso_out = NULL;
> @@ -150,48 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> * ignore other endpoints and altsettings.
> */
> for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
> - struct usb_host_endpoint *e;
> + struct usb_host_endpoint *e;

And here?

> + int edi;
>
> e = alt->endpoint + ep;
> + edi = usb_endpoint_dir_in(&e->desc);
> +
> switch (usb_endpoint_type(&e->desc)) {
> case USB_ENDPOINT_XFER_BULK:
> - break;
> + endpoint_update(edi, &in, &out, e);
> + continue;
> case USB_ENDPOINT_XFER_INT:
> if (dev->info->intr)
> - goto try_intr;
> + endpoint_update(edi, &int_in, &int_out, e);
> continue;
> case USB_ENDPOINT_XFER_ISOC:
> if (dev->info->iso)
> - goto try_iso;
> - /* FALLTHROUGH */
> + endpoint_update(edi, &iso_in, &iso_out, e);
> + /* fall through */

Why change the comment?

Alan Stern

> default:
> continue;
> }
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!in)
> - in = e;
> - } else {
> - if (!out)
> - out = e;
> - }
> - continue;
> -try_intr:
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!int_in)
> - int_in = e;
> - } else {
> - if (!int_out)
> - int_out = e;
> - }
> - continue;
> -try_iso:
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!iso_in)
> - iso_in = e;
> - } else {
> - if (!iso_out)
> - iso_out = e;
> - }
> }
> if ((in && out) || iso_in || iso_out || int_in || int_out)
> goto found;
>

2017-04-04 02:32:41

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: misc: refactor code

Hi Alan,

Quoting Alan Stern <[email protected]>:

> On Mon, 3 Apr 2017, Gustavo A. R. Silva wrote:
>
>> Code refactoring to make the flow easier to follow.
>>
>> Cc: Alan Stern <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Signed-off-by: Gustavo A. R. Silva <[email protected]>
>> ---
>> drivers/usb/misc/usbtest.c | 67
>> +++++++++++++++++++++-------------------------
>> 1 file changed, 30 insertions(+), 37 deletions(-)
>>
>> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
>> index 7bfb6b78..382491e 100644
>> --- a/drivers/usb/misc/usbtest.c
>> +++ b/drivers/usb/misc/usbtest.c
>> @@ -124,18 +124,32 @@ static struct usb_device
>> *testdev_to_usbdev(struct usbtest_dev *test)
>>
>>
>> /*-------------------------------------------------------------------------*/
>>
>> +static inline void endpoint_update(int edi,
>> + struct usb_host_endpoint **in,
>> + struct usb_host_endpoint **out,
>> + struct usb_host_endpoint *e)
>> +{
>> + if (edi) {
>> + if (!*in)
>> + *in = e;
>> + } else {
>> + if (!*out)
>> + *out = e;
>> + }
>> +}
>> +
>> static int
>> get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
>> {
>> - int tmp;
>> - struct usb_host_interface *alt;
>> - struct usb_host_endpoint *in, *out;
>> - struct usb_host_endpoint *iso_in, *iso_out;
>> - struct usb_host_endpoint *int_in, *int_out;
>> - struct usb_device *udev;
>> + int tmp;
>> + struct usb_host_interface *alt;
>> + struct usb_host_endpoint *in, *out;
>> + struct usb_host_endpoint *iso_in, *iso_out;
>> + struct usb_host_endpoint *int_in, *int_out;
>> + struct usb_device *udev;
>
> What's the difference between these 6 lines you added and the 6 lines
> that were there originally?
>

Yeah, well, certainly none at all. This is what happened: I created a
local copy of my changes(this piece of code included) and fixed some
issues in a previous patch, then I did a git revert and moved my
changes back to the original file. During this process the tabs were
replaced with spaces in the original file, then I had to add the tabs
again and this was the resulting patch.

>> for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
>> - unsigned ep;
>> + unsigned ep;
>
> And here?
>

Same as above.

>>
>> in = out = NULL;
>> iso_in = iso_out = NULL;
>> @@ -150,48 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct
>> usb_interface *intf)
>> * ignore other endpoints and altsettings.
>> */
>> for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
>> - struct usb_host_endpoint *e;
>> + struct usb_host_endpoint *e;
>
> And here?
>

Same as above.

>> + int edi;
>>
>> e = alt->endpoint + ep;
>> + edi = usb_endpoint_dir_in(&e->desc);
>> +
>> switch (usb_endpoint_type(&e->desc)) {
>> case USB_ENDPOINT_XFER_BULK:
>> - break;
>> + endpoint_update(edi, &in, &out, e);
>> + continue;
>> case USB_ENDPOINT_XFER_INT:
>> if (dev->info->intr)
>> - goto try_intr;
>> + endpoint_update(edi, &int_in, &int_out, e);
>> continue;
>> case USB_ENDPOINT_XFER_ISOC:
>> if (dev->info->iso)
>> - goto try_iso;
>> - /* FALLTHROUGH */
>> + endpoint_update(edi, &iso_in, &iso_out, e);
>> + /* fall through */
>
> Why change the comment?
>

Oh, I based this change in the following comment to another patch I
sent some weeks ago:
https://lkml.org/lkml/2017/2/10/293

It is due to Coding Style.

> Alan Stern
>
>> default:
>> continue;
>> }
>> - if (usb_endpoint_dir_in(&e->desc)) {
>> - if (!in)
>> - in = e;
>> - } else {
>> - if (!out)
>> - out = e;
>> - }
>> - continue;
>> -try_intr:
>> - if (usb_endpoint_dir_in(&e->desc)) {
>> - if (!int_in)
>> - int_in = e;
>> - } else {
>> - if (!int_out)
>> - int_out = e;
>> - }
>> - continue;
>> -try_iso:
>> - if (usb_endpoint_dir_in(&e->desc)) {
>> - if (!iso_in)
>> - iso_in = e;
>> - } else {
>> - if (!iso_out)
>> - iso_out = e;
>> - }
>> }
>> if ((in && out) || iso_in || iso_out || int_in || int_out)
>> goto found;
>>

Thanks for your comments.
--
Gustavo A. R. Silva





2017-04-04 03:48:46

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH v2 1/2] usb: misc: add missing continue in switch

Add missing continue in switch.

Addresses-Coverity-ID: 1248733
Cc: Alan Stern <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
Changes in v2:
None.

drivers/usb/misc/usbtest.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 3525626..7bfb6b78 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -159,6 +159,7 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
case USB_ENDPOINT_XFER_INT:
if (dev->info->intr)
goto try_intr;
+ continue;
case USB_ENDPOINT_XFER_ISOC:
if (dev->info->iso)
goto try_iso;
--
2.5.0

2017-04-04 03:51:59

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH v2 2/2] usb: misc: refactor code

Code refactoring to make the flow easier to follow.

Cc: Alan Stern <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
Changes in v2:
Remove unfruitful changes in previous patch.
Revert change to comment.

drivers/usb/misc/usbtest.c | 49 ++++++++++++++++++++--------------------------
1 file changed, 21 insertions(+), 28 deletions(-)

diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 7bfb6b78..88f627e 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -124,6 +124,20 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)

/*-------------------------------------------------------------------------*/

+static inline void endpoint_update(int edi,
+ struct usb_host_endpoint **in,
+ struct usb_host_endpoint **out,
+ struct usb_host_endpoint *e)
+{
+ if (edi) {
+ if (!*in)
+ *in = e;
+ } else {
+ if (!*out)
+ *out = e;
+ }
+}
+
static int
get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
{
@@ -151,47 +165,26 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
*/
for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
struct usb_host_endpoint *e;
+ int edi;

e = alt->endpoint + ep;
+ edi = usb_endpoint_dir_in(&e->desc);
+
switch (usb_endpoint_type(&e->desc)) {
case USB_ENDPOINT_XFER_BULK:
- break;
+ endpoint_update(edi, &in, &out, e);
+ continue;
case USB_ENDPOINT_XFER_INT:
if (dev->info->intr)
- goto try_intr;
+ endpoint_update(edi, &int_in, &int_out, e);
continue;
case USB_ENDPOINT_XFER_ISOC:
if (dev->info->iso)
- goto try_iso;
+ endpoint_update(edi, &iso_in, &iso_out, e);
/* FALLTHROUGH */
default:
continue;
}
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!in)
- in = e;
- } else {
- if (!out)
- out = e;
- }
- continue;
-try_intr:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!int_in)
- int_in = e;
- } else {
- if (!int_out)
- int_out = e;
- }
- continue;
-try_iso:
- if (usb_endpoint_dir_in(&e->desc)) {
- if (!iso_in)
- iso_in = e;
- } else {
- if (!iso_out)
- iso_out = e;
- }
}
if ((in && out) || iso_in || iso_out || int_in || int_out)
goto found;
--
2.5.0

2017-04-04 07:43:31

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: misc: refactor code


Hi,

"Gustavo A. R. Silva" <[email protected]> writes:
> Code refactoring to make the flow easier to follow.
>
> Cc: Alan Stern <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> drivers/usb/misc/usbtest.c | 67 +++++++++++++++++++++-------------------------
> 1 file changed, 30 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
> index 7bfb6b78..382491e 100644
> --- a/drivers/usb/misc/usbtest.c
> +++ b/drivers/usb/misc/usbtest.c
> @@ -124,18 +124,32 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)
>
> /*-------------------------------------------------------------------------*/
>
> +static inline void endpoint_update(int edi,
> + struct usb_host_endpoint **in,
> + struct usb_host_endpoint **out,
> + struct usb_host_endpoint *e)
> +{
> + if (edi) {
> + if (!*in)
> + *in = e;
> + } else {
> + if (!*out)
> + *out = e;
> + }
> +}
> +
> static int
> get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> {
> - int tmp;
> - struct usb_host_interface *alt;
> - struct usb_host_endpoint *in, *out;
> - struct usb_host_endpoint *iso_in, *iso_out;
> - struct usb_host_endpoint *int_in, *int_out;
> - struct usb_device *udev;
> + int tmp;
> + struct usb_host_interface *alt;
> + struct usb_host_endpoint *in, *out;
> + struct usb_host_endpoint *iso_in, *iso_out;
> + struct usb_host_endpoint *int_in, *int_out;
> + struct usb_device *udev;

unnecessary change

>
> for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
> - unsigned ep;
> + unsigned ep;

unnecessary change

>
> in = out = NULL;
> iso_in = iso_out = NULL;
> @@ -150,48 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> * ignore other endpoints and altsettings.
> */
> for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
> - struct usb_host_endpoint *e;
> + struct usb_host_endpoint *e;

unnecessary change

--
balbi


Attachments:
signature.asc (832.00 B)

2017-04-04 11:14:40

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: misc: refactor code

Hello,

Quoting Felipe Balbi <[email protected]>:

> Hi,
>
> "Gustavo A. R. Silva" <[email protected]> writes:
>> Code refactoring to make the flow easier to follow.
>>
>> Cc: Alan Stern <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Signed-off-by: Gustavo A. R. Silva <[email protected]>
>> ---
>> drivers/usb/misc/usbtest.c | 67
>> +++++++++++++++++++++-------------------------
>> 1 file changed, 30 insertions(+), 37 deletions(-)
>>
>> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
>> index 7bfb6b78..382491e 100644
>> --- a/drivers/usb/misc/usbtest.c
>> +++ b/drivers/usb/misc/usbtest.c
>> @@ -124,18 +124,32 @@ static struct usb_device
>> *testdev_to_usbdev(struct usbtest_dev *test)
>>
>>
>> /*-------------------------------------------------------------------------*/
>>
>> +static inline void endpoint_update(int edi,
>> + struct usb_host_endpoint **in,
>> + struct usb_host_endpoint **out,
>> + struct usb_host_endpoint *e)
>> +{
>> + if (edi) {
>> + if (!*in)
>> + *in = e;
>> + } else {
>> + if (!*out)
>> + *out = e;
>> + }
>> +}
>> +
>> static int
>> get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
>> {
>> - int tmp;
>> - struct usb_host_interface *alt;
>> - struct usb_host_endpoint *in, *out;
>> - struct usb_host_endpoint *iso_in, *iso_out;
>> - struct usb_host_endpoint *int_in, *int_out;
>> - struct usb_device *udev;
>> + int tmp;
>> + struct usb_host_interface *alt;
>> + struct usb_host_endpoint *in, *out;
>> + struct usb_host_endpoint *iso_in, *iso_out;
>> + struct usb_host_endpoint *int_in, *int_out;
>> + struct usb_device *udev;
>
> unnecessary change
>
>>
>> for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
>> - unsigned ep;
>> + unsigned ep;
>
> unnecessary change
>
>>
>> in = out = NULL;
>> iso_in = iso_out = NULL;
>> @@ -150,48 +164,27 @@ get_endpoints(struct usbtest_dev *dev, struct
>> usb_interface *intf)
>> * ignore other endpoints and altsettings.
>> */
>> for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
>> - struct usb_host_endpoint *e;
>> + struct usb_host_endpoint *e;
>
> unnecessary change
>

I already sent the version 2 of this patch: https://lkml.org/lkml/2017/4/3/856

Thanks
--
Gustavo A. R. Silva





2017-04-04 13:44:18

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] usb: misc: refactor code

On Mon, 3 Apr 2017, Gustavo A. R. Silva wrote:

> Code refactoring to make the flow easier to follow.
>
> Cc: Alan Stern <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> Changes in v2:
> Remove unfruitful changes in previous patch.
> Revert change to comment.

For both patches:

Acked-by: Alan Stern <[email protected]>

> drivers/usb/misc/usbtest.c | 49 ++++++++++++++++++++--------------------------
> 1 file changed, 21 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
> index 7bfb6b78..88f627e 100644
> --- a/drivers/usb/misc/usbtest.c
> +++ b/drivers/usb/misc/usbtest.c
> @@ -124,6 +124,20 @@ static struct usb_device *testdev_to_usbdev(struct usbtest_dev *test)
>
> /*-------------------------------------------------------------------------*/
>
> +static inline void endpoint_update(int edi,
> + struct usb_host_endpoint **in,
> + struct usb_host_endpoint **out,
> + struct usb_host_endpoint *e)
> +{
> + if (edi) {
> + if (!*in)
> + *in = e;
> + } else {
> + if (!*out)
> + *out = e;
> + }
> +}
> +
> static int
> get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> {
> @@ -151,47 +165,26 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
> */
> for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
> struct usb_host_endpoint *e;
> + int edi;
>
> e = alt->endpoint + ep;
> + edi = usb_endpoint_dir_in(&e->desc);
> +
> switch (usb_endpoint_type(&e->desc)) {
> case USB_ENDPOINT_XFER_BULK:
> - break;
> + endpoint_update(edi, &in, &out, e);
> + continue;
> case USB_ENDPOINT_XFER_INT:
> if (dev->info->intr)
> - goto try_intr;
> + endpoint_update(edi, &int_in, &int_out, e);
> continue;
> case USB_ENDPOINT_XFER_ISOC:
> if (dev->info->iso)
> - goto try_iso;
> + endpoint_update(edi, &iso_in, &iso_out, e);
> /* FALLTHROUGH */
> default:
> continue;
> }
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!in)
> - in = e;
> - } else {
> - if (!out)
> - out = e;
> - }
> - continue;
> -try_intr:
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!int_in)
> - int_in = e;
> - } else {
> - if (!int_out)
> - int_out = e;
> - }
> - continue;
> -try_iso:
> - if (usb_endpoint_dir_in(&e->desc)) {
> - if (!iso_in)
> - iso_in = e;
> - } else {
> - if (!iso_out)
> - iso_out = e;
> - }
> }
> if ((in && out) || iso_in || iso_out || int_in || int_out)
> goto found;
>