cfg80211: scan: drop entry from hidden_list on overflow
authorJohannes Berg <johannes.berg@intel.com>
Fri, 16 Apr 2021 07:42:14 +0000 (09:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 22 May 2021 08:40:21 +0000 (10:40 +0200)
commit 010bfbe768f7ecc876ffba92db30432de4997e2a upstream.

If we overflow the maximum number of BSS entries and free the
new entry, drop it from any hidden_list that it may have been
added to in the code above or in cfg80211_combine_bsses().

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20210416094212.5de7d1676ad7.Ied283b0bc5f504845e7d6ab90626bdfa68bb3dc0@changeid
Cc: stable@vger.kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/wireless/scan.c

index c60be11b5e08bf76c14c0b75b42a12ab4b0c2ec0..71a8e6980e2fc80ae2d639a603517d8c23081ee0 100644 (file)
@@ -956,6 +956,8 @@ cfg80211_bss_update(struct cfg80211_registered_device *rdev,
 
                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);
                        goto drop;
                }