Fixes following issue announced by valgrind:
ofonod[2870]: plugins/gobi.c:shutdown_cb()
ofonod[2870]: src/modem.c:modem_change_state() old state: 0, new state: 0
==2870== Invalid read of size 8
==2870== at 0x453ADE: shutdown_destroy (qmi.c:1254)
==2870== by 0x508A717: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DB8B: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DF47: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508E271: g_main_loop_run (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x4C680B: main (main.c:256)
==2870== Address 0x6a07518 is 152 bytes inside a block of size 168 free'd
==2870== at 0x4C29E90: free (vg_replace_malloc.c:473)
==2870== by 0x4532FF: qmi_device_unref (qmi.c:1003)
==2870== by 0x45E09B: shutdown_cb (gobi.c:120)
==2870== by 0x453B68: shutdown_callback (qmi.c:1268)
==2870== by 0x508E612: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DB6C: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DF47: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508E271: g_main_loop_run (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x4C680B: main (main.c:256)
==2870==
==2870== Invalid write of size 4
==2870== at 0x453B09: shutdown_destroy (qmi.c:1257)
==2870== by 0x508A717: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DB8B: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DF47: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508E271: g_main_loop_run (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x4C680B: main (main.c:256)
==2870== Address 0x6a07520 is 160 bytes inside a block of size 168 free'd
==2870== at 0x4C29E90: free (vg_replace_malloc.c:473)
==2870== by 0x4532FF: qmi_device_unref (qmi.c:1003)
==2870== by 0x45E09B: shutdown_cb (gobi.c:120)
==2870== by 0x453B68: shutdown_callback (qmi.c:1268)
==2870== by 0x508E612: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DB6C: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508DF47: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x508E271: g_main_loop_run (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1)
==2870== by 0x4C680B: main (main.c:256)
==2870==
---
drivers/qmimodem/qmi.c | 3 ++-
plugins/gobi.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index 80c6adef..07daee9b 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -1251,10 +1251,11 @@ static void shutdown_destroy(gpointer user_data)
{
struct qmi_device *device = user_data;
+ device->shutdown_source = 0;
+
if (device->shutdown_destroy)
device->shutdown_destroy(device->shutdown_user_data);
- device->shutdown_source = 0;
}
static gboolean shutdown_callback(gpointer user_data)
diff --git a/plugins/gobi.c b/plugins/gobi.c
index a4985990..44c9c3ec 100644
--- a/plugins/gobi.c
+++ b/plugins/gobi.c
@@ -132,7 +132,7 @@ static void shutdown_device(struct ofono_modem *modem)
qmi_service_unref(data->dms);
data->dms = NULL;
- qmi_device_shutdown(data->device, shutdown_cb, modem, NULL);
+ qmi_device_shutdown(data->device, NULL, modem, shutdown_cb);
}
static void power_reset_cb(struct qmi_result *result, void *user_data)
--
2.12.2
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono