Thread (25 messages) read the whole thread 25 messages, 1 author, 2012-11-06
STALE5017d REVIEWED: 2 (0M)

2 review trailers.

[PATCH 07/24] brcmfmac: handle exceptions in brcmf_bus_start correct.

From: Franky Lin <hidden>
Date: 2012-11-06 00:22:49
Subsystem: networking drivers (wireless), the rest · Maintainers: Johannes Berg, Linus Torvalds

From: Hante Meuleman <redacted>

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

Reviewed-by: Arend Van Spriel <redacted>
Reviewed-by: Pieter-Paul Giesberts <redacted>
Signed-off-by: Hante Meuleman <redacted>
Signed-off-by: Franky Lin <redacted>
---
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index b130f20..9e2451f 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -708,7 +708,6 @@ int brcmf_net_attach(struct brcmf_if *ifp)
 
 fail:
 	ndev->netdev_ops = NULL;
-	free_netdev(ndev);
 	return -EBADE;
 }
 
@@ -858,15 +857,21 @@ int brcmf_bus_start(struct device *dev)
 	/* Bus is ready, do any initialization */
 	ret = brcmf_c_preinit_dcmds(ifp);
 	if (ret < 0)
-		return ret;
+		goto fail;
 
 	drvr->config = brcmf_cfg80211_attach(drvr);
-	if (drvr->config == NULL)
-		return -ENOMEM;
+	if (drvr->config == NULL) {
+		ret = -ENOMEM;
+		goto fail;
+	}
 
 	ret = brcmf_net_attach(ifp);
+fail:
 	if (ret < 0) {
 		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;
 		return ret;
 	}
-- 
1.7.9.5

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help