Blame SOURCES/0002-crash-qmi-device-rh1976888.patch

2dd08c
From 3f6d53fdba9045c64b5e6cf7f8c1dbbd07eb8d37 Mon Sep 17 00:00:00 2001
2dd08c
From: Aleksander Morgado <aleksander@aleksander.es>
2dd08c
Date: Thu, 4 Jun 2020 09:35:17 +0200
2dd08c
Subject: [PATCH 1/2] libqmi-glib,device: endpoint is cleared when device is
2dd08c
 closed
2dd08c
2dd08c
  #0  qmi_endpoint_is_open (self=0x0) at ../../../libqmi-1.24.8/src/libqmi-glib/qmi-endpoint.c:180
2dd08c
  #1  0x00007ffff7caf275 in qmi_device_command_abortable (self=self@entry=0x7fffe8006f00, message=message@entry=0x5555557e7330, message_context=message_context@entry=0x0, timeout=timeout@entry=30,
2dd08c
      abort_build_request_fn=abort_build_request_fn@entry=0x0, abort_parse_response_fn=abort_parse_response_fn@entry=0x0, abort_user_data=0x0, abort_user_data_free=0x0, cancellable=0x5555557e8a50,
2dd08c
      callback=0x7ffff7caf620 <transaction_abort_ready>, user_data=0x1120016) at ../../../libqmi-1.24.8/src/libqmi-glib/qmi-device.c:2301
2dd08c
  #2  0x00007ffff7caf87b in qmi_device_command_full (self=self@entry=0x7fffe8006f00, message=message@entry=0x5555557e7330, message_context=message_context@entry=0x0, timeout=timeout@entry=30,
2dd08c
      cancellable=<optimized out>, callback=callback@entry=0x7ffff7caf620 <transaction_abort_ready>, user_data=0x1120016) at ../../../libqmi-1.24.8/src/libqmi-glib/qmi-device.c:2375
2dd08c
  #3  0x00007ffff7caf966 in transaction_abort (self=0x7fffe8006f00, tr=tr@entry=0x7fffe0009800, abort_error_take=0x5555557fc3b0) at ../../../libqmi-1.24.8/src/libqmi-glib/qmi-device.c:361
2dd08c
  #4  0x00007ffff7cafaf5 in transaction_timed_out (ctx=0x5555557b8690, ctx@entry=<error reading variable: value has been optimized out>) at ../../../libqmi-1.24.8/src/libqmi-glib/qmi-device.c:385
2dd08c
  #5  0x00007ffff7809f94 in g_timeout_dispatch (source=0x5555558116b0, callback=<optimized out>, user_data=<optimized out>) at ../glib-2.60.7/glib/gmain.c:4678
2dd08c
  #6  0x00007ffff78094ef in g_main_dispatch (context=0x55555570c670) at ../glib-2.60.7/glib/gmain.c:3189
2dd08c
  #7  g_main_context_dispatch (context=context@entry=0x55555570c670) at ../glib-2.60.7/glib/gmain.c:3854
2dd08c
  #8  0x00007ffff78098c0 in g_main_context_iterate (context=0x55555570c670, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.60.7/glib/gmain.c:3927
2dd08c
  #9  0x00007ffff7809bd3 in g_main_loop_run (loop=0x5555557233e0) at ../glib-2.60.7/glib/gmain.c:4123
2dd08c
  #10 0x000055555559bbc0 in main (argc=<optimized out>, argv=<optimized out>) at ../../ModemManager-1.12.8/src/main.c:206
2dd08c
2dd08c
https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/issues/37
2dd08c
2dd08c
(cherry picked from commit ee61c03a76bf390693f04e8a5559c04ad87dac18)
2dd08c
(cherry picked from commit 4ca7aa55b88ba2bdfc77259140e229a739a668e1)
2dd08c
---
2dd08c
 src/libqmi-glib/qmi-device.c | 2 +-
2dd08c
 1 file changed, 1 insertion(+), 1 deletion(-)
