[PATCH v2] wifi:Remove passive scan on new active scan
yaming.chen <[email protected]> Wed, 14 Jan 2026 17:47:22 +0800
| Newsgroups | dev.linux.lists.connman |
|---|---|
| Message-ID | <[email protected]> |
If BackgroundScanning is enable, the old passive scanning task
needs to be removed when the new active scanning is triggered.
It can prevent the old passive scan timeout handler function
from accessing the dangling pointer after restarting the
wpa_supplicant and wifi driver.
Changes since v1:
- Shorten the patch subject and inline code comments
---
plugins/wifi.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 12389fa6..96c0c127 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -1999,13 +1999,22 @@ static int wifi_scan(struct connman_device *device,
}
}
+ /*
+ * If BackgroundScanning is enable, the old passive scanning task
+ * needs to be removed when the new active scanning is triggered.
+ * It can prevent the old passive scan timeout handler function
+ * from accessing the dangling pointer after restarting the
+ * wpa_supplicant and wifi driver.
+ */
+ if (connman_setting_get_bool("BackgroundScanning") ||
+ wifi->scanning_type != WIFI_SCANNING_PASSIVE) {
+ connman_device_ref(device);
+ reset_autoscan(device);
+ }
+
/* Distinguish between devices performing passive and active scanning */
wifi_update_scanner_type(wifi, WIFI_SCANNING_ACTIVE);
- connman_device_ref(device);
-
- reset_autoscan(device);
-
ret = g_supplicant_interface_scan(wifi->interface, scan_params,
scan_callback, device);
if (ret == 0) {
--
2.34.1