Hello, without this hack the rmmod of a gadget driver will trigger this nullpoint deref: Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c7b88000 [00000000] *pgd=47a31831, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 [#1] Modules linked in: g_ether(-) CPU: 0 Not tainted (3.1.0-rc6+ #160) PC is at __list_del_entry+0x28/0xcc LR is at ci13xxx_stop+0x12c/0x1a8 pc : [<c01da3a0>] lr : [<c02292b0>] psr: 80000093 sp : c7b8fef8 ip : 00000002 fp : bec66e54 r10: c781a18c r9 : c7b8e000 r8 : a0000013 r7 : 00000001 r6 : c781a000 r5 : c781a000 r4 : c0b4082c r3 : c781a18c r2 : 00000000 r1 : 00000000 r0 : 00200200 Flags: Nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user Control: 0005317f Table: 47b88000 DAC: 00000015 Process rmmod (pid: 116, stack limit = 0xc7b8e270) Stack: (0xc7b8fef8 to 0xc7b90000) fee0: c781a000 bf006ad0 ff00: c781a018 c02292b0 c0229184 c79acc00 c05af488 c7b8e000 00000013 bec66bc0 ff20: 00000000 c022867c bf006ad0 c02286f4 bf006e38 00000000 bf006eb0 c0065f2c ff40: c7b8e000 74655f67 00726568 c005b16c 00000013 c7aebc00 c7b8ff84 c7b8e000 ff60: c00093b4 c7b90d60 00000001 60000010 00000002 40089000 bec66e54 0005b16c ff80: bf006eb0 00000880 c7b8ff8c 00000000 00015700 74655f67 00726568 00000081 ffa0: c0009444 c00092a0 00015700 74655f67 bec66bc0 00000880 00000000 00000000 ffc0: 00015700 74655f67 00726568 00000081 00000000 00000002 40089000 bec66e54 ffe0: bec66bb8 bec66ba8 0001545c 401c4880 60000010 bec66bc0 00000000 00000000 [<c01da3a0>] (__list_del_entry+0x28/0xcc) from [<c02292b0>] (ci13xxx_stop+0x12c/0x1a8) [<c02292b0>] (ci13xxx_stop+0x12c/0x1a8) from [<c022867c>] (usb_gadget_remove_driver+0x88/0x98) [<c022867c>] (usb_gadget_remove_driver+0x88/0x98) from [<c02286f4>] (usb_gadget_unregister_driver+0x68/0x88) [<c02286f4>] (usb_gadget_unregister_driver+0x68/0x88) from [<c0065f2c>] (sys_delete_module+0x1fc/0x26c) [<c0065f2c>] (sys_delete_module+0x1fc/0x26c) from [<c00092a0>] (ret_fast_syscall+0x0/0x38) Code: 0a00000c e59f0090 e1520000 0a00001b (e5920000) Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> --- drivers/usb/gadget/ci13xxx_udc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c index 8956a24..d07de8d 100644 --- a/drivers/usb/gadget/ci13xxx_udc.c +++ b/drivers/usb/gadget/ci13xxx_udc.c @@ -2731,8 +2731,10 @@ static int ci13xxx_stop(struct usb_gadget_driver *driver) for (i = 0; i < hw_ep_max; i++) { struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i]; +#if 0 if (!list_empty(&mEp->ep.ep_list)) list_del_init(&mEp->ep.ep_list); +#endif if (mEp->qh.ptr != NULL) dma_pool_free(udc->qh_pool, mEp->qh.ptr, mEp->qh.dma); -- 1.7.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html