]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
brcm80211: fmac: make sure cancel_work_sync only called after INIT_WORK
authorFranky Lin <frankyl@broadcom.com>
Thu, 9 Feb 2012 20:09:01 +0000 (21:09 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Feb 2012 19:48:51 +0000 (14:48 -0500)
INIT_WORK only gets called after brcmf_proto_attach returns
success. This dependency should be annotated in brcmf_detach to
avoid any error.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c

index db2df1f1e6b27589befa5c810acd8d0b223fe75b..eff0073879c711cbc68d9c2bbb0cdeb038072c56 100644 (file)
@@ -1109,13 +1109,13 @@ void brcmf_detach(struct device *dev)
                if (drvr->iflist[i])
                        brcmf_del_if(drvr, i);
 
-       cancel_work_sync(&drvr->setmacaddr_work);
-       cancel_work_sync(&drvr->multicast_work);
-
        brcmf_bus_detach(drvr);
 
-       if (drvr->prot)
+       if (drvr->prot) {
+               cancel_work_sync(&drvr->setmacaddr_work);
+               cancel_work_sync(&drvr->multicast_work);
                brcmf_proto_detach(drvr);
+       }
 
        bus_if->drvr = NULL;
        kfree(drvr);