• Larry Finger's avatar
    rtlwifi: Fix scheduling while atomic splat · 893dc68f
    Larry Finger authored
    Following commit cceb0a59 ("rtlwifi: Add work queue for c2h cmd."),
    the following BUG is reported when rtl8723be is used:
    
    BUG: sleeping function called from invalid context at mm/slab.h:432
    in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/0
    CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W  O    4.11.0-rc3-wl+ #276
    Hardware name: TOSHIBA TECRA A50-A/TECRA A50-A, BIOS Version 4.50   09/29/2014
    Call Trace:
     <IRQ>
     dump_stack+0x63/0x89
     ___might_sleep+0xe9/0x130
     __might_sleep+0x4a/0x90
     kmem_cache_alloc_trace+0x19f/0x200
     ? rtl_c2hcmd_enqueue+0x3e/0x110 [rtlwifi]
     rtl_c2hcmd_enqueue+0x3e/0x110 [rtlwifi]
     rtl8723be_c2h_packet_handler+0xac/0xc0 [rtl8723be]
     rtl8723be_rx_command_packet+0x37/0x5c [rtl8723be]
     _rtl_pci_rx_interrupt+0x200/0x6b0 [rtl_pci]
     _rtl_pci_interrupt+0x20c/0x5d0 [rtl_pci]
     __handle_irq_event_percpu+0x3f/0x1d0
     handle_irq_event_percpu+0x23/0x60
     handle_irq_event+0x3c/0x60
     handle_fasteoi_irq+0xa2/0x170
     handle_irq+0x20/0x30
     do_IRQ+0x48/0xd0
     common_interrupt+0x89/0x89
    ...
    
    Although commit cceb0a59 converted most c2h commands to use a work
    queue, the Bluetooth coexistence routines can be in atomic mode when
    they execute such a call.
    
    Fixes: cceb0a59 ("rtlwifi: Add work queue for c2h cmd.")
    Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
    Cc: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    893dc68f
base.c 59.9 KB