diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2016-09-21 02:23:24 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2016-09-26 13:49:10 -0400 |
commit | 23e9c128adb2038c27a424a5f91136e7fa3e0dc6 (patch) | |
tree | e672b6031f375b0fcf9cba07e1e8135f8ef962c7 | |
parent | b42fbed6b8a5942e9f76ec8c7f9c9fd798a2d3af (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.c | 5 |
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 | |||
2543 | out_kfree: | ||
2544 | kfree(buf); | ||
2542 | } | 2545 | } |
2543 | 2546 | ||
2544 | static s32 | 2547 | static s32 |