• Ganapathi Bhat's avatar
    mwifiex: handle race during mwifiex_usb_disconnect · b817047a
    Ganapathi Bhat authored
    Race condition is observed during rmmod of mwifiex_usb:
    
    1. The rmmod thread will call mwifiex_usb_disconnect(), download
       SHUTDOWN command and do wait_event_interruptible_timeout(),
       waiting for response.
    
    2. The main thread will handle the response and will do a
       wake_up_interruptible(), unblocking rmmod thread.
    
    3. On getting unblocked, rmmod thread  will make rx_cmd.urb = NULL in
       mwifiex_usb_free().
    
    4. The main thread will try to resubmit rx_cmd.urb in
       mwifiex_usb_submit_rx_urb(), which is NULL.
    
    To fix, wait for main thread to complete before calling
    mwifiex_usb_free().
    Signed-off-by: default avatarGanapathi Bhat <gbhat@marvell.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    b817047a
usb.c 43.4 KB