From 7de4d6673bb5fd0e4ab36ce195b25bb5a20b4a9b Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 19 May 2022 13:29:34 +0200 Subject: [PATCH] broadband-modem-mbim: plug memleak when MBIMEx v2 not supported ==11025== 40 bytes in 1 blocks are definitely lost in loss record 3,313 of 5,483 ==11025== at 0x483E7C5: malloc (vg_replace_malloc.c:380) ==11025== by 0x4A32CA9: g_malloc (in /usr/lib/libglib-2.0.so.0.7000.2) ==11025== by 0x4A4A082: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.7000.2) ==11025== by 0x49F8574: g_array_sized_new (in /usr/lib/libglib-2.0.so.0.7000.2) ==11025== by 0x24DEB1: load_supported_modes_mbim (mm-broadband-modem-mbim.c:958) ==11025== by 0x24E2D5: modem_load_supported_modes (mm-broadband-modem-mbim.c:1042) ==11025== by 0x1D4DC5: interface_initialization_step (mm-iface-modem.c:5718) ==11025== by 0x1D26D6: load_device_identifier_ready (mm-iface-modem.c:4903) ==11025== by 0x4BACB83: ??? (in /usr/lib/libgio-2.0.so.0.7000.2) ==11025== by 0x4BACBB8: ??? (in /usr/lib/libgio-2.0.so.0.7000.2) ==11025== by 0x4A2A434: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.7000.2) ==11025== by 0x4A7E7B8: ??? (in /usr/lib/libglib-2.0.so.0.7000.2) --- src/mm-broadband-modem-mbim.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index b8c5617c..ead9849d 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -929,7 +929,6 @@ load_supported_modes_mbim (GTask *task, { MMBroadbandModemMbim *self; GArray *all; - GArray *combinations; GArray *filtered; MMModemMode mask_all; MMModemModeCombination mode = { @@ -955,12 +954,14 @@ load_supported_modes_mbim (GTask *task, all = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 1); g_array_append_val (all, mode); - combinations = g_array_new (FALSE, FALSE, sizeof (MMModemModeCombination)); - /* When using MBIMEx we can enable the mode switching operation because * we'll be able to know if the modes requested are the ones configured * as preferred after the operation. */ if (mbim_device_check_ms_mbimex_version (device, 2, 0)) { + GArray *combinations; + + combinations = g_array_new (FALSE, FALSE, sizeof (MMModemModeCombination)); + #define ADD_MODE_PREFERENCE(MODE_MASK) do { \ mode.allowed = MODE_MASK; \ mode.preferred = MM_MODEM_MODE_NONE; \