• Brian Norris's avatar
    Revert "mwifiex: restructure rx_reorder_tbl_lock usage" · 1aa48f08
    Brian Norris authored
    This reverts commit 5188d545, because it
    introduced lock recursion:
    
      BUG: spinlock recursion on CPU#2, kworker/u13:1/395
       lock: 0xffffffc0e28a47f0, .magic: dead4ead, .owner: kworker/u13:1/395, .owner_cpu: 2
      CPU: 2 PID: 395 Comm: kworker/u13:1 Not tainted 4.20.0-rc4+ #2
      Hardware name: Google Kevin (DT)
      Workqueue: MWIFIEX_RX_WORK_QUEUE mwifiex_rx_work_queue [mwifiex]
      Call trace:
       dump_backtrace+0x0/0x140
       show_stack+0x20/0x28
       dump_stack+0x84/0xa4
       spin_bug+0x98/0xa4
       do_raw_spin_lock+0x5c/0xdc
       _raw_spin_lock_irqsave+0x38/0x48
       mwifiex_flush_data+0x2c/0xa4 [mwifiex]
       call_timer_fn+0xcc/0x1c4
       run_timer_softirq+0x264/0x4f0
       __do_softirq+0x1a8/0x35c
       do_softirq+0x54/0x64
       netif_rx_ni+0xe8/0x120
       mwifiex_recv_packet+0xfc/0x10c [mwifiex]
       mwifiex_process_rx_packet+0x1d4/0x238 [mwifiex]
       mwifiex_11n_dispatch_pkt+0x190/0x1ac [mwifiex]
       mwifiex_11n_rx_reorder_pkt+0x28c/0x354 [mwifiex]
       mwifiex_process_sta_rx_packet+0x204/0x26c [mwifiex]
       mwifiex_handle_rx_packet+0x15c/0x16c [mwifiex]
       mwifiex_rx_work_queue+0x104/0x134 [mwifiex]
       worker_thread+0x4cc/0x72c
       kthread+0x134/0x13c
       ret_from_fork+0x10/0x18
    
    This was clearly not tested well at all. I simply performed 'wget' in a
    loop and it fell over within a few seconds.
    
    Fixes: 5188d545 ("mwifiex: restructure rx_reorder_tbl_lock usage")
    Cc: <stable@vger.kernel.org>
    Cc: Ganapathi Bhat <gbhat@marvell.com>
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    1aa48f08
11n_rxreorder.c 28.3 KB