Re: [syzbot] [wireless?] general protection fault in cfg80211_mlme_deauth
From: Edward Adam Davis
Date: Tue Apr 08 2025 - 21:10:55 EST
#syz test
diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index cf998500a965..f78071015d93 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -269,6 +269,12 @@ void cfg80211_conn_work(struct work_struct *work)
memcpy(bssid_buf, wdev->conn->params.bssid, ETH_ALEN);
bssid = bssid_buf;
}
+
+ if (wdev->conn->state == CFG80211_CONN_ASSOC_FAILED)
+ printk("bssid: %p, pbssid: %p, dis bssid: %p, connected: %d, %s\n",
+ wdev->conn->bssid, wdev->conn->params.bssid,
+ wdev->disconnect_bssid, wdev->connected, __func__);
+
treason = NL80211_TIMEOUT_UNSPECIFIED;
if (cfg80211_conn_do_work(wdev, &treason)) {
struct cfg80211_connect_resp_params cr;
@@ -411,6 +417,8 @@ bool cfg80211_sme_rx_assoc_resp(struct wireless_dev *wdev, u16 status)
return true;
}
+ printk("bssid: %p, pbssid: %p, dis bssid: %p, %s\n",
+ wdev->conn->bssid, wdev->conn->params.bssid, wdev->disconnect_bssid, __func__);
wdev->conn->state = CFG80211_CONN_ASSOC_FAILED;
schedule_work(&rdev->conn_work);
return false;
diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c
index cf3e976471c6..ee9609d70d72 100644
--- a/drivers/net/wireless/virtual/mac80211_hwsim.c
+++ b/drivers/net/wireless/virtual/mac80211_hwsim.c
@@ -6479,7 +6479,7 @@ static int mac80211_hwsim_netlink_notify(struct notifier_block *nb,
remove_user_radios(notify->portid);
if (notify->portid == hwsim_net_get_wmediumd(notify->net)) {
- printk(KERN_INFO "mac80211_hwsim: wmediumd released netlink"
+ printk_ratelimited(KERN_INFO "mac80211_hwsim: wmediumd released netlink"
" socket, switching to perfect channel medium\n");
hwsim_register_wmediumd(notify->net, 0);
}