brcmfmac: handle exceptions in brcmf_bus_start correct.

On exception during brcmf_bus_start the netdev should be freed,
if already allocated.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Hante Meuleman 2012-11-05 16:22:15 -08:00 committed by John W. Linville
parent db22ae8cd2
commit 6b028c5ee2
1 changed files with 9 additions and 4 deletions

View File

@ -708,7 +708,6 @@ int brcmf_net_attach(struct brcmf_if *ifp)
fail: fail:
ndev->netdev_ops = NULL; ndev->netdev_ops = NULL;
free_netdev(ndev);
return -EBADE; return -EBADE;
} }
@ -858,15 +857,21 @@ int brcmf_bus_start(struct device *dev)
/* Bus is ready, do any initialization */ /* Bus is ready, do any initialization */
ret = brcmf_c_preinit_dcmds(ifp); ret = brcmf_c_preinit_dcmds(ifp);
if (ret < 0) if (ret < 0)
return ret; goto fail;
drvr->config = brcmf_cfg80211_attach(drvr); drvr->config = brcmf_cfg80211_attach(drvr);
if (drvr->config == NULL) if (drvr->config == NULL) {
return -ENOMEM; ret = -ENOMEM;
goto fail;
}
ret = brcmf_net_attach(ifp); ret = brcmf_net_attach(ifp);
fail:
if (ret < 0) { if (ret < 0) {
brcmf_dbg(ERROR, "brcmf_net_attach failed"); brcmf_dbg(ERROR, "brcmf_net_attach failed");
if (drvr->config)
brcmf_cfg80211_detach(drvr->config);
free_netdev(drvr->iflist[0]->ndev);
drvr->iflist[0] = NULL; drvr->iflist[0] = NULL;
return ret; return ret;
} }