usb: gadget: ci13xxx_udc: init ep_list head for each ep at probe
If the lists are not init properly this causes a crash when stopping udc,
since stop function calls list_emtpy function on them.
Change-Id: Ibd9f7daddcc991c0efeb324748e852c86f76c423
Signed-off-by: Lena Salman <esalman@codeaurora.org>
diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
index 562b36a..9cbfad8 100644
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -3221,7 +3221,7 @@
void __iomem *regs)
{
struct ci13xxx *udc;
- int retval = 0;
+ int retval = 0, i;
trace("%p, %p, %p", dev, regs, name);
@@ -3259,6 +3259,11 @@
if (retval < 0)
goto free_udc;
+ for (i = 0; i < hw_ep_max; i++) {
+ struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i];
+ INIT_LIST_HEAD(&mEp->ep.ep_list);
+ }
+
udc->transceiver = otg_get_transceiver();
if (udc->udc_driver->flags & CI13XXX_REQUIRE_TRANSCEIVER) {