From: Amitkumar Karwar Date: Fri, 28 Mar 2014 04:05:26 +0000 (-0700) Subject: mwifiex: fix spinlock bad magic bug X-Git-Tag: v3.15-rc1~113^2~18^2^2~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7488c792f007377971a87aa42f91741f3fbd47f;p=pandora-kernel.git mwifiex: fix spinlock bad magic bug [ 6630.450908] BUG: spinlock bad magic on CPU#1, ksdioirqd/mmc1/355 [ 6630.450914] Unable to handle kernel NULL pointer dereference at virtual address 0000004f [ 6630.450919] pgd = ecbd8000 [ 6630.450926] [0000004f] *pgd=00000000 [ 6630.450936] lock: 0xeea4ab08, .magic: 00000000, .owner: /-1, .owner_cpu: 0 [ 6630.450939] Backtrace: [ 6630.450956] [] (unwind_backtrace+0x0/0x118) from [] (dump_stack+0x28/0x30) [ 6630.450960] Internal error: Oops: 5 [#1] SMP ARM [ 6630.450964] Modules linked in: uvcvideo videobuf2_vmalloc [ 6630.450980] [] (dump_stack+0x28/0x30) from [] (spin_dump+0x80/0x94) [ 6630.450988] [] (spin_dump+0x80/0x94) from [] (spin_bug+0x2c/0x30) [ 6630.450996] [] (spin_bug+0x2c/0x30) from [] (do_raw_spin_lock+0x28/0x15c) [ 6630.451004] [] (do_raw_spin_lock+0x28/0x15c) from [] (_raw_spin_lock_irqsave+0x20/0x28) [ 6630.451016] [] (_raw_spin_lock_irqsave+0x20/0x28) from [] (mwifiex_exec_next_cmd +0x6c/0x45c [mwifiex]) [ 6630.451030] [] (mwifiex_exec_next_cmd+0x6c/0x45c [mwifiex]) from [] (mwifiex_main_process+0x2c8/0x464 [mwifiex]) [ 6630.451047] [] (mwifiex_main_process+0x2c8/0x464 [mwifiex]) from [] (mwifiex_sdio_interrupt+0xc8/0x1cc [mwifiex_sdio] [ 6630.451064] [] (mwifiex_sdio_interrupt+0xc8/0x1cc [mwifiex_sdio]) from [] (sdio_irq_thread+0x178/0x31c) [ 6630.451079] [] (sdio_irq_thread+0x178/0x31c) from [] (kthread+0xc8/0xd8) [ 6630.451095] [] (kthread+0xc8/0xd8) from [] (ret_from_fork+0x14/0x20) This bug has introduced/exposed due to recent patch in which we cancel pending commands before suspend (using hs_enabling flag). The NULL pointer is dereferenced when both mwifiex_cancel_all_pending_cmd() and mwifiex_exec_next_cmd() try to access cmd pending queue simultaneously. Signed-off-by: Amitkumar Karwar Signed-off-by: Bing Zhao Signed-off-by: John W. Linville --- Reading git-diff-tree failed