aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2016-09-21 02:23:24 -0400
committerKalle Valo <kvalo@codeaurora.org>2016-09-26 13:49:10 -0400
commit23e9c128adb2038c27a424a5f91136e7fa3e0dc6 (patch)
treee672b6031f375b0fcf9cba07e1e8135f8ef962c7
parentb42fbed6b8a5942e9f76ec8c7f9c9fd798a2d3af (diff)
brcmfmac: fix memory leak in brcmf_fill_bss_param
This function is called from get_station callback which means that every time user space was getting/dumping station(s) we were leaking 2 KiB. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Fixes: 1f0dc59a6de ("brcmfmac: rework .get_station() callback") Cc: stable@vger.kernel.org # 4.2+ Acked-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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 6aeb69cb29b6..b777e1b2f87a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2527,7 +2527,7 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si)
2527 WL_BSS_INFO_MAX); 2527 WL_BSS_INFO_MAX);
2528 if (err) { 2528 if (err) {
2529 brcmf_err("Failed to get bss info (%d)\n", err); 2529 brcmf_err("Failed to get bss info (%d)\n", err);
2530 return; 2530 goto out_kfree;
2531 } 2531 }
2532 si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); 2532 si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM);
2533 si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period); 2533 si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period);
@@ -2539,6 +2539,9 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si)
2539 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; 2539 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE;
2540 if (capability & WLAN_CAPABILITY_SHORT_SLOT_TIME) 2540 if (capability & WLAN_CAPABILITY_SHORT_SLOT_TIME)
2541 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; 2541 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
2542
2543out_kfree:
2544 kfree(buf);
2542} 2545}
2543 2546
2544static s32 2547static s32