From 29e64f59af44a23d929107fb4896d10f44b4dfd7 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 9 Jan 2020 14:52:50 +0100 Subject: 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) --- src/mm-bearer-qmi.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') 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); -- cgit v1.2.3-70-g09d2