Commits

Li Jun committed 104112bded7
MLK-14589 usb: gadget: mass_storage: set msg_registered after msg registered If there is no UDC available, the msg register will fail and this flag will not be set, but the driver is already added into pending driver list, then the module removal modprobe -r can not remove the driver from the pending list. Next time load the same gadget driver will generate below kernel panic: root@imx6qdlsolo:~# modprobe g_mass_storage file=/dev/mmcblk3p2 removable=1 [ 125.607920] Unable to handle kernel paging request at virtual address 7f0976f4 [ 125.615282] pgd = a89c4000 [ 125.617999] [7f0976f4] *pgd=a93e0811, *pte=00000000, *ppte=00000000 [ 125.624756] Internal error: Oops: 807 [#1] PREEMPT SMP ARM [ 125.630247] Modules linked in: g_mass_storage(+) usb_f_mass_storage libcomposite configfs mxc_vadc mxc_dcic mx6s_capture ov5640_camera [last unloaded: configfs] [ 125.644730] CPU: 0 PID: 841 Comm: modprobe Not tainted 4.9.11-02066-g6c99655 #106 [ 125.652217] Hardware name: Freescale i.MX6 SoloX (Device Tree) [ 125.658052] task: a8821080 task.stack: a9b8e000 [ 125.662600] PC is at usb_gadget_probe_driver+0x130/0x144 [ 125.667920] LR is at usb_gadget_probe_driver+0x3c/0x144 [ 125.673152] pc : [<8062cd78>] lr : [<8062cc84>] psr: 600f0013 [ 125.673152] sp : a9b8fde8 ip : 80f44910 fp : 5653cc1c [ 125.684633] r10: 00000000 r9 : a9ac3400 r8 : 80f448f0 [ 125.689860] r7 : 7f0ce68c r6 : 00000000 r5 : 80f44908 r4 : 00000000 [ 125.696390] r3 : 00000000 r2 : 7f0976f4 r1 : 7f0ce6f4 r0 : 80c8d21c [ 125.702922] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 125.710060] Control: 10c53c7d Table: a89c404a DAC: 00000051 [ 125.715808] Process modprobe (pid: 841, stack limit = 0xa9b8e210) [ 125.721904] Stack: (0xa9b8fde8 to 0xa9b90000) [ 125.726268] fde0: 7f0ce740 7f0d1000 a9ac35c0 7f0ce788 00000001 801017f0 [ 125.734452] fe00: 00000001 8040003e 00000001 8040003f a8fcb600 7f0ce788 abc7e2c0 a9b8e000 [ 125.742636] fe20: 5653cc1c 8040003e abc7e2c0 a9b8e000 a9396740 a8001f00 a9b8fe48 abc7e2c0 [ 125.750821] fe40: a9b8e000 a9396700 a8001f00 a9b8fe60 7f0ce740 a9ac3408 a9ac35c0 7f0ce788 [ 125.759004] fe60: 00000001 a9ac3400 00000001 801b6a24 7f0ce740 7f0ce788 a9b8ff4c a9ac3408 [ 125.767187] fe80: 7f0ce740 8019a658 7f0ce74c 00007fff 7f0ce740 80197fec 7f0ce788 00000000 [ 125.775371] fea0: 7f0ce968 c0e7db20 7f0ce8fc a8fcbb40 a9b8ff3c 000032d4 00000000 80203968 [ 125.783553] fec0: 000032d4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 125.791735] fee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 125.799918] ff00: 7fffffff 00000000 00000006 01ee1e78 0000017b 7fffffff 00000000 00000000 [ 125.808101] ff20: 01ee23d8 8019af50 7fffffff 00000000 00000003 000032d4 00000000 c0e7c000 [ 125.816284] ff40: 000032d4 00000000 7ecc49cc c0e7c000 000032d4 c0e7d6c0 c0e7d59f c0e7e9d8 [ 125.824467] ff60: 00000968 00000db8 00000000 00000000 00000000 00001328 0000001c 0000001d [ 125.832650] ff80: 00000011 00000015 0000000a 00000000 01ee1e78 0000001f 00000000 80107a04 [ 125.840833] ffa0: a9b8e000 80107840 01ee1e78 0000001f 00000006 01ee1e78 00000000 00000000 [ 125.849015] ffc0: 01ee1e78 0000001f 00000000 0000017b 01ee1f70 00000000 0000001f 01ee23d8 [ 125.857200] ffe0: 7ecc49d0 7ecc49c0 0001f2e0 76e76e90 60070010 00000006 abf5e861 abf5ec61 [ 125.865397] [<8062cd78>] (usb_gadget_probe_driver) from [<801017f0>] (do_one_initcall+0x40/0x170) [ 125.874286] [<801017f0>] (do_one_initcall) from [<801b6a24>] (do_init_module+0x60/0x1c8) [ 125.882391] [<801b6a24>] (do_init_module) from [<8019a658>] (load_module+0x183c/0x1f60) [ 125.890405] [<8019a658>] (load_module) from [<8019af50>] (SyS_finit_module+0x8c/0x9c) [ 125.898249] [<8019af50>] (SyS_finit_module) from [<80107840>] (ret_fast_syscall+0x0/0x3c) [ 125.906433] Code: e5881024 e587206c e1a04003 e587c068 (e5821000) [ 125.912995] ---[ end trace bbcab73c5c07119d ]--- Segmentation fault root@imx6qdlsolo:~# Acked-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>