2dd08c
2dd08c
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
2dd08c
index 7e93fad079a4..da7161fde571 100644
2dd08c
--- a/src/libqmi-glib/qmi-device.c
2dd08c
+++ b/src/libqmi-glib/qmi-device.c
2dd08c
@@ -2335,7 +2335,7 @@ qmi_device_command_abortable (QmiDevice                                *self,
2dd08c
     tr = transaction_new (self, message, message_context, cancellable, callback, user_data);
2dd08c
 
2dd08c
     /* Device must be open */
2dd08c
-    if (!qmi_endpoint_is_open (self->priv->endpoint)) {
2dd08c
+    if (!qmi_device_is_open (self)) {
2dd08c
         error = g_error_new (QMI_CORE_ERROR,
2dd08c
                              QMI_CORE_ERROR_WRONG_STATE,
2dd08c
                              "Device must be open to send commands");
2dd08c
-- 
2dd08c
2.31.1
2dd08c
2dd08c
2dd08c
From 1c316fcba53021d9179fb8702deafcb89a03ed64 Mon Sep 17 00:00:00 2001
2dd08c
From: Aleksander Morgado <aleksander@aleksander.es>
2dd08c
Date: Mon, 15 Feb 2021 14:38:37 +0100
2dd08c
Subject: [PATCH 2/2] libqmi-glib,endpoint-qmux: plug QmiClientCtl leak
2dd08c
2dd08c
This is a severe leak when using qmicli operations, as e.g. in OpenWRT
2dd08c
based setups. It's shown as still reachable here, because it's really
2dd08c
not a true leak as in we can no longer free it; there's some pointer
2dd08c
to the objects around but we never free them, so the memory grows and
2dd08c
keeps growing all the time.
2dd08c
2dd08c
    ==6589== 506,784 bytes in 10,558 blocks are still reachable in loss record 1,378 of 1,378
2dd08c
    ==6589==    at 0x4E84925: g_type_create_instance (in /usr/lib/libgobject-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4E7501D: ??? (in /usr/lib/libgobject-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4E768C3: g_object_new_valist (in /usr/lib/libgobject-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4E76C39: g_object_new (in /usr/lib/libgobject-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4911E39: client_ctl_setup (qmi-device.c:3009)
2dd08c
    ==6589==    by 0x4911FA2: check_type_async_ready (qmi-device.c:3047)
2dd08c
    ==6589==    by 0x4D39173: ??? (in /usr/lib/libgio-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4D3D6E8: ??? (in /usr/lib/libgio-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4916FEB: query_info_async_ready (qmi-file.c:105)
2dd08c
    ==6589==    by 0x4D39173: ??? (in /usr/lib/libgio-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4D391A8: ??? (in /usr/lib/libgio-2.0.so.0.6600.7)
2dd08c
    ==6589==    by 0x4F01B83: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.7)
2dd08c
    ==6589==
2dd08c
    ==6589== LEAK SUMMARY:
2dd08c
    ==6589==    definitely lost: 0 bytes in 0 blocks
2dd08c
    ==6589==    indirectly lost: 0 bytes in 0 blocks
2dd08c
    ==6589==      possibly lost: 2,424 bytes in 25 blocks
2dd08c
    ==6589==    still reachable: 1,702,273 bytes in 33,071 blocks
2dd08c
    ==6589==                       of which reachable via heuristic:
2dd08c
    ==6589==                         length64           : 1,384 bytes in 28 blocks
2dd08c
    ==6589==                         newarray           : 1,776 bytes in 31 blocks
2dd08c
    ==6589==         suppressed: 0 bytes in 0 blocks
2dd08c
2dd08c
Fixes https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/issues/39
2dd08c
2dd08c
(cherry picked from commit 36a990794307e47806a6be2f97e3eabde220640b)
2dd08c
(cherry picked from commit 1a5c521daee8842ffc2d684fd326679c435779f7)
2dd08c
---
2dd08c
 src/libqmi-glib/qmi-endpoint-qmux.c | 1 +
2dd08c
 1 file changed, 1 insertion(+)
2dd08c
2dd08c
diff --git a/src/libqmi-glib/qmi-endpoint-qmux.c b/src/libqmi-glib/qmi-endpoint-qmux.c
2dd08c
index 5709f856679e..5cc21f68ff79 100644
2dd08c
--- a/src/libqmi-glib/qmi-endpoint-qmux.c
2dd08c
+++ b/src/libqmi-glib/qmi-endpoint-qmux.c
2dd08c
@@ -504,6 +504,7 @@ dispose (GObject *object)
2dd08c
     QmiEndpointQmux *self = QMI_ENDPOINT_QMUX (object);
2dd08c
 
2dd08c
     destroy_iostream (self);
2dd08c
+    g_clear_object (&self->priv->client_ctl);
2dd08c
 
2dd08c
     G_OBJECT_CLASS (qmi_endpoint_qmux_parent_class)->dispose (object);
2dd08c
 }
2dd08c
-- 
2dd08c
2.31.1
2dd08c