Below is a patch for:
http://bugs.meego.com/show_bug.cgi?id=11684
g_supplicant_unregister first destroys the interface table and then invokes
system_killed callback which will trigger wifi device driver removal.
wifi_remove will now set it's interface data to NULL but the
GSupplicantInterface has already been freed and hence the issue.
Invoking the system_killed callback before destroying the interface table in
gsupplicant will fix this issue.
---
gsupplicant/supplicant.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 8d2c15f..22a9e7d 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -2630,6 +2630,9 @@ void g_supplicant_unregister(const GSupplicantCallbacks
*callbacks)
bss_mapping = NULL;
}
+ if (system_available == TRUE)
+ callback_system_killed();
+
if (interface_table != NULL) {
g_hash_table_foreach(interface_table,
unregister_remove_interface, NULL);
@@ -2637,9 +2640,6 @@ void g_supplicant_unregister(const GSupplicantCallbacks
*callbacks)
interface_table = NULL;
}
- if (system_available == TRUE)
- callback_system_killed();
-
if (connection != NULL) {
dbus_connection_unref(connection);
connection = NULL;
--
1.7.2.2
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman