From: Michael Buesch <mb@xxxxxxxxx> The wq must be canceled later on rmmod. It's nonfatal, if the wq runs on a device that's not started or down. It will handle these cases. But syncing in wireless_core_exit() will cause a deadlock with the restart_work. (restart work cancels itself) Signed-off-by: Michael Buesch <mb@xxxxxxxxx> Signed-off-by: Larry Finger <larry.finger@xxxxxxxxxxxx> --- John, Sorry, but I sent the bare patch in the first version. Larry drivers/net/wireless/b43legacy/main.c | 2 ++ 1 file changed, 2 insertions(+) Index: wireless-dev/drivers/net/wireless/b43legacy/main.c =================================================================== --- wireless-dev.orig/drivers/net/wireless/b43legacy/main.c +++ wireless-dev/drivers/net/wireless/b43legacy/main.c @@ -3021,6 +3021,7 @@ static void b43legacy_wireless_core_exit B43legacy_WARN_ON(b43legacy_status(dev) > B43legacy_STAT_INITIALIZED); if (b43legacy_status(dev) != B43legacy_STAT_INITIALIZED) return; + b43legacy_set_status(dev, B43legacy_STAT_UNINIT); b43legacy_rng_exit(dev->wl); b43legacy_pio_free(dev); @@ -3520,6 +3521,7 @@ static void b43legacy_one_core_detach(st wldev = ssb_get_drvdata(dev); wl = wldev->wl; + cancel_work_sync(&wldev->restart_work); b43legacy_debugfs_remove_device(wldev); b43legacy_wireless_core_detach(wldev); list_del(&wldev->list); - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html