diff options
author | Felipe Balbi <balbi@ti.com> | 2013-07-22 05:31:31 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-07-29 06:57:03 -0400 |
commit | 7a42d83536a5ea7ea7b4ad279c34c4c4ce509b5a (patch) | |
tree | f4b6632736d94fa4a3c15a07df8027487340dc03 /drivers/usb/dwc3 | |
parent | 5702f75375aa9ecf8ad3431aef3fe6ce8c8dbd15 (diff) |
usb: dwc3: ep0: only change to ADDRESS if set_config() succeeds
In case we're switching back to USB_STATE_ADDRESS
from USB_STATE_CONFIGURED (if host sends
a set configuration command for configuration
zero), we should only switch if the request
is successfully processed by the gadget driver.
Reported-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index e9d099cee636..007651c21638 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c | |||
@@ -551,7 +551,7 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) | |||
551 | 551 | ||
552 | case USB_STATE_CONFIGURED: | 552 | case USB_STATE_CONFIGURED: |
553 | ret = dwc3_ep0_delegate_req(dwc, ctrl); | 553 | ret = dwc3_ep0_delegate_req(dwc, ctrl); |
554 | if (!cfg) | 554 | if (!cfg && !ret) |
555 | usb_gadget_set_state(&dwc->gadget, | 555 | usb_gadget_set_state(&dwc->gadget, |
556 | USB_STATE_ADDRESS); | 556 | USB_STATE_ADDRESS); |
557 | break; | 557 | break; |