wifi: Device reference counting fix on scan
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Tue, 6 Sep 2011 07:13:17 +0000 (10:13 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 12 Sep 2011 10:14:16 +0000 (12:14 +0200)
When starting to scan, up the reference count on struct connman_device
and release it in the scan callback.

plugins/wifi.c

index ee30586..db87f01 100644 (file)
@@ -279,6 +279,7 @@ static void scan_callback(int result, GSupplicantInterface *interface,
                connman_device_reset_scanning(device);
        else
                connman_device_set_scanning(device, FALSE);
+       connman_device_unref(device);
 }
 
 static int wifi_scan(struct connman_device *device)
@@ -291,10 +292,13 @@ static int wifi_scan(struct connman_device *device)
        if (wifi->tethering == TRUE)
                return 0;
 
+       connman_device_ref(device);
        ret = g_supplicant_interface_scan(wifi->interface, scan_callback,
                                                                device);
        if (ret == 0)
                connman_device_set_scanning(device, TRUE);
+       else
+               connman_device_unref(device);
 
        return ret;
 }