diff options
author | Arend Van Spriel <arend.vanspriel@broadcom.com> | 2016-12-09 06:34:13 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2016-12-20 09:09:03 -0500 |
commit | cb853da3a368c40300a0e940f86be582037bb082 (patch) | |
tree | 87323ca4abb8cff6f6b0655dae3a07cd7e25cb76 | |
parent | ad688cdbb076833ba17fc65591cd0fe01900a5cf (diff) |
brcmfmac: fix memory leak in brcmf_cfg80211_attach()
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>
-rw-r--r-- | drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index ccae3bbe7db2..7ffc4aba5bab 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | |||
@@ -6868,7 +6868,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, | |||
6868 | 6868 | ||
6869 | err = brcmf_p2p_attach(cfg, p2pdev_forced); | 6869 | err = brcmf_p2p_attach(cfg, p2pdev_forced); |
6870 | if (err) { | 6870 | if (err) { |
6871 | brcmf_err("P2P initilisation failed (%d)\n", err); | 6871 | brcmf_err("P2P initialisation failed (%d)\n", err); |
6872 | goto wiphy_unreg_out; | 6872 | goto wiphy_unreg_out; |
6873 | } | 6873 | } |
6874 | err = brcmf_btcoex_attach(cfg); | 6874 | err = brcmf_btcoex_attach(cfg); |
@@ -6893,7 +6893,7 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, | |||
6893 | err = brcmf_fweh_activate_events(ifp); | 6893 | err = brcmf_fweh_activate_events(ifp); |
6894 | if (err) { | 6894 | if (err) { |
6895 | brcmf_err("FWEH activation failed (%d)\n", err); | 6895 | brcmf_err("FWEH activation failed (%d)\n", err); |
6896 | goto wiphy_unreg_out; | 6896 | goto detach; |
6897 | } | 6897 | } |
6898 | 6898 | ||
6899 | /* Fill in some of the advertised nl80211 supported features */ | 6899 | /* Fill in some of the advertised nl80211 supported features */ |
@@ -6908,6 +6908,9 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr, | |||
6908 | 6908 | ||
6909 | return cfg; | 6909 | return cfg; |
6910 | 6910 | ||
6911 | detach: | ||
6912 | brcmf_btcoex_detach(cfg); | ||
6913 | brcmf_p2p_detach(&cfg->p2p); | ||
6911 | wiphy_unreg_out: | 6914 | wiphy_unreg_out: |
6912 | wiphy_unregister(cfg->wiphy); | 6915 | wiphy_unregister(cfg->wiphy); |
6913 | priv_out: | 6916 | priv_out: |