Re: [syzbot] [wireless?] INFO: trying to register non-static key in cfg80211_dev_free

From: Edward Adam Davis
Date: Mon Mar 17 2025 - 22:14:40 EST


#syz test

diff --git a/net/wireless/core.c b/net/wireless/core.c
index 828e29872633..df3ea9ee3ee9 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -1193,10 +1193,12 @@ void cfg80211_dev_free(struct cfg80211_registered_device *rdev)
struct cfg80211_beacon_registration *reg, *treg;
unsigned long flags;

- spin_lock_irqsave(&rdev->wiphy_work_lock, flags);
- WARN_ON(!list_empty(&rdev->wiphy_work_list));
- spin_unlock_irqrestore(&rdev->wiphy_work_lock, flags);
- cancel_work_sync(&rdev->wiphy_work);
+ if (rdev->wiphy.rfkill) {
+ spin_lock_irqsave(&rdev->wiphy_work_lock, flags);
+ WARN_ON(!list_empty(&rdev->wiphy_work_list));
+ spin_unlock_irqrestore(&rdev->wiphy_work_lock, flags);
+ cancel_work_sync(&rdev->wiphy_work);
+ }

rfkill_destroy(rdev->wiphy.rfkill);
list_for_each_entry_safe(reg, treg, &rdev->beacon_registrations, list) {