From: Michael Buesch <[EMAIL PROTECTED]>

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 <[EMAIL PROTECTED]>
Signed-off-by: Larry Finger <[EMAIL PROTECTED]>
---

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);
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to