summaryrefslogtreecommitdiffstats
path: root/drivers/isimodem/sim.c
diff options
context:
space:
mode:
authorAki Niemi <aki.niemi@nokia.com>2011-01-27 09:36:51 +0200
committerAki Niemi <aki.niemi@nokia.com>2011-01-27 10:34:52 +0200
commit9306837053cd6ce35e0fe02f03c3cd0eba443f6c (patch)
treebe1352c2a9e2aaad46d84d92efc9f66a64a14586 /drivers/isimodem/sim.c
parent579a1ebef397833e7f788988a3e78530042570e1 (diff)
downloadofono-9306837053cd6ce35e0fe02f03c3cd0eba443f6c.tar.bz2
isimodem: Fix race condition in SIM probe
Fix a potential race condition between HPLMN query and subscribing to SIM status indications.
Diffstat (limited to 'drivers/isimodem/sim.c')
-rw-r--r--drivers/isimodem/sim.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/isimodem/sim.c b/drivers/isimodem/sim.c
index 991d8b7a..bfecbc9f 100644
--- a/drivers/isimodem/sim.c
+++ b/drivers/isimodem/sim.c
@@ -434,15 +434,12 @@ static void sim_ind_cb(const GIsiMessage *msg, void *data)
static void sim_reachable_cb(const GIsiMessage *msg, void *data)
{
struct ofono_sim *sim = data;
- struct sim_data *sd = ofono_sim_get_data(sim);
if (g_isi_msg_error(msg) < 0)
return;
ISI_VERSION_DBG(msg);
- g_isi_client_ind_subscribe(sd->client, SIM_IND, sim_ind_cb, sim);
-
/* Check if SIM is ready by reading HPLMN */
isi_read_hplmn(sim);
}
@@ -465,6 +462,7 @@ static int isi_sim_probe(struct ofono_sim *sim, unsigned int vendor,
ofono_sim_set_data(sim, sd);
+ g_isi_client_ind_subscribe(sd->client, SIM_IND, sim_ind_cb, sim);
g_isi_client_verify(sd->client, sim_reachable_cb, sim, NULL);
return 0;