usb: misc: fix that MDM diag not operate after SSR3
This fixes that MDM diag does not operate after SSR3.
HSIC read buffer should be always released even if MDM crashed.
Change-Id: I673117c491507df6b508538e76afe12106d63688
diff --git a/drivers/usb/misc/diag_bridge.c b/drivers/usb/misc/diag_bridge.c
index 6d5544a..09b3203 100644
--- a/drivers/usb/misc/diag_bridge.c
+++ b/drivers/usb/misc/diag_bridge.c
@@ -96,6 +96,12 @@
dev_dbg(&dev->ifc->dev, "%s: status:%d actual:%d\n", __func__,
urb->status, urb->actual_length);
+ if (cbs && cbs->read_complete_cb)
+ cbs->read_complete_cb(cbs->ctxt,
+ urb->transfer_buffer,
+ urb->transfer_buffer_length,
+ urb->status < 0 ? urb->status : urb->actual_length);
+
if (urb->status == -EPROTO) {
dev_err(&dev->ifc->dev, "%s: proto error\n", __func__);
/* save error so that subsequent read/write returns ENODEV */
@@ -104,12 +110,6 @@
return;
}
- if (cbs && cbs->read_complete_cb)
- cbs->read_complete_cb(cbs->ctxt,
- urb->transfer_buffer,
- urb->transfer_buffer_length,
- urb->status < 0 ? urb->status : urb->actual_length);
-
dev->bytes_to_host += urb->actual_length;
dev->pending_reads--;
kref_put(&dev->kref, diag_bridge_delete);