aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorGravatar Thinh Nguyen <Thinh.Nguyen@synopsys.com> 2024-04-16 01:23:07 +0000
committerGravatar Greg Kroah-Hartman <gregkh@linuxfoundation.org> 2024-04-18 16:42:21 +0200
commitf2e0eee4703869dc5edb5302a919861566ca7797 (patch)
treeae761728b67962c51ebc1cd83e4d3f2822ed26fe /drivers/usb
parentRevert "usb: cdc-wdm: close race between read and workqueue" (diff)
downloadlinux-f2e0eee4703869dc5edb5302a919861566ca7797.tar.gz
linux-f2e0eee4703869dc5edb5302a919861566ca7797.tar.bz2
linux-f2e0eee4703869dc5edb5302a919861566ca7797.zip
usb: dwc3: ep0: Don't reset resource alloc flag
The DWC3_EP_RESOURCE_ALLOCATED flag ensures that the resource of an endpoint is only assigned once. Unless the endpoint is reset, don't clear this flag. Otherwise we may set endpoint resource again, which prevents the driver from initiate transfer after handling a STALL or endpoint halt to the control endpoint. Cc: stable@vger.kernel.org Fixes: b311048c174d ("usb: dwc3: gadget: Rewrite endpoint allocation flow") Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Link: https://lore.kernel.org/r/00122b7cc5be06abef461776e7cc9f5ebc8bc1cb.1713229786.git.Thinh.Nguyen@synopsys.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/ep0.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 72bb722da2f2..d96ffbe52039 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -226,7 +226,8 @@ void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
/* reinitialize physical ep1 */
dep = dwc->eps[1];
- dep->flags = DWC3_EP_ENABLED;
+ dep->flags &= DWC3_EP_RESOURCE_ALLOCATED;
+ dep->flags |= DWC3_EP_ENABLED;
/* stall is always issued on EP0 */
dep = dwc->eps[0];