]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
wifi: mac80211: fix memory free error when registering wiphy fail
authortaozhang <taozhang@bestechnic.com>
Sat, 15 Oct 2022 09:38:31 +0000 (17:38 +0800)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 14 Dec 2022 12:59:33 +0000 (13:59 +0100)
[ Upstream commit 50b2e8711462409cd368c41067405aa446dfa2af ]

ieee80211_register_hw free the allocated cipher suites when
registering wiphy fail, and ieee80211_free_hw will re-free it.

set wiphy_ciphers_allocated to false after freeing allocated
cipher suites.

Signed-off-by: taozhang <taozhang@bestechnic.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 3513785dc13f91ba440d315eca7ae21a55883047)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
net/mac80211/main.c

index 5311c3cd3050d008ba33cb7109daac130a2b227d..9617ff8e27147d2e153b273ac0f704abbe8d2d56 100644 (file)
@@ -1357,8 +1357,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
        ieee80211_led_exit(local);
        destroy_workqueue(local->workqueue);
  fail_workqueue:
-       if (local->wiphy_ciphers_allocated)
+       if (local->wiphy_ciphers_allocated) {
                kfree(local->hw.wiphy->cipher_suites);
+               local->wiphy_ciphers_allocated = false;
+       }
        kfree(local->int_scan_req);
        return result;
 }
@@ -1426,8 +1428,10 @@ void ieee80211_free_hw(struct ieee80211_hw *hw)
        mutex_destroy(&local->iflist_mtx);
        mutex_destroy(&local->mtx);
 
-       if (local->wiphy_ciphers_allocated)
+       if (local->wiphy_ciphers_allocated) {
                kfree(local->hw.wiphy->cipher_suites);
+               local->wiphy_ciphers_allocated = false;
+       }
 
        idr_for_each(&local->ack_status_frames,
                     ieee80211_free_ack_frame, NULL);