Fix remove ops in isimodem drivers
authorAki Niemi <aki.niemi@nokia.com>
Tue, 27 Apr 2010 12:10:55 +0000 (15:10 +0300)
committerAki Niemi <aki.niemi@nokia.com>
Tue, 27 Apr 2010 20:21:48 +0000 (23:21 +0300)
drivers/isimodem/call-barring.c
drivers/isimodem/call-forwarding.c
drivers/isimodem/call-settings.c
drivers/isimodem/gprs.c
drivers/isimodem/isimodem.c
drivers/isimodem/network-registration.c
drivers/isimodem/sim.c
drivers/isimodem/ussd.c

index 2fa2be9..cf6a0e0 100644 (file)
@@ -401,10 +401,12 @@ static void isi_call_barring_remove(struct ofono_call_barring *barr)
 {
        struct barr_data *data = ofono_call_barring_get_data(barr);
 
-       if (data) {
-               g_isi_client_destroy(data->client);
-               g_free(data);
-       }
+       if (!data)
+               return;
+
+       ofono_call_barring_set_data(barr, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static struct ofono_call_barring_driver driver = {
index efa9bfe..61d3cfa 100644 (file)
@@ -557,10 +557,12 @@ static void isi_call_forwarding_remove(struct ofono_call_forwarding *cf)
 {
        struct forw_data *data = ofono_call_forwarding_get_data(cf);
 
-       if (data) {
-               g_isi_client_destroy(data->client);
-               g_free(data);
-       }
+       if (!data)
+               return;
+
+       ofono_call_forwarding_set_data(cf, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static struct ofono_call_forwarding_driver driver = {
index 47385ae..651d0ec 100644 (file)
@@ -339,10 +339,12 @@ static void isi_call_settings_remove(struct ofono_call_settings *cs)
 {
        struct settings_data *data = ofono_call_settings_get_data(cs);
 
-       if (data) {
-               g_isi_client_destroy(data->client);
-               g_free(data);
-       }
+       if (!data)
+               return;
+
+       ofono_call_settings_set_data(cs, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static struct ofono_call_settings_driver driver = {
index 47e9f25..435f656 100644 (file)
@@ -122,14 +122,14 @@ static int isi_gprs_probe(struct ofono_gprs *gprs,
 
 static void isi_gprs_remove(struct ofono_gprs *gprs)
 {
-       struct gprs_data *gd = ofono_gprs_get_data(gprs);
-
-       ofono_gprs_set_data(gprs, NULL);
+       struct gprs_data *data = ofono_gprs_get_data(gprs);
 
-       if (gd->client)
-               g_isi_client_destroy(gd->client);
+       if (!data)
+               return;
 
-       g_free(gd);
+       ofono_gprs_set_data(gprs, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static bool attach_resp_cb(GIsiClient *client, const void *restrict data,
index dfc9b0b..d60bb91 100644 (file)
@@ -285,11 +285,10 @@ static void isi_modem_remove(struct ofono_modem *modem)
 {
        struct isi_data *isi = ofono_modem_get_data(modem);
 
-       DBG("(%p) with %s", modem, isi ? isi->ifname : NULL);
-
-       if (isi == NULL)
+       if (!isi)
                return;
 
+       ofono_modem_set_data(modem, NULL);
        g_isi_client_destroy(isi->client);
        g_free(isi);
 }
index cc3e4e0..dfd7acc 100644 (file)
@@ -909,10 +909,12 @@ static void isi_netreg_remove(struct ofono_netreg *net)
 {
        struct netreg_data *data = ofono_netreg_get_data(net);
 
-       if (data) {
-               g_isi_client_destroy(data->client);
-               g_free(data);
-       }
+       if (!data)
+               return;
+
+       ofono_netreg_set_data(net, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static struct ofono_netreg_driver driver = {
index 2c1e5c6..6cf73d2 100644 (file)
@@ -429,10 +429,12 @@ static void isi_sim_remove(struct ofono_sim *sim)
 {
        struct sim_data *data = ofono_sim_get_data(sim);
 
-       if (data) {
-               g_isi_client_destroy(data->client);
-               g_free(data);
-       }
+       if (!data)
+               return;
+
+       ofono_sim_set_data(sim, NULL);
+       g_isi_client_destroy(data->client);
+       g_free(data);
 }
 
 static struct ofono_sim_driver driver = {
index 3180844..a8bbace 100644 (file)
@@ -302,9 +302,11 @@ static void isi_ussd_remove(struct ofono_ussd *ussd)
 {
        struct ussd_data *data = ofono_ussd_get_data(ussd);
 
-       if (data && data->client)
-               g_isi_client_destroy(data->client);
+       if (!data)
+               return;
 
+       ofono_ussd_set_data(ussd, NULL);
+       g_isi_client_destroy(data->client);
        g_free(data);
 }