summaryrefslogtreecommitdiff
path: root/drivers/usb/chipidea/udc.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2016-09-26 10:37:43 -0700
committerDmitry Shmidt <dimitrysh@google.com>2016-09-26 10:37:43 -0700
commit734bcf32c23442e81891641ae05e08108a4010d5 (patch)
treeb41cc318506b0c38ddf404520ba67753f3ab5452 /drivers/usb/chipidea/udc.c
parent551569f25ec07596e144ffbc7911dd631645e63b (diff)
parent8d5e93bb8c9c48ee5948f6b1aff0e895381f09e6 (diff)
Merge tag 'v4.4.22' into android-4.4.y
This is the 4.4.22 stable release Change-Id: Id49e3c87d2cacb2fa85d85a17226f718f4a5ac28
Diffstat (limited to 'drivers/usb/chipidea/udc.c')
-rw-r--r--drivers/usb/chipidea/udc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index ca367b05e440..68fc5fce4cc5 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -939,6 +939,15 @@ static int isr_setup_status_phase(struct ci_hdrc *ci)
int retval;
struct ci_hw_ep *hwep;
+ /*
+ * Unexpected USB controller behavior, caused by bad signal integrity
+ * or ground reference problems, can lead to isr_setup_status_phase
+ * being called with ci->status equal to NULL.
+ * If this situation occurs, you should review your USB hardware design.
+ */
+ if (WARN_ON_ONCE(!ci->status))
+ return -EPIPE;
+
hwep = (ci->ep0_dir == TX) ? ci->ep0out : ci->ep0in;
ci->status->context = ci;
ci->status->complete = isr_setup_status_complete;