diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-01-09 14:52:50 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-01-09 15:15:18 +0100 |
commit | 29e64f59af44a23d929107fb4896d10f44b4dfd7 (patch) | |
tree | c1e6a1f2916e5852fa705c89770c5daf607ec05d /src | |
parent | e3e837a8a777a3c4404f8d598eb68c7467f53b19 (diff) |
bearer-qmi: plug memleak when disposing connected bearer
Also, explicitly close the QMI port if we had it open for the
connected bearer.
==991919== 6,533 (48 direct, 6,485 indirect) bytes in 1 blocks are definitely lost in loss record 5,171 of 5,177
==991919== at 0x5048291: g_type_create_instance (gtype.c:1844)
==991919== by 0x502DFC4: g_object_new_internal (gobject.c:1827)
==991919== by 0x502EFA9: g_object_new_valist (gobject.c:2152)
==991919== by 0x502DB9E: g_object_new (gobject.c:1670)
==991919== by 0x2215CA: mm_port_qmi_new (mm-port-qmi.c:615)
==991919== by 0x16C892: mm_base_modem_grab_port (mm-base-modem.c:295)
==991919== by 0x1CEEE5: mm_plugin_create_modem (mm-plugin.c:1048)
==991919== by 0x157E1E: mm_device_create_modem (mm-device.c:413)
==991919== by 0x1535A0: device_support_check_ready (mm-base-manager.c:195)
==991919== by 0x4EC9160: g_task_return_now (gtask.c:1212)
==991919== by 0x4EC92AA: g_task_return (gtask.c:1281)
==991919== by 0x4EC9E34: g_task_return_pointer (gtask.c:1689)
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-bearer-qmi.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mm-bearer-qmi.c b/src/mm-bearer-qmi.c index 8565efb0..5cea9a11 100644 --- a/src/mm-bearer-qmi.c +++ b/src/mm-bearer-qmi.c @@ -2153,6 +2153,11 @@ dispose (GObject *object) &self->priv->event_report_ipv6_indication_id); } + if (self->priv->qmi && self->priv->explicit_qmi_open) { + self->priv->explicit_qmi_open = FALSE; + mm_port_qmi_close (self->priv->qmi); + } + g_clear_object (&self->priv->qmi); g_clear_object (&self->priv->data); g_clear_object (&self->priv->client_ipv4); g_clear_object (&self->priv->client_ipv6); |