diff options
author | Alexander Couzens <lynxis@fe80.eu> | 2017-09-11 02:25:43 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2017-09-11 10:41:14 -0500 |
commit | a18c892c6455dddf2c3fdd0001c8a50dcd6629bb (patch) | |
tree | 911175156d3337aebc5a169ae3af1f866e24b281 | |
parent | e98f68330944f18202533222fbae9ae4a3c6cbec (diff) | |
download | ofono-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.c | 13 |
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; |