summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyen Dinh Phi <phind.uet@gmail.com>2021-06-28 21:23:34 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-08-04 12:27:38 +0200
commit1c043783403c33a8da610f54c7a1a99da0b77f22 (patch)
treea37bc4b52461ea58fec42ede3c8e1e9f241a3e25
parent6cf2abea101866c45c2092aa607b4434b573cdc7 (diff)
downloadlinux-1c043783403c33a8da610f54c7a1a99da0b77f22.tar.gz
linux-1c043783403c33a8da610f54c7a1a99da0b77f22.tar.bz2
linux-1c043783403c33a8da610f54c7a1a99da0b77f22.zip
cfg80211: Fix possible memory leak in function cfg80211_bss_update
commit f9a5c358c8d26fed0cc45f2afc64633d4ba21dff upstream. When we exceed the limit of BSS entries, this function will free the new entry, however, at this time, it is the last door to access the inputed ies, so these ies will be unreferenced objects and cause memory leak. Therefore we should free its ies before deallocating the new entry, beside of dropping it from hidden_list. Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com> Link: https://lore.kernel.org/r/20210628132334.851095-1-phind.uet@gmail.com Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/wireless/scan.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 83297832744a..1580535d53f8 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -1250,16 +1250,14 @@ cfg80211_bss_update(struct cfg80211_registered_device *rdev,
* be grouped with this beacon for updates ...
*/
if (!cfg80211_combine_bsses(rdev, new)) {
- kfree(new);
+ bss_ref_put(rdev, new);
goto drop;
}
}
if (rdev->bss_entries >= bss_entries_limit &&
!cfg80211_bss_expire_oldest(rdev)) {
- if (!list_empty(&new->hidden_list))
- list_del(&new->hidden_list);
- kfree(new);
+ bss_ref_put(rdev, new);
goto drop;
}