summaryrefslogtreecommitdiff
path: root/drivers/usb/host/isp1362-hcd.c
diff options
context:
space:
mode:
authorBruno Morelli <bruno@evidence.eu.com>2012-07-30 17:26:50 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-08-10 22:49:13 +0400
commit4840ae17ba7e21f2932120383a2c9a0f30e66123 (patch)
tree87bdc9d8f087d89f6f8d078ff10f1516067be920 /drivers/usb/host/isp1362-hcd.c
parent872c495dd0f9d1f48814a8ee80c2c7b3b7c3b4d9 (diff)
downloadlinux-4840ae17ba7e21f2932120383a2c9a0f30e66123.tar.xz
USB: isp1362-hcd.c: usb message always saved in case of underrun
The usb message must be saved also in case the USB endpoint is not a control endpoint (i.e., "endpoint 0"), otherwise in some circumstances we don't have a payload in case of error. The patch has been created by tracing with usbmon the different error messages generated by this driver with respect to the ehci-hcd driver. Signed-off-by: Bruno Morelli <bruno@evidence.eu.com> Signed-off-by: Claudio Scordino <claudio@evidence.eu.com> Tested-by: Bruno Morelli <bruno@evidence.eu.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/isp1362-hcd.c')
-rw-r--r--drivers/usb/host/isp1362-hcd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c
index 2ed112d3e159..256326322cfd 100644
--- a/drivers/usb/host/isp1362-hcd.c
+++ b/drivers/usb/host/isp1362-hcd.c
@@ -543,12 +543,12 @@ static void postproc_ep(struct isp1362_hcd *isp1362_hcd, struct isp1362_ep *ep)
usb_pipein(urb->pipe) ? "IN" : "OUT", ep->nextpid,
short_ok ? "" : "not_",
PTD_GET_COUNT(ptd), ep->maxpacket, len);
+ /* save the data underrun error code for later and
+ * proceed with the status stage
+ */
+ urb->actual_length += PTD_GET_COUNT(ptd);
if (usb_pipecontrol(urb->pipe)) {
ep->nextpid = USB_PID_ACK;
- /* save the data underrun error code for later and
- * proceed with the status stage
- */
- urb->actual_length += PTD_GET_COUNT(ptd);
BUG_ON(urb->actual_length > urb->transfer_buffer_length);
if (urb->status == -EINPROGRESS)