summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2017-09-11 02:25:43 +0200
committerDenis Kenzior <denkenz@gmail.com>2017-09-11 10:41:14 -0500
commita18c892c6455dddf2c3fdd0001c8a50dcd6629bb (patch)
tree911175156d3337aebc5a169ae3af1f866e24b281
parente98f68330944f18202533222fbae9ae4a3c6cbec (diff)
downloadofono-a18c892c6455dddf2c3fdd0001c8a50dcd6629bb.tar.gz
qmimodem: register callbacks after netreg_register
When registering callbacks before ofono_netreg_register(), callbacks will use the netreg api which might lead into undefined behaviour, because certain fields aren't yet initilized.
-rw-r--r--drivers/qmimodem/network-registration.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/qmimodem/network-registration.c b/drivers/qmimodem/network-registration.c
index 83c1b459..c1760b83 100644
--- a/drivers/qmimodem/network-registration.c
+++ b/drivers/qmimodem/network-registration.c
@@ -511,10 +511,17 @@ static void event_notify(struct qmi_result *result, void *user_data)
static void set_event_cb(struct qmi_result *result, void *user_data)
{
struct ofono_netreg *netreg = user_data;
+ struct netreg_data *data = ofono_netreg_get_data(netreg);
DBG("");
ofono_netreg_register(netreg);
+
+ qmi_service_register(data->nas, QMI_NAS_EVENT,
+ event_notify, netreg, NULL);
+
+ qmi_service_register(data->nas, QMI_NAS_SS_INFO_IND,
+ ss_info_notify, netreg, NULL);
}
static void create_nas_cb(struct qmi_service *service, void *user_data)
@@ -536,12 +543,6 @@ static void create_nas_cb(struct qmi_service *service, void *user_data)
data->nas = qmi_service_ref(service);
- qmi_service_register(data->nas, QMI_NAS_EVENT,
- event_notify, netreg, NULL);
-
- qmi_service_register(data->nas, QMI_NAS_SS_INFO_IND,
- ss_info_notify, netreg, NULL);
-
param = qmi_param_new();
if (!param)
goto done;