brcmfmac: fix memory leak in brcmf_cfg80211_attach()
authorArend Van Spriel <arend.vanspriel@broadcom.com>
Fri, 9 Dec 2016 11:34:13 +0000 (11:34 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 20 Dec 2016 14:09:03 +0000 (16:09 +0200)
In brcmf_cfg80211_attach() there was one error path not properly
handled as it leaked memory allocated in brcmf_btcoex_attach().

Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

index ccae3bbe7db24deb3a5656c2ba9556ad6dbf7cfa..7ffc4aba5bab0683fe993d1d5eef9e8e3d8389d0 100644 (file)
@@ -6868,7 +6868,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
 
        err = brcmf_p2p_attach(cfg, p2pdev_forced);
        if (err) {
-               brcmf_err("P2P initilisation failed (%d)\n", err);
+               brcmf_err("P2P initialisation failed (%d)\n", err);
                goto wiphy_unreg_out;
        }
        err = brcmf_btcoex_attach(cfg);
@@ -6893,7 +6893,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
        err = brcmf_fweh_activate_events(ifp);
        if (err) {
                brcmf_err("FWEH activation failed (%d)\n", err);
-               goto wiphy_unreg_out;
+               goto detach;
        }
 
        /* Fill in some of the advertised nl80211 supported features */
@@ -6908,6 +6908,9 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
 
        return cfg;
 
+detach:
+       brcmf_btcoex_detach(cfg);
+       brcmf_p2p_detach(&cfg->p2p);
 wiphy_unreg_out:
        wiphy_unregister(cfg->wiphy);
 priv_out: