|
@@ -308,7 +308,8 @@ static void sg_complete(struct urb *urb)
|
|
|
retval = usb_unlink_urb(io->urbs [i]);
|
|
|
if (retval != -EINPROGRESS &&
|
|
|
retval != -ENODEV &&
|
|
|
- retval != -EBUSY)
|
|
|
+ retval != -EBUSY &&
|
|
|
+ retval != -EIDRM)
|
|
|
dev_err(&io->dev->dev,
|
|
|
"%s, unlink --> %d\n",
|
|
|
__func__, retval);
|
|
@@ -317,7 +318,6 @@ static void sg_complete(struct urb *urb)
|
|
|
}
|
|
|
spin_lock(&io->lock);
|
|
|
}
|
|
|
- urb->dev = NULL;
|
|
|
|
|
|
/* on the last completion, signal usb_sg_wait() */
|
|
|
io->bytes += urb->actual_length;
|
|
@@ -524,7 +524,6 @@ void usb_sg_wait(struct usb_sg_request *io)
|
|
|
case -ENXIO: /* hc didn't queue this one */
|
|
|
case -EAGAIN:
|
|
|
case -ENOMEM:
|
|
|
- io->urbs[i]->dev = NULL;
|
|
|
retval = 0;
|
|
|
yield();
|
|
|
break;
|
|
@@ -542,7 +541,6 @@ void usb_sg_wait(struct usb_sg_request *io)
|
|
|
|
|
|
/* fail any uncompleted urbs */
|
|
|
default:
|
|
|
- io->urbs[i]->dev = NULL;
|
|
|
io->urbs[i]->status = retval;
|
|
|
dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
|
|
|
__func__, retval);
|
|
@@ -593,7 +591,10 @@ void usb_sg_cancel(struct usb_sg_request *io)
|
|
|
if (!io->urbs [i]->dev)
|
|
|
continue;
|
|
|
retval = usb_unlink_urb(io->urbs [i]);
|
|
|
- if (retval != -EINPROGRESS && retval != -EBUSY)
|
|
|
+ if (retval != -EINPROGRESS
|
|
|
+ && retval != -ENODEV
|
|
|
+ && retval != -EBUSY
|
|
|
+ && retval != -EIDRM)
|
|
|
dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
|
|
|
__func__, retval);
|
|
|
}
|