btw, I think you need to check the patch state of the branch you submitted from, because it conflicts with existing code, e.g. this first hunk if (wifi == NULL || wifi->device == NULL) does not exist in current code:
Code
@@ -1014,14 +1014,16 @@ static void
interface_removed(GSupplicantInterface *interface)
wifi = g_supplicant_interface_get_data(interface);
if (wifi != NULL && wifi->tethering == TRUE)
return;
- if (wifi == NULL || wifi->device == NULL) {
- DBG("wifi interface already removed");
- return;
- }
+ if (wifi != NULL && wifi->device != NULL) {
+ wifi->interface = NULL;
+ connman_device_set_powered(wifi->device, FALSE);
+ } else {
+ DBG("wifi device linkage missing, executing isolated interface
Display More
The current code state was introduced in this patch:
Diff
commit 4b3c38ec737f3fc0642cd825471763be570fe02e
Author: Hannu Mallat <[email protected]>
Date: Mon Sep 29 09:19:56 2014 +0300
wifi: Set interface pointer to NULL on deallocation
As interface_removed() gets called when the interface struct is being
deallocated, make sure the pointer is set to NULL regardless of the
other fields' values in wifi struct.
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 45d88b8e..d18dc6cd 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -2284,6 +2284,9 @@ static void interface_removed(GSupplicantInterface *interface)
wifi = g_supplicant_interface_get_data(interface);
+ if (wifi)
+ wifi->interface = NULL;
+
if (wifi && wifi->tethering)
return;
Display More
LE13 is using current ConnMan master plus this series to mitigate the invalid-key issue seen with some wifi connections:
[0/3] wifi: Forgive transient errors - Patchwork
nb: the patch submitted also has style problems due to line length/wrap issues.