broadband-modem-mbim: fix double GError free

We're returning the GError as GTask result, we should not explicitly
free it ourselves.

Fixes the crash sometimes seen in
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/550

  ==15994== Invalid free() / delete / delete[] / realloc()
  ==15994==    at 0x484B27F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==15994==    by 0x4F9A8A0: g_error_free (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x2251CC: ??? (in /usr/sbin/ModemManager)
  ==15994==    by 0x4DD2B48: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x4DD2D4A: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x4CA9049: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4CB0367: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4FAF287: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FAEC03: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x5003497: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FAE282: g_main_loop_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x16916F: main (in /usr/sbin/ModemManager)
  ==15994==  Address 0x80db490 is 0 bytes inside a block of size 16 free'd
  ==15994==    at 0x484B27F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==15994==    by 0x4F9A8A0: g_error_free (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x1984FA: ??? (in /usr/sbin/ModemManager)
  ==15994==    by 0x4DD2B48: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x4DD2D4A: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x2251A6: ??? (in /usr/sbin/ModemManager)
  ==15994==    by 0x4DD2B48: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x4DD2D4A: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7102.0)
  ==15994==    by 0x4CA9049: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4CB0367: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4FAF287: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FAEC03: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==  Block was alloc'd at
  ==15994==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==15994==    by 0x4FB76F8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FCF1A4: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FCF80D: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4F9A3A6: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4F9A5A3: g_error_copy (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4CA903E: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4CB0367: ??? (in /usr/lib/x86_64-linux-gnu/libmbim-glib.so.4.6.0)
  ==15994==    by 0x4FAF287: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FAEC03: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x5003497: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
  ==15994==    by 0x4FAE282: g_main_loop_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7102.0)
This commit is contained in:
Aleksander Morgado
2022-05-13 10:50:04 +02:00
parent e163ab504a
commit b4d0fc4adf

View File

@@ -8697,7 +8697,7 @@ set_device_slot_mappings_ready (MbimDevice *device,
{ {
MMBroadbandModemMbim *self; MMBroadbandModemMbim *self;
g_autoptr(MbimMessage) response = NULL; g_autoptr(MbimMessage) response = NULL;
g_autoptr(GError) error = NULL; GError *error = NULL;
guint32 map_count = 0; guint32 map_count = 0;
g_autoptr(MbimSlotArray) slot_mappings = NULL; g_autoptr(MbimSlotArray) slot_mappings = NULL;
guint i; guint i;