brcmfmac: free primary net_device when brcmf_bus_start() fails
authorArend van Spriel <arend@broadcom.com>
Fri, 7 Jun 2013 09:03:00 +0000 (11:03 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 13 Jun 2013 17:24:12 +0000 (13:24 -0400)
When initialization within brcmf_bus_start() fails on steps
before the brcmf_net_attach() the net_device for the primary
interface needs to be freed.

This patch resolves a panic during kernel boot as reported
by Stephen Warren.

ref.: http://mid.gmane.org/51AD1F22.2080004@wwwdotorg.org

Tested-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@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 b98f2235978e80269be1861b26ba019398591bae..2c593570497ceaa6a4f430764bddbe1b6bd4f651 100644 (file)
@@ -930,6 +930,10 @@ fail:
                        brcmf_fws_del_interface(ifp);
                        brcmf_fws_deinit(drvr);
                }
+               if (drvr->iflist[0]) {
+                       free_netdev(ifp->ndev);
+                       drvr->iflist[0] = NULL;
+               }
                if (p2p_ifp) {
                        free_netdev(p2p_ifp->ndev);
                        drvr->iflist[1] = NULL;