From 9306837053cd6ce35e0fe02f03c3cd0eba443f6c Mon Sep 17 00:00:00 2001 From: Aki Niemi Date: Thu, 27 Jan 2011 09:36:51 +0200 Subject: [PATCH] isimodem: Fix race condition in SIM probe Fix a potential race condition between HPLMN query and subscribing to SIM status indications. --- drivers/isimodem/sim.c | 4 +--- 1 file changed, 1 insertion(+), 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;