mac80211: brcmfmac: fix memleak and add size optimization
[openwrt/staging/rmilecki.git] / package / kernel / mac80211 / patches / 855-0001-brcmfmac-fix-memory-leak-in-brcmf_fill_bss_param.patch
1 From b96a5398abb102cda75abb642b247a061e1b1358 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
3 Date: Wed, 21 Sep 2016 07:42:32 +0200
4 Subject: [PATCH] brcmfmac: fix memory leak in brcmf_fill_bss_param
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This function is called from get_station callback which means that every
10 time user space was getting/dumping station(s) we were leaking 2 KiB.
11
12 Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
13 Fixes: 1f0dc59a6de ("brcmfmac: rework .get_station() callback")
14 Cc: stable@vger.kernel.org # 4.2+
15 ---
16 Kalle, ideally this should go as 4.8 fix, but I'm aware it's quite late.
17 If you are not planning to send another pull request, just get it for
18 the next release and let's let stable guys backport it.
19 ---
20 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 ++++-
21 1 file changed, 4 insertions(+), 1 deletion(-)
22
23 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
24 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
25 @@ -2529,7 +2529,7 @@ static void brcmf_fill_bss_param(struct
26 WL_BSS_INFO_MAX);
27 if (err) {
28 brcmf_err("Failed to get bss info (%d)\n", err);
29 - return;
30 + goto out_kfree;
31 }
32 si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM);
33 si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period);
34 @@ -2541,6 +2541,9 @@ static void brcmf_fill_bss_param(struct
35 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE;
36 if (capability & WLAN_CAPABILITY_SHORT_SLOT_TIME)
37 si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
38 +
39 +out_kfree:
40 + kfree(buf);
41 }
42
43 static s32