linux/drivers/net/wireless/b43
Larry Finger 63a02ce1c5 b43: Fix lockdep splat on module unload
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 6b6fa58 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: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org> [V3.5+]
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-02-25 15:47:41 -05:00
..
b43.h b43: Fix firmware loading when driver is built into the kernel 2013-01-07 14:34:45 -05:00
bus.c bcma: add boardinfo struct 2012-05-16 12:45:21 -04:00
bus.h
debugfs.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
debugfs.h
dma.c b43: fix tx path skb leaks 2012-12-10 15:49:59 -05:00
dma.h b43: Increase number of RX DMA slots 2013-02-19 00:51:08 -05:00
Kconfig b43: Kconfig: drop unknown symbol 'BRCMSMAC_MODULE' 2012-09-01 08:39:25 -07:00
leds.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
leds.h
lo.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
lo.h
main.c b43: Fix lockdep splat on module unload 2013-02-25 15:47:41 -05:00
main.h b43: Fix firmware loading when driver is built into the kernel 2013-01-07 14:34:45 -05:00
Makefile b43: N-PHY: init 0x2057 radio 2012-08-06 14:56:35 -04:00
pcmcia.c b43: remove __dev* attributes 2012-12-06 15:04:56 -05:00
pcmcia.h
phy_a.c
phy_a.h
phy_common.c b43: add helper waiting for given value in radio reg 2012-08-06 14:56:35 -04:00
phy_common.h b43: add helper waiting for given value in radio reg 2012-08-06 14:56:35 -04:00
phy_g.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
phy_g.h
phy_ht.c
phy_ht.h
phy_lcn.c
phy_lcn.h
phy_lp.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
phy_lp.h
phy_n.c b43: N-PHY: fix 0x2057 radio calib copy/paste mistake 2012-08-10 15:27:01 -04:00
phy_n.h b43: N-PHY: finish 0x2056 radio setup 2012-08-06 14:56:35 -04:00
pio.c b43: fix tx path skb leaks 2012-12-10 15:49:59 -05:00
pio.h
radio_2055.c
radio_2055.h
radio_2056.c b43: N-PHY: finish 2.4GHz 0x2056 radio setup 2011-12-13 15:33:56 -05:00
radio_2056.h b43: N-PHY: finish 2.4GHz 0x2056 radio setup 2011-12-13 15:33:56 -05:00
radio_2057.c b43: N-PHY: init 0x2057 radio 2012-08-06 14:56:35 -04:00
radio_2057.h b43: N-PHY: init 0x2057 radio 2012-08-06 14:56:35 -04:00
radio_2059.c
radio_2059.h
rfkill.c
rfkill.h
sdio.c b43: remove __dev* attributes 2012-12-06 15:04:56 -05:00
sdio.h
sysfs.c
sysfs.h
tables.c
tables.h
tables_lpphy.c
tables_lpphy.h
tables_nphy.c b43: N-PHY: fix gain in b43_nphy_get_gain_ctl_workaround_ent() 2013-01-22 16:01:29 -05:00
tables_nphy.h b43: N-PHY: add overriding RF control for rev7+ 2012-08-06 15:01:56 -04:00
tables_phy_ht.c
tables_phy_ht.h
tables_phy_lcn.c
tables_phy_lcn.h
wa.c
wa.h
xmit.c mac80211: support RX_FLAG_MACTIME_END 2012-11-13 21:43:55 +01:00
xmit.h