Commit 77bd73ce authored by Krzysztof Opasiak's avatar Krzysztof Opasiak Committed by Greg Kroah-Hartman

usbip: vudc: fix: Clear already_seen flag also for ep0

commit 3e448e13 upstream.

ep_list inside gadget structure doesn't contain ep0.
It is stored separately in ep0 field.

This causes an urb hang if gadget driver decides to
delay setup handling. On host side this is visible as
timeout error when setting configuration.

This bug can be reproduced using for example any gadget
with mass storage function.

Fixes: abdb2957 ("usbip: vudc: Add vudc_transfer")
Signed-off-by: default avatarKrzysztof Opasiak <k.opasiak@samsung.com>
Acked-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 420f170c
...@@ -339,6 +339,8 @@ static void v_timer(unsigned long _vudc) ...@@ -339,6 +339,8 @@ static void v_timer(unsigned long _vudc)
total = timer->frame_limit; total = timer->frame_limit;
} }
/* We have to clear ep0 flags separately as it's not on the list */
udc->ep[0].already_seen = 0;
list_for_each_entry(_ep, &udc->gadget.ep_list, ep_list) { list_for_each_entry(_ep, &udc->gadget.ep_list, ep_list) {
ep = to_vep(_ep); ep = to_vep(_ep);
ep->already_seen = 0; ep->already_seen = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment