• Larry Finger's avatar
    b43: Fix lockdep splat on module unload · 63a02ce1
    Larry Finger authored
    On unload, b43 produces a lockdep warning that can be summarized in the
    following way:
    
     ======================================================
     [ INFO: possible circular locking dependency detected ]
     3.8.0-wl+ #117 Not tainted
     -------------------------------------------------------
     modprobe/5557 is trying to acquire lock:
      ((&wl->firmware_load)){+.+.+.}, at: [<ffffffff81062160>] flush_work+0x0/0x2a0
    
     but task is already holding lock:
      (rtnl_mutex){+.+.+.}, at: [<ffffffff813bd7d2>] rtnl_lock+0x12/0x20
    
     which lock already depends on the new lock.
     [ INFO: possible circular locking dependency detected ]
     ======================================================
    
    The full output is available at http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00060.html.
    To summarize, commit 6b6fa586 added a 'cancel_work_sync(&wl->firmware_load)'
    call in the wrong place.
    
    The fix is to move the cancel_work_sync() call to b43_bcma_remove() and
    b43_ssb_remove(). Thanks to Johannes Berg and Michael Buesch for help in
    diagnosing the log output.
    Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
    Cc: Stable <stable@vger.kernel.org> [V3.5+]
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    63a02ce1
main.c 146 KB