mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-09 19:10:45 +00:00
usb: gadget: aspeed: Don't reject requests on suspended devices
A disconnect may just suspend the hub in absence of a physical disconnect detection. If we start rejecting requests, the mass storage function gets into a spin trying to requeue the same request for ever and hangs. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
7e420cef90
commit
ef9d34686b
@ -204,14 +204,19 @@ int ast_vhub_std_dev_request(struct ast_vhub_ep *ep,
|
||||
u16 wValue, wIndex;
|
||||
|
||||
/* No driver, we shouldn't be enabled ... */
|
||||
if (!d->driver || !d->enabled || d->suspended) {
|
||||
if (!d->driver || !d->enabled) {
|
||||
EPDBG(ep,
|
||||
"Device is wrong state driver=%p enabled=%d"
|
||||
" suspended=%d\n",
|
||||
d->driver, d->enabled, d->suspended);
|
||||
"Device is wrong state driver=%p enabled=%d\n",
|
||||
d->driver, d->enabled);
|
||||
return std_req_stall;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note: we used to reject/stall requests while suspended,
|
||||
* we don't do that anymore as we seem to have cases of
|
||||
* mass storage getting very upset.
|
||||
*/
|
||||
|
||||
/* First packet, grab speed */
|
||||
if (d->gadget.speed == USB_SPEED_UNKNOWN) {
|
||||
d->gadget.speed = ep->vhub->speed;
|
||||
|
@ -379,7 +379,7 @@ static int ast_vhub_ep0_queue(struct usb_ep* u_ep, struct usb_request *u_req,
|
||||
return -EINVAL;
|
||||
|
||||
/* Disabled device */
|
||||
if (ep->dev && (!ep->dev->enabled || ep->dev->suspended))
|
||||
if (ep->dev && !ep->dev->enabled)
|
||||
return -ESHUTDOWN;
|
||||
|
||||
/* Data, no buffer and not internal ? */
|
||||
|
@ -352,7 +352,7 @@ static int ast_vhub_epn_queue(struct usb_ep* u_ep, struct usb_request *u_req,
|
||||
|
||||
/* Endpoint enabled ? */
|
||||
if (!ep->epn.enabled || !u_ep->desc || !ep->dev || !ep->d_idx ||
|
||||
!ep->dev->enabled || ep->dev->suspended) {
|
||||
!ep->dev->enabled) {
|
||||
EPDBG(ep, "Enqueuing request on wrong or disabled EP\n");
|
||||
return -ESHUTDOWN;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user